As we move from one season to another in life, it’s important to step back, take stock, and gather the lessons that will benefit us in the next season and beyond. In this article, consulting software tester Matthew Heusser reflects on some of the lessons he’s learned.
In 1999, I left my nice, comfortable position at a great company to go work for “RealtyCheck.com.” We were going to make millions, I tell you. I mean, we had ".COM" in our name, and it was 1999! What could possibly go wrong?
The company dress code was shirt and tie four days a week. I should have known we would never make it.
Nearly ten years later, in 2008, my friend Chris McMahon wrote on a test discussion list that Socialtext was hiring. I responded, jokingly, that I was only interested if I could work from home. It turned out the whole software development team worked from home, and Chris offered to recommend me. The next three years were among the most exciting, joyful, fast-paced, personal and professional growth years of my life. They sharpened my technical skills, stretched my social skills, reinforced my habits of study and writing, and helped launch my career as an independent. I am proud of the tool we built. (I am using it to compose this article.)
When my time at Socialtext ended in April 2011, I took a few moments to take stock of some of the lessons I had learned. Here are a few of my favorites:
1. It's not about where you work. It's about how you collaborate.
In graduate school, we learned that communication beyond four walls was expensive. The solution we were taught for distributed teams (and outsourced and offshore work) was to try to get things correct up front, thus limiting handoffs and communications cost and friction.
That trick never worked—at least not in my experience. The terms we used were so vague and the domain knowledge so deep that we ended up investing a huge amount of time in rework and communications. When the agile and XP movements were touting co-located teams in the early 2000s, let's just say I was not surprised.
Ten years later, I have to admit, I think we got it wrong.
Instead of trying to “get things right up front” to prevent collaboration, we should have been working to change the culture to make communication cheaper—and doing more of it. Tools and techniques like Office Communicator, core hours, Twitter, Skype, VNC, pair programming, GNU Screen, and, dare I say it, Socialtext, make it possible to lower communications costs to very close to what they are for physically co-located teams.
One of the companies I worked for used to have a project management culture of “busy-ness.” Leaders were never at their desk, and it would typically take two days to get an answer to email. Compared to that, I'll take distributed but available any day.
2. Startups have a different profile for risk than established companies.
Large, established companies are generally making money right now. They can change nothing, coast, and continue to make money by sheer inertia. Startups aren't like that. Instead of coasting, they will continue to burn cash until they run out of business. This creates an incentive for a large company to protect its old lines of business, and for the startup to constantly change.
In other words, if you like change, innovation, and rapid experiments, consider a startup or a large company organized as a portfolio of startups .
If the decision makers have any acumen, the startup will be much less likely to tolerate dead weight, politics, or drama. The risk is simply too great. At a software company, this means you are more likely to be able to spend your time building a great product and less likely to be stuck in wasteful meetings or