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.
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.
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 :
- 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 is an amazing piece about managing the scripts and binaries downloaded randomly from the internet.
- Tools like espanso 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, Zsh, and fish 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 framework, which provides some functionality that will boost your efficiency. A few of my favorite plugins are:-
- zsh-autosuggestions: suggests commands as you type based on history and completions
- zsh-syntax-highlighting: provides syntax highlighting for the shell zsh, red for invalid, and green for valid commands:
- 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.
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 and it’s easy to install too. I want to use it as well.
Use and know your IDE very well
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 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
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 and how to use filters here.
Nap and Breaks
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
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:
- Microsoft to do
- Short notes and learnings (I maintain short notes of my learnings on Github)
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
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