Skip to main content
Escape Characters

The Three Tenets

A while ago (a long while ago), I was talking to one of my friend's girlfriends. She was a dance education major, who at the time was working hard on her thesis which involved a study in how dance education improved aspects of a young child's education. In talking with her about her project, we eventually got on the subject of education, learning, and the learning process.

She spoke of three stages of learning, which thinking back, should have been a little more obvious to me than they were at the time. They were the following (and I have to paraphrase, but I'm pretty sure these were close):

  1. Analysis: where a student will attempt to learn the fundamentals of a subject but not wholly grasp concepts.
  2. Utilization: where a student will be proficient in a subject, exhibiting a majority understanding, or at least an understanding such that they can apply it adequately.
  3. Synthesis: where a student, having potentially mastered a subject, will be able to not only apply their understanding, but also be creative in their application, and potentially even improving upon their learned methods with those of their own creation.

Yes, I talk to folks about epistemology in casual conversation. And no, nobody enumerated the aforementioned during the conversation, they were just the three stages that seemed to come out of how she was describing and categorizing her study, or at least how I remember them.

These three stages, I thought at the time, apply to quite a bit. In fact, one could almost model the entire learning process, as well as anyone's state of understanding of a particular subject, as a combination of any of these three stages. This, though sorta oversimplified, I thought was cool. This was also during a period in which I was working my ass off doing part time programming remotely up here in Anchorage and school the rest of the time. My tortured mind craved anything that was not math, logic, and coding.

Some years later, upon further consideration, I'm pretty sure my learning as regards computers, programming, and things related, didn't have a lot to do with these steps. Oh, sure, there was analysis, utilization, and synthesis at various points. But for the fact that programming, at many critical points in my learning, changes the very way you think, I think it largely breaks out of the model used by (dance) educators the world over.

I'll try to propose a new model here. I shall call them the "Three Epistemological Tenets of Computer Programming." For this model, I'll maintain that one can be in any state, as well as any combination of states at any time. To the point where you have to wonder if I should be applying a model at all.

  1. Misconception.

If I have ever said that I understand something about programming, I am lying. If you have ever been led to believe that I understand something about programming, you are mistaken. If I ever end up teaching you something about a computer, programming, or anything related, know that my understanding only goes as far as I have been willing to learn something. The full depth and breadth of anything, even the simplest of things, goes down to the bottom of the deepest technological rabbit holes.

That said, my "initial learning phase," (which I have never really left), is less of an approach to a goal of learning and more of a distancing of oneself from complete ignorance. This is to say: I may never learn something completely. I may get very close. But there are limits to my lifespan and practical application that keep me from ever reaching my goals of understanding things computer related.

This is a pretty undesirable state for most people. The lack of accomplishment, the constant confusion, and the sheer effort at pulling away from the blissful black hole of "not caring" deter all but the most hardy. It is in this phase that every concept, every notion, every sentence uttered in description seems so foreign that its application seems pretty...well, pointless. Why would you need to put something in a database when you can just do the same thing in Excel? Why spend extra money on a router when you can just plug your computer straight into your cable modem? What does binary logic have to with adding together two numbers?

These are indeed dark times for any programmer. Often you are in a vacuum, with nothing but shoddy documentation, a few examples, and a tricky requirement that just doesn't seem to lend itself well to the tools at hand. I spent months trying to build a web forum into the original version of idkfa, using Active Server Pages, an Access database, and not much to do over the summer. I got the login page and a single thread that could only go two posts deep. And despite hours spent trying to code a better solution, simply none came. I had gross misconceptions about the problems I was trying to solve. And without much guidance, I failed at the project pretty miserably. It wasn't until a year later, working to create another, similar system for a job I'd somehow gotten, that I was able to sit down with somebody with programming experience and be shown the "better ways."

  1. Overload.

My father has a phrase that I like a whole lot, and that I can't seem to ever use appropriately without getting strange looks. He describes some things as being like "sipping from a firehose." This means that something is so fast, or so intense, or so dense, or so unfathomably broad that any attempt at trying to understand the thing would be like sipping from a firehose: it's just too much at once.

I mentioned previously that computer education is fraught with misconception, particularly in the early stages of the game. This is not only for the fact that nigh everything is counter to how you've been taught to think most of your life, but also because at any given point, you are not ready to know certain things. You can be told. You can be shown. But until you are ready, until you are at the point where you have a problem to solve, and you need a way to solve it, it will all be noise. It will be wonderfully helpful tutorials and examples that are just out of reach because you don't know what to call the type of problem you are trying to solve. Or it will be someone like me, lecturing about networking security, computational efficiency, and parallelism, but never giving you an adequate reason why. Or it will be a problem of choice: any number of equally viable ways to go about something, but by random chance, one way will rear its ugly head one year down the road due to the smallest detail.

The problem is that of overload. Information overload. Work overload. Decision overload. And the surge comes not only from without, but also from within. You will, at various points, have the Elysian rush of being given the solution to something that has plagued you for months. It will be perfect. It will be genius. It will be elegant. And it had been staring you in the face for so long you just forgot it was there.

That is where the overload starts to eat at you from the inside. Eat at you, in that in order to get something working without this brilliant solution, you had to "fix" it. You had to do something you didn't want to. Something that was ugly, that was unreasonable, something that you weren't proud of having your name on the change log. If your mind is like mine, the solution rushes to fill the holes that the problem bore into your mind after such a long time trying to solve it. You feel complete, but you also feel overwhelmed, not only at your inability to realize the solution in the first place, but also in the possibilities that open up before you, everything you can do now, hopefully with ease and precision.

My experience with recursion was something like this. I was still trying to solve the problem of my 2-deep thread limitation. How would I ever hold a decent conversation with somebody if I was only able to reply, and reply once? I'd seen examples of this everywhere. And while the end product was apparent and possible, the solution to get there was not. It was not until I stumbled across the subject of recursion, either because somebody told me about it, or I just stumbled on it on a web search one day, that I finally realized what I was doing wrong. And in doing so, I realized how wrong I was. And how wrong I'd always been. And how I needed to finally solve the problem, and fix everything else, and apply it to everything else I decided to build. I found this out, and immediately started work on my first "good" version of idkfa. But I can say this: before I'd suffered, before I'd pounded my head on the keyboard trying to get something to work, I didn't understand the solution until I'd finally found the problem. And only then was I able to discern the signal from the noise.

  1. Assimilation.

It seems like I always talk about computer programming and the like as if nothing else in the world is like it. As if nobody else in the world is warped by their craft, for better or for worse. I'm probably an asshole about it sometimes, now that I think about it. Seriously, somebody needs to call me on it sometimes. I mean really, Josh: doctors, philosophers, teachers, physicists, priests, etc.

For this last one, though, I do have some justification past my meager years of suffering at the hands of a computer terminal. The basics of computation, at a fundamental, mathematical level, are the foundations of the workings of thought. Perhaps in the same way that philosophy is the study of rationale, and religion (at times) is the study of belief, computer science is the underpinnings to the study of thought itself. And so, in learning about computer science, inevitably through computer programming, we are effectively learning to think. Learning to think in new ways. Learning to think differently about old ways. And in some cases, completely replacing them.

And this is why I dub this final tenet "assimilation." Because for each new concept I learn, I learn a new way to think. A new way to approach something. A way that addresses not only my previous misconceptions, the previous ups and downs of troubleshooting, problem solving, and solution implementation, but also everything else in life that applies. And sometimes the things that don't.

It is in this that I feel like I've learned some secret. Some special knowledge that only myself and people like me can know. I become a preacher of my new and interesting ideas. I try to teach people the things that I find. I get excited. I start talking really fast, trying to keep up with the surge, the overload of information that I have stored and generated and finally have the opportunity to convey.

And it is in this state that I am the loneliest. Because I no longer believe myself to be misled, because I no longer think I misunderstand, I think I have achieved a goal. Because I can finally reign in my brain on its endless quest to find a better solution. Because I have learned something new and interesting that I think everyone could benefit from, I try to speak my mind.

And I hit a wall. I have to realize that in order to appreciate anything I'm saying, one has to have labored as I have. To have suffered at length. One has to have felt forever lost, and then undeniably found. And then I'm not even sure I have found even that: what misconceptions, what concessions have I made in convincing myself what I did was right? Did I just "fix" something, or did I solve it? And what am I completely wrong about, and I just haven't realized it yet? At some point I realize I'm talking about network security, computational efficiency, and parallelism, when all anybody really wants to hear about is football. And I realize that in getting as far as I have, something has changed. Something had to have.

My model has problems, I know. Probably stemming from the fact that I have no experience in education. Both seem to fit in my case. My three steps are analogous to those given to me by my friend's girlfriend. Analysis is the process of extinguishing misconception. Utilization is the use of a subject, but by no means the mastery. And synthesis is creation, not only of new ideas, but also ideas in others. Which I guess makes my tenets more verbose paraphrasing. Oh well.

The whole reason I'm thinking about any of this is because quite often I'm having to teach folks various things at work. And I like to teach them. Quite a bit in fact. Probably more than I enjoy learning about what I'm teaching. It makes me wonder: for how much longer will I be able to keep up this endless cycle of concept consumption and utilization without getting tired of it all? And how long will it be before I'm the one being taught something by some arrogant geek kid?