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 documentation.
I didn't realize how much these sort of success factors impact culture and behavior until I came to work for Socialtext. In other words, if you aren't a great culture fit for your current environment, there might be a reason. When you look for the next place, consider these factors carefully.
3. Autonomy and choice are undervalued in North American business culture. If you can work for a company that values these things, take the job. If you have an opportunity to lead a company and to add some of these things, do it. And, consider it a blessing.
4. Test setup should be cheap, quick and easy. Disk space is cheap. CPU time is cheap. Virtualization is cheap. What is expensive is human time spent testing or waiting for a server to spool up. If you can't spool up your very own test server, load it up with a reasonable amount of data, and get to a good testing point in around fifteen minutes or less, beware, because your competition probably can.
5. What you are doing now is a season of your life. Seasons last for a little while. Eventually, they end. That means that the things you hate about your current season will eventually end, so rejoice.
The bad news is that some of the things you enjoy may end too, so enjoy them while they last.