I recently travelled to New York City to attend QCon.
Joy isn't the typical emotion that comes to mind when one pictures enterprise software and enterprise software developers, but technical culture is changing rapidly and more people are recognizing the business value of joy.
It's an exciting time to be a software developer.
A decade ago we watched a grim-faced Peter Gibbons in the movie Office Space commiserate about his mind-numbing job of churning out Y2K patches for the cold and heartless Initech Corporation. Today we watch Mark Zuckerburg in The Social Network conquer the world in a hoodie. While Mark Zuckerburg may not be the software developer that geeks around the world aspire to become, it does signal a rapid change in popular culture.
In the past a programming job was to be endured until something better came along. Today being a talented hands-on software developer is something to aspire to. A decade ago mediocrity flourished, encouraged by heavy-handed processes and endless bureaucracy, driving frustrated developers into other roles and professions. Today engineers rapidly imagine and create everything from new businesses to entirely new business domains. The cloud, SaaS, PaaS, the App Store, the Marketplace. A decade ago businesses could afford a technological misstep. Today businesses are ruthlessly judged on their technical prowess by a generation of people who look at a magazine as a broken iPad.
For me, the highlight of QCon was meeting so many other developers who are just as passionate about technology as I am. From the CTOs of companies like Etsy to fellow hands-on developers from Toronto, everyone I spoke with at QCon had an educated and informed opinion about the reality of developing software in 2012. Surprisingly, most of the people I met were not focused on the nitty gritty low-level details of implementing code, but instead focused on how people interact with each other and how people interact with software. Does what we build make people happy? Is the environment we work at positive? Can we build better software and be even happier in the process?
Software developers are people who build software for other people. It's amazingly simple, but so often overlooked. As a profession we spend enormous amounts of time thinking about how to optimize our processes to suit machines, but often spend too little time thinking about how to optimize our processes to suit people. The result? Many software developers find themselves working in lonely conditions with little chance to interact with the people they build for.
Great companies understand that great software comes from developers who understand, empathize, and feel connected to the people they create for. Great companies understand that great products are created by joyful people.
Great companies think alike
When software developers think of prototypical great companies, they probably think of names such as Facebook, Twitter, Etsy, and Menlo. All of these companies were represented at QCon, and all of these companies share certain cultural traits and processes that help attract some of the brightest engineers to their ranks.
What common processes or beliefs do most of these companies share?
Top companies start an employment relationship the right way, with a warm welcome that includes mentorship and training. Not only technical training, but also a gentle and welcoming introduction to an employer's culture. This welcoming is sometimes referred to as bootcamp.
Bootcamp is arguably a terrible term to use for such a positive experience. When I think of bootcamp I think of Full Metal Jacket, but bootcamp at software companies has little in common with the bootcamp envisioned by Stanley Kubrick.
The inspirational Richard Sheridan put it so eloquently.
We work in an industry full of pyromaniacs.
Firefighting. Being thrown into the fire. Burn-down. Burnout.
There's a certain macho geek swagger associated with these types of cold (or hot) analogies used in tech companies around the world. Maybe this is why so few hands-on developers are female and we're pretty much the most non-diverse profession in the world. As an industry we take pride in weeding out the weak with ruthless nerd rage. Every working developer has a memory of a failed software project and the satisfied smirk of co-workers who enjoyed watching the meltdown.
We often promote talented engineers from technical roles to management roles in order to perpetuate the cycle of machine over man. These new managers are offered little training and guidance in their new roles. We sit back and watch as they manage people the same way they managed machines and wonder why the entire organization is miserable.
Overtime. Death marches. Deadlines.
It's only a matter of time when archaic practices of the past are rendered obsolete because they simply don't make money. It's impossible for miserable businesses to compete with joyful ones. The only reason this type of culture still permeates our industry is because of how few truly joyful businesses exist.
Would you rather use Project or Basecamp? Changepoint or Tick? QuickBooks or FreshBooks?
Top companies seek out innovators. There's a big difference between talking about innovation and investing in innovation. How much time do you allocate for your team to explore their own ideas? None? You're not an innovator.
The best, most disruptive, most lucrative ideas are often not in the official plan. Your clients don't want to pay for them yet. They're simply ideas swimming in the heads of your team. Not all of these ideas pay off, but some of them have turned into the most ubiquitous technologies we use today, like Google Maps and Facebook Timeline.
Experienced developers are Sherpas, not pack mules.
Most companies struggle to provide a career path for their most senior hands-on technical talent. To paraphrase David Laribee of VersionOne, many senior developers reach a point of becoming a pack mule. They become so specialized in version 18.104.22.168 of RandomTechnology that they can never escape it, and the rest of their days are spent in quiet desperation pushing around packs of commodity code.
What's the difference between a junior team member and a senior team member? Is it years of service? Of course not, it's the transition from student to teacher.
The cheerful smiles and legendary strength of the Sherpas have been an integral part of Everest climbing expeditions from the very beginning. Indeed, very few significant successes have been achieved without them.
Just as Sherpas help climbers reach the top of Everest, technical Sherpas can help entire teams navigate the most specialized, complex, brittle, and least-documented areas of code. Rather than continue to utilize them as pack mules, they can instead transition to the role of advisor and teacher of current-state technology.
Some organizations are great facilitators of this transition through mentoring and career coaching. Not all technical talent is extroverted, and without support they can very naturally slip into the role of pack mule. Don't allow this to happen. Eliminate silos of knowledge by helping your most experienced team members pass their experience along to the next generation.
Companies who embrace the business value of joy have a remarkable advantage because there are still so many horrible companies creating horrible software. It's simply too easy to compete against miserable companies, especially in the enterprise software market where misery is the norm rather than the exception. More and more companies are recognizing the business opportunity and optimizing for happiness. These companies making a lot of money in the process.
It's an exciting time to be a software developer, and it was an exciting time to attend the first QCon held in New York City. I'll be spending more time thinking about how to do my part and bring happiness to all the teams I work with in the future.