I talked a little about a slash’n'burn mentality that I see in a lot of contract work in my last post, and I want to expand on that here.
When I had my first real job, we outsourced the translation of our product to an external agency. They were supposed to cut images and add translations into product buttons and images. The translations we got bad were horrible. German words with over 15 letters were squeezed in the same box that said ‘here’ or ‘save’ in English, images were pixelated, and a lot of the translation in Spanish ( a language I speak fluently ) simply did not match the functionality. We had to spend a lot of time in-house fixing and re-cutting the images, making sure the translations fit and flowed.
Working with a media agency that does a lot of work, I see two very divergent attitudes towards product development. It seems like a lot of our more experienced software developers and people who have spent a lot of time maintaining sites opt for the ‘take time but do it right’ mentality. Our production team, younger developers and specially external contractors often choose to do things as quickly as possible – copying and pasting hacks from online forums, not caring about HTML standards and getting away with a lot of noise and garbage in their code.
I can understand why contractors would not care. For them, it is a matter of ‘get it done, get paid, move on’. If a photographer can get paid by doing 15 hours of work, why would they bother spending 30 hours and getting things done right? A lot of work I have seen from contractors fall under this model. On the surface, it’s slick and beautiful, but dig a little deeper and you see all the problems and errors that come from trying to get things done quickly — code that is copied and pasted from place to place; badly formatted and completely mangled.
In the long run, this mentality comes back and backfires. Companies that invest the time in thinking and obsessing about every aspect of their software are the ones that are successful. Apple built an empire on superior design. The recent article about the effort and time taken to develop a google button illustrates the importance of thinking functionality through and doing it right. On the flip side, things built quickly and cheaply usually suffer from enormous quality issues. Chinese manufacturing seems to be the epitome of this contractor mentality — do things quickly and cheaply and get lead in toys, toxic drywall and tainted baby milk powder.
If our contractor had done his job properly, we would have recommended him highly for our next project and he would have made more money. In the long run, he would have had to work less because his code becomes reusable and he can just move it from project to project. But this slash and burn mentality seems to permeate a lot of the work culture. CEOs don’t think past the numbers for the next quarter. Production managers laugh at the idea of spending a week in Information Architecture to properly think out a website. Things need to be done, done fast, and done yesterday.
I think people who have spent a lot of time maintaining and looking at other people’s code understand the need to write succinct, simple, bare-bones clean code. They have spent time doing global search and replaces. They have had to edit the same line in sixty different stylesheets that do the same thing instead of being home with their families. They had to refactor DailyWTF candidates. They get that doing it right at the beginning leads to happier, more productive coding down the line. Contractors don’t care, they have moved on when big ugly Asian developers ( me ) come raging through the room shouting that the XHTML is invalid.
As a developer, I know I let a lot of things slide in our projects for the sake of saving time. We stopped setting up continous integration servers for our projects because they don’t usually last more than a month or a month and a half. We don’t write test harnesses or spend time investigating automated testing because project schedules are usually so tight that doing so would mean sacrificing our own free time, since the company usually will not bulge on deadlines on projects. The result of this is fires at the end of the project because things have not been tested or changes are made without a minimum basic level of safeguarding. But how do you justify doing all this to your boss when all he sees is that he can ship it to India, get it done for $5,000 and move on?
“It’s a very sobering feeling to be up in space and realize that one’s safety factor was determined by the lowest bidder on a government contract.” – Alan B. Shepard, America’s first astronaut in space