That is only partially true. Yes a lot of my life has been in C++, and no I don't like the language. I simply put up with it to work on interesting software.

However I have done very little C++ development in XCode. In XCode I have primarily done Objective-C and Swift coding. Both languages are a lot more IDE friendly than C++.

And I have used AppCode and other IDEs from JetBrains such as Android Studio. Yes the refactoring these Java IDEs can do is quite impressive. Although Smalltalk IDEs impress me a lot more. It was after all a language designed for IDE use, which Java was not.

But none of this change the fundamental point of my article which is that there are a create number of IDEs out there which is particularly tailored to certain languages. If you program Smalltalk you will use a different IDE than if you do Java programming. If you do C# development you will likely use Visual Studio. If you do Kotlin you likely use some JetBrain IDE.

The problem is that these are all large complex piece of software where you cannot easily transfer skills. Each IDE require a lot of investment. I find coding editor skills to be significanly more durable.

Look at editors like Vim and Emacs. Young developers are still using these. You could have been using these for 30 years and your learned skills would still be relevant today. What 30-year old IDE skill would be relevant today?

This even applies to the Java world. When I was doing Android development there was a lot of jumping between different IDEs as it was all in flux. You never really got good at any of them.

A big problem with IDEs is that they tend to really only be useful with "old" languages. If you are into new developments whether Go, Rust, Julia or even Zig, then they are not very useful. A powerful coding editor will get you a lot further.

Refactoring and "deep understanding" of code isn't really limited to IDEs anymore. With things like language servers becomming standarized you get a lot of the same functionality in text editors as in IDEs.

Refactoring is also possible with various commandline tools. Here is an example from Go:

The benefit of using command line based tools as opposed to GUI tools for this is that you can more easily create automated workflows and you can pair them with any editor you like. IDEs are big monoliths with little flexibility with respect to how you want to work.

But I am not saying there is one right choice here. It depends on you as a developer. I am more of a language guy and less of a tools guy. I prefer using a better language over using a better tools. Some guys like to spend 30 years only doing Java or C#, and for them investing a lot of time in an advance IDE makes a lot of sense. Not so much for me.

Written by

Geek dad, living in Oslo, Norway with passion for UX, Julia programming, science, teaching, reading and writing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store