Software Skills

The objective of this page is to give additional context relating to my skills in effectively and efficiently utilising development software.
VS Code
  • VS Code
  • Code Editor / IDE

VS Code is my favourite bit of software and it goes from strength-to-strength month-on-month. I spend the majority of my development time here. My VS Code setup is much more like an IDE with circa 100 enabled extensions and a lot of custom config in my settings, keybindings, and launch json files.

Thankfully, I have built a lot of "muscle memory" with many of the keyboard shortcuts which enables for efficient coding and debugging. The majority of my time is spent on focusing on a development problem rather than how to actually use the editor.

I use it for anything from simple Markdown, to managing Docker containers, to autocompletion assistance with either Visual Studio Intellicode or TabNine. Also, there is an app called Sourcery which does a fantastic job of analysing your code and suggesting any refactorings that might improve code quality.

DataGrip
  • DataGrip
  • Database Management

Although I have used other database management tools, I have settled on JetBrains’ DataGrip as the tool of choice as it enables me to many things that most database management software does not allow.

  • Write SQL queries to retrieve a desired dataset from the database when I'm thinking about the equivalent Django ORM code required to retrieve my desired dataset. DataGrip gives syntax highlighting and autocomplete making this easier.
  • Visualise the database schema and check that my models have the desired relationships between one another.
  • Browse the datatypes and properties of fields and tables within the database and reconcile them with the model fields.
Firefox
  • Firefox
  • Development Tools

Firefox Developer Tools help me to diagnose many issues relating to web development including the loading of pages and assets, divs and CSS styling of web components, flexible layout across devices. Chrome Dev Tools seems to get all the plaudits, however I prefer Firefox's Dev Tools.

I have learned a lot about web development through Dev Tools alone by the inspection of websites that achieve a desired outcome. It is usually possible to reverse engineer the front-end build of a website through inspection and analysis.

Due to its instant feedback, I often find myself making small HTML and CSS adjustments within the Dev Tools to achieve the outcome I desire and then cement that into my HTML or Sass file afterwards. The Django development browser doesn't have hot module reloading like React due to React's Virtual DOM feature.

One Firefox extension that I would give a shout out to is 'Fake Filler'. It makes filling out forms a "one-click" process which is very useful for testing forms with many inputs. It can be programmed with regex to control how the forms are filled in. During the development process, you may need to fill out forms dozens of times to test it in different ways and typing in example input over and over again becomes tedious. Yes, writing unit tests is another way to accomplish this but sometimes seeing forms working trumps a unit test.

Jupyter Notebooks
  • Jupyter
  • Python Notebook

This one perhaps comes as a bit of a surprise for web developers but I find that this one is perhaps overlooked. It is especially useful when you're working with an external API.

If you're using a standard Python Interpreter to inspect the JSON from an external API, you may be presented with one continuous block of code with no spacing, line breaks or formatting, then it makes it very difficult to see the matching bracket sets. Doing this inside a Jupyter notebook formats the code beautifully which makes this a breeze.

Coupled with Jupyter's ability for documentation and to quickly replay the code, iterative development using an API is a pleasure with Jupyter notebooks.

This is likely to be enhanced even further soon as the Python extension team at Microsoft are working on providing in-cell debugging and live variable inspection.

Browse other skills...