Project Management

Agility and Project Leadership

by
A contrarian and provocative blog that goes beyond the traditional over-hyped dogma of "Agile", so as to obtain true agility and project leadership through a process of philosophical reflection.

About this Blog

RSS

Recent Posts

Has Scrum outlived its usefulness? Should Scrum just go away?

The rise of Agile’s SAFe is like a bad episode of the movie Groundhog Day

Marcel Proust’s recursive novel: Why the concept of iteration in Agile is shortsighted

Forecast for 2015: The beginning of the end of Agile?

Google considered the best US company to work for due to HR agility

Categories

Date

Continuously controlled integration for Agile development

linkedin twitter facebook Request to reuse this  

For Agile software development, I'm a big advocate of XP's practice of continuous integration. This is the practice where a developer checks in code which triggers an automated system to compile and build the code into the system.  One of my early projects was to implement an automated build system for a .Net/C# platform using open source software such as Cruise Control, that worked in conjunction with a custom make file that got triggered during check in to compile and build the code.  There were three development systems these builds got deployed to: development, staging and production environments.

For Agile software development, I'm a big advocate of XP's practice of continuous integration.  This is the practice where a developer checks in code which triggers an automated system to compile and build the code into the system.  One of my early projects was to implement an automated build system for a .Net/C# platform using open source software such as Cruise Control, that worked in conjunction with a custom make file that got triggered during check in to compile and build the code.  There were there development systems these builds got deployed to: development, staging and production environments.
 
If a build got broken due to a complier error or integrations tests did not pass (unit tests were done at the function level), the developer would receive a warning by email that she/he had to fix the error.  This would only effect the development environment.  It wasn’t till we reached the end of our iteration after all the code was checked in and integrations tests passed, that it would be deployed to the staging environment where system and UAT testing got done.  Once this was all complete, it would go to the “production” environment.  I have production in quotations as this was really a pre-production or “prototyping” environment.
 
So it was with interest that I read this post from the Plastic SCM website about the difference between a “continuous” and “controlled” integration:
 
In a regular continuous integration scenario, all developers perform integrations and solve merge conflicts in code, which is perfectly acceptable on small, well-trained teams. Even agile teams can be affected by personnel rotation, though, or just new members joining, and it’s usually not a good idea to have a brand new developer mixing code he doesn’t yet understand.
 
In controlled integration a new role shows up: the integrator. The integrator is usually a seasoned team member who is familiar with the bulk of the code, the version control system, and the build and release process. The most important feature of the integrator is not that she knows all the code, which is not even necessary, but that she takes responsibility for the integration process. The integrator’s primary goal is creating a new stable baseline to serve as the base for development during the next iteration.
 
I have to agree with this and think it is an important distinction to make.  For the automated test system I was in charge of, I played that role of Integrator that was tasked with setting the baseline for the development of the next iteration.
 
The illustration above shows an example of a mixture of a continuous and controlled process.  For anyone tasked with deploying an Agile software development project and are utilizing continuous integration, I recommend looking at this model and ensuring you and your team recognize the difference and where to adopt one process or the other.For Agile software development, I'm a big advocate of XP's practice of continuous integration. This is the practice where a developer checks in code which triggers an automated system to compile and build the code into the system.  One of my early projects was to implement an automated build system for a .Net/C# platform using open source software such as Cruise Control, that worked in conjunction with a custom make file that got triggered during check in to compile and build the code.  There were three development systems these builds got deployed to: development, staging and production environments.
If a build got broken due to a complier error or integrations tests did not pass (unit tests were done at the function level), the developer would receive a warning by email that she/he had to fix the error.  This would only effect the development environment.  It wasn’t till we reached the end of our iteration after all the code was checked in and integrations tests passed, that it would be deployed to the staging environment where system and UAT testing got done.  Once this was all complete, it would go to the “production” environment.  I have production in quotations as this was really a pre-production or “prototyping” environment.
 
So it was with interest that I read this post from the Plastic SCM website about the difference between a “continuous” and “controlled” integration:
 
In a regular continuous integration scenario, all developers perform integrations and solve merge conflicts in code, which is perfectly acceptable on small, well-trained teams. Even agile teams can be affected by personnel rotation, though, or just new members joining, and it’s usually not a good idea to have a brand new developer mixing code he doesn’t yet understand.
 
In controlled integration a new role shows up: the integrator. The integrator is usually a seasoned team member who is familiar with the bulk of the code, the version control system, and the build and release process. The most important feature of the integrator is not that she knows all the code, which is not even necessary, but that she takes responsibility for the integration process. The integrator’s primary goal is creating a new stable baseline to serve as the base for development during the next iteration.
 
I have to agree with this and think it is an important distinction to make.  For the automated test system I was in charge of, I played that role of Integrator that was tasked with setting the baseline for the development of the next iteration.
 
 
The illustration above shows an example of a mixture of a continuous and controlled process.  For anyone tasked with deploying an Agile software development project and are utilizing continuous integration, I recommend looking at this model and ensuring you and your team recognize the difference and where to adopt one process or the other.
For Agile software development, I'm a big advocate of XP's practice of continuous integration.  This is the practice where a developer checks in code which triggers an automated system to compile and build the code into the system.  One of my early projects was to implement an automated build system for a .Net/C# platform using open source software such as Cruise Control, that worked in conjunction with a custom make file that got triggered during check in to compile and build the code.  There were there development systems these builds got deployed to: development, staging and production environments.
 
If a build got broken due to a complier error or integrations tests did not pass (unit tests were done at the function level), the developer would receive a warning by email that she/he had to fix the error.  This would only effect the development environment.  It wasn’t till we reached the end of our iteration after all the code was checked in and integrations tests passed, that it would be deployed to the staging environment where system and UAT testing got done.  Once this was all complete, it would go to the “production” environment.  I have production in quotations as this was really a pre-production or “prototyping” environment.
 
So it was with interest that I read this post from the Plastic SCM website about the difference between a “continuous” and “controlled” integration:
 
In a regular continuous integration scenario, all developers perform integrations and solve merge conflicts in code, which is perfectly acceptable on small, well-trained teams. Even agile teams can be affected by personnel rotation, though, or just new members joining, and it’s usually not a good idea to have a brand new developer mixing code he doesn’t yet understand.
 
In controlled integration a new role shows up: the integrator. The integrator is usually a seasoned team member who is familiar with the bulk of the code, the version control system, and the build and release process. The most important feature of the integrator is not that she knows all the code, which is not even necessary, but that she takes responsibility for the integration process. The integrator’s primary goal is creating a new stable baseline to serve as the base for development during the next iteration.
 
I have to agree with this and think it is an important distinction to make.  For the automated test system I was in charge of, I played that role of Integrator that was tasked with setting the baseline for the development of the next iteration.
 
The illustration above shows an example of a mixture of a continuous and controlled process.  For anyone tasked with deploying an Agile software development project and are utilizing continuous integration, I recommend looking at this model and ensuring you and your team recognize the difference and where to adopt one process or the other.
For Agile software development, I'm a big advocate of XP's practice of continuous integration. This is the practice where a developer checks in code which triggers an automated system to compile and build the code into the system.  One of my early projects was to implement an automated build system for a .Net/C# platform using open source software such as Cruise Control, that worked in conjunction with a custom make file that got triggered during check in to compile and build the code.  There were three development systems these builds got deployed to: development, staging and production environments.
 
If a build got broken due to a complier error or integrations tests did not pass (unit tests were done at the function level), the developer would receive a warning by email that she/he had to fix the error.  This would only effect the development environment.  It wasn’t till we reached the end of our iteration after all the code was checked in and integrations tests passed, that it would be deployed to the staging environment where system and UAT testing got done.  Once this was all complete, it would go to the “production” environment.  I have production in quotations as this was really a pre-production or “prototyping” environment.
 
So it was with interest that I read this post from the Plastic SCM website about the difference between a “continuous” and “controlled” integration:
 
In a regular continuous integration scenario, all developers perform integrations and solve merge conflicts in code, which is perfectly acceptable on small, well-trained teams. Even agile teams can be affected by personnel rotation, though, or just new members joining, and it’s usually not a good idea to have a brand new developer mixing code he doesn’t yet understand.
 
In controlled integration a new role shows up: the integrator. The integrator is usually a seasoned team member who is familiar with the bulk of the code, the version control system, and the build and release process. The most important feature of the integrator is not that she knows all the code, which is not even necessary, but that she takes responsibility for the integration process. The integrator’s primary goal is creating a new stable baseline to serve as the base for development during the next iteration.
 
I have to agree with this and think it is an important distinction to make.  For the automated test system I was in charge of, I played that role of Integrator that was tasked with setting the baseline for the development of the next iteration.
 
 
The illustration above shows an example of a mixture of a continuous and controlled process.  For anyone tasked with deploying an Agile software development project and are utilizing continuous integration, I recommend looking at this model and ensuring you and your team recognize the difference and where to adopt one process or the other.
Posted on: November 02, 2012 02:33 PM | Permalink | Comments (1)

Scrum + Kanban = Scrumban

linkedin twitter facebook Request to reuse this  

You knew it would happen and so it has, with the growing popularity of Kanban in recent years by the Agile community someone was going to merge Scrum with Kanban and call it something cute: Scrumban! (Scrum + Kanban).  Before you roll your eyes and shrug your shoulder at "yet another Agile method", it may be something worth looking at.

Here's a slide from Yuval Yeret who was apparently one of the first few people to formally propose this:

So in a nutshell here's the rationale for combining the two:

  • Since there seems to be many synergies between Scrum and Kanban techniques, why not combine the best elements of both into one
  • Kanban already has a well know lean way of visually presenting the flow of work, so use it to visualize backlog items and user stories
  • Itegrate daily stand up meetings with Kanban review boards to move the flow of the project more effectively
  • Use visual WIPs to help prioritize backlog items and user stories to efficiently achieve incremental progress

Some challenges you will face and need to address before moving forward:

  • Unless you and your teams familiarize yourself well with both techniques, you may waste more time context switching between which Scrum or Kanban method to follow.  Worse, you will confuse the team and Product Owner with inappropriate use of terminology creating self-induced impediments
  • Kanban places a limit on WIPs, which in Scrum means placing a ceiling on the number of backlog items to be checked off at any given time causing the flow to slow and/or stop.
    • Not too big of a deal, but goes back to the previous challenge just mentioned in that a Scrum centered team will get slowed down by wondering what to do when the limit is reached

Anyway, this is yet another inevitable evolutionary iteration of Agile methods and techniques that you may want to familiarize yourself with and try out if it suits your project's goal and requirements.

Posted on: October 19, 2012 08:38 PM | Permalink | Comments (1)

Agile selling retail

linkedin twitter facebook Request to reuse this  

Yet another adoption of Agile outside of software development presents itself again with this article on how a retail outlet called "Oddyssea" based in Half Moon Bay, CA, used Agile development principles to deploy their retail operations:

On July 14, 2012, Oddyssea, a first-of-its-kind retailer, opened in Half Moon Bay, Calif. Equal parts science, nature, games, magic and furnishings, with a generous dash of whimsy, Oddyssea thematically is dedicated to exploring, creating and discovering. What’s most interesting about the Oddyssea retail experience is it was conceptualized, designed, implemented and continues to operate using Agile. The Agile software engineering model.  But Agile is unrelated to the store’s point of sale, inventory management or financial systems. Rather, it’s completely focused on defining the retail experience... to build a retail operation that was flexible and open to customers, collaborative with his target market and, most importantly, change ready.

Leveraging the principles of Agile from software development, they customized the methods for:

  • Quicker conceptualization of new retailing ideas
  • Design implementation based on those ideas
  • Development of a working prototype
  • Testing and tweaking of the prototype based on customer feedback 
  • Creating a culture of continuous improvements by making each iteration better than the last and delighting their customers

I recommend reading the article if you are interested in seeing how Agile is crossing over the boundaries of software development to the development now of retail outlets!

Posted on: October 05, 2012 11:43 PM | Permalink | Comments (1)

An Agile PMO that’s cloudy too?

linkedin twitter facebook Request to reuse this  

 

I found this interesting article on the Executive Brief website.  It advocates integrating the cloud computing service model and agile approaches to bring IT into the business.  This is to deliver solutions irrespective of an IT group's ability and despite their governance (or lack thereof) processes.
 
As the author Mark Thiele states,
 
I can’t remember how many times I’ve bemoaned the fact that the business didn’t effectively consider IT before making a decision... The business should be able to forget IT, they should be able to look at the business opportunity and determine its viability solely on its merits, not on whether IT can keep up.  However, I’m not trying to say IT should become invisible. On the contrary, the need to have IT working “in” the business has never been more important. Who better to translate a business process or work effort into a potential IT solution than someone who understands how IT can be applied?
 
The article goes on to outline a more “fluid IT” model that has both aspects of both Agile and cloud computing services that he outlines as follows:
  1. Rapid deployment of new workloads
  2. Try before you buy
  3. Buy only what you need, only for as long as you need it
  4. Get out of the business of running infrastructure and instead deliver higher level strategic value
  5. Greater flexibility in technology adoption strategies
  6. Lower costs (maybe)
  7. Greener (maybe)
In my view, I could see the above used as a basis for an Agile PMO using a cloud computing deployment model.  I’d rephrase Thiele’s outline like this
  1. Rapid deployment of new iterations (or Sprints for Scrum’ers)
  2. A “potentially shippable product” at the end of iterations that business could try before they buy
  3. A “money for nothing, changes for free” Agile procurement model (could definitely be used if you are doing internal charge backs to business for IT services)
  4. Focus on business value and collaboration rather than standards and processes
  5. Embrace and create a culture of responding and adapting to change rather than resisting it
  6. Lower costs by delivering products faster and with higher quality
  7. Be an advocate for sustainability by incorporating Agile, Lean and Green
Could this make for a more “fluid” PMO?  Or is this idea too idealistic, or worse, just another instance of more buzz words and overhyped technical solutions masquerading as a viable solution?
 
As always, I welcome your feedback whether positive, negative or indifferent!
Posted on: September 28, 2012 03:08 PM | Permalink | Comments (1)

Do traditional PMOs promote mediocrity? Could an Agile PMO do better?

linkedin twitter facebook Request to reuse this  

 

Let's be frank, the whole idea of self-organizing, cross functional teams rest on the assumption that you have a stellar kick-butt team.  Only the cream of the crop teams will provide you the mechanism to realize Agile to the fullest.  Agile was designed for experienced, intelligent, and high-achieving people where you could give them any project, with a streamlined and adaptive method, and they would succeed.  This is why teams typically comprise 3 - 7 members that are co-located.
 
And this is why scaling Agile starts to get difficult.  If you have a large and physically dispersed team, you will inevitably have to start adopting some form of documented processes and governance to ensure and maintain standards that are explicit and clear to all involved.  Without this in place, you will not facilitate one of the main ingredients to Agile success, namely complete transparency.  Furthermore, you will have a bunch of self-organizing scrum of scrums with no direction leading to non-organized chaos.  At least with some standards and governance in place, you would have organized chaos.
 
This leads me to my next irony:  Are traditional PMOs inherently setup to encourage mediocrity?  When an organization starts to get really large and feels the need to centralize, standardize and maintain consistent standards and processes is when PMOs typically get created.  At this point the organization is in a sustaining mode and would not encourage the experimental, adaptive and flexible mindset encouraged by Agile, but would rather promote plodding, yet consistent mediocrity.  I'm not saying this is bad, as I have been in large organizations where obtaining mediocre results on a consistent and timely basis would have been heaven!
 
Its very similar to when a hot startup company grows up and matures into major corporation and goes from disruptor to sustainer.  I don't think this is always the case, as Google and Apple are both examples of established Fortune 100 companies that still do innovative things, but I don't think it’s typical.
 
So the question remains, how do we reconcile scale and standardization with flexibility and agility?  Is the idea of an Agile PMO an oxymoron?
So the question remains, how do we reconcile scale and standards with flexibility and agility?  Is the idea of an Agile PMO an oxymoron?Let's be frank, the whole idea of self-organizing, cross functional teams rest on the assumption that you have a stellar kick-butt team.  Only the cream of the crop teams will provide you the mechanism to realize Agile to the fullest.  Agile was designed for experienced, intelligent, and high-achieving people where you could give them any project, with a streamlined and adaptive method, and they would succeed.  This is why teams typically comprise 3 - 7 members that are co-located.
And this is why scaling Agile starts to get difficult.  If you have a large and physically dispersed team, you will inevitably have to start adopting some form of documented processes and governance to ensure and maintain standards that is explicit and clear to all involved.  Without this in place, you will not facilitate one of the main ingredients to Agile success, namely complete transparency.  Furthermore, you will have a bunch of self-organizing scrum of scrums with no direction leading to non-organized chaos.  At least with some standards and governance in place, you would have organized chaos.
This leads me to my next irony:  Are traditional PMOs inherently setup to encourage mediocrity?  When an organization starts to get really large and feels the need to centralize, standardize and maintain consistent standards and processes is when PMOs typically get created.  At this point the organization is in a sustaining mode and would not encourage the experimental, adaptive and flexible mindset encouraged by Agile.
Its very similar to when a hot startup company grows up and matures into major corporation and goes from disruptor to sustainer.  I don't think this is always the case, as Google and Apple are both examples of established Fortune 100 companies that still do innovative things, but I don't think it’s typical.
So the question remains, how do we reconcile scale and standards with flexibility and agility?  Is the idea of an Agile PMO an oxymoron?
Posted on: September 21, 2012 07:23 PM | Permalink | Comments (6)
ADVERTISEMENTS

"Of all the 36 alternatives, running away is best."

- Chinese Proverb

ADVERTISEMENT

Sponsors