Our development processes and interactions feel very different than most anything else that I have ever heard of in the world of software. We can all agree there are many reasons the traditional software development pattern is outmoded but what I want to talk about has nothing to do with code or design but instead with people.
The way most software projects launch is on a tight deadline and often because customers don’t see working versions soon enough most of the work is piled in at the end right before launch. The traditional software launch involves late night coding sessions with red-bull, intense developer camaraderie, daily heated status meetings, and stressed out management. Right before the launch you often wonder aloud “Why I am doing this”, but after you see the product up and live that all fades away and before you know it you behind on another project that you’ve under-estimated and haven’t been able to focus on.
This method has some expected repercussions: unhealthy workers, angry customers, distrust. The pattern of swinging between no stress and high stress is especially bad for morale and productivity.
Not only that, “Last Minute Code” is BAD; it’s difficult to maintain, feels hacked together, and was not properly thought through. We rush through things in order to make our clients satisfied, to defend our cost, and to get it out the door. When both sides are only satisfied that something launched, everyone loses.
When a project has been properly handled, our website launches are the most anti-climatic events of the entire process. We often have to have a small party just to make it feel like something has taken place.
Often times we find ourselves battling against our own nature to ensure that we are using correct methods to finish the project. For instance, recently we made a mistake by telling a client we could hit a deadline at budget we knew was a little on the low side. Why did we violate our own principals? Because, we wanted it to be true. We wanted it to be easier than it really was. We wanted to see this expansion of the software launch. We wanted to help the client’s business. However, we ended up with some late-night coding, last minute changes, and an estimate we couldn’t stick to (and swallowed some of the cost). Of course, the client really didn’t mind, but it was draining on us and made our lives more unhappy. We are proud of the results, but we shouldn’t have been making promises that we couldn’t keep, no matter how much we wanted to make them true.
Luckily, this is the extreme minority of cases. Every once in a while, we’re reminded of why we do things the way we do them, and the end, good clients are happy with a good product when you do it the right way. It may not be cheap, it may not be fast, but its good and its something to build a business off of.
When done right, iterative development means the customers are using the software weeks and often months before it’s initial launch. By the time the deadline comes everyone has worked out the bugs and learned how to use it. Decisions are made as issues come up and design and code is refactored on the spot. The last few days should be about minor fixes and reflections of where to go next. Not about crossing your fingers and diving in.
The night before launches I leave the same time I always leave to go home, the day of the launch I get in at the same time I always get in. I am just as calm 12 hours before a launch as I am 12 hours after starting a new project. I’m proud to work with people who are talented, confident, on track, and always thinking. I’m proud to have clients with focus, reasonable goals, and the resources to build a business.
It all comes down to what you value in life, I love what I do and am proud of the software we build but I also have a great respect for my health and sanity. In fact, working should augment your life, not hamper it. Your job should be the thing you love to do that doesn’t bombard your life with trauma. A job should really be your passion and your weekday happy-place.
Remarkable software is best built by healthy, happy people who are passionate about not only their code but life.