A short insight into how we get our jobs done, specifically as engineers.

As a remote company, engineers at Axiom are supplied with a laptop, high-quality microphone, HD webcam, and a monitor. Developers are free to use whatever development tools they are familiar with. Some of us choose vim (or neovim for those feeling spicy), some of us choose the surprisingly capable VSCode.

No one here chooses emacs. We aren't against emacs, but no one here uses emacs.

The Basics

If the developer isn't running Linux, then we'll provide a VMWare license. This is important as we are developers who work closely with our operating environment, and the OSX/Windows Unix variants - either OSX Unix or Windows Linux subsystem just aren't up to snuff.

Mechanical keyboards are encouraged, we are big fans.

For a long time, Axiom products were built with Github as the developmental backend, but in the spring of 2018 we switched to Gitlab. Gitlab was more at home with our self-hosted mentality and seemed more agile and responsive to user complaints. Gitlab has been a huge success at Axiom. We love the integrated CI systems and the code review mechanisms really gel well with how we work.

Pull requests are big at Axiom, every single line of code that goes into an Axiom product is vetted via pull requests by at least one other user. Even the CTO can't press the 'merge' button on their own. We find pull requests are a great way at getting other people's eyes on code, as well as helping to homogenise the codebase. As a small team, pull requests are a valuable way to share knowledge of different parts of the codebase. Overall, pull requests are used less for quality reasons and more for team coherence (though a second set of eyes will always help find issues yours could not see).

Communication

For communication, we use a combination of Gitlab (issues & pull requests), Slack (text only), and Discord.

Discord is primarily built for the gaming community but we find it works wonderfully for us. It allows us to have a voice server that only we can join, and lets engineers quickly chat about anything they need to without requiring a more formal meeting or an interruptive skype call.

Slack is sort of an odd one in our bunch, it's 2018 and IRC doesn't really cut it anymore but Slack is starting to reach its own limitations. Solid alternatives are yet to present themselves however. If we find an alternative we'll update this blog post.

Design

As Axiom is heavily design-focused, and we needed the same level of collaboration for design that we get with code. Luckily, Figma is an excellent solution for collaborative design.

Multiple people can work with a design document at the same time. Engineers are free to leave questions and comments on designs, which can be resolved right in the app. It really helps inform the design process when an engineer can step in on a topic.

Bits and Bobs

  • We currently build all our services on top of Google Cloud, which has it's pros and cons like anything else, but has been good where we need it to be.
  • Dropbox Paper (and Hackpad before it) has been key for us to have quick, low-friction discussions and make sure they are documented for team members.


On a personal note, I currently develop on a Windows 10 system using the Windows Linux Subsystem in combination with a virtual machine running Debian. This means I use the Windows Linux subsystem to run the wonderful Gnome Terminal, the greatest terminal emulator ever created, inside Windows using a Windows XServer, then mosh into my development VM.


This has been a fantastic development system for me and I highly recommend it. I get all the power of my desktop machine, even if I am moshing in from my underpowered PixelBook on a train or even if I am halfway around the world.

As the icing on the cake, I'm also able to use the fantastic Linux apps support on ChromeOS to run Gnome Terminal on my PixelBook, which lets me run my favourite terminal on a fantastic laptop too.