Software engineering as a sign of the future

They say that the future is already here, just unevenly distributed. One area where this adage is manifest is in working arrangements – or, if you like, the organizational technology – in software companies.

At most software companies, there are two business functions that are very commonly staffed with a heavy complement of “remote” employees: sales and engineers. On the sales side, the reason is pretty obvious. Where in-person sales calls are a part of the business, you want sales personnel geographically near the client. On the engineering front, the reasons are a little more interesting.

While most software development organizations are still co-located in a central location, it has become increasingly common for developers to work together over distance. At more modern software companies, it’s pretty much expected these days that at least some of the engineering staff will be “remote.” (Reminder of why I’m not a big fan of that term.) Among startups and growth-stage companies, remote friendliness among engineering teams is widely common.

There are a few reasons for this:

  • Absolute scarcity of local engineering talent forces any growing firm to look beyond their local geography
  • Related to above, extremely tight local labor markets greatly inflate local compensation expectations
  • Software engineering cultures are naturally comfortable with online collaboration and training

Similarly, many of the most successful fully distributed companies out there are strongly engineering-led: Elastic is a great example, as is InVision,, Aptible, Buffer or Automattic (and those are just examples off the top of my head). These companies tend to staff on the lean side and are able to be extremely selective in hiring. They enjoy two major advantages in recruiting: not only are they able to offer a perk that is very highly in demand (the flexibility to work from wherever you want), but they also have the largest possible labor pool to choose from.

The big question, then, is why only these two functions have fully embraced the world of distributed work that the internet makes possible. (I will remove sales from the question, because the answer there is clear, so this is really just about engineering.)

Natural selection

One obvious answer is competition. Software engineering capacity is scarce and expensive, but without it, software products simply don’t get built. You can get away with not hiring a lot of people, but not engineers. So when hiring engineers becomes an existential question for a firm, hangups about “remote work” tend to be sacrificed along the way. You’ll hire them wherever you can find them. That competitive pressure for engineering talent has fueled an evolution in the mainstream working cultures and practices of software engineering – its organizational technology – that then imports itself into any company that hires engineers.

But what about other critical functions? In functional areas like marketing, product management, finance, communications, HR, and more, “remote” hiring is still comparatively rare. This would seem to imply that high-quality candidates in these positions are less scarce than engineers. While there may be some truth to that, I’m not convinced it’s completely correct.

It’s more the case that the outputs of those other functions are usually less visible and immediately quantifiable than they are for developers, so their value added tends to be more easily overlooked. (As I quipped in our book, good product marketing is like a jetpack for your product. Bad product marketing is like a jetpack that doesn’t work, in that it’s just a heavy weight on your back that occasionally explodes in your face.) Moreover, beyond obvious extremes, it’s often difficult to quickly distinguish a good marketer or PM from a bad one – or much less, the good ones from the great. There are absolutely big differences between them, but detecting them can take several weeks or even months, depending on what else is happening in the business.

“It just doesn’t work”

It is comparatively rare to see product management or marketing roles hired remotely. The reasons given for this usually boil down to vague hand-waving about collaboration and innovation requiring in-person interaction. This is ironic, because usually right down the hall, the engineering department may be working with engineers on three continents who appear to collaborate just fine. Each function draws on its own in-group experience of working cultures that it is familiar with as the “best” one.

This takes us back to competitive forces. To be sure, good marketers and product managers are hard to find; but any marketer or product manager is a lot easier. A middling marketer is better than none at all, so when the need becomes acute, a firm reluctant about “remote working” will usually go with a local hire who may not be the best possible candidate, because they’re… there. Over time, due to ample supply of labor, this dynamic has resulted in a widely-held idea that some positions simply can’t be done effectively with a geographically distributed team.

In “This Meeting Should’ve Been An Email,” I wrote about the failures of work cultures that don’t learn to evolve. My growing sense is that it is human organizational technology more than almost any other factor which has resulted in growing our level of productivity and ability to collaborate. The internet is great, but it takes groups of humans acting in coordination to leverage it to its greatest potential. Experiments with geographically distributed working teams thus represent one of the most interesting trends happening today – not just in tech, but in our economy as a whole. In the disruptive technology lingo, it may still be at the early adopter stage, but make no mistake – the shift is coming. And on some teams, it’s already here.

Related posts:

I send out a semi-regular update with the most interesting stuff I've read recently, as well as a digest of my own blogging. Learn more about it and read old issues, or just sign up below. I won't spam you - promise.