On a trip this last weekend, I was reflecting with a friend about how we arrived at our current stations in life. Our lives are incredibly parallel at this moment: we both spent time in graduate school for something in the humanities and we both are currently apprenticing in a craft we hope to pursue for the rest of our lives (furniture making for him and web development for me). Our reflection turned around one question as we meandered through the streets: what could we have done to arrive at our current state of career satisfaction sooner?
The answer to that question was obvious: nothing. For me, there’s a deep satisfaction in knowing that, and after four months in the apprentice program, I thought I’d share the path I’ve followed up until now and what and how I learned things along the way.
I began writing code back in the mid 2000s when one could still find a book about HTML 2.0 (if you haven’t heard, it’s currently evolving into version 5). In a time when Facebook was limited to college campuses and online tutorials for web development were scant, most of my learning came from books and, more importantly, a few knowledgeable friends. I learned about cool things like frames (look those up if you haven’t heard of them) and inline style blocks (anyone remember the <font> tag?).
I built a few simple websites like this, but my interest in development tapered off at that point, and it wasn’t until I finished graduate school that I picked up development again. This time, though, I decided that I needed some formal training to set a solid foundation for what was then simply a hobby. I took a single semester class that more or less taught us how to “code” websites using Dreamweaver. Despite all the jokes I now make about Dreamweaver, the experience was exactly what I needed at that time because, as I was adding and shaping styles on the page, I learned the fundamentals of CSS. Suffice it to say, CSS is kind of my bread and butter these days.
The next year, while still teaching, I dedicated my time to really learning and mastering Wordpress. I spent a great deal of that time copying and pasting code from one place or another, but I also began to learn about patterns and functions. I began to see that just knowing HTML and CSS wasn’t going to cut it. While I did spend some time reading the Wordpress Codex to understand the methods involved with Wordpress’s API, I began to feel the stretch of not having a solid understanding of programming in general.
And so, I set out to teach myself with whatever tools I could find. At first, I set the bar too high and watched several hours of videos from computer science courses. This was generally unhelpful because I lacked the context to understand the concepts being described. Next, I read blog posts and a few books (specifically about PHP and SQL). These were actually helpful at a certain level, but as I soon learned, books about programming require more than just reading: they require the discipline to actually exercise the principles being learned. This was fairly difficult, though, because one needs to understand the environment in which programs and language work in order to play with them, and I often felt frustrated by trying to set up an environment in which I could experiment with things like databases.
Then, I happened upon a little web startup called Codecademy. If you’ve been living under a rock, Codecademy is a platform for learning to program for the web. The important thing is that it provides space to grapple with the abstract programming principles even without a detailed understanding of the environment (which was my frustration with simply reading books). I gobbled up Codecademy (to a certain point), and while it left certain gaps in my understanding, I owe much of my programming prowess today to what I learned by hacking around in their courses.
But I had to take the abstract and theoretical knowledge back to my craft, so after two years of teaching high schoolers how to craft their language better, I took the plunge and began developing websites as a freelance front-end developer. The plunge was scary, of course, but it forced me to take my craft more seriously, to sweat the details, and most importantly to recognize my gaps in understanding and address them. Without that period of freelance work, I don’t think I would appreciate the supportive environment of the P’unk apprentice program. I also don’t know that I would have been professionally mature enough to thrive in our environment of autonomy. That six-month period of praxis was the necessary capstone to my self-education.
In the final analysis, teaching yourself a craft (or anything for that matter) requires a great deal of attention, not just toward the subject you’re trying to learn but more importantly toward yourself and your own understanding, tastes, and habits. You have to play the role of both teacher and student, and this forces you to make judgment calls about what works best for you. It also forces you to set up broad frameworks for the knowledge and skills you’re attempting to learn. Teaching yourself can be overwhelming, but the results, as I’m finding, can be life changing.