💻 On Programming Skill

First Published: 2023-01-04

Tactics, Strategy and Project Management"

It's language agnostic

One mistake common in new and/or bad programmers is to measure programming skill in language proficiency. This might make sense for a first programming language, but any half decent programmer should quickly ascend beyond this level. Programming skill is at most bound to paradigms, not languages. If you're a god at C you won't suck at python, but you might suck at haskell. But even the association of skill with a paradigm doesn't sit quite right. There is a way to assess programming skill independent the proficiency with tools. You aren't "a good python programmer". You may be a good programmer and you may be good at python. But by describing yourself as a good python programmer you're selling yourself short by binding your skill to that language, by implying your useless outside that domain.


Tactics shows itself in the ability to solve coding puzzles. To sum the first 10000 prime numbers. Tactics requires knowing data structures. It requires analytical thinking and a lot of practice. A good tactician will be able to write and navigate highly complicated code and is able to leverage complicated tools to solve complicated problems. To get better at tactics, pay attention in your data structures and algorithms class at college. Alternatively, or afterwards, go to codewars and grind some Katas. Maybe try some project euler problems if you want a more intense mathematical flair. Advent of Code is the high end of tactical practice. Don't feel bad if you can only keep up with the first week.


Strategy is about the broader ecosystem. It's also about knowing your tools and getting comfortable with them. It's about being able to modularize your code in a sensible way, to scale it from 100 to 1000 lines and beyond. Strategy enables you to build powerful applications without being wasteful in the process. Importing 10 python libraries that do the heavy lifting and writing 100 lines of uninspired glue code to hold it together is a sign of good strategy. Build applications and get to know one or more languages in more depth to get better at this. You learn over time what to delegate to a library and what to write yourself. You learn to read documentation and search for information online. You learn what kind of modularization works for you. Perhaps you can start by writing a discord bot. Maybe host a dynamic website or an api. The reasonable high end for strategy would be to write a simple 2D game.

Project Management

Strategic skill shouldn't be confused with project management skill. Finishing projects takes more than just strategy. Knowing how to prioritize issues during maintenance is management skill. As is finding out your minimum viable product and working towards that milestone before implementing non-essentials. The whole issue of scope is at the core of project management, especially when coding as a hobby or alone. As a general rule of thumb, good project management is about knowing what not to do, rather than about knowing what to do. It's about being critical of your own ideas and about writing software that doesn't just work but is useful as well. While you gain strategic skill during a project, you can practice your management at the start and then again towards the end of a project. Knowing basic task management and having common sense is enough here. Don't get caught up in agile bullshit, useful patterns in your programming practice will emerge on their own and don't need to be prescribed.

Be well rounded

A well rounded programmer should work on improving all three dimensions of their programming skill. But if you're going to emphasise one over the other, do more tactics than strategy and more strategy than management.

Most importantly, learn to have fun while coding. Learn to be proud of your work, even if it isn't much in the grand scheme of things. We programmers are blessed with the ability to move mountains through our keyboards and screens. Appreciate that.

💻 Hardlinks are underrated › ‹ 💻 2022 year review