Are You Wasting Precious Time? 5 Software Engineering Productivity Tips
By: Stephen Michael Grable
Tags: Workflow, Software Testing, Software Engineering, Productivity Hacks, Productivity

Today we are going to explore 5 ways you can improve your daily workflow as a software engineer.

⚠️ Warning, once you start using these tips, you may not be able to live without them.

1. Use Pre-Commit Git Hooks 🎣

Enabling pre-commit hooks is like buying insurance for your codebase.

You can utilize pre-commit hooks to maintain a clean codebase free from console.logs, missing ; `s and more. This simple strategy can ensure all members across your team adhere to the same code standards and that no “dirty” code ever gets committed to your git history.

You can also utilize hooks to catch type errors when you compile your code before a commit, assuming you are using TypeScript or another strongly typed language.

The easiest way to get up and running with pre-commit git hooks in your projects is to use the open-source library Husky.

Download Husky here: https://github.com/typicode/husky/

2. Have Better Window Management 💻

As an engineer, I always have a code editor and browser open. After many years seriously mismanaging my windows, I was introduced to an app, by my colleague Sekhar Paladugu, that made it incredibly simple to stay organized.

Once I downloaded the free software and learned a few new keyboard shortcuts, I was quickly able to arrange my view in just seconds.

My favorite tool for window management on my Mac is Spectacle. It’s free and has very simple keyboard shortcuts for arranging windows quickly.

Download Spectacle: http://www.spectacleapp.com/

3. Invest In a Password Manager 🔒

My daily work as an engineer requires me to integrate multiple services and APIs all day long. That means I log in and out of different accounts for various tools a lot.

My day would quickly turn into a disaster if I had to spend 1–2 minutes looking up or resetting passwords for my 8-10 accounts. I needed some way to safely manage all my passwords and be able to access them with a click of a button.

I’ve used many different password managers, but none are quite as good as Dashlane. Dashlane has apps for almost every single device which allows you use its autofill login feature from anywhere.

It’s one of the more expensive products on the market but it has some of the most advanced and user friendly technology I’ve encountered in a password manager.

Learn more about Dashlane here: https://www.dashlane.com/features/

4. Become a Command line wizard 🧙‍♂️

If you are coding everyday, chances are you spend a great deal of time in your terminal.

If you have not installed oh my zsh as a default, then you need to. With auto complete, cool themes, and a plethora of plugins available, you can become the command line wizard of your dreams.

There are many other options to choose from to customize your command line shell if you don’t use oh my zsh but I’ve found this shell to be the most well supported in the open source community and best all around choice.

Example oh my zsh custom theme

The most heavily used plugins in my daily workflow include gcloud CLI commands, docker, ruby and more.

Download oh my zsh: https://ohmyz.sh/

5. Network debug and testing with ngrok 🌐

If you’ve ever had the need to debug or test an integration with another service using something like a webhook, you’ll find out quickly that it’s a cumbersome and costly process.

Enter ngrok. Ngrok allows you to publish a local endpoint to the public web so you can live test and debug an integration of two separate systems through your local machine.

This is a very common use case, but the possibilities are nearly endless with ngrok. You can get quite creative with it once you learn how it works.

Download ngrok here: https://ngrok.com/download/

Bonus: Follow coding patterns 📚

Studying coding patterns (and implementing them correctly) will, by far, outweigh any other investment you make into improving your daily workflow and productivity as a software engineer.

Utilizing object oriented programing, dependency injection, higher order components, continuous deployment, and test driven development in your daily workflow is a great place to start.