I got this question from a newsletter reader who’s an entry-level Pythonista:
What’s the best way of moving from a basic understanding of Python to working on real projects? And what Python projects should I build? I have no idea which ones would help me grow.
It’s easy to get hung up on this question and to be stuck in “overthinking mode”—
What if you pick the wrong project to work on? What if you’re working on the wrong skills? What if you’d make progress faster by working on something else?
… and so on, and so forth. I’ve been there myself, jumping from one shiny thing to the next looking for a “quick fix” to boost my coding skills. And trust me, constantly doubting your decisions is the quickest way to destroy your forward momentum.
So what should you be doing instead? The trick here is to temporarily ignore all advice that says “re-inventing the wheel” is bad.
It’s true, “re-inventing the wheel disease” is bad for the productivity of experienced developers.
But, it’s actually a godsend for beginning developers who need to get some experience under their belt. So, hear me out: If you’re working on improving your coding skills, you should be re-inventing wheels *a lot*.
Really, go nuts!
Try to re-invent and re-write everything from scratch. Write little GUI calculators, try to write your own text editor, write a “file copy” command-line tool…
Write backup/archiving tools! Write arcade games: Tetris, Snake, Tic-Tac-Toe.
Re-invent it all and copy, copy, copy the user facing designs! You’re not doing this to steal someone’s business or app idea—but to understand how small real-world projects work behind the scenes.
The smaller in scope the project, the better. You want to focus on copying small “commodity” software that’s around you every day:
How many standard UNIX command-line tools like
ls can you write from scratch in an afternoon? And feel free to cut corners—maybe your “cp” command can only copy files and not directories…That’s fine!
Just get something out the door. I promise you’re going to learn something. And even if you fail at first, this approach constantly creates new questions you can then set out to answer.
These questions will be your “learning compass” and give you directions on what to focus on next.
So, can you do one of these little projects a day and keep up the pace for a week, a month? There’s no doubt in my mind that your Python skills will massively improve if you re-implement one of these small tools a day from scratch.
In summary: Action, Action, Action!
Leave a comment below and let me know which tool or app you’re going to “re-invent” with Python 🙂