Tools matter!!!

Davis Peixoto
4 min readSep 15, 2018

--

Some time ago I stumbled upon a question on a stackoverflow-related site about IDE usage over simpler editors.

For me the answer felt obvious enough. But then I started to enumerate the reasons and find out that this deserves a post about tools and productivity.

Being concerned with tools and productivity is something that cross developers minds from time to time.

You need to be pragmatic for any tool, technique or methodology. This means try things out, and keeps what works best for you. The risk here for mid-level developers is to find some decent productivity level and get stuck at that level and stop investing time to try and learn new tools, techiniques and methodologies.

The best tool is not always a paid one, or the most expensive one. Further, the best, may have different meanings for different people and/or even different situations. Sometimes just a syntax highlight is good enough. Sometimes, being lightweight is good enough. Sometimes, compiling and running unit tests at each commit is good enough.

Before jumping at the advantages of the IDE I use, let me say that you can reach high produtivity levels, despite whether tools you use if you invest some time to learn them.

You MUST know VI/VIM, because sometimes this is the only option you have on a remote server via SSH. And not all times you can load a nice syntax highlighter and some plugins, so get good enough on the editing basics with it. But of course, you can learn how to script, and do external commands with it.

A lightweight editor is also a common tool on developers toolset. Notepad++. Sublime. Atom. Pick one for those quick edits and prototypes. Learning how to create macros and scripts for them is very useful, and certainly will take you to a new level of productivity.

And of course, we have lots of IDEs. The common players, such Dreamweaver, Eclipse and Visual Studio. The almost sorcery as Mono Develop, Quanta Plus and Kommander. The IDE will depend heavily on your language and project characteristics.

For example, for data science projects, the de facto python IDE is Jupyter Notebooks. For other projects in python I think PyCharm is the best. One is free and open source. The other is paid.

I’m a big jetbrains fan. Let me make a rationale on why I do pay for PHPStorm.

It’s is not only about the code completion and syntax highlight. It integrates with the language ecosystem and the development practices like no other. It integrates with composer, so you can specify and manage depedencies directly from it. It is easy to setup phpunit and run a test suite. With code coverage. And see the coverage results in the editor. You can rerun specific methods only. In less than 3 minutes you can use xdebug, with basically zero configuration. You can run behat tests. You can set a code-style from predefined standards, like PSR-2 or frameworks like zend or codeigniter. And reformat all code. You can find methods and functions usage across you codebase. You can code modules, define them on composer as PSR-0/PSR-4 namespaces, and have the editor autocomplete it.

You can have your favorite frameworks plugin to assist you, even for best practices. You can have your template language helpers too, like blade, twig or smarty.

You can setup best practices tools, like code sniffer and php mess detector.

You have the inspections. You can even integrate php code sniffer and php mess detector with your inspections.

You can refactor. Extract a give snippet to a method/function. You can have performance and validity tips.

You can create a scratch file (outside of your project) and run it, for a quick test. You can have data flow analysis. Stack Trace analysis. Expression evaluations. Conditional break points. Bookmarks, shortcuts and to-dos.

This only talking about PHP world specifics. About the development pipeline (thus can be extended to basically any IDE from them). You can have a rest client. A SSH client. A terminal. Run terminal commands on remotes, or locally. You have integration with vagrant and docker. You have git integration. You can sign commits. You can setup pre-formatted commit messages. You can integrate with github and open a pull request directly from IDE.

It also integrates with issue trackers, like Jira, Youtrack, Redmine and many others. You can have different contexts for each branch. And it can even use time track in a smart way with predefined commit messages.

Distraction-free mode. Presentation mode. You can customize all shortcuts, even from your preferred editors at first. You have powerful searches, for files, symbols, options, settings.

You have a shortcuts usage history, so you can even consult that to learn a few new tricks.

And of course, it integrates with other languages too.

You have SQL client and code generators. You can export CSV. You have inspections for SQL, based on the RDBMS and version.

You have HTML, CSS and javascript code completion, inspections, best practices… You can install javascript libraries, helpers, and run npm. Use file watchers to compile SASS/SCSS…

You have basically anything to be more productive, code faster, smarter and more secure on daily basis.

Those are some of the reasons why I love PHPStorm and most jetbrains tools.

Of course, I had to invest some time to learn to make the best use of it, but I need to say that everytime I invested learning shortcuts and automations were well spent.

--

--