Developers are weird “animals”. You know they have their quirks – they like their workplace set up in a specific way, they usually don’t care about what they wear, and they are very picky about software and services they rely on.

Here at TMS, we are not much different to that description, but we would argue it is a bit exaggerated. Nevertheless, we do rely on certain apps and tools for specific tasks, and although there might be objectively good alternatives, we tend stick with the ones that work and risk our full-app-lifecycle process by introducing new, untested tools into the mix.

So, here are the tools that help us deliver cutting-edge applications for our clients.


When writing PHP code and using PHP frameworks, you need a tool to help you write the best code possible. PHPStorm is IDE that does just that. It has a deep understanding of PHP code, detects errors in real time, helps with code completion… and supports many frameworks including Symfony and Laravel.

We love that it works great with other tools in our arsenal, including Vagrant and Composer, and enables easy debugging and testing. Although some might find it daunting, after some time and a bit of customization it becomes indispensable.

Sublime Text

When a project doesn’t require a full IDE or we are working on non-PHP code, we turn to a simpler solution. Sublime Text is great at helping you focus on the task at hand. It won’t understand what you wrote, but will help you see it clearly and edit it quickly.

Some of our developers are using only one of these two, and some switch between them depending on the current needs. We can’t help but recommend both.


Testing and debugging our code is something we do thoroughly. This is why we do not rely only on debugging feature of PHPStorm, but also use XDebug to make sure we catch all the nasty little “critters”.

It also features a profiler to help us find bottlenecks in our code and make sure everything runs smoothly… Did we forget to menton, XDebug works perfectly with Sublime Text as well.


In recent years Mac laptops became go-to machines for many developers. Quality hardware, stable work and *BSD in their guts make them almost perfect. The only thing that missing by default is an easy way to install additional packages.

This is where Homebrew comes in with its support for just that task. And it does it perfectly, by installing new packages in their own directories, and adds symlinks in /usr/local/. We love that it supports terminal (command line), and that we can create our own packages when we need to.


You will see us talking about code testing regularly. We probably will never be able to stress enough how important it is. But we will not stop trying.

CodeCeption is one of the tools we rely daily to make sure our code works as expected. It helps with checking that code is written according the proper syntax, that our apps’ elements are integrated properly, and that different features work like they should.


And to be even more sure our code is top-notch, we use PHPStan. It was created as a soft of compiler for a programming language that is not compiled before its run.

When we first tried it, we were blown away by how fast PHPStan is, and that made it a tool we now use regularly. It checks for existence of classes used in instanceof, catch, typehints and other language constructs, existence and accessibility of called methods and functions, the number of passed arguments, whether a method returns the same type it declares to return, among other things.


And, now something a bit different. Vagrant might look unusual at first, but it is essential. It helps us set up and share virtual development environments. And it does so fast, without much hassle, since everything can be defined from the command line, and virtual machines can be shared as simple text files.

This is especially helpful to make sure the whole team uses identical development environment, and that all changes to it are quickly implemented on all of their computers.


Another great tool that helps us stay productive is Composer. When we install a new package or a library to use in a PHP project, it automatically installs everything that is needed for that package to work properly.

Laravel and Symfony PHP frameworks use it by default, and for other PHP projects we use it when needed. It’s a fabulous time saviour!

* * *

With this, we just scratched the surface, and plan to add more tools to the blog post. But in the meantime – don’t be afraid to leave a comment and tell us what tools you use daily.