#development #reading-list

🔗 The joys of maintenance programming

In the old days when I started programming, green programmers trying to build their skills and get experience started out doing maintenance programming. Only the old hands got to write new code. The newbies cut their teeth debugging and fixing musty old code that still worked for the business. I've done my share of new development, but today I do maintenance programming almost exclusively. After working on way too many failed ground-up "green fields" projects I prefer to debug, fix, and enhance production software. I like working with real users rather than making up "use case". I prefer building confidence and making my clients happy with my work rather than arguing with them about features, specs, budget, and schedule. I like having a prioritized list of well-defined tasks that refer to existing code rather than trying to blue-sky specifications. I like charging by the hour instead of by the project, and not having clients balk at my rate.

I mainly work with web applications now, and I specialize in database-backed web sites. I rarely take on new development projects, but I frequently get called to salvage projects that went bad. Clients fire their developers (and vice-versa) leaving production code orphaned. Developers put their energy into new development and don't respond to bugs or enhancement requests from old clients. I charge by the hour and I get the job because I don't tell clients they need to throw everything away and start from scratch — something they get from other consultants.

Software often stays in use longer than anyone expected when it was written — until recently I supported a law office billing system that was written in 1986 using OMNIS 3 and wouldn't run on any Macintosh newer than an SE/30. Clients who depend on legacy systems will pay plenty to keep those systems running, because they can't risk their business on new software, and they can't afford to fund new software development and the subsequent data migration and training. There's a rich vein of maintenance work out there that most programmers turn up their noses at, preferring ground-up development projects that neither they nor their client are well-suited for.

continue reading on typicalprogrammer.com

⚠️ This post links to an external website. ⚠️