A Humanities’ seminar paper with LaTeX – in 10 minutes

Don’t believe me when I claim you could write a whole seminar paper in 10 minutes? I wouldn’t either ūüėČ But I firmly believe you can learn how to write the next one in LaTeX in just ten minutes, so I prepared this pretty self-explanatory document. Everything is explained there, so I won’t ramble on about it here. The document¬†is here on Overleaf as a template. There you go.

Little side note, in case you are completely new to LaTeX. Like in the picture below, LaTeX has source code (on the left) and the compiled output PDF on the right. If you mess up the source code, there might not be any ouput. Using CTRL+S will cause the Overleaf editor to try and compile automatically. You can download the resulting PDF by clicking on the symbol beside the ‘recompile’ button. Overleaf also provides info on¬†how to use Overleaf.


So, that’s it with a very short post for today. Watch out for the upcoming “(Why) Should I use LaTeX for my PhD thesis” post!

So long and thanks for all the fish!

The Ninja


Buy me coffee!

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



Fast typing LaTeX

I recently became aware of this post where somebody asked how you can become faster at typing LaTeX. Just a little post with a few recommendations.

Experience from constantly using LaTeX for everything

I have to say, I think it really gets better with experience. And experience from doing your everyday stuff in LaTeX (like to do lists, taking notes, etc.). Else you probably just won’t get enough experience to become really fast.

Raise awareness

But then again, slowing down might not be a bad thing if you’re supposed to produce high quality work. Using LaTeX, then, will force you to take the subconscious back into your conscious mind. Maybe not what you want when just quickly taking notes, but maybe something to reflect upon in the long term.

I also found that, since I don’t constantly use MS Word’s auto-correct anymore, I’m actually better at spelling and grammar (even though, as someone holding a degree in Latin, I probably never was bad in the first place).

However, I find it useful that LaTeX forces you to be more conscious on some stuff (like typing correctly instead of bad touch typing and relying on auto-correct to clean up your mess).

10 finger system touch typing

Quick typing generally comes down to correct 10 finger system touch typing (Zehnfingersystem being the German name, focusing on the fact that¬† you use all your ten fingers, whereas the English name touch typing focuses on the fact that you type by muscle memory and don’t look at the keyboard). So if you don’t know that already, please stop complaining about LaTeX. You’re probably super slow and make tons of mistakes, so don’t pretend LaTeX plays a big part in slowing you down.

The free open-source Tipp10 app¬†is a great resource for learning touch typing (available for all distributions, your Linux package mangager will probably have it) . Especially as you can use it to target LaTeX-specific typing effectively since the program allows you to use your own texts for typing practice. This means, if you want to get better at typing LaTeX, you should create a “fake” document which contains tons of the commands you use most often, then add it to the app as a custom practice text and practice for 5 minutes daily (ideally before starting work as a “warm-up“). You will get better very quickly. Here is an example text I created for this purpose. Feel free to add what you need or remove what you don’t need.

This is what I would recommend for now,


the LaTeX Ninja


Buy me coffee!

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


The power of simplicity, or: How to use tutorials

This is just a quick post, telling you to use tutorials selectively. If you don’t have time, don’t burden yourself with the not-so-short intro to LaTeX or 30 min introductions. Jumpstart in 3 minutes and go.

This morning, I realized one thing: depending on what you want to do with LaTeX, you only need a very limited amount of commands. Even I use a very limited amout of commands for everyday tasks. Going through a whole tutorial might actually be a waste of time for you.


You only need 3-5 go-to commands

What you always need (and, for example, an Overleaf blank document already supplies): You will typically need the general document setup (minimal example), \newpage, \maketitle, \tableofcontents, and \sections and \emph{}.

For teaching documents, I will additionally need \textbf{boldface}, enumerate and itemize environments. Then maybe \href{http://latex-ninja.com}{links} (\usepackage{hyperref}), \texttt{typeface} for code or the verbatim environment. And, of course, I often use my cheatsheet template.

For writing scientific articles, I will need bibliographic citation (biblatex), mostly using \footcite{} and \footnote{}. Then maybe sometimes the quote environment for longer quotes. Then a Pandoc conversion to .docx (see the post on how to quit MS Word).

But that’s basically it. The more complicated stuff I use only when I have real typesetting needs or do something overly visual. That’s how I managed to use LaTeX for 5+ years without going any deeper.

The power of simplicity

What I want to say with this is: You don’t need to learn all the concepts to get started. You won’t be able to use all of them anyway. Only learn the ones you need right now to get going. Learn the rest as you go.

30 minute (or longer) introductions to LaTeX are great, but depending on your needs (especially if your a Humanities person who never uses any math or the like), you don’t need to go through complicated tutorials. Just starting¬† using LaTeX and add skills as you go.

LaTeX is supposed to have “a high learning curve” and take way more time than just using Word. People often say that if you’re not interested in typesetting technical stuff, there is no point in learning “complicated LaTeX”, but LaTeX is not complicated. Not unless you have complicated needs, then it is adequate. Especially if you’re a Humanities scholar – be happy that you can enjoy excellent typesetting without learning the more complicated technical parts of LaTeX. Once you’re used to the general gist, you can add the more fancy features without stress.

Don’t let listings of commands scare you away – you probaby won’t need them and, most importantly, you don’t need to remember them now. You probably don’t even need to know of their existence. If you have a problem, just type "latex how to [...]" in Google and you’ll most certainly find help. Or drop me a note, I’m always happy to help.

So, that’s all I wanted to say for now.


the LaTeX Ninja


Buy me coffee!

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


Didactical Reduction, Part II

In my first post on didactical reduction, I argued that reduction of learning materials to meaningslessness can be detrimental, that teachers should trust in their students’ ability to learn and rise to a challenge.¬†In this post I want to discuss ways of reducing complexity which actually makes sense. The gist is: reduce unneccessary detail, not difficulty. Build complexity in a carefully chosen progression.

Telling the difference between unnecessary detail and challenging complexity

In my post on why programming classes fail and learning ‘algorithmic thinking’, a main example was that students starting out programmig don’t need to know about data types. I will stick with this example here because I just think it illustrates my point so well. The skill to learn I discussed in the post really wasn’t the ‘vocabulary’ of your first programming language, but ‘learning programming’ means successfully communicating with a computer and in order to do that, you need to develop the skill of algorithmic thinking. This skill is independent from your chosen programming language, so you might as well start with a visual lanuage like PocketCode’s Catrobat or Scratch. I would even encourage you to do so.

My favourite illustrative example: data types in introductory programming classes

When took my first programming class, already in the first or second lesson, I was bombarded with data types. I might add now, that since I never write programs that calculate anything, I have never really needed any more datatypes than int, char, string and complex data types to this day. Other primitive datatypes I have ever only used in ‘fake examples’ or ‘program your own calculator’ tutorials. All while you can generally get away with not very much programming in the Digital Humanities, even though I try to program as much as possible, I have never needed any of the other data types to this day. And that first programming class I took was in 2016. So maybe you see what I’m getting at: a new learner really doesn’t need to know about data types. They should maybe informed at some point – once they have mastered string and int – that there are, in fact, other data types which they might need later on and to pay attention. But that should be about enough. Especially since every book on learning a programming language features them anyway. So your students will know where to find out about data types. Once they actually need them.

In that first class, when we were told about datatypes, the only thing it did for me was turn on this destructive internal dialogue: “What? What does it mean? What do I need it for? Should I learn this by heart now? (like how many bytes an int has… the internal representation is different depending on your computer anyway, I must add years later).” And it went on like this. But the most important thought it generated in my mind is this one – I will print it in bold because it’s important: “Wow. Programming must be really difficult. Maybe I’m too stupid to understand it.” This is the common thought students have in this situation because they are fed information which don’t fit into the learning grid in their heads. Unless they have had previous programming experience and already know the content you teach them, it is plain impossible to understand this new information because there isn’t enough context. This means you have utterly failed as a teacher, congrats. So please don’t do that. Only teach things which can find a place in the student’s internal thinking grid. They will not remember information they don’t know where to put. So that’s a complete waste of time.

Children’s books don’t mention data types

I have made the effort of checking many “learn programming” books for this example and it turns out that children’s books never mention data types but books for adults always do. So if in doubt, and if you really have no previous programming experience since children’s books usually start at a low entrance barrier (which can be good but maybe won’t be challenging enough for you), just get a children’s ‘learn programming’ class. They are way more sensible. They introduce concepts only when they’re really needed. If you’re not a complete beginner anymore, some more theory would be better. Remember, I am also a big fan of ‘the bigger picture’ and argue that you should, in fact, learn more background information than strictly necessary (see my post on learning from tutorials vs. books). It is assumed that a didactical approach is essential when teaching children, yet somehow people seem to think adult learning was different.

Imagine explaining everything to a child. Then apply this to adults.

So what I really mean is that you should not reduce difficulty or complexity, but you should reduce unnecessary detail. As a teacher, it is extremely difficult to leave things out, you always want to be as thorough as possible, I know this from experience. But that isn’t good teaching. Good teaching is learning, step by step, to leave out the unnecessary. Learn to simplify. If you don’t know how to explain something in a very simple way because you think the topic to be soo complicated and you just can’timagine how you would explain it to a child or to your grandma and there you go.

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. (Antoine de Saint-Exupery)

Systematically planning for effective teaching

It is interesting that we usually give this kind of advice to our students for preparing presentations yet we totally ignore it for our own teaching. Especially, if you teach at the university, you feel like it’s not your problem to simplify things. Students should just suck it up. Well, plot twist. No they shouldn’t. Maybe we should take some time and plan for effective teaching. Because from my experience, I feel that respecting a few simple things will already do the trick.

1.) Leave out unnecessary detail

To “automate” this, especially for classes where there are pratical parts, just plan the practical parts first. Note down only the information needed to complete the practicals. If you end up feeling like important concepts are missing in the end, mention those in the form of a glossary (key term + max. 1 sentence explanation you can put in a visual info block). Unnecessary detail clouds your students’ minds. Unlike you, they lack the experience to tell for themselves which bit of information is important and which one is just a nice-to-have.¬†So they end up with tons of learning material,¬† large amouts of things to study in a non-brain-friendly format. It will take them ages to write up a summary and find out which parts can be left out and which can’t. For you, making this clear would probably take 5 additional minutes. If anything, always end with a “things to remember” final slide which sums up the concepts you expect them to know by the next lesson.¬†You know how to tell the difference between signal and noise. That’s why they employed you to teach. So rise to your responsibility.

2.) Provide short survival summaries with the most important takeaways

I explain this in the tutorial post on study summaries. Force yourself to sum up all your classes’ contents in no more than one page per lesson and then, at the end, create a survival summary, which sums up the most important concepts from the 12 one-page-per-lesson summaries in one single page. All the detail you need can go into the lesson summaries, the final summary is equivalent to a pass grade in an examination: If the student knows and understands all the concepts on it, even if they know no details whatsoever that should be worth at least a pass grade.

3.) Choose handouts over ‘the slides culture’

Over the last years, I noticed that hardly anybody does handouts anymore. People think that their students have the PowerPoint (or LaTeX!) slides  anyway and can learn from them. But there is an important difference: Slides often contain illustrative examples or unimportant details and mostly, there are way too many slides. Students end up completely lost for which information is important. Provide a one-page handout. This forces you to stick to the key takeaways and leave away unimportant detail. You can still have details in your personal notes and mention them. But please do take the time to hand students a more didactical document than your personal notes. If your notes are sometimes confusing to yourself, the master and producer of that chaos, how do you expect non-experts to understand them?

4.) Mastery comes from mastering the deconstructed minimal building blocks of a skill

I explained this in the post on deliberate practice. For teaching purposes this means: people don’t pay enough attention to the basics! They are often presented in a way which makes students think they already understand everything anyway. This is, probably, the biggest hybris ever. In my experience, hardly anybody – except for real masters of their craft – actually get the basics and understand their vital importance. Don’t teach your students to sweat the small stuff. Rater spend some extra time on the basics. Often, the basics are crammed into the first 10 minutes of a class. This is a big mistake! It’s actually the advanced stuff which is easy, not the other way round. Once you’ve understood the basics.¬†Never assume your students understand the basics, even if they think they do. They lack the experience to judge their own proficiency. The greatest waste of time I have observed in classes is when students don’t have a firm grasp on the basics but don’t dare ask. In the later stages, they are at a complete loss for what to do. It’s your job as a teacher to stress the basics so many times that students really understand them. This will also teach them that it’s ok to ask. If you skip over basics they didn’t understand, you make them afraid to ask for fear of looking like an idiot. There are no studid questions – live this and your students will start asking! Consequently, measure their mastery of the basics with some sort of testing and only move on once they really understood them. Even if it takes 6 out of your 13 lessons. It will be worth it in the end. Give more advanced students a challenging task in the meantime.

5.) Don’t forget the generic “How to approach this type of problem” summary

Even if this is mentioned implicitly in your teaching methodology, don’t assume students can abstract the general methodology from your practical example. That’s how they end up not knowing how to Google scientific literature on their chosen topic. You have to make everything explicit, even if it seems trivial. Especially if it’s trivial because everything which seems trivial to you is likely a vital underlying key concept and exactly the sort of basic knowledge you would be supposed to teach. Even if you think you already did it in your class, please just do provide a little written out step-by-step tutorial so people can go back to that if they don’t remember how to do it. Maybe they forgot to note down one simple step but that missing step will mess up the whole process. I tend to formulate this while explaining to students what they are supposed to do (i.e. explaining the homework, current task, etc.). I always feel like an iditot doing this but this is the moment where you still have feedback for what your students need. You can add additional problems as they come up. Make the list as extensive and detailed as possible. Often teachers have really bad assessment skills when it comes to predicting¬† what will be a difficult obstacle for a student in a task. Often it is not even the task they can’t manage but, for example, the forgot where to find the data needed for it, etc.

Like I talked about in the “learn programming” post, the “how to approach this problem” part for starting out programming is not the “vocabulary” of a programming language but algorithmic thinking. Where do I start when I am faced with a task like this? That is actually what you should be teaching. It’s called getting people actionable skills. Teach them to teach themselves, the tricks to make things easier, where they can find information, etc. Take the time to write this out even if you feel like your students should already know this because it came up in a prerequisiste class. Don’t play strict here. You’re only hurting your own class if you insist that people should already know this by now. If they don’t (which is likely to be the case), make it your priority to fill the gaps in their knowledge in the most effective way. Make sure they don’t end up in your colleagues class with an even bigger pile of “stuff they would have already be supposed to know”. Don’t cry over spilt milk. Wipe it up before it starts to stink.

6.) Don’t bore the pants off your advanced students

They don’t know everything and still have things to learn, else they probably wouldn’t be in your class. Prepare something to do for advanced students. I mean, honestly, even as an unexperienced teacher, deep down you can tell before you’ve even met your students that their skill level will not be homogenous. So why didn’t you prepare for it in advance? Offering a cool project for advanced students isn’t so difficult. Prepare it once and reuse it forever. Take this one hour it will take to come up with a more complicated problem (you probably already have one in mind anyway) and spell it out in a way that students can work independently. Give them book suggestions or links where they can learn what they need so they don’t need to interrupt your class.

Your class will (and should) move at the pace of the slowest student. If you don’t prepare for imhomogenous classes, more advanced students will be bored drift off quickly. Have advanced mini projects on hand to keep them busy, motivated and interested. Espeically your good students are actually the ones you want to keep happy. They are the ones who might come to the follow-up class. Unless you bore them away. Counterintuitively, advanced students often tend to get ignored by teachers because they are “difficult”. Yes, advanced students are challenging to teach. Give them something task from a real-life project you wanted to delegate to save time anyway. The responsibilty will ensure they know you value their advanced skill, even though you might not have the time for a 1:1 master class right now. Then, think about actually offering 1:1 master classes for motivated students. They will appreciate it because usually, advanced students really love to learn but hardly get the opportunity during classic teaching. If you have the time, challenge and mentor them outside class. They can become great allies and future co-workers in the long term. Also, the more advanced a student, the more they need non-generic help but challenges tailored to their current needs and skill level.

The “mini-project method” also allows you to take extra care of slow students without guilt – you can let everybody else start on the mini-project (which took you one hour to prepare one single time and can be reused indefinitely if it was a good project), so it won’t be at the expense of their learning experience.

Writing this down, I realized I really have a lot of thoughts on this, so expect another follow up at some point ūüėČ

Bye for now,

the LaTeX Ninja

Buy me coffee!

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


How to quit MS Word for good

This post I want to dedicate to the pressing question of how to live without Word in the Word-filled environment of Academia where Word lurks behind every tree and jumps at you when you’re not paying attention.

Do you actually enjoy this eternal distraction of a non-working text editor? Well, I don’t. And even though it’s not actually a good tool (if you’re being honest with yourself, deep down in your heart, you know I’m right), it has infested the world (not only of Academia).


How the story begins…

At some point, now over a year ago, I decided that I wanted to quit MS Word once and for all. I had hoped to do that before but every single time, I had came up with about a million excuses why I just couldn’t. Probably kind of like you are now already preparing your counter arguments as to why that might work for me but it sure as hell is completely impossible for you. You can’t survive in your workplace without Word because everyone’s using it.

Like Tim Ferriss, I want to invite you reflect on this Mark Twain quote now and better yourself:

“Whenever¬†you find yourself¬†on the side of the¬†majority, it is time to pause and reflect.” –¬†Mark Twain

The impossibility of quitting Word? Rehab.

Think of this post as your rehab where you can get sober once and for all. And I’ll provide you with answers to a few key problems which you might encounter during the process to make sure you stay sane.

I got fed up with Word so much that at some point, I wanted to quit but wasn’t sure it would actually be possible to get rid of it for good. Everybody was using it.¬†How was I going to communicate or collaborate with my Word-loving colleagues? But I had really had it with Word and it needed to go. Because, you know, Word really is like drugs – it’s not good for you but you keep using it. I needed to break the habit. And, believe it or not, I have lived¬†a happy, Word-free life for over a year now.

Transitioning to full-time LaTeX

So as this blog is called “The LaTeX Ninja”, of course, I urge you to quit Word in favour of LaTeX. “But that will everything take forever”, you say. What if I need to take a quick note? Well, as you might remember from somewhere way back in the past you most certainly have some basic text editor or notepad tools already installed on your system. It’s just that you never use it. But isn’t that exactly for that purpose of taking quick notes? You can still use that. Or just make it a habit to always use LaTeX. I also started that habit a while ago (for documents where I want some visual structure, highlight something, make lists, etc.) and really, you learn those few commands by heart so fast. Just make a mini project to commit to taking all your notes with LaTeX for two days (where you preferably don’t have important meetings where it’s vital you can keep up with your note-taking).

So if you say this will slow you down, that’s a blatant lie. Taking your hands off the keyboard to take the mouse, select and click to make something bold definitely takes longer than just writing it. If you’re using keyboard shortcuts, congrats you’re an advanced user. So you don’t have an excuse why you can’t learn a text editor like VIM which provides some auto-completion for LaTeX. No more excuses.

A side-effect of transitioning to LaTeX completely will be accelerated learning of LaTeX, since you will be forced to look things up and learn new concepts regularly. So if your goal is to become an advanced LaTeX user, I can tell you one thing – your progress will be exceptionally slow if you never expose yourself to having to rely on LaTeX. If you always use Word, your LaTeX skills won’t get better at a steady pace.

Problem 1: I sometimes work on computers without LaTeX installed and no rights to install anything

Working on a computer that doesn’t have LaTeX? It’s horrifying, I know. Yes, it’s a disaster. I tend to get panic attacks and so on, but hey – thank God there’s Overleaf,¬†the tool that allows you to compile LaTeX even from weird, Word-infested computers, if they only have internet.

Problem 2: But I need to see what my text will look like while writing.

No, actually you don’t. You’re just so used to Word or Word-style WYSIWYG editors that you don’t remember anything else. The tools we use shape how we think and work. With Word being a tool which suggests to its users that they are so apt at typesetting that they should do it. Info: No, you shouldn’t, unless you’re a qualified professional. So, if typesetting really isn’t your job, you totally don’t need to see what the typeset final output will look like. Just focus on the fucking content. That’s your job.

Like typewriters, or an actual notebook and a pen, LaTeX is just a different medium. You were ok using a pen, weren’t you? That’s a different medium too. When you transitioned from analogue notebook to MS Word, that was a transition, too. And you mastered it. If you’re old enough, you might remember typewriters. There you didn’t have much control over how your output looked like either. Other than instant-typesetting Word, typewriters required you to write out the manuscript by hand, on paper, so you wouldn’t screw up too many times when actually typing it out. That was a completely different style of working. It took more time and precision. You had to pause and reflect before acting. So maybe transitioning to a new way of doing things will make you more aware than just typing away in Word where you write on auto-pilot. If you’re someone who needs nice looking output: transition to LaTeX. If you’re a knowledge worker: Congratulations, your professional worth is not determined by how fast you create content but by how good it is. Using a tool that takes a little longer to type it out forces you to reflect more and will up your awareness. Win-win! Transition to LaTeX.

You don’t need Word. You’re just addicted to the Word way of life and I want you to quit and live a happier life in the long run – you’ll thank me later. Especially should you ever come to have some advanced typesetting needs. Like a 500 page PhD thesis in Archaeology with 2000 images. Or the honour of editing conference proceedings is bestowed upon you. Start learning the skills now, save time and tears in the future.¬†Thank me later.

Problem 3: Everybody else uses Word – how will I be able to communicate?

The conversion routine, part 1: Pandoc

Just use a PanDoc conversion whenever you feel like sharing. It works as follows (and more info can be found in the PanDoc demos):

pandoc main.tex --smart --bibliography=literature.bib -S -o output.docx

This means that Pandoc will use your main .tex document as a source and pandoc-citeproc (the citation plugin) will use literature.bib as the bibliography file. -o means that output.docx will be the name of the output. However, please note that a) you have to install both pandoc and pandoc-citeproc for this to work and b) this is a very generic transformation. If you have custom commands or citation styles in your document, these elements will not be correct in the output. So if you already know you’ll have to hand in a document as .docx, just don’t do anything complicated. The citation might not come out the way you’ll need it but for a normal length paper, this doesn’t take more than 10 minutes to correct (and you’d have to check your citations before handing it in anyway – at least I assume you, as a good scientist, hopefully, always do that…). Use search and replace wisely. If you need to hand in author-year style, the big changes to be made are going to be only in the bibliography anyway.

Part 2: Manipulating and sharing documents with GoogleDocs (version control included)

Then, once this is done, you are just one more final step away from the bliss of Word-free life: Sell your soul to Google, so you can use Google Docs. Now, open a new document and import output.docx. Now you can do all your editing (without Libre Office messing everything with their .odts) and download in the requested file format (probably .docx). Also, in case you didn’t know, GoogleDocs has a footnote plugin you have to add manually (Add-ons > Get Add-ons > Footnote Style). Once this is done, you can mark any footnote and say something like “apply this style to all footnotes”. This will come in very useful because GoogleDocs don’t automatically support batch editing multiple footnotes at once.

Plus, the benefit of the “comment”, “share” and “track changes” (version control) features GoogleDocs provides. This even allows you to collaborate with version control while multiple contributors work on the same document simultaneously. No more “Document-1”, “Document-1-1”, “Document-1-correction”, “Document-1-final”, “Document-1-final-revision”. Who the hell is supposed to remeber which one is the current version? Get version control. Overleaf also has version control by the way. You can use any version control tool you want when working with LaTeX. Version control might still be a strange and scary topic if you’re a non-technical person. But it’s really no big deal and I’ll explain it in some other post. Also, for tools I suggested, like GoogleDoc or Overleaf, you don’t need to know shit. Thank God!

You still think you can’t live without Word in your life?¬†If I managed to quit Word for good, so can you. And just so you know: I never regretted it for a second. Now I can’t imagine how people even live with Word in their lives.


your LaTeX Ninja


PS: If you think using LaTeX would slow you down, see this post on Typing fast in LaTeX.


Buy me coffee!

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


Learn programming from a book vs. tutorial? Thoughts on deliberate practice

In this short little post, I want to share some thoughts on deliberate practice and how it affects coding, learning how to program, etc. I will argue that, in the long run, you can only become a better programmer with some systematic (self-)education, be it from books or academic classes. Tutorials alone, on the other hand, get you actionable quickly but do this at the expense of providing “the bigger picture” which will ultimately harm and slow down your progress.

The concept of deliberate practice

I have been intrigued by the concept of ‘deliberate practice’ for a few years now. It mostly comes up in the context of the so-called 10.000h rule (popularized by Malcolm Gladwell’s The tipping point – which is full of blatantly false information by the way and has been debunked by Steven Pinker, see Resources).

Deliberate practice is needed for expertise and reaching a level of mastery. If you just want the ‘quick fix’, don’t bother using this approach. But maybe consider using it still.¬† For your own betterment, even if that sounds like an increasingly cheasy idea in our times. Read on to find out why I think you should.

Urging you to go grab a book instead of reading a tutorial probably is weird advice coming from someone owning a tutorial blog. What I¬† really want to say is that you should choose the medium through which you learn wisely and deliberately. You don’t need to use the same medium all the time but keep track of the ratio of how much you use the quick fix and how seldom you actually take the time to learn and really understand things. For getting things done quickly, a tutorial is great. But in the long run, if you want to become good at some point (and you should have that goal), you need to learn systematically.


Adopt good learning habits, relearn the basics and do it well.

Get a teacher, get constant feedback and a systematic learning progression. If you have acquired your skills merely through ‘coding along’ so far, you might want to do some serious catching up by reading a book. Even if it’s an introduction you deem below yourself, seeing as you might already have years of experience under your belt. Go learn your basics. They’re the hardest part but easiest to overlook. Deliberate practice concepts all agree that you need to deconstruct a skill into the absolute basics and master those smallest building blocks. It’s not the ‘big concepts’ which will ultimately make you good. Don’t sweat the small stuff. Go learn your basics. And go for mastery this time.


Why don’t you just… read a book for once?

I don’t want to say either that one could learn programming from reading books alone. But what I do say is that a book is, obviously, an overall larger thing than one short standalone tutorial. So it is bound to have some more structure. It has room for some more general explanations than a blog post. In a blog post, lengthy explanations of background information would be distracting as the goal is to get you going as quickly as possible. For your overall learning, however, this is harmful. Getting the easy ‘quick fix’ is not challenging. But without challenge there is no learning process.

Reading books to learn something is not the right approach when you’re in a deadline-driven project and just need results¬†real quick. But even in that situation, I encourage you to take some time for deliberate practise: Read a book on the topic in your free time, in a moment of calm where you’re not pressed for results. This is what the Humboldtian idea of Bildung is: Self-realization, learning something which has no immediate use but will make you grow as a person and in your expertise.


The culprits: Lack of didactic guidance, missing big picture

When you learn programming by tutorials and StackOverflow only, there usually isn’t a lot of didactic guidance involved. It seems like the effective way to do things because you get going immediately and only learn what you need to know right now, so you can always keep things relatively simple. But you also don’t get the big picture. You might get actionable advice, but in the long run, this kind of learning alone, while making sure you get started quickly, will also make sure you remain mediocre forever.


Training progession and learning

If you learn without a progression, there is not training effect. I spent all my youth on strict training plans for long distance running, so tackling learning this way is all natural to me. But I realized that for a lot of people, it isn’t. They would never even dream of structuring their progress in learning in accordance with well-known training principles. But that is why a (the desired?) training effect is never going to come. If you don’t train, you don’t get better.

And by “training” I don’t mean the fun part of coding along happily, hacking things together so they merely work. Training is the hard work part. It means dedicated, systematic learning with the goal to improve systematically, following a pre-planned progression. You wouldn’t expect to run a marathon without planning out your training like this, why do people expect that it should be any different with other kinds of learning? But they do. And then they sit wondering why they don’t get better.

You won’t get fit if you don’t make a plan and follow thorugh with it. These things don’t happen by chance. With learning, we sometimes are lead to believe that it doesn’t require this continuous dedication like atheletic fitness does. You learn it once and get to keep that skill level forever. That’s why most people get worse once their schooling is done – they just stop learning. Of course, years at the job give you experience. Doing what you’re already good at is fun. But if you want to make any measurable, visible progress, you have to leave that comfort zone and do the work.

Dedicate yourself to getting better or you will stay where you are. Forever. Just ‘showing up’ and doing the work the same way you always did, making the same mistakes you always did, will not make you an expert. There is no way around deliberate practice with a reliable feedback loop. You have to measure your skills before you can improve them. So you see that you really aren’t anywhere near close to where you want to be. This is painful but necessary. You need to acknowledge where you lack skill. Then come up with a plan to expand your knowledge systematically and fill all the gaps. “Just coding along” is not going to do it in the long run.


What you do every day… counts more than what you do once in a while

I want to share the one baseline that resonates with me the most: Do it every day. Even if it’s just 5 minutes of habitualized deliberate practice. Get better every single day. Challenge yourself to get better daily. Even if it’s just a ‘mini habit’. What you do once in a while can never beat what you do every day. What you do ‘once in a while’ has a tendency not to happen. If you aim to study for an hour once a week and that doesn’t happen a few times, you will go without practice for weeks. So go for 5 minutes daily. There isn’t anybody who doesn’t have 5 minutes per day. No matter how busy you are. There is no excuse for not taking these five minutes out of your day for conscious improvement. I think it would even be totally justified to do this during your paid work time. 5 minutes more or less can’t hurt your productivity. And the investment will surely pay off.

Late New Year’s resolutions

In the “coding world” classic “book learning” is frowned upon. People favour just getting what you need right now from a quick tutorial or reading up the solution on StackOverflow. I argued, however, that never taking time to do the real, hard work and actually learn it is not a good habit in the long term. So I suggest that you replace it with better ones from now on. It’s not too late for New Year’s resolutions yet ūüėČ So much for today.


the LaTeX Ninja


Some books touching on ‘deliberate practice’

Cal Newport, So good they can’t ignore you, NY 2012. I found that the book isn’t what the title suggests (it sounds like your common bullshit American self-help manifesto, but it’s really very sound advice). Contrary to the common “passion hypothesis” (live your dream and make your pre-existing passion into your career), he recommends to adopt the “craftsman mindset” which focuses on producing really good output. His Deep Work is great as well. http://calnewport.com/

Josh Kaufman, The First 20 Hours: How to Learn Anything . . . Fast!,¬†London¬†2014. Was not as good as I had hoped. I really liked the summary on deliberate practice and the idea behind it, but found the book itself a little lacking in depth. After the introduction where he explains deliberate practice (which is the part I loved back when it came out. He really is responsible for my first getting into the idea of deliberate practice), it’s pretty much over. All he does is apply his theory to multiple projects. If you’re not particularly interested in the skills he deconstructs, you really don’t need to buy the book.

Timothy Ferriss, The 4-Hour Chef: The Simple Path to Cooking Like a Pro, Learning Anything, and Living the Good Life, NY 2012.¬†Also with Tim Ferriss’s mimimum effective dose (MED), mainly described in The 4h Chef, the common denominator is that the books mentioned all question the concept of “mastery”. The 10.000h rule stating that you need 10.000h of deliberate practice (that being 4h per work day, 20h per week, 50 weeks per year for ten years) is geard towards “world-class mastery”. Even if you really want to achieve world-class mastery, studies have found that you can get away with way less hours if you practice the right way (deliberate practice as opposed to ‘just showing up’). But Ferriss and Kauffman both bring up a different aspect altogether: They point out that most people don’t actually want that kind of “real mastery”. Kaufman’s great idea behind his book is that mostly, we just want to get started in a skill really, know enough that we can say “I know how to [INSERT SKILL]”. And 20h of real deliberate practice mostly is more than enough for that. Afterwards, we are ready to continue on to real skill acquisition if¬† still interested. Ferriss is unique in how he stresses the idea of doing the least possible to achieve your goals (the minimum effective dose) which supposedly will save you most of the otherwise wasted time.

And of course: Malcolm Gladwell, The Tipping Point, Boston 2000.



Steven Pinker: Malcolm Gladwell, Eclectic Detective, in: The NY Times, NOV. 7, 2009.


Buy me coffee!

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


Markdown problems

Dear all,

just a little info that I am having trouble with the WordPress Markdown support. Which is actually not a correct statement because it really doesn’t work. So let’s say WordPress’s alleged-markdown-but-not-actually-supporting-markdown-thingy. Which has caused me hours of worry already.

The code support works ok but not if written in MarkDown. I will do everything using keyboard shortcuts from now on so it will be ok in the future. However, I continue to find serious markdown problems in the old posts. I’m working hard to get rid of them. But some of them are really tricky and tedious, so this might take a while.

Particularly horrible is the code support using XML. Because the editor will do some automatic whatever and ruin the XML, trying to make HTML out of it via auto-correct or something. I will not use that feature anymore to spare you and me the inconvenience. Until then, please bear with me until I have tidied it all up. Which might take a while as I usually abort after two hours of continuous screaming as to alleviate my neighbours’ sufferings.

Until then,


your LaTeX Ninja