Setting up the perfect development environment

I’ve always struggled with finding the right set of tools and environment to feel entirely productive with my workflow, after about 40 iterations I’m finally satisfied with it, without further ado, here’s my perfect development environment.

Editor

Visual Studio Code – after the implementation with development over SSH, this has made my life a breeze developing, on top of the fact you can have specific plug-ins installed on the environments themselves, it’s a must-have in my environment! Previously, I used Jetbrains products PHPStorm, WebStorm and DataGrip.

Extensions

Remote Development by Microsoft is a must-have if you do development over SSH or containers, it makes the process trivial and it’s plug-and-play for the most part.

Git Extension Pack by Don Jayamanne is great for managing Git, reviewing commits, and having a seamless integrated experience because of the extensions it bundles – Git History, Project Manager, GitLens, gitignore, and Open in GitHub / Bitbucket / VisualStudio.com.

Docker is a great extension when developing, allowing easy management and deployment of containers right from your editor.

Debugger for Chrome by Microsoft making it easier to debug JavaScript in Chrome right from Code, the interactive debugging provides a great overall experience and has saved me lots of time when debugging.

PHP Extension Pack by Felix Becker provides great support for debugging PHP, including PHP Debug, IntelliSense modules. It’s fast, and I’ve never had an issue so far, it’s a bit slower than JetBrains PHPStorm, but it’s not a deal breaker.

Python by Microsoft is another great extension when developing with Python, I’ve got to interact with Python on a daily basis in my day job and it’s been a life saver — I went from full-on vim with tweaks for Python to Code and don’t miss vim at all!

Indenticator by SirTori does a great job at highlighting the indentation you’re at currently, and helps you see better when looking at lots of nested code.

Peacock by John Papa is another useful extension, it’s subtle color changes are great when running multiple editors, however it can conflict with my theme, so usually I’ll keep it disabled until I need to open more than 1 editor, and disable it after I’m done.

Settings Sync by Shan Khan is what helps keep my sane when switching machines – one simple command to sync all my settings across all machines I use, this seamless integration makes Code easier to use and allows me to share my settings with colleagues, friends, etc by copying this file into a public git repo, like my dotfiles one.

TSLint by Microsoft is perfect when writing TypeScript code, which I happen to do a lot of recently, it’s fast and provides almost real-time feedback.

Beautify by HookyQR enables me to quickly beautify my messy code, and it meets the spec we use at work and my personal spec at home.

C/C++ IntelliSense by Microsoft is good when dealing with C++ code, I don’t have to do this quite often, but when I do it’s a real life saver as opposed to popping out a big IDE for my few line changes.

Bracket Pair Colorizer 2 by CoenraadS is perfect when dealing with numerous brackets, this paired with Indenticator makes writing code a seamless process without losing track of your position, it’s also significantly faster than Bracket Pair Colorizer v1.

Theme

I use Material Theme from Mattia Astorino with the Pale Night High Contrast color scheme, it’s easy on the eyes at any time of day or night and it complements my RGB lighting perfectly.

Terminal

I’m using iTerm with ZSH on the default theme, it’s astetically pleasing and complements the Visual Studio Code theme I use.

Final Thoughts

I’m really impressed by Code and the amount of plug-ins available, with the right tweaks Code becomes this incredibly powerful hybrid editor that I can easily install anywhere and feel productive immediately! Code’s incredibly fast even when loaded with extensions, and outperforms most other editors I’ve tried!