We all believe that software development would be more successful if we only had a manageable, repeatable process. But it takes more than that to get quality software out the door. We need to ensure that every activity carried out in the company moves us closer to the goal of shipping a product that meets our customers’ expectations.
A unified development effort not only keeps everyone’s eyes on the target, it provides the developers with the necessary tools and support to achieve project milestones.
Here are five strategies to ensure your iterative development process is successful.
1. Sell Solutions not Products
In a market-driven company, the Sales and Marketing departments determine that every product you develop solves critical business needs for your customers. Extensive research into the industries you serve, along with ongoing customer contact, results in a profile of a product that you know is needed in the marketplace.
Strong product managers should maintain a hands-on approach as the design takes shape. Product specifications must map to each demonstrated customer need, and systems analysts should ensure that the design of the product meets those specifications.
Don’t add features just because they’re “cool”. Why expend resources developing functionality that may be irrelevant to your customers? Instead, put that effort into the functions that will make customers rely on your products, not the competition’s. Product design should be realistically constrained by what you can deliver by deadline without burning out your people.
2. Build Quality from the Start
A unified development effort includes having Quality Assurance people involved from the beginning. They help define what the quality standards are, and measure the evolving product against those standards with every iteration, from the earliest prototype to the final release.
Customer Support representatives, product trainers, technical writers, and Professional Services Group staff (the consulting and services implementation arm) also contribute by reviewing the product at every milestone to become familiar with it, document it, help work out the bugs, and offer feedback on ways to shape it to your customer’s expectations.
Regular code and design reviews help find potential problems in the software early enough that any corrections are the least costly in time and resources. The reviews are not forums for solving the problems, only for identifying them in a constructive way. Finding the right solution is then the responsibility of the developer, who is empowered to utilize any resources needed to solve the problem.
A mind-set of continuous quality improvement encourages developers to build in quality with every object, every line of code. Since reviews are, at times, cross-departmental, you get a consensus of opinion on how the product should meet the stated needs. Planning proves to be more effective because you don’t have to spend time chasing problems that pop up later in the development cycle – problems that could have been headed off much earlier by having independent reviews and an ongoing commitment to quality.
3. Don’t Oversell
While the product is being built, Sales and Marketing continue to create interest in the product, but avoid stirring up “hype”. This is simply a credibility issue. By first limiting the initial design to something you can realistically deliver by release date with available resources, you create a pervading confidence that you can, indeed, deliver.
Employees believe it, because they see the signals that indicate a carefully-managed process, along with complete agreement among all departments of the company on what you’re creating.
Customers and prospects believe it because every person they talk to at the company is focused on creating and selling something real – a real solution for a real need. Because you don’t oversell, you don’t disappoint anyone. Not every product has to be a blue marlin. Trout are delicious and satisfying, take less equipment to catch, and are a lot easier to get into the boat.
4. Maintain Focus
Late in the development cycle, when deadlines loom and the risks increase, you may have to back up a step or two in the process. Have another review. Re-iterate the product. Re-test. The temptation is to think there is no time to repeat any steps, no time even to hold meetings to discuss problems. Yet slowing down to assess the situation and discuss a solution is more likely to provide a workable, effective answer. Status meetings, held more frequently for shorter periods of time, keep everyone informed and allow concerns to be aired, and resolved. Do whatever it takes to maintain focus.
5. Create a High Performance Culture
If you hire the best people, treat them as the talented professionals they are, give them the most effective tools to do their jobs, and empower them to create workable solutions to business problems, your company will succeed. It’s important to recognize that your employees also have needs: for a life outside of work, for working conditions that are conducive to optimum performance, for good equipment and timely technical support for that equipment, for camaraderie, for communication, and for respect. Again, every department in the company should be committed to delivering solutions that meet those needs.
If development lags, avoid the temptation to shuffle resources, to pull people off one project to shore up another — the resource cost is too high. Staff become distracted, possibly detached. Their commitment waivers. They may even feel threatened. It takes time for new team members to get up to speed, so they don’t feel overwhelmed. None of this contributes to getting the project back on track. The impact may even be permanent.
Overtime is also not a solution. If overtime work is necessary to get the product completed, there is something fundamentally wrong with the process, or more accurately, the process management. Employees will not tolerate conditions that lead to burnout when competitors are offering less soul-destroying alternatives. And it’s the good, capable ones that leave, because it’s easier for them to switch.
Along with providing the best working environment you can produce, institute a generous training program for all staff. Training is much less expensive than the inability to perform in a crisis. Train managers to manage, to communicate, to evaluate, and to lead. Train employees to work together, to increase their skills and level of knowledge in their respective fields, and to broaden their skill base in areas which will be of benefit not only to the company, but to the employee. Training opportunities include professional development conferences, certified professional training, software training, skills enhancement, and educational courses
In return you get staff who are loyal, smart, skilled and up-to-date.
Live the Process
These five strategies can be summarized in one point: live the process. Living a process involves having it so ingrained in the corporate culture that it is instinctive. Admittedly, it’s difficult to get the team to the point where they don’t have to consciously think about applying the process to their work.
When a project hits a crisis point, the natural reaction is to abandon the process and grab at the quickest solution. After all, you perceive that it’s the process that has brought you to the crisis. But that’s like jumping out of the raft the minute you hit white water. It may look like the safest thing to do because you’re being buffeted from all sides. On the contrary, it’s time for everyone to focus on navigating past the difficulties, applying their expertise to overcome the obstacles. You’ll ride out the crisis faster, with a better outcome, by using the process as a rudder than by leaving yourself open to chaos.
# # #
Need help with your software development process or growing your business? I have some ideas for you. Contact me: beth (at) bethagnew.com