hyphenated -
« Back to blog

learning to program through osmosis

There are times when I wish learning by osmosis was less dream and more reality. Studying for exams is probably the circumstance where I wished this the most (you know: step 1 - place textbook under pillow, step 2 - sleep, step 3 - wake up refreshed the next morning knowing the contents of all 14 chapters and the glossary, step 4 - ace exam). But I've also fantasized about learning by osmosis when it came to developing some basic web design and programming skills. Before I mislead you into thinking that I developed a way to do just that, the closest I've gotten to living the dream is by moving to San Francisco, being unemployed, and living with four YC alumni.

I've created some websites in the past using WYSIWYG editors. I won't be posting links to them here because they're, well, ugly. At the time, I didn't have time to learn enough HTML and CSS to do away with Dreamweaver and tables and all of their inherently frustrating limitations.

In contrast, when I arrived in SF I had time. Lots and lots of time. And I had a premise for a site. And I was surrounded by guys and their Macbooks and their nearly constant creativity. Not only were they creating things, they were creative in the sense that creativity is synonymous with innovation, initiative, enterprise, and resourcefulness. And I was inspired. I bought a domain.

After asking my roommies a few questions, I concluded that I was starting so close to knowing nothing about web development that perusing the results of Google searches would suffice as my guide. Sensei Google. I borrowed an O'Reilly book, but found myself returning to Google for tidbits of assistance (with a background in biology, most of my time with the O'Reilly book was spent speculating on what the species of fish was on the cover... salmon, in case you're also curious).

I began by mocking stuff out in Photoshop by following a few online tutorials. One of my roommies was hosting a houseguest who worked as a graphic designer, and he shared a few tips and tricks. I played with colours and wondered aloud why Photoshop tools were so counter-intuitive. Needless to say, the ++Z keys got a lot of use. 

Once I had a better idea of what the site would look like, got some feedback from a graphic designer friend, and determined the extent of the site's functionality, I debated whether I should learn Ruby on Rails (the language of choice around here) for the backend. Ultimately, I decided to create a custom theme for Wordpress (despite being warned that Wordpress could be a nightmare). Enter more tutorials.

I started with a template from a tutorial and started modifying it. Trial and error was the name of the game. I came to appreciate that the method isn't called "trail and flawless" - there was a lot of error. Starting with the CSS in a TextEdit window, I made changes, saved, and refreshed. And I did that again and again and again. For awhile, I would enter #000000 and expect white to appear. I then realized that, because the absence of all light/color is black, the nomenclature actually made sense. I got pretty far just by editing the CSS, but reached a point where I couldn't ignore the HTML any longer. 

More trial, more error. I'd think that I was on the right track, then I'd make a change, save, refresh, and (fingers crossed) ... error. I began to understand more of the nomenclature. I developed a love-hate, or rather hate-love, relationship with semicolons (hating them when one was missing and the structure of the page suddenly collapsed in a heap of div rubble and loving them when inserting one would miraculously fix everything). When trying to float divs, I found myself envisioning the position of lily-pads in a pond. Eventually, I got to the point where I would make a change in the code and was no longer surprised that the desired change would materialize in the browser window. The code made sense and I was able to appreciate that the code I was using as template was inelegant and inefficient. The experience was analogous to learning the basics of a foreign language using a textbook only to discover that the textbook was poorly written.

Then came Wordpress. Kevin graciously set up the server side of things and I began the process of integration. The tutorial was less than helpful, but I followed it to the best of my limited abilities. Ultimately, Kevin helped me navigate the intersection of HTML and PHP. More trial. More error. But I was learning. As a result, I have a website: www.amerishock.com

It's not perfect, but it's far from fail and it's mine. The design is mine. The underlying structure (minus the Wordpress code) is mine. The idea is mine. And, most importantly, I learned to program. Admittedly, what I learned was very basic but it can still be classified as learning.

While it wasn't learning by osmosis, the learning process was relatively friction-free. Being immersed in a culture where spending hours at home staring into the glowing screen of a laptop is seen as creative and productive, rather than antisocial, makes it easy to put in the time and effort needed to learn to code. And if you already code, I can't help but conclude that living in SF can only be good for productivity. Sharing an apartment with YC alumn can't hurt, either.

Comments (4)

Jan 26, 2010
Becka said...
Hi there! I received the link to your blog post here via my boyfriend Mike who is friends with Paul who is roommates with Kevin (and you?) I, too, am unemployed in SF and feel the obligation to learn coding skills in the epicenter of the tech-driven world that is San Francisco and Silicon Valley and maybe move towards a more techy career someday (graphic design is especially interesting because of the art elements). I'm curious to hear more about your experience learning code (I'm around the lingo *all* the time too from these YC folks) and possibly learn from you (because my boyfriend is past the point of explaining things in layman's terms!) If you'd like to meet up with me sometime for coffee or whatever let me know! You can email me or get my number from Paul. Hope to hear from you soon and thanks for the hilarious / intriguing blog post :)
Jan 27, 2010
paul said...
this is awesome -- one of the hardest skills to learn in programming is debugging, and it sounds like you have been learning that. another of the hardest things, is to read other people's code, and sometimes to realize it is bad code -- that is confidence!
Jan 30, 2010
megan said...
Arianne, this is great. Do you remember those really horrible Dreamweaver-based sites we had to create for Conservation Biology? With the ugly, wonky template? Your site is a major improvement. ;)
Feb 07, 2010
Arianne said...
Thanks for the positive response! And yes, Megan, I remember the horrible, pukey template all too clearly :)

Leave a comment...

 
Got an account with one of these? Login here, or just enter your comment below.
Posterous-login    twitter