Avoiding software development nightmares
05 April 2016
Tim Fellows, a certified LabVIEW developer and system integrator at LiveWires Automation, discusses how to avoid problems during software development.
lIn the last few years I have come across the following scenario in industry many times: A complex piece of software is being written by a team of developers. The initial deadline for completion has passed and there is pressure to complete the work. The developers are working all hours, but no-one really knows how long it will take. Everyone’s stress level is high and the health of some staff members is being affected. Management are trying to work out how to limit the damage – whether to recruit more programmers, let things continue as they are or maybe even pull the plug on the whole project.
Unfortunately at this stage there are rarely any good options. Throwing more developers into the mix can actually slow the project down because they will need help ‘getting up to speed’. Adding developers also creates a need for more communication owing to the fact that, sooner or later, their work will have to mesh together. However, one instance where adding more developers can work is where the new developers bring specific skills that the existing ones lack.
I believe that the above scenario can be avoided. To understand how, it is necessary to think about some of the characteristics of software development work.
Estimation of timescales
Each new software project is unique. It will most likely not be possible to compare its likely timescale with that of another project. In addition, the complexity of software adds to the difficulty of estimating reasonable timescales. Caution should be exercised in estimating timescales and the best estimate of timescales is likely to come from a developer who has previously been involved in many time-critical projects, preferably projects that have similarities with your new project.
Up front design
Studies have shown that time spent designing software at the start of a project is time well spent. Making design changes once work is under way is much less efficient and becomes progressively worse the later the changes are made. Unexpected changes also make the program ‘messy’ and harder to work with, and this is when the phenomenon of ‘software decay’ begins to set in. In some cases, insufficient up-front design can mean that the program is given the wrong overall structure at the start and this can become a major problem.
Great care should be taken in the design process. Underestimating the complexity of what is required is a mistake, as is failing to spot elegant solutions where things can be made simpler. The design process also needs to involve all ‘interested parties.’ For example, there is nothing to be gained from the developers starting to design a program with insufficient input from those who know what the market requires and wants.
Sometimes there can be pressure to start the development process before sufficient design work has been completed, so the end user can see that progress is being made. This pressure should be resisted, where possible, by stressing the importance of ‘proper design’.
For anyone who has some computer literacy, programming is an easy field to get into. Even after a week or two of study to learn some of the basics, the demand in the market is such that an agency may be keen to sign up a fledgling programmer and promote him or her to various organisations. In reality, though, programming is an unforgiving and often complex task. A highly analytical mind is required, with a flair for solving complex logic problems.
There are a multitude of different qualifications across the software world with no common standard. Developers may question the value of such qualifications and decide not to bother with them. On the positive side, subjects studied in further education, such as maths and science subjects (including computer science and engineering) may give a rough gauge of a programmer’s ability to handle the complex logic of programming.
A number of different methods of finding programmers are worth trying, including Google searches, LinkedIn, agencies and personal recommendation. If you have any doubt about a given candidate, it would be worth arranging a short initial trial period. Up front design is essential in software development, as is the appointment of good quality developers. The most effective developers will have the experience to estimate timescales properly, have a good grasp of their language, be good at solving complex logical problems and should also have good interpersonal skills.
Tim Fellows has recently launched a new service ‘LabVIEW Doctor’ service. He is able to help solve coding problems in real-time. To find out more about this service go to: www.livewires-automation.co.uk/online-labview-assistance.html
Most Viewed Articles...