Freelance Developers Create Better Software
Jonathan Snook, who I’m a huge fan on, just wrote a post about freelance developers being a recipe for poor software. After reading about the planning and development methodologies of NASA he talks about how freelancers may not be able to create products that are of as high quality as they should be. Although I agree that some freelancers can create poor software – real programmers create higher quality code as freelancers in my mind.
Freelancers Should Create Better Code
I’ve been a freelance web developer for almost 6 years, full-time, and earning my entire living that way. The nature of freelancing means that 90% of my projects are solely completed on my own. I’ve found that my code quality has improved quite significantly over my previous work for an employer. When I worked for someone else, I didn’t take as much ownership in the project as I do now. That’s not to say I didn’t take pride in my work, but until you actually work for yourself and make all the decisions it’s hard to understand the difference from working for a pay cheque and working for yourself. I find I take much more time on improving my own skills, and learning best practices. I also keep in mind that I’m the one maintaining this product in the future which makes me document and test my work exhaustively to relieve headaches down the road as best I can.
The main point I feel Jonathan is making is that we still need to make testing a priority just like NASA but on the scale of our own projects. But my own testing, and my client’s testing and review is always more than enough and I rarely have bugs come back in projects any more than a month after they are completed, even within that month any major bugs are really rare.
To walk through the points that Jonathan makes in his post, I just think comparing NASA projects to the type of work most freelancers do is a little too much.
Planning Varies Per Project
First, Jonathan talks about the planning that is so important in the projects NASA takes on, and how it takes up about 30% of their time. I’m not surprised about that at all, when you’re shooting billion dollar rockets into space you better have it planned out pretty well. He implies that planning is left out by most freelancers, and I would have to agree about that, but the amount of planning required is really relative to the project. In my case, I’ve done significant planning on each project I take on, however, it’s probably never been more than 5-10% of the total project. That’s because I’m building web sites, not shooting rockets into outer space. I don’t mean to be harsh, but the planning aspect is solely up to the developer and client – and really is there just to clarify scope and eliminate scope creep down the road.
"Freelance" Does Not Always Mean You’re Not a Part of a Team
Next Jonathan talks about is the rivalry between the developers and the testing department as NASA and how they compete to find bugs in software. The developers want to find it first and the QA department wants to find it to "win the competition" I think this rivalry is great, and in any instance where I’ve worked with a QA department I’ve loved the "competition" that came along with it. However, 80% of my projects don’t need much testing aside from my own developer testing and QA and some client review – which isn’t to say that the projects I work on aren’t mission critical or complicated. But some of my large projects are outsourced from larger firms or companies in which I still work with a QA department who’s job is to find bugs, vulnerabilities, and other flaws in my work. Even though I’m a freelancer, I still gain the advantages of working with a QA department. Whether it’s necessary is dependent on the project.
Code Control and Bug Tracking
Jonathan mentions the version control and bug tracking databases that NASA uses, and talks about how most freelancers don’t use code control (CVS, Subversion) or bug tracking tools enough. Again, I totally agree with this, but in a lot of cases, freelancers don’t necessarily need advanced tools like subversion or bug tracking software. I don’t use any bug tracking software at all. All I use is a spreadsheet with a list of bugs – or even a pen and paper – to write down any bugs I find in my code. As far as code control goes, I use subversion, but not because I have a team that I need to correspond with and control access to code, it’s just because I want to keep a backup of any past changes I’ve made to rollback to past versions. I actually just started using it a couple months ago and haven’t really had a need for it until now that I’ve been taking on a couple really large projects. I don’t use subversion for 90% of the projects I work on. The reason is that as a freelancer, you are in charge of everything, and you don’t need to have a full blown sophisticated bug tracking system like trac or bugzilla. Even code control with subversion is totally unnecessary for a lot of my projects.
I think that it’s hard to compare a project at NASA to a project that a typical freelancer works on. I’ve worked on mission-critical intranets that run some of my client’s businesses. Things like inventory, invoicing, employee calendars, client directories and CRM systems that my clients’ rely on to run their business, and they’re nowhere near the complexity of a project NASA would be taking on. To compare their methodologies to those of a freelancer is a little overkill – I would never consider going through that process for nearly many of my projects.
The projects I take on that would require a separate QA department are projects where I’m a part of a team that includes the QA department, but those projects are not something a freelancer would take on themselves. I’m still a freelancer but I’m also working with a QA department to compete with just as the NASA developers do.



