Wednesday, November 29, 2017

Comparing #Agile sizing and Estimation Techniques

"We are all trying to create better predictability for our teams, customers and internal stakeholders"


Thursday, November 23, 2017

The cost of interrupting a programmer .

It's is only so long before interruption finds a way to pierce a programmer protective bubble and it costs. We often wonder how to structure developer interaction in order to minimize the cost of interruptions, but still foster communication and coordination. 


The software development #Lean wastes.

Sunday, November 19, 2017

What the role of a DevOps coach? Part 4: Can any #Agile coach lead a #DevOps implementation?

By : Liat Palace  (Director, Delivery Technology Office Agile/DevOps Coaching Team Lead – Amdocs)  & Shirly Ronen Harel (Co-Founder & Agile / DevOps Coach -WeChange)
Now that we are clearer about what DevOps is and the difference between DevOps and Agile, the next question is: Can any Agile coach lead a DevOps implementation?  The answer is no.  Why not?  In short: Because there is a gap that an Agile coach has to bridge in a few areas in order to become a DevOps coach a well. To answer this question in detail, we may want to divide it into a few questions. So first, let’s determine what the Agile coach skillset contains, and which additional challenges DevOps brings.



First, let’s take a look at a few DevOps Coach job descriptions.
When we read a DevOps job description, we may find it interesting to see the qualities companies are looking for in a DevOps coach.

From IBM (2017)
What you’ll do:

  • DevOps Coaches work closely with teams and team members to develop and perform activities allowing the development of Agile skills and improvement of development processes.
  • The role of the coach is to share their experience and observations with all team members and to make sure that the best practices are being used.
  • The objective of the coach is to help teams develop their Agile skills in order to rapidly become self-sufficient and benefit from Agile approaches.
  • More specifically, the team coach supports the creation of squads, pair programming and other development practices needed to enable teams to develop the right software to support the needs of our customers quickly and effectively.
  • This coach promotes and facilitates, in a cohesive manner, the adoption of DevOps and Agility within teams and by organizations.
  • DevOps coaches are passionate about communication, group dynamics and coaching and are not afraid to raise issues and drive change to remove impediments to adoption.
  • DevOps Coach should have an insatiable appetite for learning new things and improving existing ones.

How we’ll help you grow:

  • You’ll have access to all the technical and management training courses you need to become the expert you want to be.
  • You’ll learn directly from expert developers in the field; our team leads love to mentor.
  • You have the opportunity to work in many different areas to figure out what really excites you.


A DevOps coach must have Agile coaching skills.

The Agile techniques that are part of the DevOps methods and mindset will continue to require coaching, so if a company wants to go DevOps, it must still ensure Agile coaching support.


The ingredients of Agile coaching remain the same. But when we go DevOps, we need to reach outside R&D into other areas such as OPS… and we also need to consider diving into wider organizational concerns. We need to learn as coaches to integrate these wider entities and their concerns and mindset into the DevOps journey. This means going beyond R&D and product focus, and addressing other managers, people, technologies, tools, and new development techniques. We also need to learn the concerns of those entities concerns, as well as their mindset and skills, before we start transforming the organization into DevOps.




This diagram depicts the Agile coach skills, which remain an integral part of the DevOps coach skills.


So what has been changed /added? Let’s examine the DevOps extensions and changes to the Agile coach role.


DevOps
Agile
Subtopics
What an Agile coach should know (beyond Agile) to become a DevOps coach


   Understand all aspects of the model
   Run the model
   Help your project / customer take the next step towards DevOps maturity
The DevOps maturity model
One of the hardest and most obvious changes in DevOps from Agile is evaluating and implementing the technical aspects and tools.

Although tools are just tools, they are still an important ingredient of DevOps. We need to have the proper technical skills, the proper tools and technological knowledge, and guide the team in using and building them.
The DevOps coach must either have these technical skills or make sure that they are part of the implementation, and are planned and followed.

Technical skills, Technology and tools
Understand Ops and production procedures


   Understand that everyone is now involved in making this happen. DevOps extends Agile beyond Development, Testing and product.
   Ops are now mandatory.
   Understand Ops needs
   Evaluate Ops state
   Train for the DevOps mindset

Involve Ops in the development teams also requires working closely with the Ops team to develop the right mindset change, as we did in Dev and Testing back when we started working according to Agile methodology
   Understand Ops and production procedures
Ops


Understand that everyone is now involved in making this happen.
There may be Sales involvement with creating a flexible DevOps contract, HR involvement in a mindset change for the organization’s culture, and so on.
Sales, Marketing, HR


Since DevOps is more than just a product development testing lifecycle and now includes the entire company culture, Management buy-in is critical to ensure optimization of the company processes. This requires working closely all levels of management.
Management buy-in


Understand that this is a concern, add it to the Implementation focus, and make sure that the pipeline has clear ownership.
The deployment pipeline

Deployment to staging improves confidence that releases successfully go to production

It may not be possible to release every iteration to production.
     Delays may be necessary to ensure that full feature sets are released in context for users, to evaluate security and regulatory issues and market impacts


Deploy every iteration to staging with frequent deployment to production


Manage all the artifacts, metadata, supporting configuration and test data

End to end version control


Use virtualization, tools and scripts to automate the implementation of new environments and lower the risks of manual implementations. Quick and consistent implementations are key.


Automated builds for new environments


   Avoid the risks and inconsistencies of manual processes and transferred responsibilities between silos as much as possible.
   Getting all stakeholders on board and loosening their grip on processes to allow them to be automated is not easy work – but it is necessary to reach the goal


Automated deployment to production




Understand the extent of testing when we move to DevOps
Testing
Test continuously

Test as early and as often as possible




Automate almost everything

Automate testing as much as possible



Continuous integration and testing is mandatory

Continuous integration and testing is a step forward



Potentially shippable code following every integration
Potentially shippable code at the end of a sprint


Mostly automation, starting with early automation then regression; developers create automation.  Minimum manual testing in the process.
Automation and manual testing skills
This may require a major change in recruitment policies. What should we do with company testers that are currently manual testers? HR involvement and team mindset coaching is required.
Developer mindset change is also required.
Tester skillset
Continuous E2E integrated monitoring and optimization
Process monitoring / production monitoring

Monitoring
Development and Business do continuous planning using backlog with the end thinking first (Ops) and with OPS involved
Continuous planning and design. Scoping, discovery and grooming, planning and sniffing.

Building the backlog
Agile + accelerating via actions on the entire delivery cycle E2E
Accelerating TTM of Development, Testing and Integration 

TTM
Agile + improvement of quality via industrialization and mandatory automation of manual tasks
‘Quality in’, TDD, ATDD, and upfront testing

Quality
E2E waste reduction and efficiency using tools, people and methods – ‘Must’ mindset
Partial
Lean thinking becomes a crucial mindset. The coach has to learn and apply lean thinking E2E at different levels of the organization. This is also something we need to coach the teams, the organization, flow mangers, release managers, and management.
Lean thinking



R&R
The flow manager -  this is an addition (if needed)
Facilitate collaboration between Dev & Ops teams
Ensure impediment-free execution by Development and Ops
Agile Scrum Master (SM) role + adoption of practices related to flow management, efficiency , DevOps and tools
Facilitate cross-team training of Scrum team members

Exists

Scrum master
In DevOps = Business owner (this is a higher level addition)
+ (even in small organizations)
Collaborate with E2E activities and release planning

Exists

Product Manager


In DevOps = Release Manager (this is a higher level addition)
SM role collaborates with E2E activities and release planning - Portfolio level management + Ops

Exists - if needed in big organizations

Program Manager
   Align with Agile +
collaborate with Operations to decide on sprint goals to delivery
   Collaborate with Operations to identify deployment needs, environment needs, and configuration for early feedback
   Resolve Ops issues
   Understand and share ownership of tools and processes with Ops
   Develop Ops as needed and required
   Testing - automate all levels
Exists

Developer Role
   Align with Agile +
Continuous testing
   Extensive automation = skills
   Perform Production Testing
   Understand monitoring needs
   No gate keeper; rather enabler
   Perform Ops-like testing
Exists
QA Role

   Collaborate unofficially with Development
   Expose and share Ops processes and needs
   Configure or create environments as per the need of Development and Testing
   Understand Development and QA technical needs and strive for improvement
   Maintain CI CD setup + monitoring
   Close monitoring
   Elaborate on E2E tools
Does not exist
Ops role

Agile  +
Emphasis on collaboration and trust
Testing is all over and in everyone
·   Build something that has the quality of our brand written all over it
Quality belongs to all – it is not only the testers’ responsibility
Lean thinking
       Reduce silos 
       Waste removal
       Bottleneck identification
       Value driven thinking
       “Continuous integration”
       Culture of E2E

E2E shared ownership
QA as enabler (not gate keeper)
Always working software
Continuous feedback: Shorter feedback loops  - Strong monitoring E2E
We are all in this together - Dev & Testing – no Us vs. Them

Development & Testing share ownership of
‘Quality in’.
Working software  = Done = end of iteration
Early Feedback
Strong visualization
Continuous improvement
Fun


Mindset