Software Development Tools that Boost our Productivity
Software development is a complex and time-consuming process. That’s why the specialists working on it use a set of applications and systems to perform their tasks comfortably and efficiently. There’s a wide range of desktop environments, code editors, and other software improving the developers’ work. We’ll show you the tools we like and regularly use.
Hardware letting us smoothly work with the software
Before we go on to the development tools, we’d like to briefly mention our hardware as its selection also impacts our productivity and the comfort of work. The basic tool of each developer is obviously a computer. Since the very beginning of Droptica, we’ve been only purchasing laptops to have the possibility to work remotely from any place. It’s always been crucial for us, as we work in distributed teams, move between our offices in different cities, as well as visit our clients.
We always choose efficient laptops so that the hardware capability won’t block our developers' work. Most recently we’ve ordered Lenovo ThinkPad X1 Extreme and Dell Precision 5540 laptops. They have Intel i7 processors, six cores and get more than 5500 points of Multi-Core Score in Geekbench 5, a cross-platform benchmark.
However, one screen is not enough for comfortable work so we plug in also two external Dell 27 inch Full HD monitors. As a result, every developer at Droptica works on three screens.
Software development tools we use
Below you’ll see quite a few tools. It comes from the fact that everyone uses a bit of a different set of platforms and applications due to their work style. However, as you will most likely notice, most of these tools are open-source because we develop and promote solutions based on this technology.
To make you walk through this list easier, we grouped the programming tools into four categories: operating systems and desktop environments, GNOME extensions, IDE (integrated development environments) and code editors, and other software simplifying the developers’ daily work.
Operating systems and desktop environments
The operating system that all developers at Droptica use is Linux. Since it's an open-source system, we can easily adjust it to our requirements, and share copies of such custom versions with each other. You can match Linux with your needs even better by choosing your favorite version, which is called a distribution. There are over 200 of them!
We use two of the most popular Linux distributions - Mint and Ubuntu. Both of them are suitable also for beginners, very stable, based on Debian (Mint is additionally based on Ubuntu), equipped with basic tools in the regular version, and have good online community support. However, the majority of us prefer Ubuntu (mostly 20.04 but also the 18.04 version), as there is more tutorial content related to this distribution available for the advanced users.
Not only do we use Linux on our computers, but also develop all the applications on the production servers. The systems’ compatibility eliminates situations when something works for one developer and doesn’t work for another.
Desktop environments
Linux also gives a wide choice of desktop environments, like KDE, MATE, GNOME, Xfce, and Cinnamon. The latter is used by our developers working on Linux Mint since it’s a flagship desktop environment for this distribution. It has a clean look with easy-to-read fonts and color combinations. The Cinnamon desktop isn’t packed with unneeded shortcuts and icons. You can configure what you’d like to see on it in the System Settings => Desktop menu. Among the other advantages of this desktop environment are:
- configuration - Cinnamon control center gives you access to many of the desktop settings options. You can e.g. change text fonts, extract themes from the web, or activate effects.
Cinnamon control center customized by one of our developers
- The Cinnamon Panel - includes a menu with commonly used applications, a system tray, and the application selector. By default, the panel is configured in a very simple way. However, like with the control center, you can adjust it to your preferences, as well as add new program launchers.
Although we like Cinnamon, most of us use GNOME with Ubuntu. This desktop environment has a minimal user interface which makes operating with it easy. Also, a clean icon-less desktop lets us better focus on the actual work. To help us do that, there’s another valuable functionality - dynamic workspaces. Instead of one desktop with all the currently open windows, you can have them organized in multiple workspaces. It’s a handy solution, f.e. while you’re downloading a big file on one workspace, you can freely perform your tasks on the other. And what does it mean that the workspaces are dynamic? Initially, you have a single workspace. As you open applications on it, a new blank workspace is automatically generated. Then when you close all the applications on it, the newly created workspace is deleted.
GNOME extensions
Another fact we like about GNOME is that it has loads of extensions that improve the work with the operational system. If you use the Chrome browser, we recommend adding to it the GNOME Shell integration plugin as it facilitates the installation of the GNOME extensions. Below you’ll find the ones that we use.
Sound Input & Output Device Chooser
This extension displays a list of sound input and output devices in the status menu below the volume slider.
Caffeine
We don’t have to worry about our display locking when our computers go idle. Caffeine disables the screensaver and auto suspend.
Dash to Dock
To easier launch the applications and quickly switch between windows and desktops, this tool moves the dash out of the overview transforming it in a dock. And we don’t have to leave the desktop view.
Source: Dash to Dock
Dash to Panel
With this add-on, we have a system tray and the application launchers connected into one panel since it moves the dash into the GNOME main panel.
Notification Center
It allows us to separate the Notification Center and put it on the top panel. Using the extension, we can also customize the center.
We also recommend the other GNOME extensions that simplify our daily work, like Switcher, GSConnect, Tweaks (it’s a default feature of Ubuntu 20, but an extension for version 18), Clipboard Indicator, and AlternateTab.
IDE and code editors
The IDE we use is PHPStorm as it’s perfect for working in Drupal which we specialize in. This integrated development environment supports all the features of the PHP language, provides code completion and refactorings, and prevents errors on an ongoing basis. All the possibilities the PHPStorm gives increase the productivity of working with code.
Source: JetBrains
Together with PHPStorm, we use PHP CodeSniffer. It’s a very handy tool that supports us in maintaining a clear and standards-compliant code.
Code editors
The code editor that supports the daily work of some of our developers is Sublime. It operates with many programming and markup languages. Among some helpful feature it has are:
- Command Palette - it contains frequently used commands or items,
- Goto Anything - a quick option to open any files in the project we’re currently working on,
- multiple selections - with this functionality we can apply changes to many lines of code at once.
Another tool that some of us use for code editing is Visual Studio Code. It natively supports Node.js, JavaScript, and TypeScript but with the help of extensions, you can also work with it in PHP, Java, and Python just to name a few. The code editor is equipped with IntelliSense. This core feature provides intelligent code completions based on function definitions, variables types, and imported modules. Below you can see how these completions work in the JavaScript code.
Source: Visual Studio Code
Another crucial tool for us in terms of working with a code is GIT - an open-source versioning system. Since it’s a console application, you have to type commands in a terminal. To make it easier and faster, some of our developers use GIT GUI (Graphical User Interface), namely SmartGit program. We like it for its various features and a clear interface.
Regarding GIT, we also use other tools for simplifying the work with it, like GitK, the graphical history viewer, and bash-git-prompt. The last one shows us information about the repository we're using at the moment, like branch name, and files staged or changed.
Other software simplifying the developers’ daily work
We’ve already shown you quite a few software development tools we use every day. However, besides operating systems, desktop environments, PHP IDE, and code editors, there are loads of other applications that support our work and boost our productivity.
Working with a terminal
Some of our developers operating with GNOME use a terminal dedicated for it - Guake. It’s a simple tool, ready to use right after installation. The terminal supports working with multiple monitors and tabs and gives you over hundred predefined color palettes.
Having any Linux terminal, you can accelerate your work with Tmux, a terminal multiplexer. It lets you create many terminals, access and manage them from a single screen. Using this tool, you can also effortlessly switch between various applications in one terminal.
The last program we use and recommend for terminal-related work is Terminator. This handy terminal emulator enables you to reorder your terminals, organize them in a grid-like structure, and save numerous profiles and layouts through the GUI preferences editor.
Working with databases
For visually designing, modeling, generating, and managing databases, some of our developers use MySQL Workbench. With this tool, we can create and optimize SQL queries, administer MySQL environments, as well as monitor MySQL applications on the Performance Dashboard.
Source: MySQL Workbench
Another tool some of us use for managing MySQL but also PostgreSQL and SQLite databases is TablePlus. We can administer many databases at once in a native and fast app. Its numerous security features (like multi-step authentication) provide the protection of the databases.
Work organization
Apart from Jira that we use for project management, we have also our favorite task management tools for organizing daily work. Some of us recommend Joplin, an open-source to-do application. The notes are conveniently ordered into notebooks and you can easily see their history. The app is offline first, available on desktop, mobile, and terminal.
Every day we also log in to various web applications and software. It’s hard to remember all the passwords and unsafe to keep them in many random places. That’s why we use open-source password managers, both company-wide and for individual purposes. In the second case, some of us use KeePass in which all the passwords are stored in a database locked with a master key.
Collaboration
We work in distributed teams, as we have our offices in four different cities, and often also remotely. Then smooth cooperation is even more important for us. To explain how something works we use different screenshot tools (as everyone has their favorite ones), like Shutter, and Flameshot. Some developers prefer to record their actions, rather than show them on static examples, e.g. with Kazam, a screen recording program or Peek. With the last tool, we can not only record screen areas but also create an animated GIF.
We obviously communicate a lot with each other on a daily basis. Our main tool for that purpose is Slack but some people talk also e.g. on Google Hangouts. In such a case, to have all the conversations from different platforms in one place some developers use Franz, a messaging app letting you add your accounts from different chatting tools.
Source: Franz
To store files and share them with teammates, some of us use FileZilla - a free open source FTP (File Transfer Protocol) software. It’s easy to use and enables remote file editing.
Browsers and email clients
At Droptica, we use the Google suite, so Chrome and Gmail are our everyday companions. However, some people also have and like Chromium (Google uses its source code for Chrome) and Thunderbird. The last one is a cross-platform email client that lets you connect email accounts from different providers to have all messages in one place.
API development, virtual machines, and graphic design
Many of our developers willingly use Postman. It’s a collaboration platform for API development. There are different people involved in API-related matters. Some of them design the API, others develop it, customer support and the clients themselves work with it every day. In Postman, the API consumers can be up to date with the latest adjustments. They can also leave feedback for the developers and other producers. The last group can use these opinions for improving the API.
Source: Postman
VirtualBox is a less frequently used tool among us, but still very valuable. It’s an open-source virtualization software for creating and managing guest virtual machines, operating on Windows, Linux, Macintosh, Solaris, and OpenSolaris hosts.
For quick designing work, some of us like to use Krita, an open-source painting software. It gives more than hundred brushes, vector tools, and text boxes. You can also broaden your toolset by importing texture and brush packs from other creators.
Freedom of choice
As you see, we use a wide range of software development and other tools. It is because every person at our Drupal agency can compose a set that matches their individual preferences the best. Working with us, you could introduce and use your favorite software. We know that it boosts productivity and improves the comfort of work.