Hi, I’m Don, token Web programmer at Brain Fuel and I have a thing or two to say about contract programmers. I recently found myself working on two separate Web based software projects that were started by contractors. The first was developed using PHP. When I got in on the project (as an additional contractor) I found some of the worst code I have ever laid my eyes on.
The client had in mind a very complex system that would be modular and have a bit of functionality added here and there over time. A sort of evolving system with many unknowns as far as future expansion. So it was a system that required a developer to invest a lot of time setting up a solid architecture allowing for painless expansion. Well, the lead contractor barely had the skills to write a solid “hello world” application, let alone an expandable system. I don’t mean that I had stylistic disagreements, this guy had no clue.
How was the client to know? He knew little about what this developer was doing, not to mention, he’s not a programmer. All the client knew was that he was paying this guy a premium and if you pay someone a premium, they must be good, right? So after 2 hours of reviewing this contractor’s code, I told the client I didn’t want anything to do with the project and he asked why. I told him. It nearly broke his heart. Here he thought this guy was a software master and it turned out he was a high priced amateur.
After a month I was hired (not as a contractor) to play lead developer for a friend’s business using ASP.Net and C#. I inherited yet another project that was started by a contractor. Now this project was similar in its requirements: future expansion and modularity. It was obvious that the contractor who started this particular job knew how to develop quality software, but he didn’t exactly apply his ability fully. I had to start this project from scratch salvaging only the database he had in place.
As I reviewed this second project I had to ask the obvious question: why do contractors cut corners? The answer was as obvious as the question: It is not in the interest of contractors (in programming anyway) to create applications with the future in mind. The priority of a contractor is to get the job done and move on to the next one. This leaves little room for the future. It makes perfect sense. If you make money on a per-job basis, the more jobs you complete, the more cash you pocket. Now I don’t mean to say that all contractors are amateurs or that they all just look for the quick turnover, but the priority of a contractor is not often in line with the priority of the organization that hires him/her.
In-house developers on the other hand have it in their interest to write a solid application for the simple reason that they will have to live with the project for the duration of their employment. If you like your employer and your job, you’ll develop the best software your ability allows for. Not everyone can hire a full-time software engineer so how do you cope? I’m not exactly sure, but if you can hire a reputable contractor to architect your system, you can then hire a contract programmer to write it, all the while sticking to a well mapped plan. Or you can have a seasoned developer at least interview your contractor to check for initial competency. Just a few suggestions.