The Black Box

Posted by on Dec 2, 2015 in Game Development


I’ve been religiously following Dusty’s At-Home development posts over at Of Course I’ll Play It because A) Dusty is a cool guy, and B) he works in the games industry and has a lot of experience in game-development-as-a-career. As someone who’s been trying to work with Unity to make a game, I’m always on the lookout for stories, anecdotes, and hands-on explanations from people who Know Stuff and who have Done That. We as humans have always looked towards teachers or People With Knowledge to guide us when we’re starting a new experience because as useful as it is to just wade in, make mistakes, and learn from those mistakes, there’s going to be a certain basic level of knowledge that we must have — or feel that we must have — in order to form a foundation that we can build upon.

Finding real-world-experience content like Dusty’s has been kind of hard to come by. There’s scads of very specific questions being asked with very specific answers being offered, and of course there’s a whole lot of documentation that’s platform and even task-specific, but that’s all mechanical knowledge. You can read that and memorize it and be able to regurgitate it when you need to use it, but what seems to be lacking is a kind of primer culture that actually knows how to not just answer a specific question, but to give people asking those questions a real basis for how to find the answers for themselves (and I don’t mean “Google it”).

I work in the tech industry as a developer of business applications for a very large corporation with a global reach. I deal with a lot of different kinds of people: there’s technical people who operate databases and processes and who develop applications like I do. There’s business people who only want to know about things in terms of numbers and who drive the work that I do. There’s end-users who don’t need to know how the sausage is made but who have knowledge that I need in order to provide them with the best experience possible. Communicating with each of these groups is different. I can talk shop with tech folks, have to obfuscate and CYA when talking to the business people, and have to avoid getting too technical while still asking the right questions in the right ways when talking to the business users.

There’s a massive disconnect when the mode of conversation appropriate for one group is applied to a group that doesn’t “get” what’s being said. For those who are technically inclined, this is a massive issue. Talking to business people from a tech perspective is wasted breath because business people don’t want to hear technical jargon; they don’t care about difficulties in reaching goals, just whether those goals are actually reachable, how soon they can be reached, and how much it’s going to cost to reach them. Conversely talking to an end user is often a source of frustration because tech folks are always trying to solve problems in their heads, and think in terms of technical solutions to end user problems, but can’t prod end users to provide useful information without laying into the technobabble that end-users don’t understand. Under no circumstances are any of these groups stupid; they have much different focuses based on what they need to know and what they do not need to know; they just don’t always speak the same language, and not all things that are known by one are relevant to another.

Back to tech people: when they talk among themselves, they can (and do) use all kinds of acronyms and terms that shortcut any exposition that might have needed to take place to get to the relevant point in the conversation. We instinctively know that having to explain how a database works, or what a term means and why it’s important to the conversation is going to set things back, slow things down, and generate a lot of conceptual distrust among tech folks. We assume a whole lot, like what people know and what they should know, but rarely do tech people ever bother to understand what people actually know…or don’t know.

For people who don’t understand a concept, this is the “black box” of knowledge. We see the box, know that the box is there, but have no idea what the hell is in the box, and what’s in the box is what we’re trying to determine. The box is where people start explaining things when we ask questions. There are assumptions that everyone is familiar with the box, so discussion about the origins of the box or why the box is even present are skipped over because we’re assumed to be on the same level to some extent, right? This killed me in grade school with how we were taught math, and which I believe explains my math-deficiency today. When learning math, it’s assumed that we have learned what was being taught that year and when we advance to the next grade, it is assumed that we had internalized everything we’d learned up to that point because the upcoming lessons will build upon that earlier knowledge. If you stumble, even a little bit, it turns into an avalanche of “black box” knowledge as the lessons build upon concepts that you don’t know. That’s a kind of extreme example, but I speak from experience. I sucked at fractions in grade school, and I’ve been paying for it ever since.

What I really need is a “[Insert concept here] For Dummies” level of explanation. I think everyone could benefit from this no matter what the subject. It is technically what we get from some schools, not just our formal education, but if you were to take classes online as an adult. There’s plenty of courses which have pre-requisites (“you don’t need to know X, but you should at least be familiar with Y”), but unless you’re enrolled in a long-form course of study, corners will be cut. I’ve got a library of online courses that I thought would help me fill in some of these gaps as I tried my hand at game development, however due to various concerns (cost to produce, cost to host and stream, etc) there’s a limit to what each lesson can contain. Consequently, I get some new understanding, but a lot of fundamental questions continue to go unanswered. The black box remains nigh impenetrable.

The best source I’ve found are those penned by people who have had to deal with the same situations that cause me grief. It’s still hit or miss; knowing how to do something doesn’t mean that one is articulate enough to make it totally understandable, but not everyone who tries his or her hand at relating their experience is going to bother writing a course syllabus, either. We can’t expect those with experience will be willing to hand-hold people through Q&As, but I still find these folks to be the best source for examples and “best practices” over a lot of the formal education that’s offered and widely accessible.

Until the arrival of some comprehensive, soup-to-nuts learning experience that’s available and accessible to the masses (in terms of cost and time and convenience), the best I’ve been able to do is to find a problem, dissect it, and attempt to learn about it’s parts. Some would say that this is the best approach, but there’s still black boxes within black boxes. I can find some code online to make my NPC move, but when it starts laying into the geometry and other math, I get the sweats because I know I’ll have to dig deeper still in order to comprehend what’s really going on, and not just throw in someone else’s code that I can’t troubleshoot, tweak, or improve. Along the way I am learning, but it’s a slow process, and there’s always the sense that in focusing on solving the specific problem at hand, I’m not getting a real education on the whys and the hows that would allow me to consider my self “accomplished”, or to pass on my knowledge to someone else who’s in the same boat as I am. I’m just learning as much as I need to — copy, paste, execute, move on — but aren’t actually learning anything about the why things work the way they do.