As backend developers, we use a diverse set of tools and techniques on a daily basis. From project management tools to programming tools and practices it’s crucial to use and adapt the ones that make us productive and deliver high-quality code. I conducted a survey among my colleagues and compiled their responses. In this post, you can find a brief description of each tool or practice, along with quotes from our developers about their experiences using them.
Terminal & Shells & CLIs
- Kitty – has been mentioned multiple times not only because our backend devs love cats. It is a fast and feature-rich terminal emulator that offloads rendering to the GPU for less CPU consumption. It offers a familiar customizable and portable setup, consistent look of fonts, colors, user interface and shortcuts across all the platforms via a shared configuration.
- iTerm2 – MacOS users’ preferred replacement for Terminal. As an alternative to Kitty and iTerm2, we suggest also having a look at tmux.
- Fish shell – unix shell that defines itself as a free, open-source shell utility that is incredibly easy to learn and use. Fish focuses on interactivity and usability and provides a lot of features by default, rather than by configuration.
- Zsh with Oh My Zsh – MacOS gang’s favorite. Oh My Zsh is a framework that manages your Zsh configuration and comes bundled with thousands of helpful functions, helpers, plugins, themes and so on. Our favorite plugins are git, zsh-autosuggestions, z (see more) and configurable theme powerlevel10k.
- Aliases – highly popular is the use of the alias command that enables a replacement of a word by another string. Developers created their aliases for custom git flow, defining in what environment the following command should be run by providing a specific file with environment variables, external tools setup (e.g. Redis, GCP), proxying the connection through our package Goproxie. Aliases increase developer’s productivity in everyday use even though it might seem to be hard to maintain.
Having a well-setup IDE is important for a developer’s productivity. A good setup provides a comfortable and efficient workspace that can save you a significant amount of time and effort when coding. These tips from our backend developers can be applied to any IDE, not just VSCode, which is the favorite for most of our team.
- VSCode Debugger
- VSCode Extensions
- Code formatting – we use the settings of IDE that formats the code on save action, and also we have our Ackee styleguide backend config.
- Shortcuts – check KeyCombiner if you would like to master your IDE shortcuts.
If you are lucky enough and your IDE includes database integrations like a paid product of JetBrains you probably go with that. However, we mainly use these database clients:
- DBeaver – free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports lots of popular databases.
- TablePlus – another database client we find very useful. It supports a whole set of relational databases and also some NoSQL such as Redis which makes TablePlus helpful also for bigger projects thanks to friendly GUI.
- pgcli or mysqlcli – command line interface for PostgreSQL or MySQL.
- HTTPie – command line HTTP client written in Python for making HTTP requests as a human-friendly alternative to cURL.
Project management and note-taking apps
As a backend team, we heavily started using Notion. We use it for project documentation that we find useful to share with each other, as well as for storing notes for weekly backend meetings. It has been a helpful tool for organizing and sharing information within our team. Do you wonder what other tools except for Notion our developers use for personal purposes? Here is the list:
- HackMD – collaborative markdown editor that allows users to write, edit, and collaborate on markdown documents in real-time. It offers features such as real-time collaboration, version control, and the ability to embed images and videos.
- Google Keep – note-taking tool that allows users to create notes, lists, and set reminders.
- Trilium – personal knowledge management tool that allows users to create and organize notes, lists, and outlines
- Obsidian – personal knowledge management tool that allows users to create and organize notes using markdown. It offers features such as the ability to create links between notes, add tags and metadata, and create a customizable graph view of the user's notes.
At our company, we use Redmine as our project management tool to organize and track the progress of our projects and tasks. Backend developers also use these tool for their personal use cases:
- Trello – web-based project management tool that uses a Kanban board layout. It allows users to create cards representing tasks or ideas and move them across different columns or "boards" to represent different stages of progress.
- Google Calendar tasks – feature of Google Calendar that allows users to create and manage tasks within the calendar interface
- Taskwarrior – command-line based task management tool. It has a number of features, including the ability to prioritize tasks, add tags and comments, and create custom reports.
We estimate future tasks to help project managers with the project planning phase. When working on a task we are used to tracking the spent time. Understanding the cost of tasks helps the company with allocating resources and budget more effectively. For tracking time spent on projects our developers use:
- Toggl – time tracking software to boost performance and get paid for every billable minute.
- Clockify – time tracker and timesheet app that lets you track work hours across projects. Unlimited users, free forever.
- Timewarrior is a command-line based time tracking tool. It has a number of features, including the ability to track time in multiple projects and contexts, generate reports, and set up alerts and reminders.
- Ubuntu Dock – graphical application launcher and task switcher.
- Rectangle – window management tool for MacOS that allows users to easily resize and move windows using keyboard shortcuts.
- MTMR (short for "My TouchBar My Rules") – MacOS utility that allows users to customize the touch bar. With MTMR, users can add custom buttons and controls to the touch bar, and create rules to control which buttons are displayed in different applications.
- Less distractions
While it is certainly important to focus on our tasks and deliver high-quality work, we also believe that enjoying our work and finding enjoyment in what we do can lead to increased motivation and productivity. We like memes, GIFs, custom emojis, and cats!