The letter A styled as Alchemists logo. lchemists
Published April 1, 2022 Updated April 15, 2022
Cover
Augmented Engineering

An individual contributor — within any software engineering team — is more than the sum of their parts. What you bring to the table is not only your years of experience, knowledge, and wisdom but also your toolset. In other words, everything that augments who you are but with which you were not biologically gifted.

Before we get started, I want to clarify this article is solely focused on crafters. Journiers and apprentices will benefit, too, but the biggest impact will likely be on the crafters. To explain, I’ll use guild terminology of old comprised of the following titles:

  • Apprentice: Those new to the trade with little knowledge or skill as of yet.

  • Journier: Those who have built up some knowledge and skill but still have much to learn.

  • Crafter: Those who have mastered the craft and are continuously striving to hone and grow their skillset further while also mentoring, teaching, and leading others.

So fellow crafters — or aspiring crafters — let’s discuss how you and your tools cannot be parted!

Hardware

As a software engineer, I always want to be experimenting with the latest and greatest hardware and finding new ways to improve my workflow. When first starting out, you don’t have much choice in tooling as you have to take whatever your employer gives you or learn with the tools at hand. However, as you gain mastery of the craft as well as more money to invest in yourself, you have the freedom to buy machinery that will enhance your workflow which best suits your needs thus increasing your impact even further. For example, even the best engineer might be made more efficient with a thin laptop consisting of a multi-core CPU, RAM that is several gigabytes of storage, large external displays, mics, speakers, acoustics, etc. All of these tools augment who you are by making it easier for you to be the best at what you do.

Conflict arises when you try to delineate who owns such development tools. Some engineers think these should be provided by the client/employer. Sure, perks you don’t have to pay back are nice, but oftentimes your machine is bought, paid, owned, and only loaned to you while employed. Even worse, it might come with preinstalled software, spyware, and other monitoring services you don’t need and definitely don’t want.

While on the surface these monitoring services are about security, their actual result is to sever an engineer from their tools. Your machine is an extension of you, like a third arm or even, in some sense, an external brain with additional processing power.

An analogy I like to make — albeit a slightly strained one — is that of a surgeon. When you go in for surgery, you don’t show up with your own amalgam of tools to give to the surgeon in replacement of their professionally assembled arsenal of tools. No! …​and why would you? You’d not enjoy living with the consequences of that fateful decision. I realize software engineering, generally, isn’t a life or death situation. Yet, I believe you can appreciate the value of working with someone that is a master of their craft, someone whose honed their toolset — customized for their needs — is one component of what makes them awesome.

The best and most experienced engineers understand the value of a well curated machine. While the hardware they use is not physically a part of them it is a very integral extension of who they are. Machines that come preloaded with random tools that forbid any personalization seriously limits the abilities of top engineers.

Software

Your software stack is the layer that sits directly on top of your hardware stack. For example, I definitely rely on a lot of software to augment my skillset, all of which is carefully curated, constantly evolving, and includes:

Problems arise when I can’t use or install any of my paid or open sourced software on a work machine. These unnecessary "security" measures lead to frustration and burnout because I know what I need to do my job. If I have to leave behind everything that augments and lets me bring the best version of myself to the job, then I’m not going to be empowered or immediately productive — especially if restrictive measures are taken where I can’t buy and install what is missing.

This situation is equally bad for the client/employer, who is now paying for redundant software and hours of work that could be easily avoided altogether. Again, this practice of a client/employer telling you what tools you or cannot use is not a good path forward for us as crafters.

The underlying and more insidious thread this practice weaves between the employer and contractor/employee is lack of trust. If the first act you make as a client/employer is one of suspicion by dictating what hardware and software you’ll use while locking down further customization, then there is little motivation for establishing a long-running working relationship.

Open Source

Technically, open source software is part of your software stack, but I want to call special attention to open source work because time spent working on open source is a tricky endeavor. Although, not everyone cares or has extra time to maintain open source software.

Where used, open source software plays a vital role in engineer augmentation because we, as crafters, are masters of solving hard problems well. We often create tooling to help us solve problems we don’t want to solve again. We don’t want to repeat ourselves so when we arrive at a job, there is great value in being able to leverage our open source tooling for solving common problems. The value add of a crafter bringing this wealth of tooling and knowledge to a job in order to efficiently solve problems without any additional work can’t be understated and is another aspect of what makes crafters so valuable. If you, as a client/employer, prohibit custom tooling, then it’s another loss and a costly waste of resources.

Open source software has indirect benefits as well:

  • Provides examples for teaching those with lesser experience how to become better engineers. Granted, not all open software is stellar. In fact, a lot of it isn’t. What I’m talking about is projects that have been maintained for years, are constantly evolving, and are well maintained. Those are the projects worth paying attention to.

  • Gives back to the community, at large, by helping others and spread new ideas.

  • Allows you to solve common problems once you don’t want to solve again.

  • Demonstrates tenacity especially if you’ve been maintaining multiple projects over the course of many years. That kind of rigor is a rare and valuable trait.

The point — in case it’s not obvious by now — is open source is a valuable component of your software stack and personal augmentation. I bring it with me to every job as part of my toolset because I don’t want to solve the same problem again and it’s an immediate boost of firepower to any team I join. Not being able to employ these tools at work makes me a less valuable employee.

Digital Identity

I’d be remiss to not call attention to the fact that digital identity is woven into everything discussed so far. To be clear, I’m not talking about your social media presence — although that is worth being concerned about, as well. No, this is about your digital identity as tied to your hardware and software stack. Specifically, the information you store on your machine. For those on macOS, this is your Apple ID which has a lot of information associated with it:

  • Name.

  • Email.

  • Phone number.

  • Address.

  • Fingerprint scans.

  • Voice recognition.

  • Digital wallet (i.e. credit cards and other identifying information).

  • Internet accounts.

  • Software purchased within and outside of the App Store.

  • Location tracking.

  • Home network.

  • Shared and connected devices.

  • …​and much more.

In a sense, your Apple ID is similar to your Social Security number but closer to Estonia’s e-Identity, which you don’t want to share freely. I would also not want to share my Apple information with a client/employer other than basic contact information. Yet, due to the fact that many clients/employers are choosing to force their hardware and/or software tools upon you, you can’t share your Apple ID across multiple machines without giving up your digital identity, especially if you have no way to erase any information you put on the supplied machine.

This practice is a major security violation for you as an individual, pitched as security to help the company. Assuming whoever employs you is going to invest as much care in protecting you as you would yourself is very rare. Case in point, look no further than the latest breaches on the Have I Been Pwned site. These companies can’t even protect their own customers from data breaches, let alone protect the personal data of their employees. So why would you want to yield your identity to them?

To be more concrete, here’s the harm these anti-tooling systems causes to you as an augmented engineer. If you want to be safe and not share personal info with your employer, you have:

  • No ability to share Bluetooth connected devices. In my case, being able to quickly shift audio between my Apple AirPods is a major productivity boost because you can’t easily pair the same device with multiple Apple IDs. This makes it painful to be a part of any video conference, pairing session, and/or sharing of screencast tutorials.

  • No ability to leverage macOS' shared clipboard which means I can’t pull information from a different machine — or even my phone — for sharing with my team.

  • No ability to share phone and talk capabilities across multiple devices or transfer connections when moving between mobile and laptop devices.

  • …​and much more.

Maintenance

I’ve written about the importance of machine maintenance/upkeep before so I won’t repeat myself here. Sadly, in my experience, any machine that is not owned or accessible to me is usually behind by several major versions — including security patches — versus anything personally owned. This is usually because my hands are tied in what I can do. I definitely wouldn’t operate this way if it were my own hardware.

Solution

The solution to all of these work related security issues is complicated, and I’ll be the first to admit I don’t have a sure-fire fix. I also know this current situation isn’t a healthy way to operate. My preference is to always error on the side of ensuring my team and I are empowered to do our best work. Whatever is needed for the team to do their job then — by all means — make that possible as long as there are no legal ramifications. Even if there are legal concerns, find a way in which to shield the team from jumping through hoops to satisfy compliance. There’s always a way to smooth out these rough edges in order to empower your engineers.

I also understand the legal ramification of clients/employers that are under restrictions to protect propriety and sensitive data, especially in government, financial, health, and other industries that must be sensitive to privacy. That said, you don’t have to cater to the bare minimum and force your entire staff to work at this level of suspicion and distrust. You want the bar of talent to always be raising, not lowering. So trust the staff you hired, and if you can’t do that, then take a much closer examination of your hiring process because it’s gravely broken.

Ultimately, what I’d like to see is for engineers to be held accountable as much as the companies or industries you work in. For instance, as a professional software engineer, I would expect to see the following security protocols always in effect:

  • You show up with your own hardware, software, and properly customized setup.

  • You practice rigorous software security techniques such as full disk encryption, disabled external disk access, automatic hard drive erase after failed attempts, universal second factor authentication, always use a VPN, have secure backups, and so forth.

  • You constantly read industry news and stay on top of the latest changes and updates in hardware and software security.

…​and these are only the basic table stakes for what it means to be professional.

Conclusion

I hope this deeper dive into engineer augmentation has provided perspective and insight into what it means to be a highly tuned master of the craft. I find it disturbing to see talent reduced. Instead, we should be raising the bar and inspiring people to always be sharping their skillset and making that skillset portable. When we handicap fellow crafters and take away the tools they’ve honed over the years, the teams they join suffer.