This week Bay has once again found themself laid up. This time it’s with a fun combination of strep, two ear infections that the good doctor referred to as ‘acute’, which is a fun way to say ‘very bad’. and a fun flare-up as a result of not being able to keep anything down for a few days, including the modern miracle of arthritis medication. Currently I’m on the lookout for any more of the universe’s wayward attempts to off them this week; such as spontaneous combustion, or a piano falling through the ceiling. But in the meantime I figured i’d fill the content gap with a project i’ve wanted to talk about for a while now.
I’ve always kind-of wanted to learn to code.
I say kind-of because my interest had always been something of a nervous fascination. A bit like learning a second language. It was a hypothetical years-long commitment that requires me to be bad at something in an embarrassingly public way before I got to the impressive point where I could confidently say ‘I know how to speak another language’ and not fumble the bag as soon as someone asked me something more complex than how to ask where the bathroom is. And ultimately, it was more of an ends to a means of what I really wanted to do.
I’ve always really wanted to make games.
It comes with the territory of who I grew up with I imagine. One of my most notable childhood memories are of my dad plopping me in his big chair in front of his computer to let me throw bottles in the alley in half life 2. Along with that is a fuzzy memory of a very long, confusing explanation of what a physics engine was, and why this one was impressiveWhich has probably resulted in a lifelong fascination with physics simulations. I’ll always get excited when I realize I can toss something and it breaks, or breaks something else. it was a little beyond me at the time. Seeing as it was 2004 and I still used a sippy cup. But I had fun.
I used to sit and watch my dad code sometimes, very rarelyhe didn’t like when I did, as I always had ‘suggestions’.. It was intimidating. A screen of nonsense text that somehow magically transformed random numbers, letters and symbols into moving parts. Occasionally my dad would try to explain what his project was, how it worked, or what he was doing to accomplish it. Which was somehow more confusing than actually watching him do it.
In 2009, when I was nine years old and realized I could read and do math to a reasonable enough degree. I went to my dad to ask him how coding worked. I vaguely remember the excitement of having a chance to do something like he did, followed by a lot of frustration when I started to struggle with my admittedly ambitious ideas. I wanted to do it all right away, without all the boring stuff in between. It’s a very human pitfall to run into, especially when you’re a kid who doesn’t really have a concept of skills as a long term investment.
So I dropped it. And then came back, and dropped it again. And I found other coding ‘toys’ that I played with. And dropped. And then my parents got me RPGmaker, which touts itself as a ‘code free’ option for game creation. Which I tried. And then dropped, and tried again. From there I tried plenty of other options, picking them up and tossing them away as I realized their limitations wouldn’t match what I was hoping for. Constantly skirting around the elephant in the room.
Which brings us back to code.
I largely avoided diving into actual coding, anything beyond the scratch-style drag and drop format was largely too intimidating for me to dive in. And the few occasions I actually tried I was either overwhelmed by the amount of information being presented all at once, or underwhelmed by the glacial pace of the lesson plan.
So I largely avoided it. Sometimes i’d find scraps of code or scripts made for the ‘code free’ programs that theoretically did what I wanted, but as soon as I couldn’t strong-arm it into functioning exactly as I’d hoped I’d scrap the project and sulk off to go be a teenager somewhere else. Or hunt for another ‘code free’ tool to mess with until the problem showed up again and I started back in the same circle i’d been stuck in for years.
This pattern continued until somewhere around 2021.
Gamemaker Studio 2 is one of many “”free”” tools available to creators. I say “”Free”” because it makes use of one of my least favorite inventions of the 21st century. Subscriptionsdo me a favor and envision as much disdain as you can in that word. I’m old fashioned, I miss the days when I could buy things to own them instead of renting everything I use for the rest of my life.
But credit where credit is due, It tricked me into learning to code.
Well, “tricked” . It provided a very important progression stage that i’ve been missing in all the ‘learn to code’ programs i’ve tripped on until now.
GMS2 makes use of two styles of coding in the system, both using its own language. GML code, and GML visual. When you create an event, it asks you whether you want to use code or visual. Code is what it says on the tin, code. Visual is a series of drag-and-drop events, a bit like scratch with a bit more depth to it. It has explanations on the little bubbles that explain what to write in each box. All color coded by purpose to make sure you don’t get lost. It lacks some flexibility, you’re restricted by what the bubbles know how to write out which means it’s harder to implement some more complicated ideas. But that leads into the trick. Because unlike scratch, GMS2 has one interesting feature where you can, at any time, convert all your ‘visual’ code entirely into script.
This is a one way conversion, but the fact it can be done at all is important. A long-term problem i’ve had with programs like scratch is the lack of a bridge between the beginner-friendly visual style and the cold hard walls of text that make up the ‘real deal’. With nothing leading to the intermediate stage the change in difficulty was always too abrupt. I understood the bulk of how the computer might interpret certain directions, but I couldn’t write out the directions myself in a way the computer would understand. Actually sitting down and learning the language itself was always too big of a hurdle, especially since most beginner lesson plans are horrifically, condescendingly snail-paced. Or, worse. A videoI have nothing against the people who put their time and energy into creating videos explaining their code and how to use it. But nothing is more infuriating than having a problem and sitting through someone very slowly ramble about everything except the one command you need explained only to hear them say ‘but thats basic so I don’t need to explain it’ when they get there.
So, first it tricked me into getting familiar with the terminology. And then when the drag and drop wasn’t flexible enough it dropped a user manual in my lap and a magic button that let me see how all the things I was doing in the visual mode translated into the script itself. And boom, I wasn’t dragging and dropping anymore, I was writing out lines of code. When I got stuck, or forgot something, or broke my own code, I just hit the button to swap it back and remake it in the visual section to figure out what I did wrong.
It was a bit of a shock to the system to realize it had been that easy for so long. All I was missing was the ability to see underneath the friendly bubbles to understand what was happening. It almost makes you wonder why it’s taken so long. There’s been hundreds of learning to code games, programs, and classes created in the past ten plus years with the same problem. I imagine at least some people were aware they were locking most beginners into the box with the kindergarten kids and putting the key out behind a complex wall of loony toons style traps. So why did it take so long for someone to find a good way to bridge the gap?
The answer is it probably didn’t. I imagine there’s been a few folks who’ve gotten it, and either didn’t have the skillset to implement it or the money to make sure enough people found the program. Or it existed for years but was just too expensive for me to pick up.
Beyond that, there’s another problem with the whole system. The same reason so many open source programs have ui interfaces that need a three year degree to operate.
Making something accessible is a skill. A skill that’s not particularly valued in a lot of coding circles. Function over fashion is a common policy, but it’s often taken to the extreme of forgetting what function means to someone who isn’t you. My dad used to tell me that a good programmer is a bad teacher, and a good teacher is a bad programmer. Which tracks. Like programming, teaching is the act of sending signals from point A to point B in order to prompt a response or reaction.
Unlike programming the reaction is being communicated to a human mind, not a computer. And human brains are weird, by default we interpret patterns in a very tactile way. Light, scent, soundwaves, and texture. We have a large swath of instructions and variables to pull from to interpret different things, hot and cold, happy and sad, hungry and full. A negative response in the past has potential to permanently alter the reaction someone has in the future. We’re machines constantly intaking and interpreting stimulus and information.
A computer in comparison has a very limited set of information. Even the most complex AI is working off trained datasets, it lacks the complexity to interpret a new piece of information on the fly and make decisions the same way a human can, or the ability to understand itself in order to expand its own well of information. At least not in the way humans can. It’s limited to what we tell it to look at and the information we give it.
It’s the difference between working with a full box versus an empty one. A person will look at something and apply preexisting knowledge and inputs to it. A computer will look at it and have no response unless its been explicitly programmed to do so. Someone who’s been taught to teach humans is going to have a harder time with this than someone who’s been taught to teach computers and vice versa. Making coding inherently harder to teach as a skill..
An additional side effect of this issue is that interactions between people learning to code for the first time and folks who already know how is the sort of confused, frustrated air of someone who doesn’t interact with children very often watching a toddler throw the fork at the ground and start crying because they can’t reach it anymore. Which is annoying for them. Because there’s a crying toddler who won’t stop throwing things, and frustrating for the toddler who wants to hear the sound of the fork hitting the ground again and doesn’t understand why they can’t have it back.
The lack of understanding and inability to communicate between the two sides leads to unnecessary tension. Veterans chanting for the newbies to read the instructions while the newbies don’t even know what the commands they want are called let alone where in the book to look. Or are too intimidated by the descriptions, and are hoping for a simplified breakdown but don’t know how to ask for it.
Forums are a shining example of this problem. GMS2 is no exception. There’s a not-so-subtle expectation that the visual users drop it for the real deal sooner rather than later. As it’s easier to troubleshoot, and more flexible to work with. If you want help, for the convenience of the community, you have to leave your comfort zone whether you’re ready or not.
Which is understandable, but a pretty bad way to actually get people into coding.
This isn’t the end of the conversation just yet, but I had to split this thing in half, lest it qualify as a novella. I’ll see you guys next week!
Footnotes:
[1] Which has probably resulted in a lifelong fascination with physics simulations. I’ll always get excited when I realize I can toss something and it breaks, or breaks something else
[2] he didn’t like when I did, as I always had ‘suggestions’.
[3] do me a favor and envision as much disdain as you can in that word
[4] I have nothing against the people who put their time and energy into creating videos explaining their code and how to use it. But nothing is more infuriating than having a problem and sitting through someone very slowly ramble about everything except the one command you need explained only to hear them say ‘but thats basic so I don’t need to explain it’ when they get there
Internet News is All Wrong

Why is internet news so bad, why do people prefer celebrity fluff, and how could it be made better?
The Death of Half-Life

Valve still hasn't admitted it, but the Half-Life franchise is dead. So what made these games so popular anyway?
Quakecon Keynote 2013 Annotated

An interesting but technically dense talk about gaming technology. I translate it for the non-coders.
Trekrospective

A look back at Star Trek, from the Original Series to the Abrams Reboot.
Resident Evil 4

Who is this imbecile and why is he wandering around Europe unsupervised?
It’s really interesting to learn about your approach to learning how to code and the frustrations that you experienced.
I think a big part of the problem is generational. I’m a few years older than Shamus and I first learned about coding in 1983, when I took a class in Basic programming in high school. I learned how to tell the computer to say, “Hello world!”
People like me and your father had the unique advantage of growing WITH the technology, step by step.
But 40 years have passed and that little “Hello world!” command has become a giant cloud of processes that cover the entire planet. Of course it’s a bazillian times more complex to learn something like game programming because the entire system has become a bazillian times more complex. People of your generation are entering sideways into a mountain of information and processes that have been built on top of each other for four+ decades.
It’s wonderful that you found a means to enter the side of that mountain. Don’t get discouraged. It’s not your fault that the people who built the mountain made it a giant mess of inaccessible tunnels and deadends.
Yknow I never really thought about it like that. I always felt a little silly how hard it was to actually start the process when my dad apparently just picked it up one day and never put it down. It’s easy to forget how far we’ve come in the past 40-ish years since he started, many of which I wasn’t even alive for.
I’m hoping someday i’ll get good enough at navigating code (and more importantly explaining it) to open up a few more paths for people like me who want to break in but are stuggling with the initial wall. Coding is an important skill, especially these days. And it feels like it’s becoming undervalued in a very weird way. People like to joke about how weird some bugs in older games were, like Pokemon Red/Blue’s Missingno. But they don’t really take into account how if you play that game as intended (which isn’t hard to do) you won’t encounter a single bug, it runs perfectly despite how many limitations it was operating under. Which is part of why they stood out so much. And now the mass production of get rich quick junk has led to a decline in the overall quality of most software, and a loss of appreciation of programming as a skill. Everything is fancier, but it takes more memory than it needs and breaks twice as fast when you’re doing exactly what you’re meant to do. Everything from Cyberpunk 2077 to Adobe software, things are rushed out and run like crap and the consumer eats the cost. If I were to really dig into daydreams i’d say (and here I probably risk sounding pretentious, I promise this is very ernest) i’d like for people to appreciate coding as an art, not just a boring means to an end.
Rambling aside, it’s a nice thought that maybe by the time i’m 40 things will be more acessable for people. And my dads policy of good teachers being bad coders (And vice versa) won’t apply anymore. Only time will tell of course, but I’m happy to wait and hope until then :]
Re: coding as an art, you might be interested in the Handmade Hero community.
While I agree that things these days often feel rushed and the prevalence of things like early access put unfinished products in the customer’s hands, who are then left dealing with the issues, the problem is also linked to the increase in complexity mentioned here. It is just harder to make stuff that works perfectly all of the time these days. A solid ethic regarding testing and proper compensation of QA workers helps a lot, but a project with the scale of Cyberpunk 2077 will always break in some way when the millions of endusers actually get to play around with it. Particularly with regards to games these days the costs are also astronomical, which puts more pressure on timely delivery.
I’m not saying it’s an insurmountable problem and you can easily see that indie developers often put out more polished stuff because they put in more attention to detail, but it’s also a matter of scope and complexity.
Precisely – most games today are *much* more complex than any game that would have been available or possible.
So you read about the first games that came out and how they were coded by one person, and you think “I can do that.”
But in your head the game that “one person” can do is Cyberpunk, not Pong.
And then you try it and the end product is Pong in a 3D world, but it crashes immediately because you haven’t included voice files for the opponent NPC, so the first combat grunt results in a null pointer exception. Etc.
What a wonderful point of view to share. I loved reading about Shamus’ programming thought process, but couldn’t imagine being capable of doing it.
This is a really interesting post for me, because I teach high school coding and I rarely get such well articulated feedback about the barriers to learning to code. I’ve tried in the distant past using visual languages like Scratch, but not anymore – for exactly the reasons you say. An option for switching between the two styles that I always liked was https://makecode.microbit.org/#editor which lets you flick between scratch/python/javascript, but it’s a bit too closely tied to the UK Microbits for my purposes.
Teaching/learning coding is hard, and if there was an easy answer we would all be doing it. But I do find that once you get over the initial hump, progress can really accelerate for motivated learners. Recently I’ve been using the Python Arcade library https://api.arcade.academy/en/latest/ with students because it makes it (relatively) easy to get 2D graphics going, without having to get your hands too dirty in the nitty gritty stuff.
I do wish you the very best of luck in your coding journey. As you’re already finding, the more you come back to it, the more sense it makes. I think the brain really benefits from repeated attempts, as each time there is a little bit more scaffolding to build your understanding on.
I’m glad it’s helpful! It didn’t really occur to me that people who teach code might actually read this (then again I wasn’t really thinking about an audience at all, i’ve never liked thinking about who might read things i’m writing. Its like digital stage fright) but i’m glad it’s helping. I agree that once you get past the first barrier it’s far, far easier to get into it. Mostly because while the memorization can be a little rough, it’s really a change of headspace that’s required. Like I said somewhere up there, empty boxes need more precise instructions. And once you learn that everything gets a lot easier to understand.
Like many here, I’ve tried teaching coding with mixed success. And like many here, I’m finding this feedback fantastic. Looking forward to the next half!
Regarding footnote 4, a very related peeve is when you go looking on forums for a solution to your very obscure forum, find somebody else with the exact same problem, and the last post they made it “Never mind, I fixed it.” with no further information on HOW they fixed it. :P
Hah! I know the feeling. Nothing like thinking you’ve finally broken through the wall only to find the guy who made the tunnel bricked it up on his way out. It’s never malicious of course, but lord it is frustrating!
Once I did exactly this on Stack Overflow. And then I noticed that the jerk who had posted the “fixed it” was myself from six months ago and I had somehow obliterated all knowledge of that fix from my own brain. From that day, I have tried to explicitly describe solutions in detail – because the person reading it might one day be me again.
Oh man, this takes me back.
Years ago (about when that Scratch post was written, actually) I went to a summer camp called something like “Video Game Academy”. I discovered a ton of things that week, including LAN games, Half Life, and most importantly, RPG Maker and Game Maker. Game Maker was the first programming-like experience I ever had, and it’s awesome for exactly the reasons you describe (though I didn’t really understand the non-visual script language at the time).
And now I’m a Rust engineer freelancing for Google. How time flies by.
Have you tried ChatGPT? It’s exceptionally good for bypassing this exact problem (having a simple specific question and not wanting to search through hundreds of answers to slightly similar questions). And unlike forum people, it doesn’t get impatient.
I’ve been frustrated by this for years. Bret Victor’s Learnable Programming article has a good summary of the kind of things I wish developers made more often. Making programming easier to learn is possible, we just haven’t invested enough in it!
Oh thats funny, I knew gamemaker had been around a while but I never thought too hard about how long. It’s funny to think that it’s managed to be a (Rather sucessful) introduction to coding to two seperate generations. time is a flat circle I suppose.
Regarding ChatGPT, I don’t really trust it as far as I could toss whatever server room hosts it. It has a pretty well documented history of just making things up and doubling down. It’s the empty box thing, it doesn’t have the context to understand what a lie is, so it just mimics whatever its trained in whether its true or not. Citing fake studies and making crap up on the spot. I feel like asking it programming questions is going to end with it spitting out unworkable garbage more often than it would actually give me something to work with.
And finally I haven’t read through the full thing, but based on the introduction it seems to verbalise a lot of concepts i’ve been coasting on as i’ve started putting things together far better than I could. I’m going to have to give it a real look later when I have time but it’s really nice to see that people are invested in finding good ways to teach coding. Even if it’s not always easy to find them.
Coding is, surprisingly on the surface, one of the places where ChatGPT and its ilk are at their most trustworthy, if only because you can take the code snippet that it gives you, run it, and see whether it does what you want. And it’s also one of the areas where the training set issues fall much more on the legal side than on the ethical side, because the bits of code in its training set that it uses to build examples tend to be things that were, specifically, put on to the internet to help people with coding problems. My main ethical issue is that even most of the code that I write for work tends to end up on GitHub (and often in public repositories), and I *really* try to credit stack overflow posters (or whatever) when I get the internet to help me do a specific thing, and with an LLM there’s no one to credit, although there probably are specific humans responsible for the outputs, and that’s a personal bit of sad.
That’s really interesting! and I can see where you’re coming from. It always bums me out to see stuff like that, if you’d asked me what i’d expect when ‘AI’ started to take off I can’t say mass amounts of uncredited work being distributed would have been on the list.
(I was, like, 12, so maybe not a whole generation apart!)
I’d encourage you to try ChatGPT and/or Github Copilot for a coding project.
So far I’ve found it surprisingly able to understand the coding questions I asked, and the suggestions it makes tend to be high quality.
I have a cousin who had never coded in his life until last year who was able to learn a ton of programming concepts by asking ChatGPT how to automate a bunch of problems he was working on (along with an unhealthy dose of AutoHotkey).
Plus everything Brian said.
Whoop, I got my years wrong. Which is funny since I even dated the dang thing when I wrote it. Ah well, It’s still fun to see how far back it goes! And that is interesting, I might give it a whirl next time I get stuck!
Welcome to coding! These sorts of things are always exciting to read, thanks for sharing.
I’ve found that teaching and coding are rarified skills that take a lot of practice, so while its true that they don’t often come together, they are not exclusive (at least I hope not, as I’m the new hire coach where I work as a coder…)
I think the key is finding a thing that will “trick” you into coding, some way of approaching or framework or game that your particular brain can’t help but grab on to. I’m with you that it is NOT videos or busy veteran coders throwing things at you. For me it was little code games/puzzles like Code Signal (now a recruiting website, but the arcade is still in there) or Advent of Code (a yearly event, but old years stay up forever); little bite-sized nothing projects with no stakes.
You should share the things you made, I’m sure we’d enjoy seeing them!
Bite sized projects ended up being my hook point, I never managed to get really interested in the games. It didn’t really feel like I was *doing* anything. I didn’t know what it was trying to teach me besides memorization. But once I got my hands on something I could build on all bets were off. I do actually plan to talk about what i’ve been working on! These posts are something of a prologue to a small series i’m writing up, I don’t intend to post it until it’s actually done. And it’s recently caught up to the actual point i’m at in the devealopment, which means now I have to get off my ass and get back to work on it :p But it’ll happen and i’m excited to share the process
I’ve had a pretty similar journey, trying off and on to make games every few years, running into the problem that I didn’t know how to code, trying a different program… I think I went through Game Maker Studio 1, Godot, and a few others I don’t remember the names of. Then spent a while trying to do online coding tutorials- it’s very easy to find things that familiarize you with a language’s syntax, not so easy to find ones that just explain in detail how to think about coding and what the underlying processes are you’re working with. A while back, I got a book called “The Elements of Computing Systems” that does just that, and has lots of little projects to develop your skills; I was making good progress through it before I had to do overtime for two months and forgot how the project I was on even worked. Been very slowly and haltingly working my way back to where I was. It’s a good review, but man does my brain not like retreading old ground ????
Oof, I get that. I had to drag myself back into it after my surprise break just before we took over the site. Poking through my old projects and reworking bits of them from the ground up helped a lot, felt more like getting my hands dirty and accomplishing something rather than just trying to tiptoe back to the last place I was. But I had the benefit of having some sections still in visual that I needed to redo anyway. So there was some built in incentive to play with it again. Wishing you luck on getting back into the headspace for it. I’d love to hear an update on your project if you get the chance to get back into it!
Well, I just managed to read a little more of the book (and take some notes, that seems to help with focusing on rereads), so I’m on the way there! Probably going to be a while though, I’m only on chapter 4 of 12 and I got stuck on the chapter 5 practice problems last time around
I’m far from a teacher, but I am a coder, and I’ve found these barriers to teaching new people to code.
1) It’s a different way of thinking. It’s very hard to initially grasp why the computer can’t extrapolate what you want. The “normal human” instinct is that when you explain the computer how to, say, display a picture on screen, it should automatically know how to display 10 pictures. Well, not at all.
2) Confusing terminology. What’s the difference between function and method? Parameter and argument? (answer is, there’s not a lot, it depends on the language, and people who teach you confuse these themselves anyway)
3) Nobody explains the surrounding things. It’s especially true in my world of web development, but I think it’s also true for other. When tutorials about the same tech do things differently, you have no idea why. What’s the difference between `yarn add jest` and `npm install jest`? Package management isn’t the focus of the tutorial, so you’ll never know, and you don’t even know that you need to know it.
That about sums up my top three problems i’ve had going into it. Part of the first one being very few people know how to explain how it’s different. Especially to someone whos never interacted with a computer on the back end. I found that once I realized I needed to shift my mindset away from ‘instructing someone’ to ‘instructing a computer’ things got a lot more managable.
The others are just as frustrating though. Especially the middle one. I can understand people being nervous about overwhelming would-be coders with too much information all at once (although I don’t think it’s worth the trade-off, not being able to use the information effectively makes the information pretty much useless). So it gets a pass. On the other end the terminology issue drives me insane. If only because some people will argue to death that the difference in terminology not only matters. but their favorite is the only one anyone should ever use. It’s confusing when you start, and exasperating once you understand. To make matters worse people keep trying to throw new words in for their own special things (gamemaker is guilty of this, they use ‘steps’ instead of ‘ticks’, which i’ve not seen used anywhere else yet) which just muddies the water for everyone else.
I’d say a great tutorial would have links to a glossary and ecosystem tutorials at the top with a disclaimer “These things aren’t the focus of my explanation, but if you’re confused go read”, but I haven’t seen anyone do this, and I also haven’t seen such tutorials in the wild. And I don’t have the energy to throw one together myself :(
Ha, RPG Maker, that takes me back. I didn’t know anybody who did programming growing up, so I always thought of it as way too esoteric to learn on my own. But I did play around with RPG Maker 2000 (an unauthorized English translation, because it wasn’t released outside Japan). Later, when I got programming classes at school, I realized that scripting events in RPG Maker actually was programming, and a horrible clumsy way at that. RPG Maker 2000 actually did show the code, but wouldn’t let you edit it by hand. You had to click around in a menu to do that.
ohh, yeah. I had MV, and later on i upgraded to VX. Neither of them (to my knowledge) really show you the underbelly of what you’re doing. Scripting is available but I believe most of it is handled through plugins, as opposed to something to implement through fiddling with the game code.
With respect to footnote 3, I spent a long time in that group (for reference, I started coding in maybe 1992 in Hypercard, because you use what you have, and it was actually a really good learning environment), and then I spent a lot of time listening to software developers on podcasts (particularly “Accidental Tech Podcast”), and really started to think about what people (including me) expect from their software, and that even if the only thing I expect is “this program keeps working”, that actually requires ongoing effort in a way that never really stops as the system you’re writing on top of changes, and if someone pays you once you can’t really afford to continue giving them work forever. And, even though I don’t write commercial code (I work as a science software programmer at STScI and write programs to control instruments, simulate telescope outputs, and do calibration), working for 15 years on the same job has taught me just how *much* work it takes to keep a piece of code running even if you’re not trying to add anything more to it.
Oddly, the other thing that made me happier about subscriptions is Patreon, because it re-introduced to my mind the model that I’m supporting this person (or company) so that they can continue to do work that benefits me, or that I want to exist. That said, a lot of the tools I use are also developed by small teams, which helps me to feel like I’m paying this ongoing price to keep this project alive, rather than to help meet the Q4 recurring revenue increase projections expected by the shareholders. I still don’t like not owning things anymore, but I’m also seeing more smaller developers find ways to do that as well (e.g. if you stop your subscription you stop getting new features, but you still get to use the product as it was when you stopped paying).
As a non-coder this was a dense read but interesting. I’m old enough I had a ‘fake’ computer as a kid that let me program Basic, so I remember doing the ‘hello, world’ thing. From there a lot of the file manipulation I know how to do comes from learning how to mod Sims 2. As a new parent that’s one of the things I want to make sure my daughter understands, how the back end of a computer works. It’ll be interesting to read more of these and hopefully pick up some insight as to how best to guide her (my spouse is the coder in the family so he’ll likely tackle most of it).
As a side note, ‘acute’ is sudden onset. It’s the opposite of ‘chronic’. Tends to equivalate to severe because usually a sudden onset of anything makes you go wtf. You can have mild acute vs severe acute diarrhea, for instance (vs mild/severe chronic diarrhea). I’m a vet and I like to educate my clients about stuff like this when I can, apologies if explaining came across as rude.
I’m expecting later parts of this series to spiral down into Lovecraftian horror and madness when you start delving into the Twentysided WordPress internals… :)
The Colour Out Of Backspace.
In the Stack Trace of Madness.
Excellent post. How to teach topics like coding and math is one of my favorite topics so this was a really fun read. Very insightful, thank you.
Coding is… not really that hard to learn. It’s hard to learn and know exactly how (syntax) to do something your specific language. That and APIs are usually horrifically documented.
I really do encourage taking an official 101 college programming course. Having the theory behind stuff really helps, especially when you stumble upon Object Oriented concepts where you will be completely confused at the periods and what it means.
If you haven’t learned these things before going into coding, you’re pretty much guaranteed to have a bad time:
Basic statements
if()
if() then
while()
for()
data structures
arrays
data types
pointers (if you’re stuck in C/C++ land)
Then a handful of Object Oriented concepts
class
methods
properties
inheritance
I generally do like GUIs and things that give you easier ways to learn to start. Computer GUIs are great because you can explore options and learn what to do without having to type out an arcane line to command the computer to do some exact thing.
I know a lot of coding can be easy to learn in theory, but I feel like that’s missing a lot of the point of what I was saying. It’s not bad at all once you get over the initial ‘hump’. Getting past the intimidation factor and getting the basics down are the main sticking points that prompt most folks to give up, or not try at all. But while it’s easy to write down the basics, learning them takes a lot more time, patience, and mental energy. It’s not really something that’s incredibly acessable for most people.
I’m sure college classes with a real human being instructing you are a good start. I did actually consider classes on multiple occasions, but money isn’t exactly something I had to throw around. First on account of being a teenager. And later because I had a poorly paying job and no disposable income after groceries that wasn’t going into savings to try and get a chance at improving the situation. Even now with some amount of disposable income there is no universe in which i’ll be paying for a single college course (which runs around 200 dollars as an avarage, at least at the community colleges i’ve checked up on) when it might mean putting off saving for something important, or just not having it in an emergency. Not unless I knew for absolute certain it was going to be beneficial to me and my family in the long run. 200 dollars is a lot more than some people imagine it to be. And while i’m sure some places do do discounts, those aren’t universally available and vary a lot by school and state. (this doesn’t take other countries into account, but the article is written from an american perspective, because that’s the one I have. So I figure it’s safe to stick to what I know here.)
It’s easy to forget the money barrier, but it plays a very big role in how inacessable a lot of coding can be. It isn’t that hard to learn if you have the time, money, and materials to jump start the process and make things less intimidating to work with. But that’s not really a realistic expectation these days. It takes a lot more effort to get your foot in the door. I feel its disingenuous to disregard those issues when thinking about how easy or hard learning a skill can be.
That specific approach to a learning GUI is really nice though. It’s a solid way to introduce the concepts in a more hands on way that lets you learn how to use the tools at your disposal, whether you intend to advance or not. It’s a good way to soften things up without someone helping to instruct or guide you directly.
Money concerns definitely make it harder. In retrospect, saying it’s easy is a little bit… headstrong and priviledged. I’d say my best indicator of ease is how well you do with conceptual stuff.
My point is that looking at code without knowing the basics that I listed is generally like fumbling in the dark when approaching code. Most programmers improve and fix existing code for a living, not writing large swaths of new code. When learning you’re generally doing the same thing. If anything my list was meant to be a starting point, where you really should look up and understand each item to help you learn.
I think there are a lot of good starter online courses out there that are offered for free. Poking around reddit and asking for suggestions is a good place to start, if you’re really serious. I find that most stick too closely to classwork types of timewasting. That said, I don’t have the self-discipline for online classes.