6 tips to improve software development

The dark art of software development, information control: For software development to be successful, the right programmers much be chosen from the beginning and must stay until the end of the testing phase, the most difficult and longest lasting part of the process.

By Tim Fellows October 17, 2014
Finishing a program takes much longer than most people expect, and it can take even longer without making smart decisions with the programmers involved. Below, see six tips for working smarter with programmers. 
Even after 20 years of programming, I sometimes underestimate time and resources required for developing automation software. For software development to be successful, the right programmers much be chosen from the beginning and must stay until the end of the testing phase, the most difficult and longest lasting part of the process. Software development for automation is a bit like playing golf (although less relaxing). You get 90% of the way to the green in one shot, but it still takes another three shots to get the ball in the hole. 
Another similarity with golf is that there is a wide range of abilities. I once came in last in a golf tournament; a hole that might have taken me 10 shots could be completed in 3 by a top pro. With software, the range of abilities is even wider. One reason for this is that seasoned professionals immediately know how to handle most of the things a program requires, whereas beginners require weeks or months to figure them out. In addition, programming for automation is abstract, unforgiving, highly detailed, and often concerns complex logical problems. Not everyone’s brain copes well with these characteristics.
In 2009, I moved to part of the world where many of the houses built in the 1990s had severe structural problems. The repair costs were often close to the value of the property, and some properties were so bad that they had to be demolished. Even some surveyors did not spot the problems. It can be like this with software because software development is a building exercise. If the construction is poor, it can be extremely costly and painful to fix.
Some companies rely on agencies to find suitable programmers. In my experience, there is a tendency to hire programmers at a “standard rate.” Managers (and agencies unfortunately) find programming a “dark art” and find it hard to measure the abilities of individual programmers. Companies put a finger in the air and guesstimate that they need three programmers for 6 months to complete a project. Inexperienced and poor programmers are happy with this situation, but the better programmers are understandably unhappy and will tend to look for other ways to push their careers forward. Thus the pool of programmers gets dumbed down over a period of time. But there are other major downsides of this “bums on seats” mentality. Returning to the golf analogy, a programmer can hit a couple of shots at the start of a project but then move to another contract elsewhere. He may seem to have made a lot of progress, but in reality there is a lot of work still to be done. Programmers who do this never use a putter on the green—they never learn how to complete a project. Instead they leave to someone else the extremely difficult task of completing their program. It is hard for a programmer to come to grips with a part-completed program, and doubly difficult if it has been poorly written.
6 ways to improve software development
1. The final stages of software development, together with the testing phase, take much longer than most people expect. Plan ahead.
2. The best programmers make it look easy but are several times faster than others. This is partly due to experience and partly because they internalize good programming practices. Understand software programming tools and best practices.
3. A poorly constructed program can be a nightmare for everyone involved. Ensure the program has a defined framework. Modular construction helps.
4. The common tendency to treat programmers as a “resource” with a standard rate of pay suits the poorer programmers but drives better programmers to look for opportunities elsewhere. Consider project-based pay. 
5. Getting up to speed with someone else’s program is a very demanding task for a programmer, especially if it has been poorly written. Ensure those involved are involved from the start.
6. If you need software to be developed, it is critical that you carefully choose the right programmer(s), and that you make sure they understand what you want at the start. Pay attention to features and scope.
I have come across projects that have been devastated by poor software development. Sadly, I suspect it happens all the time. Two things are critically important: First, carefully choose the right programmers. If you are not sure of their abilities, check them out with a small task. Second, think through what you need in reasonable detail at the start, preferably involving the programmer(s) in your discussions. Their input may be valuable, and it will also help them understand what you want.
Tim Fellows, Director of LiveWires Autotmation Ltd.; Edited by Anisa Samarxhiu, digital project manager, CFE Media, asamarxhiu(a)cfemedia.com.

Online extra:

Learn more about LiveWires Automation Ltd. https://www.livewires-automation.co.uk/ 


About the Author

Tim Fellows graduated in 1985 from Cambridge University in the U.K. with an honors degree in physics. He then moved into the instrumentation manufacturing sector and while there, started programming in National Instruments’ LabVIEW in 1994. In 1996 he moved into full-time NI LabVIEW programming and then set up his own programming and systems integration company, LiveWires Automation Ltd., in 1999. Since then he has written more than 100 control and monitoring programs from scratch (and mostly for a fixed price) for a wide range of industries and research organizations. In addition, he has completed or maintained other peoples’ programs numerous times. He has also taught LabVIEW courses for National Instruments. www.ni.com

See related articles linked below