Saturday, March 7, 2009

Challenges of Maintenance Programming

Explain why maintenance programming may be more challenging than new development. Why must a good maintenance programmer have good “people skills”? What are the other desirable characteristics of a maintenance programmer?

According to Joel Spolsky, the reason that maintenance programming is much more difficult than new development is the fundamental law of programming: “It is harder to read code than to write it.” I don’t agree with this entirely, as I find reading code easier than writing it (well, most of the time ). Anyway, this is how it is in the real world. And there are several reasons why it is more difficult to maintain software than to make a new one.

First, software maintenance is intellectually complex. It requires innovation while constraining the innovator at the same time. Second, software maintenance is technically difficult. The maintainer must be able to work with an existing concept and its code all at the same time. Third, software maintenance is said to be unfair, because the maintainer never gets all the things he needs, like documentation. Fourth is the no-win situation of the maintenance programmer because he can only see people with problems. Many developers also consider software maintenance as dirty work because you have to work at the grubby level of detailed coding. These challenges are part and parcel of maintenance programming.

I agree that doing maintenance programming is a difficult task and there are certain traits that a maintenance programmer has to have in order to perform his task well. Maintenance programming requires a lot of creativity, adaptability, patience, discipline and good communication. Maintenance programmers have to be creative in reworking the code and making it work like new. In addition to that, they have to adapt to how the old code was written to maintain consistency within the software. Patience and discipline are skills that cannot be easily acquired. Maintenance programming might lead you to becoming frustrated easily and this is where you should have patience and discipline.

Finally, good communication skills are important in being a maintenance programmer. Communication with the users is very important in doing maintenance programming. Many software developers are introvert persons who prefer to deal with technology rather than with people. However, the software is written for people to use it, and in the case of maintained software, we already have users. It is crucial to find out how they use the software, why they use it, what problems are they trying to solve, what functionality they need. To find that out, don’t wait for them to come to you; be proactive and go to them. Try to establish simple and effective procedures for submitting bug reports and enhancement requests. When they report a problem, get back to them immediately, even if you don’t have a solution at that moment – just let them know you are looking into it and not ignoring them. Keep them updated about the status of their problem. More importantly, be honest; if you can’t meet their request for any reason, tell them so they won’t expect for anything more. Communication skills are also important when you want to talk to the original developers of the software. They can be very helpful when it comes to this because they were the ones who created the software in the first place. Although they might not help you do the actual work, they can give you a handful of ideas to make your work easier.

No comments:

Post a Comment