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

Have 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.

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 apply for a job, if possible.

The common advice: Find a starting out project to program in your free time

When I first informed myself on this, the most common advice was to find a cool project and try to program it in your free time. But I found that when you don’t have an idea for such a project which makes complete sense to you, you’re not going to go through with it. Without an acutal, urgent need you probably won’t sit down the amount of hours necessary to actually make progress. At least the great majority of people wouldn’t.

Then I tried setting myself mini-challenges. This was a good idea. But there wasn’t a lot of guidance (obviously). This, in return, was discouraging and wasted a lot of time. Of course, time well spent learning something. But since I am really interested in effective learning, I felt that I was wasting time. Effective learning is always better than just playing around. You need curriculum. At least some. That’s when I found out that there are a lot of competitive programming sites which offer useful short exercises where you can do one per day.

Before that, I had tried all sorts of “Learn programing” sites like SoloLearn, freeCodeCamp, the Enki app, just to name a few of my favourites. But really, I didn’t like them all that much. They went through the syntax of the language and that was it. Like learning the vocabulary of a living language but never using it.

Review of some of the materials out there

Here, I want to share links to all sorts of learn coding sites out there. Of course, it’s not extensive but I think it does cover a good few of the most important ones. And maybe has a bit of a different perspective from most other “here are 30 sites to learn coding for free” blog posts out there.

A constraint for me was that the site had to be completely free of charge. So, for example, DataCamp is a no-go. Although, I have still linked to some pay-sites in case you are interested.

But especially as there are so many pages where you can get a similar service for free, I don’t see why I should pay for one of them, when there are so many alternatives available. If it were really brilliant, I would probably pay for it, in theory. Like HackerRank, I like so much at the moment, that I would probably get access for a one-time payment. But most of those apps and sites ask for monthly payment of up to or even starting at 10€ – that is a crazy amount of money and you already get books starting from 10€. I personally would always put more trust in a book in terms of quality and the hope that there might be a logical progression to the teaching; and thus, rather go for that. Also, I just don’t do monthly subscriptions. They eat so much of your money and mostly, when you sum it all up, are not really worth it. 

Also, the amount of sites (plus all the apps!) out there has become so huge, it’s really a full-time job to check them all. That time might be better invested in just picking one and learning to code. These other sites that I found initially focused more on interview prep for experienced programmers or programming contests, but many of them have actually developped training tracks. They also tend to offer a broader range of subjects than many other very popular sites which focus on web development (“coding”) mainly.

Enki app

I had liked the Enki apps daily workouts, but the learning progression was not stable. They give you a random tutorial every day. This was not very effective and I quickly was through with all of their material. Ergo, the workouts started repeating very quickly.  For more, you would now have to pay monthly for access which I am not willing to do since learning-wise, it is not sooo well done. It was really good for a free site (for a while I used it a lot), but not good enough to be paying for it. Sadly, I have experienced this with most of the sites I have tried (and I have tried quite many).

App-wise, you will just get the Enki review here. I tried probably all the most important apps out there. But mostly, in their way of just explaining the syntax of a language, the progress was slow and it was ineffective for me who already knew most of the syntax. You usually can’t skip much or speed up if you’re getting bored. Still you never get any actual programming done which I found both useless and frustrating. Having tried all the apps and “learn the syntax of XY” (disguised as “Learn programming language XY” which is not the same thing, in my opinion), I now found competitive programming sites to be more what I had been looking for. 

Some of them don’t have all the languages you might want, especially the smaller ones and the web dev focused ones.

 

General-purpose learning sites (video-based, MOOCs, etc.)

Many popular sites (Coursera, Udemy, Udacity, Khan Academy, MOOCS like edx, OpenMIT) are video-based and I don’t personally like that. I prefer interactive sites where you can type your code directly. But well, now you have the links to those resources as well.

Online books or blog tutorials

Even though I have a tutorial blog myself, I personally would not try to learn a programming language from a blog. Sometimes you find useful posts for a specific problem you need to solve, that’s mainly what they are good for. I just think that the available interactive things are cooler for actually getting programming experience as a novice programmer.

Youtube tutorials or channels

Some posts on free “learn coding” resources recommend Youtube tutorials or channels. This is, I think, a valid point if there really is an excellent tutorial video out for exactly what you want. So, if what you want isn’t uncommon, there is likely to be one. Sometimes a 5min video can save you an hour of reading a tutorial. But I find that hardly any channels offer sensible curriculum for a motivated learner, so I’m not sure how much you would get out of it in the long run. That’s why I won’t recommend any here.

Sites just/mostly teaching the syntax of languages

 

Many of them are gamified as well

Sites I really like for practice / or of the type I like (challenge-based)

Learn the language tracks are available on for example: HackerRank, HackerEarth (teaches algorithms).

With Hackerrank, for example, I really like their testcases. They don’t just ask you to write a solution on your own (sites like SoloLearn, Codecademy hardly do that in their regular curriculum), they also provide testcases where, for example, overflow is bound to occur. So with every single test you are reminded to remember that. This is a good reinforcment method in  teaching, I think 😉 Also, have I mentioned that supposedly, the only thing which really works wonders in teaching is getting tested? So forget about what learning type you are (visual, audio-visual-bla, etc.) and become a tester. You can skip some of the testcases of course, but the frequent reminder still works wonders. Also, you can learn from other users good (high-ranked) solutions. Especially in algorithms, it’s really worth checking how more experienced programmers did it. However, these competitive programming platforms do kind of encourage bad programming style (and dirty hacks to improve speed), so be sure to take care of that yourselves. Be persistent disciplined when it comes to using good style! And remember to still work on bigger projects every once in a while, since the daily practice from these sites is just one single function without context.

Learn Catch the Flag / Hacking

Also, if you’re interesed, these are some sites where you can learn CTF (catch the flag), something like competitive ethical hacking.

Other / Tutorial-based

More tutorial-based sites which are useful but not for the kind of rapid learning I recommend:

Resources

Also, check these other posts on free coding resources:

Advertisements

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 to do with a weird bad grading situation that had left a sour taste with me.  Also, it happens that situations like this (and I defintely had more than one) were always in the Linguistics department. Anybody who knows me is aware that I am a language nerd, I love dialects, etc. I came to university really looking forward to studying Linguistics. Now I hate it, not because it turned out I disliked the subject but because of many bad grading situations where I felt treated extremely unfairly.

This particular teacher had doted on me during the class. I also loved the subject and participated a lot. Then I handed in the paper, and I don’t remember exactly what the problem was, but she gave me a really bad mark and said I could only turn it into a positive one, if I made major changes. A C, to be exact! Which was as good as a negative mark for a student like me with overall high marks. This would ruin my GPA. But then again, I had such a tight schedule that I couldn’t afford just redoing this class. This whole situation came as a huge shock to me. I felt I had written an ok paper, as far as I was qualified to judge. It was in my fourth semester only, so you probably can’t expect a publication-ready work. It would have been be ok if I had felt I had put in minimal work only and performed badly. But I had honestly really tried to write a good paper. And it’s not like you generally get a lot of help in how that is actually done. I’d given it my all and ended up being treated like an abysmal student who had personally offended the teacher by handing in such a bad paper. Also, once I already knew that the only thing I could do is rework the paper but would still get a grade which would ruin my GPA, I was not exactly super-motivated to put in a lot more good work.

I had seen the papers my colleagues had handed in, they were obviously less good than mine (from formal standards already) and left an obvious impression of having been done carelessly in a haste. I was profoundly shocked. Maybe the teacher had taken to me so much because she had seen herself in me and thus, expected a publication-ready output. The teacher was not very experienced either, so this misconception might have easily happened to her. Since, of course, I was only in my fourth semester, I was not able to deliver that level of high quality she had expected from me and thus, graded me way more strictly than my less good colleagues.

 

If a good student underperforms, ask what went wrong instead of lashing out on them

Dear teachers, something like this happened to me mulitple times and is a surefire way to make your students hate you in retrospective. You don’t want your best students to hate you, right? They will talk badly about you (as I sure did) and ruin your reputation for generations of new students to come! Especially good students will get very angry at less-good-than-expected results since, unlike really bad students, they probably actually care about their grade point average which you just ruined!  Some people’s stipends also rest on this GPA. Don’t be so quick to give out bad marks to students of whom you would have expected more. Try to clarify what the problem was instead of just being angry. That’s just childish. Don’t let students’ outputs scratch on your ego. Students probably really don’t care about you all that much and if they did, they sure don’t have a positive impression anymore now. Maybe it was all a misunderstanding? Especially if you had expected better result, it’s obvious you should investigate what happened.

Beware of thinking a good student is you. Don’t expect your good students to be scientists. They are not, despite their apparent motivations to be come full-blown researchers one day. By ruining their GPA, you actually negatively influence whether they will one day be able to become researchers.

 

On silence and introverts in class

Silence does not mean disinterest, like many teachers assume. It might just be that they’re an introvert. And even though they might have participated in the beginning of the course, stopping later might not mean disinterest. To give a personal example, I often participated very actively in classes I was interested in. But then the teacher focused so much on me that I felt awkward and didn’t want to be the center of attention anymore. Actually I had never wanted or intended to become the center of attention. I therefore stopped participating because being the center of the attention made me feel uncomfortable. This, the teachers usually took as a horrible insult and were furious.

In multiple cases, I ended up with a really bad mark despite knowing (from having seen my colleagues papers) that my work had been well above average, if not even very good. Already formally, my papers were a few classes above those of my colleagues because I had way more experience writing papers than them. These times, I first wanted to complain. But then I was so annoyed that I never talked to the teacher about it. One teacher even told me my paper was an A but they would make it a B because I had stopped participating. I didn’t want to confront them and was ok with a B because, after all, it was true that I had stopped participating and found it to be their good right to take a grade off. A B, after all, would not hurt my GPA in bad ways. Then they put a C in the online system. That was pretty mean, seeing as my paper really was quite good (without being too fond of myself, but I had worked on that particular topic for a long time in another context already). The teacher offered no explanation for this behaviour except being hurt personally and stressed many times how good my contributions had been.

I’m sorry, extroverted teachers. Have you really never thought about the fact that it might be uncomfortable for a good student to be called out to answer questions all the time? It makes your fellow students dislike you. Please don’t take this as an insult and also, definitely don’t base your grading on it! You are scaring away good students. I continue to dislike this particular teacher after years. The lasting impression was extremely negative. This didn’t happen only once either.

 

Grade using check-lists to avoid mixing in personal emotions

I handle the problem of grading by having a check-list with points. So I don’t “grade” or hand out marks – they score on a check-list. That way, I as a person will not be the object of a student’s hatred. A lot of people actually recommend to do grading this way, especially if you’re still young or lack authority for whatever reason. That way, I can act like a mentor and trainer during my (very workshop-style) classes and still be fair in my grading.

Of course, coming up with these check-lists is some work in the beginning but it is very fair, good practice and will save you lots of trouble once complaints come in. And they will at some point. Another technique I find very useful is to ask a lot of the students (greater amounts of portfolio work to be done, in my case), but then am fairly easy on giving out points. That way, they feel like I grade so nicely, but they still have done more work than they would have otherwise, so it’s really ok when they all get very good marks.

Would be happy to hear how you handle these situations,

best,

the Ninja

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 with the basics (see nr. 3).

2) Don’t just “get through with the material”.

Teaching is not about you doing what you had planned, but about students learning something. If you misjudged their previous knowledge, change your plan. Bring them up-to-date. That way, they will have learned something (and thus you have reached to goal of teaching), even if you end up not even being able to start on your actual topic at all. Would you rather be “done” with everything you had planned but nobody understood anything or rather do 1/3 of what you had planned to do but be sure that students really master it? I would much rather go with the latter. Or the result will be that your class will not have made any lasting impression on the students at all. Don’t let them leave the way they came!

3) Nothing is more important than absolute mastery of the basics.

Nothing. I repeat: Nothing.

I often find teachers go over the basics way too fast without ever checking if the students got it, because they think it obvious. Students also often don’t even realize their lacking understanding of the basics because they seem so simple. But really, what is the difference between an amateur and a professional musician? It’s not that the professional plays more advanced pieces, since the amateur can do that too after some time. But they are still no a professional, right? – That’s because mastery lies in perfecting the basics and total immerson, not skimming as much advanced stuff as possible without ever mastering anything. A professional musician spends more time doing drills on the basics – and you hear the difference immediately. Once you’re good, you can always learn more complicated advanced stuff and go on studying independently. But you will have a hard time improving on your own if you’ve never even mastered the basics. 

No matter how friendly you are, they are unlikely to tell you what they don’t understand, especially admit to not having understood the material you have spent the last three weeks talking about. You can, of course, scream at them for being lazy or stupid. But no matter how you react, this will not change the fact that they did not get the basics, so any further teaching of more difficult matters or, in fact, anything which forms a progression building on these basics, is going to be time lost and nothing else. Yes, the good ones will make it. But please, don’t just settle for that.

Put a crazy dedication to everyone getting the basics, so at least you can tell yourself “at least they all have the basics now” after the class. You don’t want to overhear your colleagues going on about what horrible teacher your students had last year and have to admit it was you who couldn’t even teach them the basics. Apart from that, test because it has been proven to be the most effective method for learning and also, your students might not even realize they don’t master the basics and therefore, can’t give you a truthful answer when you ask whether they already have the basics. Ultimately, only testing can tell. Hand them a worksheet for “repetition” of the basics with multiple tasks of progressing difficulty to work on on their own. Then walk around and help everyone. Most effective method to check up on your teaching success by far, in my experience.

(When doing this, act like a coach. Don’t give the impression of testing anyone and don’t grade this or they probably can’t enjoy it in the future. I don’t want that sort of pressure in my classes. Grading is for the final portfolio they hand in, not the learning process where we want them to make as many mistakes as possible! I sometimes use anonymous Google Forms so I can see whether the class overall has a good grasp on concepts but they are sure not to be graded since it’s anonymous. Also a great method of getting feedback throughout the semester, not just at the end.)

Also, I suggest you encourage students to go over the basics again every once in a while and with every stage of their progress. You see them differently each time and taking the time to repeat them is always worth it, especially if you want to really master something.

4) Test. Don’t assume learners learned anything before you’ve ascertained it through multiple tests.

This is not meant in a condescending way. Testing is proven to be the most effective learning technique (“learning types” are not scientifically valid – see the audiobook The Great Courses / The Learning Brain for details). Only once you’ve tested you really know what students already know. Often you realize that you already lost them before your first word because you stepped in too late. They might not even have reached the starting point of your explanation. These problems, however, are difficult to spot since usually in these cases, students don’t even know what they didn’t understand and cannot verbalize it when you ask.

5) Avoid confusing naming in programming.

This is not as trivial as it sounds. It might even be pretty difficult to put yourself in a learner’s position and choose a name which is not confusing or misleading. But all the more crucial to take the time to think about it.

For a student who doesn’t fully grasp the concept of how variables  work, what types and instances are, or classes and objects, this can be very detrimental and make learning so much more difficult. In failed teaching attempts in programming, bad naming is mostly the major culprit. Right after that comes the failure to reduce complexity and purge unnecessary detail. Choose names wisely. They make or break you explanation.

6)  Make sure you always only teach one new concept at once.

It happens far too easily that you explain three things at once without realizing. This also happens when you include unnessary detail which might contain concepts students are unfamilar with and end up confusing them, even though this wasn’t even what you were trying to explain.

7) When explaining something, remove the unnecessary.

Putting didactical reduction into practice means get rid of every detail which is not absolutely crucial to understanding the point or students will get confused by the multiple concepts and not see the point at all.

Also, try to eliminate all sorts of examples which might build on extra knowledge your students might not have (like in 6, be sure you really only teach one new concept). So, you might want to use an example of a historical situation which is completely familiar to you (in your crazy scientific surroundings). But are you sure your students are familiar with it? When explaining something new, not only reduce what’s new but also make sure to keep other potentially confusing artefacts out of the explanation. Maybe it wasn’t even that they didn’t understand the new concept – they already got hung up on the ingenious illustrative example you assumed would be totally logical to them. Don’t assume previous knowledge. At least reduce to a bare minimum. Just in case.

8) Always repeat what is important.

While this might be clear to you, for a student “everything” seems important. And all is new. They cannot tell what is important yet. It is your job to triage here! That’s why I really miss handout culture. There, you had the summary of the gist of a lesson. Now it’s just slides, but the slides usually don’t give you much of a clue about what is essential and what can be discarded. If students have to do the guesswork on their own here, they will waste a lot of time and maybe fail altogether. It’s definitely part of your job to help them out here. Take the time to make a summary for them for later reference. Don’t assume they can do that themselves or else they are lazy. Appreciate that you already know what’s important and therefore, have it easy to sum it all up. After all, you planned this lesson and you know what’s most important to you that they should take away from it, right? Just write it down and they can use the additional time to memorize. (Yeah, of course, they might also just not pay attention to anything else anymore. Find a way of doing this without self-sabotaging your classes.

9) Help them help themselves.

Often teachers get annoyed that students are very dependant and don’t know how to find out something by themselves. But ask yourself, did you ever explain them how to do it? Ironically, students depend on you to teach them how to be independent.

10) Nothing is obvious.

Rule of thumb: It’s highly likely you lost your students about 3 steps earlier than you think where you lost them.

That’s it. Hope it helps!

Have a great Sunday!

Buy me coffee!

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

€3.00

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 in your institution

Especially in the Digital Humanities it can happen a lot that there suddenly is a demand for a certain skill at your institution that nobody has yet acquired. Then somebody gets chosen to do it, often basically by chance and after they have done so, they are the expert on the topic. Which is good if you were the lucky one chosen (teaching yourself probably was quite the struggle so you’d deserve it). But if you aren’t – congratulations, the possibility of you ever going to be able to do this same thing (like programming in a certain language, teaching, shouldering a certain responsbility) might have just shrunk to zero. Often, DH centres are not big enough to need more than one person for a  less-mainstream specialty skill. It will from now on be incredibly hard for you to prove yourself in that area although you might be just as qualified. You have officially become invisible and somebody else has officially become the guy who does XY. I have experience on both sides. I have both had a responsibility thrust upon me, not really freewillingly or because I would have wanted to. But because there was just a demand and nobody there who was actually qualified to do the task.

 

If you were chosen

You’ll have to teach yourself and might end up with patchy skills

Meaning you will probably end up with a pretty stiched together knowledge and might have to relearn the skill in a more systematic way after the project is done if you really want to go on doing what you were asked to do in a professional way. Projects are often time-sensitive and deadline-driven, so you won’t have the time to really learn the skill in a systematic way. Unlearning bad practices acquired like this can be really hard  afterwards.

You are now officially the default person for the task

You might not exactly be more qualified than your colleagues but you are still going to be the default option to do the task. If you want it or not. So be careful accepting these jobs if it’s a task you genuinely dislike or consider out of line with your own personal development goals. For me, personally, I want to become something of a ‘real programmer’ in the Digital Humanities. I am a girl, but I don’t want to end up being the web designer. Not that web design is bad, inferior to ‘real programming’ or anything. I just prefer ‘real programming’ but since I am a girl, people tend to hand me the ‘soft bits’ and give the ‘hardcore programming’ to a man. Which the man might not even want. Sadly, unconscious gender stereotypes are still very effective in workplaces. Woman often get discriminated againt by ‘non-events’, i.e. not being asked to take up a challenge while male colleagues are etc. which ends up harming their success in the long term. If you want the challenge, you might just have to take it up in your private life or compete hard with your male colleagues. If you accept a specialty you don’t really want, you might seriously harm your ability to start something else afterwards. You will end up with that label. So be careful which label you choose. Also, your time resources for personal development will go into this task completely. If you were planning on learning something else, that’ll have to wait for a long time. Choose wisely and turn it down if you have to and can.

You probably can’t say no

In many situations when you’re asked to do this daunting task nobody else has ever done before, it is probably because you are not be most important member of your organization. You are probably young or new and are deemed to be a hard worker and able to learn. These are good things. But it might still not be something you do freewillingly. But do accept the task. If you don’t you might come across as though you’re unwilling to take up new challenges or learn new skills. Not an impression you want to leave for further job openings and ending contracts – which are never very far away in academia. Also, this new skill your institution is trying to acquire through you might be a reason they hold onto you later or or the base for a new grant proposal, etc. So this might just be a golden ticket, even though you had always imagined those would look more glamorous. Also, it might just be that you are the only idiot they dared to hand this stupid task to. You never know.

 

If you were not chosen but would have been interested

This is really stupid and happens a lot because these informal decisions are not discussed with everyone on the team (which they probably should be and bosses should be aware of this once they have read this post.) But the sad truth is that this decision will probably be made by the bosses in a back room in a discussion you are not allowed to join.

So even if you knew it was about to happen, there isn’t much you can do except maybe inform people beforehand that you would be interested. This by no means guarantees your success but since these decisions can be very spontaneous, maybe it even will get you the job. Definitely try it if you get the chance or overhear a discusssion. Butting in on other people’s discussion is rude but it is also rude of bosses making seemingly inconsequential decisions in private which actually are very consequential to their young employees and can make or break a career in the long term. In this case I would say, better sore than sorry.

But what if it’s already too late? It might even have happened to you that somebody else was chosen as a “new expert” for a job (in a backroom decision) which they are not qualified for – but for which you, in fact, are qualified for. Of course you can tell people that you think you would have been more qualified or at least wished you had been asked. But once the job is already given out, it’s unlikely they’ll take it back. Unless the other “chosen one” has expressed that they will only do it if nobody else is found but rather wouldn’t do it if they didn’t have to. Probably try and say something anyway.

Official responsibilities make you more trustworthy than actual skills

This is an especially stupid situation for you because it undermines your skill and legitimates the other person who actually didn’t have any legitimate skill up to now. If you already have some experience in these matters, you will probably know that often, experts are not made by skill. They are made by decisions of their superiors. In the end, your skill doesn’t count. What counts is solely the fact that your bosses trust you to do a job. This can lead to major unfairness, of course. And you are virtually powerless once it does. The only thing you really can do is show your experience and skill elsewhere. Join an expert society. You will need very bold action and extremely solid credentials if you ever want to make up for this misguided decision again. Also remember that bosses hardly think about this. They are probably completely unaware of the detrimental effect this will have on your career.

Boost your CV, exaggerate your skills a little bit and be over-confident of yourself (because, sadly, everybody else is and you will be left out otherwise)

So show off your skills as much as you can. Drop your knowledge whenever appropriate. Especially if you are a girl or shy, this is not like you. But you will notice how (even misguided) self-confidence goes a long way. Men tend to be much more bold in their statements in the workplace and also in what they write in their CV. If have seen a CV where someone said they were a C1 or C2 in English when they really were so bad that they made tons of typos in basic programing commands. And programming language English is hardly the real deal. If they already can’t spell ‘length’ properly, how can they have a C2 level? It was not a one time typo and by no means the only type of error I observed in the very short time span I paid attention to this either. In their defense, they probably didn’t even know what C2 meant. It is still a bold claim. What I have learned from this is that the impression you convey is all that counts. Be a bit more self-confident than you really are. Pretend you have some more skill than you do. By this, I don’t mean overly exaggerate. But ask yourself whether you could learn a certain skill (in basics) in a week or weekend. Then you probably are good to state it in your CV. (Then go on and actually learn the requested skill since people will probably test this by asking some general questions on the topic. And, of course, this only goes for minor skills but many DH skill requirements are actually quite basic).

 

You have to have done it once

If you actively seek to try it out new things or want to be challenged in your job but were not chosen, you are out of luck. Since somebody else is the default option now, you are going to have an incredibly hard time getting yourself seen or heard from now on. Even if you do everything you can to learn the skill along with your colleague, they are always going to be the one who has the practical experience. Even if you should also manage to get some practical experience, they are going to be the one who won your institution’s trust and showed results on a concrete job-related project. Unless there is a great need for the skill, you might never be able to do this at your job. Sorry, but it’s the truth. 😦 The only thing you can do now is to get real job experience with the task outside of your instituation or going freelance (if your job allows that at the side). Or create a truly mind-blowing hobby project and share it online.

This is partly one of the reasons why I have this blog. I don’t really like the idea of sharing my life with strangers but at the same time, I still want my private technology- and teaching-related activities to be visible. People will only trust you once you’ve “done it once” because it is seen as proof that you can do it. That’s why people often say that you should teach exactly one class in your PhD time – takes up the least possible amount of time and energy possible but from now on, once you apply for a position which includes teaching, you are credible when you say that you can do it. If you haven’t – well, good luck to you. It is highly unlikely someone who doesn’t know you will take the risk. Especially since they probably have 50 other applications from people who did get that chance. So you kind of depend on getting the experience from your own institution. If they have chosen to ask somebody else, all you can do is be annoying or follow that default person along. Tag along and offer to help as much as you can. Drop knowledge you have whenever appropriate. This is by no means guaranteed to help – you might just get ignored. But then you can say you have at least tried to get people’s attention. And maybe it will turn out for the better at some point. Maybe they will remember you the day they need a lab rat for a new task nobody is qualified to do.

 

Conclusion: On the importance of learning from new responsibilities for your CV

“So grow your own CV and decorate your own skills, instead of waiting for someone to bring you opportunities for personal growth.” – based on a quote by J. L. Borges

So, as we have seen, this informal way of giving out new tasks to people can be a great opportunity if you are chosen. But it can also be a way of preventing eager people from taking up new tasks. Once somebody did it, they are the default person and probably nobody else is needed. So nobody else will be given this opportunity of personal development. This can be a real problem in academia where you are expected to constantly grow your CV and tend to your skills. Some people even say that you should add one line to your CV every month if you want to be successful in Academia. What line have you added last month? What will you add next month? Plan this strategically!

I hope that maybe some bosses read this post and become aware of the problem. Maybe people get inspired to hand out these opportunities more strategically and more consciously. It also often happens that it’s always the same people who get the opportunities (because they have already proven their potential to rise to the challenge) and others continuously get left out. This is bad for the ones left out and can lead to overwork in the others. If you are responsible for early career scholars, please make conscious choices with anything which could affect their careers. If you are affected, my consolations. Try to prove your skills in a side project or join a society.

 

Hope this helps someone,

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

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,

Cheers,

the LaTeX Ninja

 

Buy me coffee!

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

€3.00

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.

Cheers,

the LaTeX Ninja

 

Buy me coffee!

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

€3.00

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!

€3.00