Top 10 Productive Hacks for Software Developers
Tags: productivity, programming
Published: 2021-05-04 13:44:03

Recently, I posted a tweet asking all the amazing software developers in my network to tell about the hacks they use to keep themselves productive. I have compiled the wonderful and helpful solutions I received. Hope you find them useful as well.

{% twitter 1382307259854716931 %}

When I started my tech career, I found that I often had to do a lot of repetitive and manual work. I wanted to improve my skills and boost my productivity.
When I met other developers, I discovered various hacks. I was always amazed that how easy things can become.


## Automation

We usually repeat a set of tasks every day which are time-consuming. You can automate them. Tasks such as compiling code after minute changes or migrating data into databases after minor modifications can be automated. Following are the few takeaways :

{% twitter 1382513318699618304 %}

- Bespoke python or bash scripts for automating jobs at work
- Use cookie-cutter templates to automate project creation. Example: https://github.com/cookiecutter-flask/cookiecutter-flask
- This [blog](https://suraj.io/post/framework-for-scripts-and-binaries/) is an amazing piece about managing the scripts and binaries downloaded randomly from the internet.
- Tools like [espanso](https://espanso.org/) allow substituting strings like date to present date, etc.

## Use Fish or Zsh with Multiplexing terminals

A terminal multiplexer is a program that allows its user to multiplex one or more virtual sessions, so the user can have several sessions inside one single terminal like tmux, iterm, terminator etc. It is a must-have in your toolkit to gain greater control over the shells by working with a terminal multiplexer.
There are a lot of widely available shells such as [Bash](https://www.gnu.org/software/bash/), [Zsh](https://ohmyz.sh/), and [fish](https://fishshell.com/) shells. Switching to fish or even Zsh is one of the best things you could do to make your programming experience more pleasant. It’s faster and much more customizable than Bash.

### Zsh & Fish

Zsh has many useful features, including spelling correction, sharing your command history across multiple terminals, naming directory shortcuts, etc.
For productivity, I use iTerm + ZSH + oh-my-zsh. You can enrich ZSH by using the [Oh My ZSH](https://ohmyz.sh/) framework, which provides some functionality that will boost your efficiency. A few of my favorite plugins are:-
- [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions): suggests commands as you type based on history and completions
- [zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting): provides syntax highlighting for the shell zsh, red for invalid, and green for valid commands:
- [ZSH-z](https://github.com/agkozak/zsh-z): It is a command-line tool that allows you to jump quickly to directories that you have visited frequently in the past or recently.

{% twitter 1382711454483116032 %}

On the other hand, Fish is full of awesome features that will skyrocket your productivity to a different level altogether. It is [extremely well documented](https://fishshell.com/docs/current/index.html) and it’s [easy to install](https://fishshell.com/) too. I want to use it as well.

## Use and know your IDE very well

{% twitter 1382594330305646593 %}

You should learn to use your favourite IDE efficiently. If you get to know the features and capabilities of IDE very well, you can significantly improve your productivity. For me, that mainly involves becoming familiar with the most commonly used commands and learning their key shortcuts.

## Clipboard manager

{% twitter 1382596147705905153 %}

Clipboard managers can be extremely useful and increase your productivity. Clipboard manager can be used to recall text that have been copied such as webservice endpoints, test user names and passwords, and code snippets. We can use different tools like Clipy, Klipper, Clipman.

## Gmail labels, and filters to keep annoying mails out of life

{% twitter 1382370358313897984 %}

A filter can save your time and space, rid your inbox of unwanted emails, and turn your Gmail into a multi-functional tool with simple filters.
This way, you can filter out spam and emails of less priority and save emails that you wouldn’t want to miss. For instance, you can have Gmail filter out and label all emails from a specific email address. You will then have them conveniently organized under one label. Gmail shares how to create, edit and delete labels [here](https://support.google.com/mail/answer/118708?co=GENIE.Platform%3DAndroid&hl=en) and how to use filters [here](https://support.google.com/mail/answer/6579?hl=en).

## Nap and Breaks

{% twitter 1382308737092780033 %}

While it’s important to focus on work, it’s as important to focus on your rest. You should take frequent breaks. The Pomodoro technique is something that I want to try for a long time. Every focus session should have at least a 5 to 10-minute break. Also, I believe exercise is quite important as well. It keeps your day productive.

## A place to put all tasks, Github issues, Jira tickets, private stuff

{% twitter 1382357853005037571 %}

You can use various tools or ways to accumulate and organize all your tasks and learnings in one place. You can jump to another task when blocked on some task due to some reason. Also, you can maintain short notes and learnings which you might need for future reference.
Some of the tools which you can use are:
- Taskwarrior
- Notion
- Microsoft to do
- Short notes and learnings (I maintain short notes of my learnings on [Github](https://github.com/Nancy-Chauhan/Today-I-Learnt))

{% github Nancy-Chauhan/Today-I-Learnt %}

## Touch typing

It provides the ability to work more ergonomically. It helps in syncing code/any work with thoughts. Also, as a developer, we are not only focused on writing actual code. There are many more things like code reviews, documentation, and slack messages that depend on typing to contribute to a product, team or discussion. For programmers, the main benefit of touch-typing comes from being able to spot typing errors as soon as they occur.

## Linux Commands and Shortcuts

Learning Linux commands and shortcuts helps a lot. Linux command tricks will save you a lot of time and, in some cases, from plenty of frustration. Some of my favourite tricks are:
- Using grep when dealing with large chunks of data
- Using alias to fix typos or setup various keys
- Using tab for autocompletion
- Easily search and use the command you have used in the past with `Ctrl + r search_term`

## Focus

{% twitter 1382381540408139776 %}

We can use various addons to block the usage of social networking sites and keep the distractions away.

In the end, I am thankful to all the developers for their valuable inputs.

Originally Published on [Medium](https://medium.com/@_nancychauhan/top-10-productive-hacks-for-software-developers-c0feb8ca8dab)