The Most Worthwhile Journey on the Path to Code Enlightenment
If you look at the bottom of the page on wordpress.org, you’ll see the words “Code is Poetry” in gray capital letters. I’ve been using WordPress since 2005, and for as long as I’ve been using it, that’s been the WordPress mantra. I didn’t notice the slogan, though, till as an April Fool’s joke the developers of WordPress and TextPattern announced they would be merging their softwares into a single new platform called WordPattern – or maybe it was TextPress? Regardless, the slogan for the prank software was going to be “Code is Poetry. Text is Pattern.” Like the four eyed mouth breather I am, I tee-hee’d to myself about that and many other April Fools Day jokes that year, but something about that phrase stuck with me…
Code is Poetry
At this point, it’s safe to assume you’ve all been exposed to code. There are memes about it, there are entire television series centered around programmers and programming. With the ubiquity of computers and the internet we’ve all seen error messages exposing the underlying workings of our devices. When someone sees these errors, or finds themselves somehow witnessing raw uncompiled computer code in all its horrific glory, it can feel a little like this.
And to many, all that code just seems like a dumpster fire of garbage letters. It isn’t, though, I promise. At least, I should say, it doesn’t have to be. It can be quite lovely.
Finding the Code
When someone sets out to become a programmer, they normally take the quickest means to an end. They want to see something work as soon as possible, and to be fair becoming infatuated with most avocations is often less driven by academic aspirations than it is by how well the learner excels at producing early results. Thanks to the internet and the millions and millions of programming tutorials available online, anyone can go from no coding to full on brogrammer or wogrammer in minutes flat, with zero actual comprehension required. Simply having typed (or as can be the case, copy pasting) code, though, does not a code-fu master make.
So how does a young gosling programmer go from struggling with a new language to a fully fledged Poet Laureate?
Use the Buddy system
When I was a wee lad of 19, having already been failing to write good code for at least a few years, I met my buddy, Dustin – the PixelMixer.
We were both Flash developers at a time when big things were happening in the Flash development world. We met right as Adobe released ActionScript 3, which worked and felt like a real programming language, especially compared its predecessors AS1 and AS2. You could finally write real object oriented code in Flash, and it opened up a whole new world of innovation in the world of interactive development. The first iPhone hadn’t even come out yet, so Flash was still relevant, to boot!
I would always see Dustin do amazing things – writing artificial intelligence simulators and tile map generators and generative art and etc. He always seemed to be just a step (or nine) ahead of me, and… honestly… I struggled to keep up. That’s not a bad thing, though! I’m way better at development because I knew Dustin, and I’d like to think he’s only slightly worse off for having known me. I worked my ass off to live up his example, and became better in the process.
Text is Pattern
Having a buddy also gives you words, which is very important. I know while I’m writing this my editor is going to correct that last sentence to say “teaches you vocabulary” rather than “gives you words”, but we don’t need those fancy book-type words here.
That being said, any time you do technical work, a greater vocabulary will always make your life easier. You can’t look something up if you don’t know what that something is called. I mean, sometimes you can, but it always ends up on the second or third search results page, and who has time for that? Not Sweet Brown, and not you. However, a peer around you will likely bring up many things you’ve never heard – and because they brought it to your attention, you’ll never have not heard of it ever again.
Having someone to keep up with or to stay ahead of keeps you moving forward, gives you someone to help out or someone to ask questions of. It also gives you someone who understands what it’s like to spend hours searching for a missing semicolon or a one letter typo, because the struggle is real.
Work towards a goal
It may shock and horrify my coworkers to know I’m still learning things. As it stands, some days I even learn more than a thing. Case in point, maybe three weeks ago, somewhere between midnight and “oh god how is it morning already”, my mind was racing with ideas, a cacophony of ponderment. In my twilight madness, a single thought – a bouey of sanity in a sea of the crazies – shot through my mind, gave purchase as I pulled my wits back in order. The thought was this: I needed to learn more about assemblers and assembly language.
Learning something new without context is tough, though. For instance, you probably took 12 years of grammar in school before you even hit college. Think about all the math you’ve taken over the years. You don’t remember a damned thing from it, do you? DO YOU? Wait, how?
Anyway, that’s because most teachers never provide the context around the knowledge. Why something means what it means, how it came to be, how it can actually be used in the real world. You don’t get that kind of information till college, and that’s if you’re lucky. Without knowing the why, who would even care about the how?
So it is with code. Reading about code in a book is all fine and good, but you aren’t really going to care about it till you get something running. So when I decided to learn Assembly, I knew I’d need to have something to use it on. So, of course, I decided I should create a Nintendo Entertainment System game. I know, I know… It’s the obvious choice. We all saw that coming.
Having an end goal in mind helps overcome the hurdle of wading into unknown territory, stabbing in the dark for small glimpses of understanding. It gives a target to track progress against, give a reason to take all the small lessons learned and gain an overall greater understanding. It also helps you remember what you learned, because not only do you know what it is you did, but why you did it that way, what it took to make it happen, and how awesome the end result turned out.
Just the other day I got asked how I knew so much about NES cartridges. So, I assure you, it works.
Read a Book
Just do it, nerd. Go on. I’ll wait.
So remember when I sort of talked down about trying to learn from a book earlier? That’s really only the case when you’re just reading the book. Most books on programming give you real examples and have you build projects along with the text. You build while you read.
In fact, there were things I learned in books I didn’t see for years online. Example: to this day I’ve never seen a PHP tutorial mention the heredoc syntax. It’s probably got something to do with not having read php tutorials in years, but it’s also not something you see a lot. While knowledge of it is a little more widespread than it used to be, the only way I ever would have come across it would have been to read the PHP documentation page by page, and somehow remembered every single word of it.
Instead, I came across it in a book, Beginning PHP5, Apache, and MySQL Web Development, and I remembered it because it was integral to getting something to do somesuch thing. There was a reason to use it. I knew the reason. I’ve never forgotten it.
If you’ve already set your goal – what you hope to make, and you’ve got a peer support group, using a book might just be the quickest way to get up and running with code before you move on and start parkour-coding all up in here.
Get to Typing
The most important thing is to keep at it. I programmed as a hobby for years before I ever thought maybe I wasn’t terrible at it. It takes time, and it takes patience. The first few things you program, in three years, you’ll realize they’re complete garbage. And that’s ok – because recognizing what is garbage means it’s not as good as what you’re writing now. And in a few years, the cycle will repeat. It’s an upward spiral of awesome, where you only get better and better.
At some point you stop writing in code – you just start writing. It just makes sense. Then, one day, it’ll happen. You’ll do it. You’ll elegantly solve a complex problem with very little code. You’ll do it in a way that’s highly reusable and is so straightforward to use. You’ll find yourself actually dialing back the documentation because it would be too redundant. When you do it, you’ll also understand what all that means.
That, my friends, is when code becomes poetry.