Archive for integratoin
Quality and the process
Posted by: | CommentsQuality of software or any product that we sell and provide a customer seems to be talked about but not effectively addressed in most software processes. In the process of reducing the size of my technical library I have been looking at some of my “old” books. It is interesting to see how many of these books are referenced in new books that are published.
The book “Improving Software Quality: An Insider’s Guide to TQM” by Lowell Arthur (1993) is one I was just perusing. In the preface he has a section on eliminating the testing group. Wow, this is a book on Total Quality Management and they made a bold statement such as this. Tell me how many companies have eliminated their testing groups to improve quality?
Here are some other quotes from the preface:
Create a constancy of purpose toward quality and continuous improvement
This is a underlying principle in Agile development. The whole team is involved in process improvement through constant inspection.
Institute leadership instead of management by numbers
That is the goal of self-organizing teams. Leadership is distributed among the team members in that they agree to common goals for quality and hold each other accountable. Just having a list of defects and managing this list is not a sign of a quality organization.
Drive out fear so that everyone may work effectively.
Time and time again I hear the complaint that a person is evaluated by the number of defects that are found in their code. This creates an environment where people want to cover up any problems they discover. I just recently had to defend the number of defects that were recorded against our team during a clean up sprint (these were actually new requirements). I want any defect to be recorded so we do not have them reach the customer. Removing the fear of recording defects goes a long way to creating an quality product.
Break down barriers between departments and work groups
Simply stated, have cross function teams. If everyone is on the same team you have no barriers.
Eliminate slogans, work quotas and management by numbers. Substitute leadership.
What would our managers do? I guess I am being a little sarcastic. But so many activities our managers do do not enhance quality.
Remove barriers that rob workers (management, professional and craft) of pride of workmanship.
Nothing encourages a team more then a job well done that exceeds customer expectations. We want to be proud of our work.
Nothing new is under sun as wise King Solomon said. Agile development provided solutions that provide for a quality product.
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.