Where can I *actually learn* programming? (as DH and otherwise)

To my surprise, lots of people regularly ask me where I learned to program. I have lots of posts on the subject and even multiple categories on the blog concerning the topic but maybe they’re “too disguised” under obscure titles for willing learners to actually find them. So I decided to give you a short summary with the key takeaways of what I’ve written on the topic so far and the most important links – boths to my other detailled blogposts and also on the resoures I would recommend as of now. However, before the “short summary” of takeaways and suggestions for willing learners, let me start with a deep dive into the very personal side of the question “Where did you actually learn to program?”. Now where did I actually learn to code? To answer the question “Where did I actually learn to program?”, we need to talk about my journey first. And.. Well, in order to answer this

read more Where can I *actually learn* programming? (as DH and otherwise)

Learning to program: How to master a programming language fast

I’ll write a summary about my experiences at this weekend’s TeXUsersGroup conference (#TUG2020) soon but today I wanted to share this post I had already prepared and scheduled: about ways to accelerate mastering a programming language. Of course, I can’t guarantee this will work for you and ‘fast’ is always relative. You can do a fast 3-day-binge but not really have mastered the language (obviously). Fast in terms of actual programming language mastery could mean a year or two, depending on your previous knowledge with programming. But enough of the disclaimers, let’s get to it! Learn as you go My first tip is to learn as you go, that means on the one hand that you jump into it without expecting from yourself to acquire all possible theoretical knowledge first. This ensures you get practice fast. It will let you use the language rightaway and only learn things you’ll actually use. That’s how I suggest you start using Linux by

read more Learning to program: How to master a programming language fast

Learning to program: Failing fast and error messages

Today I wanted to talk about error messages and why you should learn to love them. If your mission is to learn programming, they show you your weakness and tackling a weakness is always the fastest way to learn. This is why the whole discussion of fixing error messages quickly turns into a philosophical discussion of a way of life: Walking the  path of the Ninja requires you to fail fast, early on, and often. Let me tell you why… Should you care about error messages and warnings? Are they secret messages from the universe? Yes, they are. If you’ve never given a hoot about errors and warnings in your life, congratulations. I don’t either. That is, until the thing doesn’t compile anymore. I am at awe with respect for people who fix mistakes before they become a problem. But I’m not one of them. What does this mean, however, with regard to your attitude towards failure? It probably means

read more Learning to program: Failing fast and error messages

Looking at data with the eyes of a Humanist: How to apply digital skills to your Humanities research questions

In my recent post on how to get started doing DH, I basically said that the essence of being DH is looking at data with the eyes of a Humanist and gave some tips on how to get started in just 10 days. However, it’s not that easy. Learning digital skills and the problem of skill transfer A problem I see a lot is that H people fail to transfer their newly won practical DH skills to their own research questions. They don’t know how to look at their own material as data. They don’t know how to leverage digital methods to help answer their own research questions. But if it isn’t compatible with their own research, they’ll never deepen their knowledge enough to actually profit from their DH skills. If you don’t use them, they are forgotten quickly. So how do you make this transfer which I think is, so far, being neglected as a skill which has to

read more Looking at data with the eyes of a Humanist: How to apply digital skills to your Humanities research questions

Learning Programming from Video Tutorials

In these times of corona crisis, I have been receiving many offers for online programming tutorials in my inbox, so I wanted to give my views on one type in particular, that is learning from videos. I’ll share what I think are pros of learning programming watching videos, as opposed to, for example, text-based tutorials like blog entries or books, or also in-person trainings (a list of resources for these scenarios was already discussed here). Pro: Learning by imitation or watching someone else do it at first is a natural way to learn Using video tutorials, you don’t need to run the code yourself to see its results, which is fair, I think, when just quickly going through a tutorial or you’re at the very beginning of your programming journey where even installing a new software might still seem daunting. Generally, you should experiment for yourself and try to tweak example programs but at the same time, you don’t need

read more Learning Programming from Video Tutorials

Formulating Research Questions For Using DH Methods

In the feedback forms I did on the DH classes I have taught over the last years, I got one feedback I didn’t expect: People were extremely grateful I had practiced with them how to formulate valid research questions which, apparently, no one had ever (really) done with them before. I found that quite astonishing because the DH are all about methods and methods are like specizalized tools. You need to know what you can use them for. So here’s the crashcourse. The Hammer and the Nail I want to start off with an analogy. A hammer is a specialized but not an extremely specialized tool. You can use it for a range of tasks, however, not all tasks are going to work equally well. Some might work but would actually require a more specialized tool if you had one. You can really use the hammer on about anything and almost always, something is going to happen. For example, you

read more Formulating Research Questions For Using DH Methods

A Book Review of ‘Ultralearning’

Today, I wanted to share a little book review: Scott Young, Ultralearning: Master Hard Skills, Outsmart the Competition, and Accelerate Your Career, Harper Business 2019. (Book website) It won’t be an exhaustive review, but mostly about my one key insight and some reflection on it. If you want a summary, there are countless ones readily available out there already. The following quote sums up the spirit (and main claims) of the book quite well, but it’s really a book packed with solid methods, not just promises: Is it really possible to get an MIT-level education without attending MIT? Or to learn a new language to the point of becoming fluent and conversant in just three months? Or to develop your own video game from scratch and make it a commercial success without being a professional game developer working for a big studio? (source) Apart from the fact that the whole philosophy of ‘Ultralearning’ can be seen as somewhat problematic (see

read more A Book Review of ‘Ultralearning’

Tracking your progress to make New Year’s Resolutions stick

Many people make New Year’s resolutions. Whether they are to lose weight, exercise more or learn a new skill, they often fail. In this post I want to show what pitfalls can be and suggest some good ways of making resolutions stick. Problem: Not having clear actionable goals If you’re not following through on your goals, that might simply be due to a lack of clarity about what they are. For example, “Learn X” is a bad goal because it doesn’t state what exactly you’ll do to learn X, which methods you use, how long you’ll practice or when and where. Swap unclear goals like these with something very concrete and plan when you’ll do it. Is it supposed to become a habit part of your pre-existing daily routine (recommened) or do you see it like an appointment? Then put it in your calender (on auto-repeat so it gets scheduled every week). (You can read some more about this here.)

read more Tracking your progress to make New Year’s Resolutions stick

Learning from ‘Computer Books’

I just uncovered this book review on William E. Shotts Jr., The Linux Command Line: A Complete Introduction (No Starch Press 2012) I left as a half-done draft months ago. In it, I found a long collection of thoughts on learning programming from books and what common problems are. The book review will still follow at some point, but these are some of the examples of common problems with ‘computer books’. The typical computer book: a long detail-rich, reference-like read I like the Intro to the Linux commandline a lot, but also found that it was very long in pages but the content isn’t super dense. So it was a very long read and I’m always ambivalent about books which are reference-like and super-long. I am a person who likes to read and even I put off reading this book for a long time. I read a chapter every morning while having breakfast. Some chapters I just skimmed because they didn’t contain

read more Learning from ‘Computer Books’

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

read more A systematic training progression for programming?

How to improve at programming when your current position doesn’t require it & Online Learning Resources

fHave you ever felt like you would like to get better at programming, maybe even get a position involving more programming some day but the fact that you currently don’t really need it at your current position seems to hold you back? This post is for you. Daily practice is key for improvement You need daily practice if you actually want to improve. You already need daily practice just to keep your skills sharp during a time where you don’t need to use them. Also, if you don’t even have programming skills yet, you probably are too tired after work to sit down and work on a private programming project for a meaningful amount of time. But you should. Programming is a skill which takes a long time to learn. That is, if you want to reach a decent skill level. This means that you have to start regular practice long before you actually need that skill or need to

read more How to improve at programming when your current position doesn’t require it & Online Learning Resources

Some thoughts on grading

Grading is always a touchy and emotional subject. When students misbehave, you automatically feel the urge to punish them with a bad grade. When students receive a bad grade, they will be angry and pissed off. And ‘bad grade’ is relative to what they expected, not ‘realistically bad’, like in a fail grade. In most cases, they will also think you are unfair if they honestly expected a better grade. And they will be gradually more pissed off, the more work they put in your class. So make sure you put as much thought into planning your grading scheme as into the rest of the preparation, because the grade might just leave the biggest lasting impression on students looking back.   The good student receives bad grade problem I just cleaned out my old archived data and remembered I had this class with a teacher I really liked. But now, I hardly remembered her. Then I realized it probably had something

read more Some thoughts on grading

Improve Your Teaching – 10 Simple Tricks

As you might know, good teaching is important to me, so I wanted to share ten simple tricks which I think can improve your teaching. Most of them are about making sure people get the basics which, in my opinion, is one of the biggest mistakes people make in teaching. Let’s get straight at it. 1) Make sure the preliminaries are clear before starting an explanation. If they are not, don’t even bother starting on the explanation, it will be a complete waste of time. Even if this means that you will spend the whole lesson bringing them up-to-date with the preliminaries and you won’t be able to start on the actual topic at all. Make time for this prep work or risk that all of your subsequent explanations will not get through. To find out if the preliminaries and basics are not clear, you might have to plan testing your students regularly (at the start of each block), like

read more Improve Your Teaching – 10 Simple Tricks

How do I get to do task XY for the first time at the job

Today I want to talk about how you convince others to let you do XY for the first time as an official job responsibility, even though you might not have experience or any formal training doing so. And also, why you have probably come across a situation where one of your colleagues has been chosen to do task XY and not you. Even though you are both equally qualification-less. Now you feel left out. New tasks are opportunities for growth you probably really need if you want to stay in academia. It is all the more detrimental that bosses often don’t take the personal/CV growth of their young colleagues into account and hardly ever give out those tasks strategically. You can end up the lucky one – or you end up left out.   Disclaimer: Again, as always, these are my personal opinions and they might not apply to your situation. Use your brain.   New skills are always needed

read more How do I get to do task XY for the first time at the job

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

read more Fast typing LaTeX

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

read more The power of simplicity, or: How to use tutorials

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

read more Didactical Reduction, Part II

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

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

Why most “learn programming” classes, books and attempts fail

This seems to be a bold claim. Let me explain… There are two reasons why I think most introductory programming classes fail ant that is a) because they never actually teach prorgramming (i.e. “algorithmic thinking”, not the syntax of one concrete language / “your first language”)) and b) because they bombard students with tons of complicated subjects which are not necessary at the beginning, so nobody remembers or understands them anyway. But they confuse the students and distract them from what they really should learn like how to interact with the machine and basic flow control. Use a visual language (like Scratch for PC or Catrobat for mobile devices) and thank me later. Algorithmic thinking When we want to learn or teach how to program, we first need to define what programming is. Like in a human language, knowing the words and the grammar is not enough – knowing a language means “knowing how to communicate using that language”. For

read more Why most “learn programming” classes, books and attempts fail