Skip to main content

Quick review: "Dreaming in Code" and why isn't Programming taught like Creative Writing?

I finally finished "Dreaming in Code" by Scott Rosenberg last week. I absolutely loved it! (BTW, it was brought to my attention that I seem to "absolutely love" everything I review/watch. The person who pointed this out believes its a personality trait/problem.)

The book chronicles the development of "Chandler", an open-source Personal Information Manager whose development was sponsored by Mitch Kapor. However what makes the book so great its use of this story as a way to frame explanations and discussions about the development, design and process of software. While reading it, I found myself smiling and nodding in agreement with so many issues and situations I recognized from work, and from school; issues fundamental to writing software, issues unavoidable in managing large software projects and frankly so many things I thought we did so well at work (when I say "we" here I really mean my managers.:))

I also ended up learning a lot: about the history of programming, the colorful characters involved, and some fascinating opinions/complaints that different people have about the future of software development.

A discussion that stayed with me for a while though was the argument that programming should be taught like creative writing rather than like engineering. Having experienced a bit of both I can see the argument, though I can see the pitfalls as well.

From the book:

"...Is programming a kind of creative writing? The notion seems outlandish at first blush. Any discipline that involves complex mathematics and symbolic logic does not seem to share the same cubbyhole with poetry and self-expression. Yet the programming field could learn much from the writing world, argues Richard Gabriel, a veteran of Lisp and object-oriented programming who is now a Distinguished Engineer at Sun. 'My view is that we should train developers the way we train creative people like poets and artists. People may say, "Wall, that sounds really nuts." But what do people do when they're being trained, for example, to get a master of fine arts in poetry? They study great works of poetry. Do we do that in out software engineering disciplines? No. You don't look at the source code for great pieces of software. Or look at the architecture of great pieces of software. You don't look at their design. You don't study the lives of great software designers. So you don't study the literature of the thing you're trying to build.'"

This is essentially true. Most programmers leave school (or not) armed with very basic tools (programming languages, logic, data structures, algorithms etc.) At best they've learned some software methodologies and design patterns. I didn't believe it earlier, but chatting with some of my friends in large software shops I'm now convinced that most programmers suck.

Would they be better served by getting this form of education?

The book correctly points out that there are many reasons that this is hard:
availability of "good" code, agreement on what is "good" code, how time-consuming this is and just mustering the enthusiasm for something like this in a culture that will view this as uncool.

I'll add another one to the list: goals.

Most people that want careers as writers are driven by very different goals than people that want careers as software engineers. The amount of time they can spend, and are willing to spend, to perfect their "crafts" are very different. Still I think introducing a software practicum class of sorts (where you write code, review your peers' code and review recognized "good" code) and combining it with teaching design patterns could lead to better results. In fact, just getting it into people's heads that reading other people's code and that writing readable code is valuable might be worth it in itself.


Popular posts from this blog

Everyone's struggle is real... at the very least to them

A couple of weeks ago, while in line waiting to pick up some food I'd just ordered, I overheard two conversations - I don't make a habit of this, but it's hard to not hear things when you leave your phone behind. :-/
My first reactions as I heard both of these conversations was annoyance at the protagonist in one and admiration for the other. Both conversations stayed with me for a while, but it took me some time to realize that was unfair on my part to be annoyed at the person that I was annoyed at.

So about these conversations:
The first was between someone working there and a friend. She was sympathizing with her friend who'd be starting a new job leaving this place. "Oh, it's minimum wage again?", she said with concern in her voice. "Yes, but it's fine", said her friend. The job was closer to where she lived so she thought she'd make about the same and she might get home a little earlier to her daughter some evenings though the hours…

Yup - humans still lack humanity

Every once in a while, I'm reminded that humans can be completely lacking in humanity.

My wife had the following experience yesterday on her ride back home. She got on the train and found a seat. The train was unusually crowded and it looked a lot of people had to stand for a long ride. An elderly Asian gentleman carrying a few things in both hands, was looking for spot, started to complain smilingly about the train being so full and stood in the aisle at the back of the carriage some seats away from her.

She expected someone closer to gentleman in the aisle (lots of younger people on the train) to give him their seat.

No one did.

The train started, and it was clear the man was having a lot of trouble standing up. Then at the next stop there was actually an announcement saying the train was full so please give up your seats to people who needed them.

Still nobody moved.

My wife got up walked to the end of the train and asked the gentleman to go over to her seat. She still couldn&#…

Whimsy when I changed my profile picture...

I changed by profile picture at work.

Later in the day, two people on my team had changed their profile pictures to these.. :-)

It made my day!

I changed my profile pic again today. Let's see how fast anyone catches on this time. :-)