The Bird That Fell From The Nest

by Gattsuru — on

There's a story that goes around every so often.

A new programmer enters a new field. It's difficult, and poorly documented, but that's part of the goal. Things work out okay enough to start, but things get harder until, one day, the newbie isn't just stuck, but they don't even know what they're stuck on. They can not find the answer, or know when they've even asked the right question. They must ask a guru. In older tales this would fall to USENET, or IRC; today Discord tends to be the popular space, but it could well happen at a convention, or, in true horror fashion, over a campfire.

At first, the guru or gurus are helpful, and the initial problem is quickly surmounted or clobbered into submission, perhaps with a bit of probing or a few troubleshooting tips. Sometimes the question is at some awkward nexus of undefined behavior, where the gurus learn from the teaching; sometimes it's just something that's tedious and rare enough that it's well-known but not written down in the scrolls.

A few days pass, though, and the newbie is trapped again. The guru has an answer, and indeed may have even brought the answer forward knowing what problems would come next from the first question. And then a third, and a fourth time, and the newbie who's feeling more and more out-of-depth can't tell what's different, until the guru, or one of the guru's students fans snaps:

"Can't you find out anything yourself?"

And that's a harsh insult to give, when a pentinent has taken that many steps on their own. It doesn't feel like they've been carried, and they haven't, and yet they look back, and it's not quite clear how they got here...

There's a story that goes around every so often.

The Minecraft modded environment mostly revolves around the Forge ecosystem as combination modloader and shared library -- there's a few other setups, like Fabric, Quilt, Spigot, or a very few standalone mods, but the majority is Forge, at least now. For somewhat esoteric reasons, Minecraft modding is often suggested as an introduction to programming, and there's a small industry trying to push it. This is a terrible idea: while Java in general is fairly user-friendly and has a wide variety of tutorials available, Minecraft itself requires some understanding of relatively unintuitive concepts like classloading, inheritance, and multi-threaded environments, unavoidably, not all of which generalize conveniently to other languages.

On a daily basis, the Forge Discord (or, previously, forums) would see novices enter and ask questions, which is a good part of what it's support channels exist for. Most questions weren't, and aren't, that complicated, though. Few boil down to doctorate-level questions on graph theory, or production-level hard tradeoffs around caching, but at best to hard-to-formalize matters like the 'difference' between reference and primitive types, and more often to entry-level ones like the difference between methods and objects. It's not that the Forge Discord doesn't try to help at that level, though they're more likely to give a link to a guide. There's even a few projects to try to make it easier to learn Javainside Minecraft (I heard you like JVMs, so I put a JVM inside your JVM). It's not that hard to give someone exactly what they need for a trivial problem, and even if it's obnoxious to do so a dozen times a week, in a large enough group eventually someone ends up having that much patience. It's not that the channel isn't filled with drama llamas strong-willed brusque people who have better things to do, because it is.

It's a little more difficult to decide if that's the right option. Because these aren't one-off problems, where someone new to the language or ecosystem just needs to know this One Weird Trick. If you don't know how to use lambdas during item and block registration, you're pretty likely to find Streams to be a show-stopper, too, and countless other problems. You could talk quite a lot of people through programming a mod one line and one click at a time, and it won't necessarily help them make a second, different program. Someone can be walked through a for loop thirty times without realizing that every single part of the standard for(int i = 0; i < limit; i++) framework is a convention rather than a mandate. The Chinese Room may or may not have awareness, but even one that is demonstrably aware does not actually have to learn Chinese rather than drawing.

And for programming, it's less important to know the solution to a specific problem, and more important to know ways to solve in general.

Yes, society has the phrase about "teaching a man to fish", right? Yet that saying obscures one of its own potential revelations, as there's complex economic and ecological relationships between alms and training. For the programmer's case, giving the answer to a problem removes that problem from available space to learn the process of learning. Worse, and near-inevitably, the next steps and available lessons will be that slight bit more difficult, or esoteric, or specialized, until eventually anyone building something more complicated than a CRUD app will find themselves encountering a problem there's no one to learn from, no tutorials that cover that topic.

This isn't, obviously, unique to computer programming. Even simply playing modded Minecraft can introduce you to problems that perhaps a few thousand people on the planet have ever seen, but that's a trivial variant. Someone hand-fed sewing patterns will integrate some few parts of why they're designed in their specific ways... but they won't have the same understanding of why those patterns are built that way. Carpentry is filled with answers that may only show up under the right (or wrong) humidity, that could seem like superstition until actually observed. Some fields do have spaces where the hands learn, or the eyes learn, but there's far more where even direct manipulation of those reflexes and physical processes would leave no good habits, and only the brain can be taught.

This isn't to justify newbie abuse, or worse. One of the more self-reinforcing parts to this problem is how even many people acting in or around its framework tend to provide, or tolerate, those first few steps, and seldom have or even understand the tools necessary to improve that underlying movement toward learning to solve problems. It's a place where many of the gurus are grasping around the elephant's tail.

But it's not a small elephant, either.


Add a comment