Building Software is Like Painting a Wall
Everyone can paint the center of the wall. That's the easy part.
Painting the walls of a room seems easy to an amateur: you buy a few tins of paint, maybe a new brush, and slap it on. But somehow it doesn’t quite look like the image in House & Garden that you’d imagined. That’s because you skipped 80% of the job – the prep, trim and clean-up. Painting a smooth flat wall with a roller brush is the easy part. The part of the job where a time-served painter and decorator’s skills are really called for is making razor-sharp neat edges and keeping paint off the carpet.
Software development progress works in much the same way. When you hire junior developers or a busy agency for a project, they might surprise you with how much progress they’ve made in a short time. That's because agencies often work on projects that are similar to each other, to cut costs. But agencies work with several clients at once, which means that towards the end of your project they may have already moved on to something else – and the last mile can end up being a huge drag.
We’ve seen this happen with numerous start-ups and businesses.
Companies will often find an entry-level developer and throw them in at the deep end with a complex coding project to manage autonomously. Although the project appears to be progressing well enough, when it comes to a final coat and creating those razor-sharp edges, there's no senior staffer available to work on the project. Weeks and months pass, and the project that looked like it was to be a sure-fire success descends into development hell.
The developer becomes stressed and quits, so the company looks for someone new who then wants to put his own mark on it and says that the project needs to be rewritten from scratch. By now, deadlines have passed and budgets are out of the window.
Our point is, it’s easy to tell a good painter and decorator. You know a good job when you see one – an even and neat coat of paint, a quality finish, and s/he leaves the job clean and tidy. It’s not so obvious to see with software development. If your developer or development team are starters not finishers, leave gaping security holes, don’t ask the right questions or make suggestions, or run over time and budgets, you might need a rethink.
Much like painting a wall, one coat won’t cut it. There’ll be patchy bits and smudgy bits and messy edges. Allow enough resources and skilled professionals for a second coat and clean-up time.
Take note of the words of Andrew Hunt and David Thomas, “It’s not at all important to get it right the first time. It’s vitally important to get it right the last time.”
For more advice and tips, join our growing community on Twitter here.