I am not a Software Developer

and other lies you tell yourself

Recently I attended a workshop about reproducible workflows for earth sciences.

There was a 45 minute presentation about why you should use version control. Git, specifically.

This wasn't a talk about how to use git. It wasn't a talk about why you should use git instead of any other version control tool.

The speaker was convincing people just to use version control in the first place.


I did a little digging. The majority of attendees at the workshop were research scientists. Every single day they write software using Python, R, Julia, sometimes even FORTRAN.

And yet, they didn't consider themselves software developers. It seems to be a pretty common attitude:

  • “I'm a scientist, not a software developer”
  • “I'm a sysadmin, not a software developer”
  • “I've only just started learning, I'm not a software developer”

You are a software developer

I have some bad news. If you write code, you're a software developer.

You need to familiarise yourself with the tools which you use every day. Sink a little bit of time up-front into learning your tools and you'll become permanently more effective at your work.

Instead of fighting your tools, you'll be able to focus on the important stuff.

The bare minimum

Learn git

“I hate git. It always breaks and then I have to delete the repo and clone it again”

Is this you?

It shouldn't be.

Sink some proper time into learning git. Spend a few hours reading at least chapters 2, 3, and 5 of the book. Every time you have a problem or encounter something unexpected, Google it or ask someone for help.

Within a few months you'll have internalised how git works and you'll stop having problems.

Autoformat your code

Set up your editor to automatically format your code when you save a file. Do this once and never worry about it ever again.

Your code will look consistent, you save time by no longer having to manually format your code, and you make life easier for future collaborators.

Try to find an opinionated formatter (a formatter with very few configuration options). The point of an autoformatter is to make everyone's code look the same, not just your own, so faffing with formatter config is a waste of time.

Languages with modern toolchains (Elixir, Golang, and Rust are a few) come with opinionated formatters as standard.

Here are a few solid choices for other languages:

Use editor plugins

Google popular plugins and add-ons for your programming language and your editor. Look for plugins which boost productivity. Plugins for syntax checking and autocompletion are a good start.

Enjoy newfound productivity

We're just barely scratching the surface of developer productivity here, but these few tools are a good start.

Remember, the time you spend learning your tooling will pay dividends for the rest of your career.

It's worth the time to learn the basics.

Daniel Tipping

Daniel Tipping