A journey of a thousand miles start with a single step - Laozi
Before delving into the why lets begin by first describing what my journey has been thus far.
Five years ago, when I first started getting into web development, I was at the same spot as every beginner. Choosing a code editor. Most of the resources tell you that even a plain text editor is alright, but if you wanted syntax highlighting and small useful stuff like that, then Sublime was the way to go.
As I did not know any better I started using Sublime, then seeing that Sublime was being intermittently developed at that point in time I thought it was better to move onto something else as a good scout boy following the web development scene. A competitor at that point was emerging in the name of Atom, the cool new kid of the block.
I used Atom for almost two years in all kinds of projects and for the most part it did its job very well. But plugins where coughing up errors every once in a while, which its not a big deal really but the editor was becoming slower and slower.
I always knew IDEs were even slower that code editors as they are packing a lot of features which inevitably can make the experience somewhat cumbersome but the team I was in at the time was using IntelliJ products.
So for the most part of these past two years I have been using IntelliJ Idea which was the de facto code editor people were using at the company I was working. Of course, you were free to use any code editor you felt best for you but after watching my colleagues using some of the features of IntelliJ that come out of the box, I decided to give IDEs a try.
The WHY I was using IntelliJ Idea
As a strong argument already stated above, IDEs come packed with many great features that can make developer's life easier. I loved that I could use Javascript Standard Style out of the box and enforce it using a combination of keys while also making my code pretty. Or that I could configure typescript to copy the settings I used in plain javascript.
Find parts of code in your project is a breeze with a very well structured prompt screen. Opening files? Press double-shift and a prompt was there to help you.
Having a robust terminal inside the IDE, as well as a built in REST client for testing APIs? Check
Running nodejs scripts or unit tests with the press of a button ? Check
I could see myself using IntelliJ Idea for all my projects but at some point it was killing my mental state and I will explain why.
Where IntelliJ products suck
As a web developer, programmer in general, as you may or may not know is that everything happens inside our head. We, are in position to make complex visualisations in our head, break a problem into small parts and try to see if everything is connected properly so that our assumptions of a solution will be correct.
That mental state needs focus, focus that an IDE can kill. Below I give you my three pain points of using IntelliJ Idea both at work and home.
- Many times, when you try to create a new file, the cursor can vanish and come back after some minutes. Imagine that, when you have a thought process that needs to be put into code before your focus is gone. Guess what? Cursor disappearing once every month its not a problem, a cursor disappearing several times a day, can get to your head and boom, you lose focus.
- IntelliJ Idea is slow as hell when caching. I have a relatively powerful desktop so even the idea of the IDEs hanging on me until caching is done, it can really get on your nerves. And imagine caching several times per day. Say you removed node_modules folder. Each time you run
npm install
add almost another minute of caching and editor unresponsiveness. Yes, you can pause caching, but why have caching there in the first place? - Having to deal with a
.idea
folder in my projects. I can understand its usefulness and the reason for that folder to be in there but as we all know, developers always seek to make their life easier and having less things to worry about than having to deal with a.idea
folder which I would need to add to.gitignore
as my colleague/friend/you-name-it may not even use an IntelliJ product as a code editor. Having an.idea
folder makes the project IDE specific. - Lots of times I want to rename files. In every code editor I used
right-click > rename
was the way to go, in IntelliJ products you have toright-click > refactor > rename
. I mean really? You hide one of the most used features under yet another sub-menu?
The problems above are stated in order of importance to me, from major to minor. The disappearing cursor seems to be an issue for many users for over 3-4 years and yet its not fixed nor is there a solution. As a temporary solution, if you delete the file you just created and re-create it the cursor comes back. For me its a deal breaker and a look for an alternative editor.
This is where VS Code comes in
In the community right now VS Code has become the go to editor; backed by Microsoft and being actively developed with monthly releases while also being really fast in comparison I thought I would give it a try.
The biggest worry I had, is that I got so used to the way the good parts/features of IntelliJ Idea were working that I was afraid I would not be able to replicate them in VS Code. Of course as VS Code is not IDE it lacks features that come built-in in IDEs. However with some searching and tinkering after a few hours I was able to replicate all the good stuff I was able to use in IntelliJ Idea.
Which meant now I was able to have all the good parts of the experience I had with IDEs and transfer them to a fast dependable code editor.
Conclusion
IntelliJ Idea is an awesome IDE with a LOT of capabilities that can give a great experience. However, for me personally it hasn't work out as such for the reasons explained above. Only time will tell if VS Code will be able to close the gap but I would be damned if I did not try.
In an upcoming post I will showcase the setup I used in VS Code. Stay tuned.