Archive for build
Rhythm and development (Part 1)
Posted by: | CommentsWe see rhythm all around us. Day and night, awake and asleep, 7 day week, the years, the seasons, and music. Rhythm is very much a part of our lives. When the rhythm of our lives is disrupted we may become anxious or our productivity decreases. I know from personal experience if I do not get my Sunday afternoon nap my workweek is affect adversely.
Rhythm is important to any development process… Rhythm can battle complexity, keep competition off-balance, maintain sanity and predictability for architecture and development teams.
Software Architecture Organizational Principles and Patterns, Dikel, Kane and Wilson Page 73
This is one of the underlying principles of Agile that we are aware of but have a tendency to assume. As you will notice from the above quote this is a principle that is recognized as a good practice for architecture.
What are the benefits of a team getting into a rhythm?
- Predictability
Our customers and stake holders know they will see working software on a set schedule. When the stake holders see the team meeting their commitments with scheduled demonstrations a sense of order comes over the project. - Managing requirements
We can manage many requirement “crises” by instructing the stake holder we will consider the new requirements in the next iteration where the product owner can prioritize the requirement. All new requirements are reviewed so no one feels they are being ignored. - Periodic inspection
Continuous inspection is the mainstay of Agile development. Knowing that we have our customers reviewing our work will make us comfortable in that we are creating software the meets the needs of the customer. - Demonstrations of working products
We have working products that are tested and ready of the customer to use at the end of every iteration. This help guarantee quality. We are “putting the stake in the ground” which helps us to make critical design choices expediently. We cannot get into analysis paralysis if we know we have to deliver working products.
I am sure there are many more benefits of being in a rhythm. But as noted above rhythm is very important in Agile development.
Software Delivery – Continuous Itegration, Build and Deploy
Posted by: | CommentsYears ago I worked for a start-up company and under a very demanding manager. He was a stickler about not having build breaks and that our software could be delivered to whom ever we want after a build. The first task he would do on a new project was to create the make file that would build the install script for the product. To him that was the most critical component and must be constantly maintained during the development cycle. After every build of the product we had an install package.
Software delivery is so critical especially with very complex projects that involve multiple teams. Deploying software into a SOA that is 24×7 presents challenges that we never faced in our small start-up. But the principle remains the same, “You need to know how to deliver your product right from the beginning of the project”.
How many project put this as a top priority? I have seen many situations where how we deliver product into the “live” environment is not considered until the end of the project. Why should this be important?
- Large systems can be fragile
With a small product you can control the environment it will be deployed into. With large system deploys their are many factors you have to be aware of during a deploy. Just one table not being updated in a database can cause serious problems during a deploy. With the multiple connections that are involved it can be very difficult to track down the problem. - The individual teams cannot understand the whole
It is unrealistic to have all of the teams on the project understand every aspect of the deployment. The team’s focus is on their functionality they need to provide. - A continuous integration, build and deploy process needs to be implemented
Continuous integration, build and deploy are the cornerstone on which a solid software system can be built. Without this in place you will have difficulty deploying a workable solution. - A integration and build team is critical
This is the team that is responsible for building and deploying the product. They understand all of the components of the system and determines the deployment strategy.
A good Agile process depends on having the foundation in place. Continuous integration, build and deploy is the foundation for good process.