How’s Your IT Efficiency?
12:54 pm in SOA Solutions by admin
Many captive software development groups operate at low efficiency. There are reasons, but do they justify shunning all process improvement?
Captive shops produce software with only one customer, the business side of the same company. From an outside point of view, this should be a great situation for efficient software development, however the opposite is often true. Why? Well, FUD.
Risk Averse
If the business is successful, like making money, and assuming the products of the software group are viewed as important to that business success, many managers find themselves in a position of nervous comfort. There is a de-facto proof that the software is good enough. After all, the business relies on it and is making money. So the methods and techniques, the governance, for maintaining and extending the software must be okay too.
Changing anything could potentially involve a risk of upsetting this happy situation. Many managers are not willing to assume this type of risk because they fear that what is working may be broken. These risks are not essential. The software is viewed as supporting a larger product, and that product incurs essential risk. The software is thought of like buying a delivery truck or copier where the risk is not essential to the business, therefore it should be minimized.
Couple this with the problem that many managers are not especially technical and it is understandable why “No.” becomes the only answer for any question of process refinement.
Contrast this with companies that produce software as a product. They are usually inspired to refine their processes to gain an edge on competitors, improve responsiveness to customer issues, reduce cost, improve quality, and increase employee retention. In other words, if the purpose of the company is to produce software, then the risks involved in process improvement are the essential risks that make the company interesting and viable.
From the developer’s perspective, when you know the answer will be “No.” before even asking, you stop asking. The developers either look for greener grass or learn to live with low efficiency. Worse, new graduates hired into this environment are trained that this is the way software development works in the world.
So there is a stalemate, a stasis that guarantees efficiency will not improve. Management fears risk and developers are cowed to acquiescence.
Slippery Slope
However, there are several factors that may cause efficiency to decrease.
One problem is turnover of the development staff. This is doubly harmful because the tacit knowledge may not have been captured in the low efficiency process and higher skilled people will get more frustrated by the situation and are more likely to leave. Replacing a talented engineer has several significant costs; recruitment, the 3-6 months needed to become productive, and the opportunities lost during this period. The net result is a staff that has a lower average skill set who must maintain and extend programs developed by brighter folks. Entropy happens.
Another is a bias toward building newer features separately from existing features. Since there is a desire to ‘leave what is working alone’, new features cannot be integrated with older features. Rather than reworking parts of what exists to make it work well with new features, the new features are ‘glued on’ like a motorcycle side car. So instead of morphing your Harley into a Land Cruiser, you wind up with a clown-car motorcycle with 5 sidecars. Entropy accelerates.
Entropy compounds itself. The software becomes unnecessarily complex. Each bug fix, each feature addition takes longer. New staff faces a longer learning curve to become productive. Costs rise, feature additions slow. Efficiency declines.
Moving Forward
As with any process modification, the first step is recognizing that you have a problem. This can be a very difficult obstacle to overcome because ‘everything is working fine here’. Often measurements of the development and maintenance process are ineffective or nonexistent. You will need to know where you are before you can chart a new course.
Next try to get a bearing on how your processes compare to other companies’. Draw on the experience of technologists and managers who have worked in other companies to learn about techniques that worked well. “At XYZ Corp. we installed continuous builds and saw a 5-10% reduction in bugs.” Also look for published research on areas that you suspect could be improved. “TDD increased cost by 15-35%, but reduced defects by 60-90%.”
If you are a technologist, look for ways to incrementally improve the situation rather than lay out the big vision. Broad statements like ‘we could double our productivity if…’ will prove to management that you’re a dreamer. Try working with managers to understand their concerns and work to address them in your requests. Initially, make proposals that you are very comfortable with, where the cost and benefit are measurable and unambiguous. Advise your management of the cost, benefit, risk and your level of comfort about the correctness of all these.
If you’re a manager, realize that there are many way to improve, each with cost, risk and benefit. Challenge the technologist to present opportunities with cost/risk/benefit assessment. Try some small changes, measure the results, reap the benefit. Remember also that the Hawthorne Effect can provide a measure of inspiration to the developers working with you, helping you be more successful; always be experimenting.
Most importantly, business and technology professionals need to work to build understanding and trust.
