As developers, we often dedicate countless hours to optimizing the performance of our code, shaving off seconds in execution time. While this pursuit of efficiency is important, we sometimes neglect an equally critical aspect: optimizing how we work. It's worth spending time evaluating our workflow and sharpening our tools—or even adopting new ones. With the correct tools, you can reduce monotonous activities and focus on the most important parts of your job, like making the API more efficient or delivering high quality products to your customers.
Tools are excellent for increasing efficiency, but they are only one part of the equation. Even the best equipment will be ineffective if you lack the correct mindset and do not take care of your physical health. There is a great article written by Deepak, one of our Mavericks, in which he shares his suggestions for staying productive throughout the week.
Without further ado, here are several tools that I have personally used to enhance productivity:
If I had to choose just one tool to highlight in this entire article, it would be Raycast. It’s the ultimate productivity booster, combining the power of Spotlight with the versatility developers need to streamline their workflows. Raycast is like Spotlight on steroids, enhancing your productivity by providing quick, keyboard-driven access to everything you need—apps, files, commands—while seamlessly integrating with developer tools like GitHub and Jira.
The best thing about Raycast for me is the script command feature which lets you run your own custom bash scripts. Numerous times, we just want to run a brief command to continue our development work, such as a database migration. To do that you have to switch/open the terminal and type the command. With this feature you can create your own bash script and register it on Raycast. You can run the script on Raycast with the name you specified to it. This actually saves a lot of fiction about context switching. I’ve created scripts for tasks like seeding data, running migrations, and toggling feature flags through APIs. Instead of switching to the terminal or Postman, I just press Command+Space to open Raycast, look for the command, and run it.
Another useful core feature is Quick Link which lets you quickly access the most used links. You can modify the query parameter to get the most relevant links. I created a quick link for Jira to quickly open up the Jira ticket by just typing the ticket number which saved me a lot of time opening up the browser and searching for the ticket.
With Raycast, the possibilities are endless. Raycast also has plugins that allow you to integrate with other tools like Notion, Trello, and Slack. There's a Raycast store where you can find hundreds of plugins that integrate with various tools. Don't find the plugin you need? you can write a custom plugin using JavaScript.
Raycast is a must-have for any developer looking to supercharge their productivity. For more ways to use Raycast, check out this cool video which shows the 101 things you can do with Raycast. It's really a tool that you should keep in your toolbelt.
Although a lot of people are familiar with Oh My Zsh, I still think it’s worth mentioning. Oh My Zsh is a framework for managing your Zsh configuration, making it easy to customize your shell and add plugins that enhance your productivity. What makes Oh My Zsh really shine is the plugins that come with it.
Some of my favorite plugins include git, zsh-autosuggestions, and zsh-syntax-highlighting. I usually commit code on the command line, so the git plugin is a lifesaver. It displays the current branch and changes in the terminal prompt and aliases that come with it are super handy. The zsh-autosuggestions plugin suggests commands as you type, saving you time and reducing typos. The zsh-syntax-highlighting plugin highlights commands as you type, making it easier to spot errors and typos before you execute them. There are just a few of the many plugins available for Oh My Zsh. You can find more plugins in the Oh My Zsh wiki.
Say goodbye to endlessly pressing the up arrow to find commands you last executed last week. Atuin is a command line tool that enhances your shell experience by replacing traditional history with a SQLite database, capturing not only your commands but also additional context. With Atuin, you can just type a few characters of the command, and it will show up in the search results. You can rebind ctrl-r and up arrow to open up Atuin’s search interface, making it even easier to find what you’re looking for. Atuin provides a very good search UI to filter through the commands. It’s a game-changer for anyone who spends a lot of time in the terminal.
Keep in mind that because Atuin uses SQLite, your command history from before its installation won’t be available. By default, it searches through your entire command history, but you can customize it by setting filter_mode_shell_up_key_binding to directory in the config file to limit searches to the current directory. This way up key will only search through the commands histories executed in the current directory. For global search, you can still use ctrl+r.
This handy tool is a must-have for anyone who spends a lot of time in the terminal. It’s a game-changer for anyone who spends a lot of time in the terminal.
If you are a vim user like me, Vimium is a must-have extension. Vimium brings the power of Vim to your browser, Even if you are not a vim user, you will find it very handy. It allows you to navigate the web using just your keyboard, saving you time and reducing the need to switch between your mouse and keyboard. You can use h and l to switch tabs back and forward, and j and k to scroll up and down on the page. Upper Case T to open up a search bar to switch between opened tabs.
One of the loved features on Vimium is using the f key to open a link in the current Tab. When you press f, it will show yellow tags with a unique key on the links on the page. You can type the key to open the link. You can also open the link in a new tab by pressing shift+f. It is not just limited to just links, it allows you to select the input fields, buttons, and other elements on the page.
These are just my most used bindings. You can check out more bindings at the Vimium github page. I highly recommend Vimium to anyone who wants to boost their browsing productivity especially if you are a vim user.
Wide Monitor and Window management Tool
Having a wide monitor is a game-changer for productivity. It allows you to have multiple windows open side by side, making it easier to reference documentation, compare code, and multitask. If you have a wide monitor, you should also consider using a window management tool like Rectangle for macOS or DisplayFusion for Windows. These tools make it easy to resize and position windows with keyboard shortcuts, saving you time and effort. You can also create custom layouts and save them for later use, making it easy to switch between different window configurations. My personal favorite is Amethyst for macOS, which is a tiling window manager that has a vim binding for moving windows around. It's open source and free to use.
But lately I have been trying out Aerospace which is a new window manager that tries to mimic the i3wm, tiling window manager on Linux. Instead of using the native spaces, it implements its own space management system which added flexibilities and new features that the native spaces cannot support. If you are a fan of i3 window manager, you should definitely check it out.
As software developers, the command line is something we can't avoid. Mastering its use is a skill we hone over time. Mostly of the tools that we used are the traditional Unix tools like ls, grep, and sed. These tools are powerful, but they can be difficult to use and understand. With the rise of Rust, a lot of developers have been rewriting these tools in Rust to make them more user-friendly and efficient. The Modern Unix Tools page offers a collection of terminal tools that is re-designed from the ground up to enhance and improve upon traditional Unix utilities.
A few of my favorites include:
Bat - A cat clone with syntax highlighting and Git integration.
Zoxide - A faster way to navigate your filesystem. It allows you to jump to directories without typing the full path.
fzf - A command-line fuzzy finder that helps you search and navigate through your command history, files, and more.
httpie - A command-line HTTP client that’s user-friendly and easier to use than curl.
A Note on AI tools and copilot
With the rise of AI and copilot tools, the way we write code is changing. These tools can help you write code faster and more efficiently, but they are not a replacement for good coding practices and a solid understanding of the fundamentals. It should be used with a grain of salt. But we should always have an eye on AI tools.
People have always been looking for tools that will make their lives easy. We can definitely get more done when we have better tools. Remember, though, that tools are only one part of the picture. Get enough sleep, balance your work and personal life, and take breaks when you need them. Good thoughts and the right tools will help you achieve your goals.
Happy Hacking!