Blog written by Stacy Rendall, Principal Spatial Researcher, Interpret Geospatial Solutions
This post is part of a series which describes my development environment from high level technologies down to specific apps - it should be of interest to anyone doing Python or web development. See the first post for a general overview of the technologies that make up this stack.
Installation instructions and configuration/settings for tools introduced in this series can be found in this Bitbucket repository.
What I like in an editor
Different people have different preferences in editors: some people prefer a fully-featured integrated development environment (IDE), while I tend to like something quicker and less cluttered. Given the amount of time you will spend using an editor it is important that it fits in to your workflow and supports you to work efficiently. I used Sublime Text 2/3-beta for over five years, but there were always a few annoyances around how projects were managed, the convoluted process of installing plugins, and the feeling that you had to put in a lot of effort to get it set up right. As a result, I would often trial new editors and IDEs, which is how I found my new favourite editor - it is made by Microsoft, although (despite the name and icon) it is not actually related to Visual Studio the IDE!
Visual Studio Code
VS Code is cross-platform, free, easy-to-use, feature rich, fast and well designed - it can do a lot, but it doesn't get in your way. It has a raft of handy IDE features that I had never used beforehand, but I would now struggle to live without. Some of the best VS Code features:
Visual Studio Code showing Git integration, IntelliSense and integrated Cmder terminal
Other editors of note
If you are doing a lot of HTML/CSS then Adobe Brackets (also free) is well worth a look - it has an amazing set of tools for front-end development, although I have found it a little unstable with larger projects.
If you just want a simple, clean, fast code editor (and nothing else) I would also recommend trying Sublime Text (it can be trialled for free).
There are lots of different linting tools available for different languages, with differences of implementation, standards, ease-of-use and configurability. VS Code supports integration with a range of linters and allows you to see errors/warnings/suggestions inline (kind of like spellcheck in Word).
The most popular linter for Python is Pylint, but it has a couple of problems: it is hard to configure on a per-project basis, and it doesn't seem to install (easily) on Windows at the moment. Flake8 is an alternative linter that works and supports configuration per project (by placing a .flake8 file, like the one in the Bitbucket repository, into the project directory).
This series of blogs has presented a bunch of development tools which I use daily that play together quite nicely. This set of tools will not work for everyone, but I would encourage anyone doing development to think carefully about the programs they use, how they work together, and continuously find ways of doing things better, faster, and more efficiently!
This is the last post of the series - I hope you have found it useful and picked up some handy tools! I welcome any feedback or comments at firstname.lastname@example.org