I’ve been fortunate enough to employ my software development skills in a few different environments. It’s good to see the world from different angles, but I also pay my respects to those who find their niche early on and just stick with a company they enjoy.
It should be self-evident, but one system doesn’t fit all, and some people thrive in a type of environment that others despise. Enjoyment aside, what kind of group-think, on average, actually results in the best deliverables? At the end of the day, will the company make enough money to maintain?
Joins or Joints?
I’ve partied with the hippies, the discoverers, exploring code and formulating new software religion by bumping heads along the way. It’s obviously a fairly discursive environment, with lots of debate and no shortage of opinions. Flexi-time is par for the course, with wear-what-you-want, and as for drug use, the celebration of coffee came as close to crossing the border as a daredevil East-Berliner.
Efficiency is the biggest challenge, which might seem counter-intuitive to someone working there. In such a fluid environment, whenever you encounter a technology that makes your neck hairs bristle, the prevailing mind-set is to reinvent it. I’m grossly generalising, but when you keep reinventing wheels you lose as much time as you gain.
We spent so much time exploring new tech and tack, changing formulas, abandoning dead ducks and over-debating method names that I would ultimately have recommended some of the customers to other firms. It was fun for a while, but your thirst for your productivity remains unquenched.
Then I donned my uniform and soldiered into the cold corporate jungle. Arrive sharp at 8, leave sharp at 4:30. Non-work url’s firewalled and a paper trail bordering on signing off for a bathroom break.
The prevailing mentality is something like this: if it worked in 1975, why change?
You laugh, but it’s a valid question.
I listened recently to Uncle Bob (Robert C. Martin) on Clean Code, questioning the wisdom of overhauling old software systems, and I witnessed the risks first hand. Maintaining old frameworks is tedious, but the reality is that they’ve worked to that point, and from a business perspective, maintain.
At the end of the day, most developers need a level of clarity and closure. Having a specific list of tasks in a known system, with an established methodology, gives you something tangible, compared to the weird, wonderful and often fruitless meanderings of the hippies.
Waves of Change or Timeless Truths?
The hippies find energy in exploration and the traditionalists find solace in the tried and tested – each defaults to their comfort zone, and in a way avoid what makes them uncomfortable. Deciding when to stay or when to stray is always going to be a judgment call.
Life Without Borders or Comfort in Orders?
It might seem like the hippy camp would be the more obvious choice, but ultimately I didn’t survive there. It was frustrating to fly forever without landing, working on community projects that never finished, because the methodology kept changing. And for all the talk of community sharing, the reality of a functioning business is that when you have conflicting opinions, the boss wins. At least in the corporate you sign up for that structure, whereas the hippies live in a kind of hypocrisy, promising freedom but often delivering inflexible structure.
Later in my sojourns I ended up at much more structured environments, where I missed the freedom of having an idea and pushing it. I guess most would agree: we want both, the fun of new ideas and the satisfaction of achieving a task in good time and marking it off, complete.
What About Think Tank?
The corporate environment of Think Tank is in many ways a merge of the two mentalities. The environment is pretty relaxed, casual, discursive, and void of the corporate chains of command I’ve seen implemented elsewhere. Large environments do require a more formalised coding methodology and Think Tank has been able to avoid that burden of administration.
The real challenge for a company of our size is change management – picking the time to bed in a system for the long-haul, but also knowing when to pack up the tent and take the llamas to a new meadow. The freedom to do both is satisfying, and in the extremes I’ve painted above, you won’t have that.