Professional Documents
Culture Documents
7 Practices
7 Practices
7 Practices
27 Jun 2008 In this article, learn about seven practices that can reduce overtime, cut costs, and speed up production on your software development project. Create a solid foundation for healthier development, and increase your chances of meeting deadlines with less stress.
Introduction
Software development is a human activity and, fortunately for us developers, it will be for many years (and maybe decades) to come. Unfortunately, as with any human activity, software development is prone to human error. History has taught us that human errors in a group working together can be minimized with organized collaboration among participants. Modern software development processes target collaboration by defining clear roles, activities, and artifacts on a development team. No matter how well an organization implements a software development process, or how much money it spends on the latest IT infrastructure and tools, I continually see the same problems that add overtime to a project and put it at risk of missing the delivery date. For example, consider how many times you have: Been stuck waiting for a database request to be implemented. Waited half a day or more for a business decision to be made.
Seven practices for healthier, faster software development Copyright IBM Corporation 1994, 2007. All rights reserved.
Page 1 of 11
developerWorks
ibm.com/developerWorks
Been delayed after realizing that you haven't mastered the learning curve of a new programming library. Spent precious time trying to find a workaround for a bug in your recently upgraded integrated development environment (IDE). Spent time training the new development team member. I've contributed to many projects for different industries and have seen how several organizations deal with the challenges of creating complex software projects. I've observed how each project was managed differently, how problems were addressed, and what mistakes and achievements were made. The practices discussed in this article are based on my observations. These practices will help any software development team as they come up against common obstacles. They will also contribute to a solid foundation for healthier development and help speed up production. The seven practices are: 1. 2. 3. 4. 5. 6. 7. Improve business processes before starting development. Create a solid software development team. Improve processes for service requests. Minimize reporting of software metrics. Improve communication with the business team. Use the right programming language. Use the right IDE.
The practices in this article target problems that are better addressed at the management level. Usually, developers can only report the issues to upper management for consideration. Because project managers have the necessary level of authorization, they are the ideal candidates to promote these practices within the organization.
ibm.com/developerWorks
developerWorks
might not be familiar with the rest of the process outside their department. It is hard for them to collaborate with suggestions and improvements to the process. Software development is driven by requirements derived from the business process being implemented. If the business process hasn't been properly standardized or reengineered before software development starts, many questions will arise. Late questions could lead to important business decisions being made under pressure when you're trying to deliver the correct information to your development team on time. Software development and business process reengineering (BPR) cannot happen in parallel. Trying to make them happen at the same time will definitely result in delays and budget issues. The worst time to review the business process is in the middle of any software development phase. For example, consider two of the most critical phases: Elaboration If you reengineer a process flow that is being analyzed during the elaboration phase, there will be a delay in the delivery of written requirements to the software development team. It could also force the review and adaptation of previous requirements that might have already been delivered for implementation. Construction If you reengineer a process flow that was implemented in the software during the construction phase, the developers will have to readapt, or even worse, rewrite all affected software modules. Modern software development processes promote acceptance of change. But radical changes in direction can greatly discourage developers, especially if delivery dates are not adjusted realistically to accommodate changes. If you decide to develop the software implementing the business process as is, without checking for flaws or properly standardizing or reengineering, then the final software product will eventually reflect these flaws as well.
Seven practices for healthier, faster software development Copyright IBM Corporation 1994, 2007. All rights reserved.
Page 3 of 11
developerWorks
ibm.com/developerWorks
Mature collaboration on a software development team can't be achieved overnight. Nobody should believe that a software development team is composed of "just programmers" who are interchangeable and can be rotated to other teams. A team must have a level of stability that is achieved through long time collaboration by the members. The longer your team works together, the better they will perform. Developers with seniority can't be replaced like Lego pieces with new-hires, regardless of their experience. You want to encourage permanence among your team members. Just as you'd motivate an all-star basketball team, you need to motivate your your developers to be part of the organization. Things to consider are: Paying well Pay your developers well relative to the size of your organization and the return on investment of their work. Also offer yearly salary raises based on professional improvement that has benefitted the company. Remember, your software developers are not just programmers. Offering a clear career path Even with a good salary, many software developers tend to resign from their jobs if no clear career path is available. Carefully assess the goals of each member of your software development team. Some people will want to be promoted to management positions, and others will prefer to stay on the software development path. Whatever the case, clear career paths must be present and part of the company culture. Rotating roles on each iteration Challenge your developers to play different roles on each project iteration. Each team member will get the opportunity to have different levels of responsibility, become more versatile, and never fall into a routine. For example, challenge a developer to lead the whole team on one iteration, the next time have that developer do requirements analysis or software design, then move to deployment, testing, or documentation. Rewarding professional achievements outside work If a software developer writes a book or technical article, achieves a professional certification, or gains a skill that can be used in the interest of your company, that developer's effort should be rewarded. Offering professional training When possible, invest in your team by keeping their skills sharp and up-to-date. Focus especially on training that can provide a competitive advantage to your
Seven practices for healthier, faster software development Page 4 of 11
ibm.com/developerWorks
developerWorks
organization. Maintaining a policy of "no overtime or working on weekends" Software development is closely tied to the developer's concentration and emotions. A bad piece of software can be the product of working in the wrong conditions or environment, such as working too much overtime or on weekends. While working overtime, I focused more on finishing the tasks quickly so I could leave, rather than on producing quality code. The situation is compounded if required information is delivered to you late, and whoever was responsible for it has left for the day. Focusing on progress more than hours worked Unless your organization profits by charging developer time, it's more important to focus on progress each day and delivering on or before due dates, rather than closely monitoring that developers fulfill their daily eight hours.
Seven practices for healthier, faster software development Copyright IBM Corporation 1994, 2007. All rights reserved.
Page 5 of 11
developerWorks
ibm.com/developerWorks
ibm.com/developerWorks
developerWorks
even necessary). For some of us, it's very difficult to concentrate on one programming task, suddenly switch attention to focus on a one-hour meeting, and then go back to the task. In a meeting, my concentration is often still on the code on the monitor back in my office.
Seven practices for healthier, faster software development Copyright IBM Corporation 1994, 2007. All rights reserved.
Page 7 of 11
developerWorks
ibm.com/developerWorks
tweaks, and tricks that are known only to developers with a lot of experience on that IDE. First, identify the right tool for the job and then use it consistently. You should adopt a new IDE only if the project's requirements really demand it. The following are some tips for identifying the right tool. The right IDE must at least support: Incremental compiling Allows code to be automatically compiled upon saving, avoiding the need to recompile the whole project before execution. Recompiling is a very time-consuming task, especially when the project grows over time. Hot code replace Allows you to modify code, and immediately compile and execute while in the middle of a debugging session. Search utilities for classes, variables, and text Lets you easily find code elements without having to browse all the project files. Code navigation utilities Help you quickly access code elements without doing a manual search. Automatic code error warnings Improve your performance by immediately reporting any programming mistakes, thereby preventing finding errors later during compiling time. Code assist Provides pop-up help to complete code statements. Code formatting Helps to quickly format code so you don't have to do it manually while writing. Snippet and full source code view Let you visualize either a portion of code (method or variables) or its full source. Debugger
ibm.com/developerWorks
developerWorks
Allows testing and analyzing of source code by stopping its execution and proceeding to execute one instruction at a time. Finally, do your developers a huge favor and do not use tools in beta version unless it is absolutely necessary.
Conclusion
In this article, you learned about seven practices that can reduce overtime, cut costs, and speed up production on your software development project. Create a solid foundation for healthier development, and increase your chances of meeting deadlines with less stress.
Seven practices for healthier, faster software development Copyright IBM Corporation 1994, 2007. All rights reserved.
Page 9 of 11
developerWorks
ibm.com/developerWorks
Resources
Learn Read the works of Paul Grahamessayist, programmer, and programming language designer. Get a gentle introduction to Extreme Programming. Joel Spolsky is a software developer who writes about software development, management, business, and the Internet. Dreaming in Code by Scott Rosenberg explores how our civilization runs on software, yet the art of creating it continues to be a dark mystery, even to the experts, and the greater our ambitions, the more spectacularly we seem to fail. In the Architecture area on developerWorks, get the resources you need to advance your skills in the architecture arena. Browse the technology bookstore for books on these and other technical topics. Discuss Check out developerWorks blogs and get involved in the developerWorks community.
Trademarks
IBM, the IBM logo, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli, and WebSphere are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol ( or ), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at
Seven practices for healthier, faster software development Page 10 of 11
ibm.com/developerWorks
developerWorks
http://www.ibm.com/legal/copytrade.shtml. Java and all Java-based trademarks and logos are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
Seven practices for healthier, faster software development Copyright IBM Corporation 1994, 2007. All rights reserved.
Page 11 of 11