10x Engineer — Learning your tools and other hacks
Teck Wu — 4/3/2023 — 7 Min Read
We asked across our software engineering muscles what are some productivity tools, tips, and tricks they use to make their lives easier. Many of us were super enthusiastic about sharing our stack --- some might be hidden aficionados. Here are what's up their sleeves:
1.Get used to the Terminal, drop the GUI.
Hemant: My setup includes
oh-my-zsh and a lot of shell plugins. You can Google each one of them to know what they do. My favorites are:
Jan: I am living in the shell and spend nearly all day with
iterm2 taking over the main display in full-screen mode, and often the second display off to the side as well.
vim is my editor of choice and I have a number of plugins I use for git integration, etc.
Ashwin: If you are a Terminal person (excuse the pun/dark humor), then GitHub --- jesseduffield/lazygit: simple terminal UI for git commands then this is for you.
ncurses is like an interface to git, but so much better. It's easy to quickly navigate, find commits, see code differences, and manage merges. Also, for quick viewing of files, with formatting colors, use
bat GitHub --- sharkdp/bat: A cat(1) clone with wings.
2.Use tools and processes that give you flow
Ivan: Don't be afraid to research and try out new tools and processes that work better for you. If you can't memorize commands (like me), use UI tools to encourage "Flow".
E.g, use the VSCode refactor option to quickly and accurately rename variables and functions (spend less time thinking what to name because you can always easily rename any time)
Ashwin: Also, on a similar line is a window management tool called Rectangle, which allows apps to be docked to certain portions of the screen. I run almost everything on full screen and use another app called Pock to convert the Touch Bar into my status bar. For copy/paste across apps, with history, use an app called FlyCut.
Hari: I found Kubectx and K9's as helpful tools while working with Kubernetes, primarily for someone starting new on k8's these tools will make it easy to explore the Kubernetes cluster without having to memorize all the command line options.
If you're using VSCode, setup VSCode for auto linting and auto-format. Take some time to set up automagic plugins and settings to take advantage of automation even for DX. Back to Ivan: ESLint and code formatting plugin with rules are my first go-to when setting up a new project, and avoid "curly brace" and indentation discussion.
3. Git rebase master (and squash) before merging PR, and other git goodies with SourceTree
Ivan: I prefer to rebase branch on top of master whenever master gets "outdated" as it's easier to modify your branch's code than to understand and modify other's code (from master) when conflict happens.
One tip is to squash your branch's commits, making it an easy work of resolving conflict by only having to do it once for your single squashed commit. You can easily squash your commits using Sourcetree.
Also, use SourceTree to auto fetch remote commits and get notified about master/main being outdated in your local checkout (ideally always rebase your branch onto master/main before opening PR). As well as admire the nice lineage visualization of git branches.
Sushim: I too am a big fan of SourceTree. It's really helpful when I am working on multi-repo changes, and tend to just keep all the intended repository windows open and merge them in one view. Helps me navigate through all the changes and decide/discard the ones which are not needed.
4. One with the Documentation
Jan: I use Dash (Dash for macOS --- API Documentation Browser, Snippet Manager --- Kapeli) to quickly lookup documentation including Node.js, TypeScript, Python system library documentation, AWS SDK documentation, Amazon CloudFormation reference, documentation for frequently used Node.js/Python/... modules, etc. Especially the tight integration with Alfred (https://www.alfredapp.com) makes it super easy and fast to jump straight to the right docs from anywhere with just a few keystrokes.
Alfred (https://www.alfredapp.com) is another indispensable tool. I use all day long to quickly start apps, do simple calculations, convert between units/currencies, initiate web searches, find files, look up contacts etc. from anywhere with just a few keystrokes.
Both Dash and Alfred are paid tools but I've been using both for many years and they are worth every penny for the productivity gains I get from them.
Homebrew (https://brew.sh) is how I manage most software on my mac.
5. Overwhelmed by messages
Jan: Make use of Slack's "remind me" feature to keep a note of follow ups to slack messages
6. Physical Work Environment
Jan: Get an external monitor for your laptop if your physical work environment allows for it. That way you can have your editor/terminal/IDE open on one side and documentation/slack/... next to it on the secondary screen. I like to run my primary tool in a fullscreen mode right in front of me, with everything else banned to the secondary monitor off to the side, so there are as few distractions as possible.
Ivan: Review your desk setup for ergonomic/productive setup. Invest in an external monitor. I also recommend getting an ergo keyboard since you're typing most of the time), desk with adjustable height, chair with lumbar support. See How do you set up an ergonomic workstation? | Logitech Ergo Series
7. The simplest: write things down
Sushim: A process that has helped me to be more productive: before kicking off any new task/feature/bug, just write down rough implementation details i.e say a set of steps and segregations that you *think would be needed *in order to roll out the task.
The important thing to note here is, this is a rough breakdown/outliner and does not really include 100% of what will go into getting things done. But while I write these down, it forces me to think and think really hard if I am missing something underlying in general. This is helpful in multiple ways for me. For example, often when I am working with folks to get the implementation details sorted (if you have already had a discussion with me, you will know), I always fire up my sublime text, share my screen and start writing the points as items, as we go through the discussion. This kind of forces everyone on the call to think through the details, and keep reviewing/questioning the items already listed.
Once done, push it down like in a Jira issue comment, Confluence doc comment or a simple group slack message. This becomes the reference point for the next discussion. Often helped me to juggle between things.
Ivan: One of the biggest hacks I have found is a good note taking app. My considerations were cloud synced and privacy, and the Bear app is perfect for it. It has plugins for every browser, supports Markdown and is nearly perfect for organizing thoughts/TODOs.
We hope these sharings can help make you a more productive programmer, or maybe just a more productive person in general. If not, at least it will help you maintain your sanity and give you more free time to yourself. Work smart, and balance is yours to take.
If you are interested in helping our customers understand, identify, and remediate privacy data risk at cloud scale, we are hiring engineers for our remote-first teams in India, and Singapore!
What is Borneo?
Borneo helps security & privacy teams achieve continuous compliance and data protection through accurate & actionable data discovery.
Want to watch Borneo in action? Request a demo here and we will get back to you soonest.
Choose real-time data protection. Choose Borneo.
Manage risk, increase trust, and accelerate innovation across your entire data ecosystem.