What tools are right?

I’ve been using lots of powerful tools in my life. I’ve been using Windows, then switched to Linux Mint with KDE, then to Fedora with Awesome Window Manager. I’ve been using QtCreator and Visual Studio for development and then switched to Sublime Text 3 and then switched to Vim (NeoVIM, in fact, but it is mostly the same thing — just better).

And while using all these tools I became more productive. Because from one tool to another, I added more of self in my work environment.

Here is little classification of tools I’ve been using for all of this time. All with its pros and cons.

Powerful tools

Most of market in the world of desktops run on Windows. Lots of admins (at least in Ukraine) blame it in half of their problems, but in fact they still use it. Because it is easier for them to work in environment they are working in for years. They work more productive when they use it, because most of their time they spend on work after that.

That’s what the developers of such powerful instruments say:

Your part — is just do your job. The else we’ll handle from our site.

And they are right. Because if you’ll try to do something unusual with it— it will just keep constantly crashing and working pretty awful. Still using Windows for example: when you customize lots of things inside, the OS will start working worse than in default config. Why? Who knows — it’s just kind of magic 🙂.

All this happens because the system is created for end user. Not for extension or customizing. Because the core of product includes very big bunch of functionality.

Extensible tools

Search box at https://atom.io/packages

The trendy thing now is an Atom editor built by GitHub. It is fully written in JavaScript, is sexy and powerful. But when you install it, you should admin that is not such powerful out of box. Many developers, who use IDEs are saying: “It can’t do the simplest thing that IDE can”. And they are right from their point of view. The extensible tools may not have much possibilities out of box.

But their power is in their extensibility. Lots of developers are creating plugins for it, to make it better things for themselves at first place. The core of it is not such powerful like the core of IDEs, but it do its work the best way it can. The core of these tools includes only necessary staff, all the other things (even included out of box) are provided as extensions or plugins.

I like those tools, but they have their own drawbacks. If you want to change behavior of these tools in some contexts, you should write your own plugin. And it is a bit hard, sometimes.

Customizable tools

The most beloved by myself ones. The tools that are often hard to learn, but it’s power is really underrated. Vim, Emacs, Tmux and lot more. They allow you to do anything you want out of box.

For example, in vim if you want the semicolon be printed every time you go to next line, there is plenty of ways to do it. You just select the best one that fits for you. It makes you, in fact, much more productive. The only thing you need to do — find those unproductive operations and replace them with shortcut.

But this has it’s drawbacks too. You will spend really huge amount of time on configuring your environment. Yes, you will be very productive while doing your work, but all time you won by this productivity will be taken away by the tool. You will constantly add some improvements into config.

And one day you will look around and find out one little thing:

They will get all interesting staff done while you are configuring your editor.

As the conclusion

Use the best tools that fit your task. I tried to stick with one software stack for everything — and it doesn’t work well in all of cases. Different tasks require different software to achieve them.

For instance, I am Python developer. I use Jupyter Notebook when I am playing around with machine learning or some new algorithms, PyCharm for my work project and neovim for some small projects. Because Jupyter allows you to get result and visualization easy and fast. PyCharm allows you not to break the software you are working with. And neovim allows you to type and navigate as fast as it is even possible, what is mostly needed in small projects.

So don’t listen those guys, who tells that you can use one thing for everything. It’s quiet impossible. Find the best stack that fits your current tasks the most. And when you feel that it doesn’t fit them — try something new.