All these years I work as a Web Developer I happened to use a lot of different editors and IDEs. The reason is that I constantly try to find the best tools that suits to me and the way I like to work. Microsoft’s Visual Studio Code (or VSCode) is the IDE I prefer to use for the last couple of years and I think I have a few good reasons for that.
Multiplatform
VSCode is available for Windows, MacOS and Linux and it is easy to install on every system. This gives me the similar experience on my day to day work, no matter what system I happen to use. You can download it from the official website, where you can find different versions for 32bit and 64bit systems. For some Linux distributions is available at it's repositories as well.
Supported languages
VSCode is developed on TypeScript and has built-in support for Javascript, TypeScript and Node.js. It supports many other languages using extensions, such as the PHP, C++, Python, GO etc. It has a great and rich ecosystem where I am able to find anything I want, helping me to add new features to my IDE.
Modular
I like my IDE to be plain simple out of the box, but give me the option to add what I need, when I need it. VSCode uses extensions, which are plugins that anyone can use. It has a list of them at the left sidebar, where you can search and choose, based on features, popularity and rating. Simple ways to find the best extensions for me.
Best suitable extensions are proposed based on the files I am working on, for example if I open a Markdown file (.md) VSCode will propose to install extensions that support these files.
I like to optimise the loading time of VSCode even further, by loading only the necessary extensions I need per project. VSCode provides a way to disable extensions for your current open project, and of 'course, saves that configuration to the project. To make it clear, if the current project is based on Node.js, I don't need a number of other extensions that support PHP, which I can disable. This makes my IDE faster and more clear, by removing the unecessary UI elements and tasks.
Clear view
When I am using VSCode my attention is not disturbed by other elements, as it is pretty minimal, without even the need to go to a full screen mode. It only has a left sidebar, where various extensions add their elements, lets say the list of the Explorer files. The rest of it is available for your code. Even the code minimap can be removed instantly and for good from the menu. There is also a bottom bar for logs, for the integrated terminal and other stuff, but it is open only when I need it.
The colors of the editor are pretty good, with bold edges and colours. Of 'course there are a lot of theme extensions, that change the colours of the IDE and your code as well. You can even use different icons for different kind of files, which is really good for the file lists.
Speed
I believe that everyone doesn't want to wait for a program to load or when it executes specific tasks. Especially, when this program has to do with our daily work. I find that VSCode loads pretty fast and restores my working status from the previous date, with my last active project and opened files as well.
Debugging
VSCode has a great debugging support, with the built-in debugger. This is also used by the left sidebar, which works the same way no matter the programming language you use.
You can also have different debug configuration per project based on what you are working on. This can be saved under the workspace configuration or .vscode
folder.
When I start debugging my code, a floating bar appears at the top, where the necessary buttons exist, like Continue, Pause, Step Over, Step Into, Stop etc. At the left sidebar I can see all the current set variables, arrays and object, as well as their values.
Of 'course, you can't debug your code if you do not have breakpoints, which you can set with a mouse button click at the left of the row number. Conditional breakpoints are also available, in case you want to stop the execution only on specific situations.
Workspace configurations
I usually work on multiple projects at the same period of time, which most of the times are totally different. The workspace configuration helps me configure each extension in a different way for each project, for example the SFTP access for different servers and websites.
This creates a .vscode
folder inside my workspace, where are stored only the differences of the configuration against the default ones. This is simply to copy to an other project and fast change only a couple of them, if you need to.
Personal evolution
My major concern about the selection of my day to day IDE is to support me on my personal evolution. As I constantly want to try new technologies and methodologies, I need my tools to be able to transform themselves based on what I need to do, and VSCode is one of these tools. The extensions I use are pretty good developed, VSCode is pretty stable and ready to support me on my daily coding. And when I need to try something new I am pretty sure I will be able to find the necessary extensions that are going to do the job.
Price
The best of all the reasons is that it is totally free. All this power at your fingertips, without paying anything at all.