A systematic training progression for programming?

As some of you might know, I am currently a fellow, aka at my personal writing retreat at Wolfenbüttel. And I decided to combine this with some sort of a training camp for my bouldering progress because you do need to have some breaks from writing during the day anyway and I can’t always watch Bones or create CV templates. You might have been following some of my bouldering on epigrammetry, the blog, or epigrammetry, the Twitter.

 

Training progressions in sports

Also very few of you might know as well, I used to train a lot for long-distance running (10k) during my teens. So I know what training progressions are. I used to have detailled training plans, eating regimes, supplements to take and all that jazz. I stopped at some point because my immune system kept bullshitting me and as an ambitious person, I couldn’t take the idea of having to start from scratch after a half-year of being very sick and weak. I’d had it with having to arrange my whole life around my training. Yet the principles I’d learned over the course of the years, plus the high level of discipline required in those persuits, have helped me a lot during my early university studies.

 

Systematic progress needs training goals

Looking back now, I used to approach studying and my ‘university progress’ just like I would have had planned my training progression. And it worked. I was really productive, things were going well. For me, at the time, this consisted mostly of getting all the translation homework done, reading a lot of Latin and Greek (at least an hour every early morning before starting my day) and getting through all the classics. Because I was fucking motivated.

This might have been due to there being actual goals to be achieved daily which I could measure my progress on. Like the speed, and thus number of pages, I would get through during my early morning reading practice. Back then, by the way, I also used to combine physical exercise with mental workouts like I have taken up again for this summer’s ‘training camp’. It works quite well. I should probably continue with it back home.

 

How do you create a training progression for programming?

My problem is now: Over the years, I seem to have gotten out of the habit of approaching progress systematically. Or, well not exactly, but – let’s say – I follow academic learning goals with a lot less zeal ever since I got my degree. Which probably is the case for mostly everyone else. Because it’s quite a bit harder to find time and motivation for non-goal oriented learning after a hard day at work than when you had all the time in the world to study. I really envy my youger self for having all this time for learning. I love learning. But life-long learning isn’t exactly the same and doesn’t end after your degree, espeically not if you’re an early career scholar. Now I have a vague idea of some skills I want to improve in. But I am very good with training progressions and thus I know that the common advice ‘just program a lot’ or ‘do a private programming project’ just really is crap advice. Of course, it’s true. You just need a lot of practice. But there still are ways of approaching this effectively or ineffectively.

There are some good books out there which actually provide some learning progression. There is John Sonmez’s Software Dev Career Guide which is the single only thing close to a book providing a progression to systematically get better at programming. And, who would have thought, he is an athlete too. I always thought I was the only one who wanted a systematic training plan. But apparently, he felt that need, too. And for good reason. I have already complained many times about why people don’t approach learning like training and still expect to get reliable, constant results. With learning, this systematic training approach is called ‘curriculum’. In the post linked above, I mentioned that I thought online programming platforms were the answer.

 

Which tools or medium can actually provide curriculum?

At the moment, I am at the point where I have let those online trainings slip again, a long while ago already. As it has happened to me multiple times over the years. If I can deduce from experience, I am likely or restart eventually and go crazy at online programming workouts for a while, then drop it completely again. But what you really need is consistency and daily workout. Plus, I can’t just do the apps. I always have a lot of books to read as well, which is quite important to me so they can’t be neglected either. But then I often end up only spending half of the time I would want to spend, read the book or, if you want to call it that, finish my ‘reading time’ and get tired after that. Also, I should already be at work, so I skip the programing workout.

While something surely is better than nothing, I should probably focus more on the practial work if I want to make faster progress. But in programming, that’s different from bouldering. In bouldering, it’s easy to see which routes I am capable of doing or whether I nailed a particular route. Or count how many pushups and pullups I can do (not enough, I have to admit). So I can measure progress easily. But with programming, this just isn’t the case. And in addition to that, for bouldering, there are tons of youtube gurus with mulitple videos each on how to get over plateaus and make progress, what you can work on, etc.

 

Willpower alone isn’t enough

For programming, most of the advice isn’t too good in my opinion because it’s often too generic (“get a project”). Bouldering tips are concrete like “Perfect your flagging technique”. It’s easy to look up how you do that. It’s easy to notice when you’ve got it, physical feedback makes sure of that. So I decided I’ll have to look at my programming workouts the way I approach my pushups for now (they need to get done no matter what and no whining around). But it’s not really a solution to the problem to rely on willpower alone. Willpower alone will ultimately fail once you get stressed or anything comes up. And when that happens, I have a really hard time getting back into the routine. Which I hate. And then I hate myself for not managing to and then the vicious circle goes on. It’s really annoying.

 

We need curriculum for systematic and swift progress

Of course, even with a good curriculum or a training plan, there will still be plateaus. You will still get stuck. But a good curriculum can help you over that last edge of the boulder. It can help you re-gather yourself after a failure or after you’ve let it all slack for a few weeks.

So this subject also makes me think with regard to this blog, it’s all the more important that curriculum gets developped for learning advanced LaTeX, so a willing user can make rapid progress. Rapid progress is good. It keeps you motivated. Plateaus are really dangerous because the can make you lose motivation and give on up the goal alltogether. So let’s find ways of measuring progress and collecting tips of what you can do to actively and systematically improve if you’re willing to.

Step one probably is to get the people to shut up who sneer at systematic approaches like this one. “Learning to program just doesn’t work this way”, they repeat time and time again. Yet I think this is not true. Getting better at programming is like learning any other skill. There is a systematic approach to it and when we have a systematic progression and training goals, we can figure out the steps we need to take.

That was it for now,

best,

the Ninja

Buy me coffee!

If my content has helped you, donate 3€ to buy me coffee. Thanks a lot, I appreciate it!

€3.00

Advertisements

I like LaTeX, the Humanities and the Digital Humanities. Here I post tutorials and other adventures.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.