Full disclosure: I have no pedagogical background, for some reason people just ask me to lecture about stuff. As for what I’ve done, I’ve been the main organizer and lecturer at a summer program for high schoolers at Matematiikkalinja. This includes lectures on a wide array of computer science related topics like front end web development and command line usage. Practical exercises where the students make stuff are also frequently used.
On top of that I’ve done some React workshops for already competent programmers who want to expand their toolkit, as well as deliberate mentoring in work and school projects. I have a lot of strong opinions about how both mentors and mentees should act, but that’s a post for another time.
Tips for students
Fail. I’m being serious. You have no idea what you don’t know, so try something, anything, and fail. Success is a function of learning which is a function of failing. Make pet projects, answer questions on help forums (even if you can’t answer most being asked there), participate in game jams, whatever floats your boat. Acknowledge that failing can be scary but it’s the only way and in the end you’ll be better off.
As for materials, learning through passive participation like books, videos, and unfortunately many university lectures can help, but it can also give you a false sense of progress. The pages turn and your brain is gathering what you read, but only through application of your knowledge can you be certain that you understand. If you must, use passive resources in two ways. Way 1: Gain new perspective on something you already know. Watching tutorials on stuff you think you know is surprisingly insightful. Way 2: Reference. Reading documentation for some tool you use cover to cover could technically help, but I find that you retain way more if instead you go out and do a thing and when you don’t know how to do something, learn how to do that one specific thing and just that thing. Both of the ways may require retreading ground. You may feel like you get something, only to really get it the second time a few years down the line. This is fine and par for the course.
For way 2 I can’t and won’t offer sources, but for way 1 here are a few of my favorites:
- The Art of Code - Dylan Beattie
- NDC presentation that I’m unable to do justice to with words
- Fun, insightful, the prime example of perspective-giving way-2 source
- This is great for teachers as well
- Grug brained developer
- A brilliant meditation on simplicity and complexity
- An ego check for some (that’s me)
- Parse, don’t validate
- Concise yet comprehensive explanation of why more rigid type systems are powerful
And remember, engineering is not about memorization. It doesn’t matter if you have to google things or ask an AI. It’s not a shame to not know, what matters way more is if you can find out.
Tips for teachers
Surprising to some, it’s remarkably little about the details. People tend to retain the broad strokes, but it’s not feasible ask someone to listen to an hour long speech and recall the details. Also usually equally surprising to these same people, students are pack creatures who live off of vibes. Sliding a few jokes in here and there as well as engaging them in dialog will do wonders. I find that an hour writing jokes tends to yield better results than an hour tuning the materials to be as correct as possible.
People also for the most part like sweets. I’ve used them as a reward for engagement and while some do bite and others don’t overall I’d say it’s a success.
Public speaking skills also matter, but that’s not something I have a massive amount of wisdom for. Just shut your brain off and perform. Practicing before you have to go out there sometimes helps, but over time becomes less necessary.