Learning to Write, part 2September 18, 2008
A few months ago, I started a fun little experiment. I wondered what it would be like to learn how to write code and fiction at the same time. I've dabbled in both over the years, making minimal progress and slowly moving on to things that are, well, easier, at least for me. But its become clear recently that these really are dreams of mine, they are part of who I want to be rather than just skills I want to acquire.
Programming has been part of my life since I was a teenager learning Basic on my TI-99/4A. In high school, I took a Pascal class, which I loved. In college, I chose a computer science class (C, of course) for one of my electives, partly because it gave me access to a sweet lab of NeXT boxes. I enjoyed the class enough to briefly consider extending my education for a couple of years to major in computer science, but decided my philosophy degree was more than enough to launch me into the job market.
The next few years involved more dabbling in this and that, mostly in my free time, until I had the chance to write some .NET code, accessing web services in C#. At the same time, I was starting to learn a lot more about server administration, networking, web servers and databases. I took a Java class as well as some Microsoft courses, which tend to be more about the tools (I probably learned more about Visual Studio than actual programming).
I had the opportunity to continue down the development path, but could not turn down the chance to lead a web team. I loved being able to set the direction, manage people and touch all the different parts of web projects, but it also kept me far from development. Thankfully I was wise enough to move our platform to open source, so I gained a lot of experience with (and appreciation for) PHP, PostgreSQL, Apache, Linux, and the command line.
My son started being curious about programming around this time, which launched me on a obsessive (and ongoing) search for the best way for a beginner to learn how to program. Eventually, I realized that this was maybe a little bit for me as well (hey, some dads make their kids play football). I hope to write a post eventually on what I learned along the way, but the short answer is Ruby and Chris Pine's book.
A year ago, I had the incredible opportunity to join a web startup. The fact that it was a Ruby on Rails shop made it even more attractive, and I've be able to learn a huge amount about the full Rails stack from my ridiculously talented co-workers. This taste has only made me want to learn more.
I've spent a lot of evenings over the last few months reading some terrific development books, watching screencasts, and writing some rudimentary code. Ruby truly is a revelation. You hear the words "joy" and "happiness" used over and over again when people talk about Ruby and Rails, and it's true. Whenever you think, "I don't know how to do this, but it would make sense if it was something like this", it usually turns out to be true. Compared to most languages, the code is so simple and readable. Most anyone could understand Ruby code and learn to write it with a bit of instruction. It's the perfect language for a beginner and I hope it becomes common in high school computer classes.
I just got back from Denver, where I was privileged to spend 3 days with two of the top Ruby on Rails experts around, Dave Thomas and Chad Fowler. Pragmatic Studio's Rails class was the best training I have ever had. Just 40 students in a comfortable room, tons of coding opportunities, and entertaining instructors with heavy real world knowledge. Now it's time to put the books down and write.
Sometimes I wonder why I've never lost my interest in programming. Developers are like the carpenters of old, people who can take a pencil drawing and build something real out of it. I love the problem solving aspect of writing code, along with the power to make ideas happen. And I admit to being intrigued by the art of it as well, the drive to write beautiful code, constantly editing and improving until it is truly creative, elegant and expressive.
A little like fiction, no?