The Aspiring Programmer Paradox
Let’s start with a question, how do you get better at development?
The answer is simple: practise.
You may think the answer is read “Clean Code” until you can recite it, or pay for a language specific training course on Udemy, but you still wouldn’t be answering the question. Reading books and taking courses may give you an insight into a languages quirks, or a deeper understanding of a common design pattern or strategy you enforce, but none of these things will ultimately make you a better developer until you practice.
Then you run into a problem, what do you practise on?
Your own applications and programs obviously; but where do the ideas for all of these apps come from?
Everyone (usually) starts learning a new programming language in the same way, and it usually ends with an eleven character string: “hello world”. Perfect. It’s quick, eloquent, it opens you up to language specific syntax, entry points, quirks and maybe even an IDE (depending on the language). This is the most basic – and useful – thing you could learn right off the bat; and that’s before being barraged with frameworks, design patterns, libraries and build tools.
Here’s the issue: what happens if you’ve already made a hello world app and you want something more interesting? Keep going right?
Write a CRUD API, add a database, hook in a build script, add some unit tests, plug in a CI pipeline. You can even tidy it by adding the fancy extras: logging, caching, fallbacks etc.
But then what? You might read an article about that sparkly new thing Node 6 or Swift 3 can do for you but how do you use it?
That’s my programmer paradox: the desire to code something to get better at developing without anything to develop.
I want to be a better developer – I enjoy working on my own projects – but you get tired of implementing things just for the sake of it; at least I do.
I can’t get excited about trying out Service Workers or Vue.js 2 without an interesting use case.
So where do you get your ideas from? Where do you find your developer inspiration to rise above this conundrum?