Continuously controlled integration for Agile development
| 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.
|
Scrum + Kanban = Scrumban
| 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:
Some challenges you will face and need to address before moving forward:
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. |
Agile selling retail
| 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:
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! |
An Agile PMO that’s cloudy too?
|
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:
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
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!
|
Do traditional PMOs promote mediocrity? Could an Agile PMO do better?
|
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?
|







