Issue #30: Home Office

Await! In Async We Trust

In 1997 I moved back to Argentina to start a career in software engineering in a small web startup. They were in such a small office in the outskirts of Buenos Aires, that my boss told me to go to the phone company, and get a new phone line installed at home. Then she gave me a US Robotics 56K dial-up modem, got me a subscription to an Internet Service Provider, and with those I worked from home for the first few months. I would only go to the office on Monday mornings for regular coordination, and on other occassions randomly, usually during team events. The company paid for both the phone line and the ISP.

I was 24 years old, and that experience marked my perception of work completely, forever. Writing ASP pages in VBScript using EditPlus, and then uploading them to a Windows NT 4 server using WS_FTP, all of that was clearly something that could be done from home. No need to commute; no need to spend 80 minutes per day in the chaos of Buenos Aires’ traffic, to do something you could do in your own place, sipping a good maté while listening to Mario Pergolini‘s morning show on FM Rock & Pop 95.9.

I used a Pentium-powered laptop running Windows 95 I brought from Switzerland, initially without an external keyboard, display, or mouse. For live coordination, there was good old e-mail (thanks to Outlook Express), and at some point we started using ICQ for chat. To operate on our server remotely (located in the USA), starting with Windows 2000 we used Terminal Services. I do not remember what we used to operate our older NT 4 server, maybe Citrix.

All of this was happening two years before MSN Messenger, six years before Skype, sixteen years before Slack and Zoom. SSH was released in 1995, but of course initially only for Unices, and we did not know about it.

By 2002 I was back in Switzerland, and the picture was much bleaker. Even though the country had affordable and quite fast ADSL connectivity by then, and virtually everyone had a Nokia 3310 in their pockets, I did not hear of a single tech company working remote until the late 2010s.

Why was telecommuting an option in 1997, and then not in nearly every other job I had until the pandemic stroke in 2020? Why did it seem like only companies such as Basecamp, GitLab, WordPress, Dropbox, or Spotify could pull it off? Why is it that business people scoffed at The 4-Hour Workweek as utter fiction? What about remote workers outperforming office workers?

The most important factor blocking the development of telecommuting in Switzerland for the past 20 years were, without any hint of a doubt, hierarchy and micromanagement. To a large extent, for good or worse, most of my managers have always insisted in knowing all of my tasks in excruciatingly detail, and I know many colleagues would agree with me on this matter.

It is important to understand that in Switzerland, social groups naturally revolve around and evolve into hierarchies. And hierarchies, based on command-and-conquer mentalities, work in synchronous mode. Orders and their execution happening synchronously, in tightly closed loops. Through a sad misinterpretetation of the adjective “agile”, this included Scrum best practices, such as standup meetings and retrospectives, which became prevalent and über-popular in the past 15 years.

On the other hand, proper telecommuting requires asynchronicity. And asynchronicity, in turn, requires trust.

Readers with some C# or TypeScript experience will undoubtedly have chuckled at the pun in the title of this article. In these (and many other) programming languages, functions can be structured so as to not block the main thread, delegating some long-running tasks to a separate mechanism of execution; a thread, an actor, a coroutine, or whatever the fashion du jour may be. Usually this involves a data structure called a “Promise” or similar, which represents… well, a promise for some result in the future. Promises can be fulfilled, fail with an error, or timeout after a while; even though proper timeout is a bit more complicated than expected in JavaScript.

But you get the core idea; in the long-running process of a manager, the delegation of tasks to employees happens through promises, trusting that they will be fulfilled at some point in the future. As Sharleen Spiteri once said, Future is Promises.

In the opinion of this author, lack of trust, and hence lack of true asynchronicity, is the main reason why there are so few software startup successes coming from Switzerland on the front page of Hacker News. Simply put, it is culturally impossible for many firms in Switzerland to have the level of trust required for startups to flourish. There are trusty banks, huge mechanical engineering firms, excellent fine electronics companies; but few, if any, software success stories. Things have changed quite a bit in the past 15 years, and thankfully so.

But many firms stay stubbornly stuck in trust-less environments, and even worse, MBA programs in some parts of the country still insist in “classic” hierarchical models of management, while some companies go as far as getting rid of management layers altogether and still be leaders in their industries and worth billions of dollars.

Even though UN1A, the biggest worker union in Switzerland, keeps reminding business owners of their legal responsibilities towards employees during this crisis, it is common to hear about companies forcing their employees to commute in the middle of a pandemic to perform jobs that can be safely performed from home.

Illegal and deadly, as it turns out.

As an anecdote, a decade ago, while working as an independent iOS developer in my own business, some customer asked me to commute every day to their office to write Objective-C code sitting in their noisy open space. Even though that meant an increase in my hourly rate, to cover both my travel expenses and my personal irritation at the request, they were happy to oblige, knowing that they could peek over my shoulder and see what I was up to at any time. Or to invite me to some meetings they wanted me to attend. All of these things happened often enough as to generate delays in the project, a dangerous slippery slope.

But I digress.

After this pandemic situation is over, telecommuting will require more than another crisis to stay. It will demand a change of attitude from managers in the software industry. They should finally realize that if all else fails, there is a Git repository somewhere showing the work being done by the person you are suspecting of wrongdoing. You can actually see their work. You are paying for it, after all; but you do not need to interrupt them.

You might not understand the programming language used; you might not know all the names of the GoF design patterns at play; but, unless you are color blind, you should be glad to see that the CI/CD pipeline shows up in green, and not in red.

Also, dear managers reading this piece: please let us all stop with that nonsense of “trust must be won”. As a manager, you either have trust on your team, or you do not. If later on you discover that people abused that trust, please, let it be known to everyone involved and take any appropriate measures; but always start with trust.

Telecommuting works, and not only because this isolates developers from the foosball table and the noisy coffee machine. There is extensive research available now. But, as it happens, it requires asynchronicity. Which, in turn, requires trust; a currency that is hard to come across in large swathes of corporate Planet Earth.

In retrospect, it is obvious my boss of 1997 really trusted me to do my job. There was no Jira (it was released five years later), Bugzilla was barely in the making, and no Subversion (which reached 1.0 seven years later). We did not even use CVS to track changes in our codebase (do not ask). But with my colleague (we were two in the technical team) we added features, fixed bugs, and collaborated so that the website was up and running at all times. She knew which features were needed, and she got them. She spent most of the time finishing deals and getting new customers. Which was, of course, crucial to get the company up and running. That company is still up and running, by the way.

Asynchronicity allows people to work at their leisure, concentrating in the what, not in the how.

Asynchronicity enables people to move to Barbados or Helsinki if they would rather not work from home, after all.

Closer to each and every one of us, asynchronicity means Zoom calls with the camera turned off, making it optional for people to use, or not.

And for those waving the Agile flag at every breath of their working life, reflect upon all the value that asynchronicity brings to the items on the left.

Cover photo by Bernard Hermant on Unsplash.

Adrian Kosmaczewski is a software consultant and evangelist. He is a published writer, trainer and speaker. He holds a Master's degree from the University of Liverpool.