Toolbars R us
This is part three of the text of a talk delivered to the Yale Computer Science department on November 28. Part one and part two already appeared.
I despaired of finding a company to work for where programmers
were treated like talent and not like typists, and decided I would have to
start my own. In those days, I was seeing lots of really dumb people with
really dumb business plans making internet companies, and I thought, hey, if
I can be, say, 10% less dumb than them, that should be easy, maybe I can make
a company too, and in my company, we’d do things right for a change. We’d
treat programmers with respect, we’d make high quality products, we wouldn’t
take any shit from VCs or 24-year-olds playing President, we’d care about our
customers and solve their problems when they called, instead of blaming
everything on Microsoft, and we’d let our customers decide whether or not to
pay us. At Fog Creek we’ll give anyone their money back with no questions
asked under any circumstances whatsoever. Keeps us honest.
So, it was the summer of 2000, and I had taken some time off from work while I hatched the plans for Fog Creek Software and went to the beach a lot. During that period I started writing up some of the things I had learned over the course of my career on a website called Joel on Software. In those early days before blogs were invented, a programmer named Dave Winer had set up a system called EditThisPage.com where anyone could post things to the web in a sort-of blog like format. Joel on Software grew quickly and gave me a pulpit where I could write about software development and actually get some people to pay attention to what I was saying. The site consists of fairly unoriginal thoughts, combined with jokes. It was successful because I used a slightly larger font than the average website, making it easy to read. It’s always hard to figure out how many people read the site, especially when you don’t bother counting them, but typical articles on that site get read by somewhere between 100,000 and a million people, depending on how popular the topic is.
What I do on Joel on Software—writing articles about somewhat
technical topics—is something I learned here in the CS department, too.
Here’s the story behind that. In 1989 Yale was pretty good at AI, and one of
the big name professors, Roger
Schank, came and gave a little talk at Hillel about some of his AI theories
about scripts and schemas and slots and all that kind of stuff. Now essentially,
I suspect from reading his work that it was the same speech he’d been giving
for twenty years, and he had spent twenty years of his career writing little
programs using these theories, presumably to test them, and they didn’t work,
but somehow the theories never got discarded. He did seem like a brilliant man,
and I wanted to take a course with him, but he was well known for hating
undergraduates, so the only option was to take this course called Algorithmic
Thinking—CS115—basically, a watered-down gut group IV class designed for
poets. It was technically in the CS department, but the faculty was so
completely unimpressed that you were not allowed to count it towards a CS major.
Although it was the largest class by enrollment in the CS department, I cringed
every time I heard my history-major friends referring to the class as
“computer science.” A typical assignment was to write an essay on whether
machines can think or not. You can see why we weren’t allowed to count it
towards a CS degree. In fact, I would not be entirely surprised if you revoke
my degree today, retroactively, upon learning that I took this class.
The best thing about Algorithmic Thinking was that you had to write a lot. There were 13 papers—one every week. You didn’t get grades. Well, you did. Well, ok, there’s a story there. One of the reasons Schank hated undergrads so much was that they were obsessed with grades. He wanted to talk about whether computers could think and all undergrads wanted to talk about was why their paper got a B instead of an A. At the beginning of the term, he made a big speech about how grades are evil, and decided that the only grade you could get on a paper was a little check mark to signify that some grad student read it. Over time, he wanted to recognize the really good papers, so he added check-PLUS, and then there were some really lame papers, so he started giving out check-minuses, and I think I got a check-plus-plus once. But grades: never.
And despite the fact that CS115 didn’t count towards the major,
all this experience writing about slightly technical topics turned out to be the
most useful thing I got out of the CS department. Being able to write clearly
on technical topics is the difference between being a grunt individual
contributor programmer and being a leader. My first job at Microsoft was as a
program manager on the Excel team, writing the technical specification for this
huge programming system called Visual Basic for Applications. This document was
something like 500 pages long, and every morning literally hundreds of people
came into work and read my spec to figure out what to do next. That included
programmers, testers, marketing people, documentation writers, and localizers
around the world. I noticed that the really good program managers at Microsoft
were the ones who could write really well. Microsoft flipped its corporate
strategy 180 degrees based on a single compelling email that Steve Sinofsky
wrote called Cornell is Wired.
The people who get to decide the terms of the debate are the ones who can write.
The C programming language took over because The C
Programming Language was such a great book.
So anyway, those were the highlights of CS. CS 115, in which I learned to write, one lecture in Dynamic Logic, in which I learned not to go to graduate school, and CS 322, in which I learned the rites and rituals of the Unix church and had a good time writing a lot of code. The main thing you don’t learn with a CS degree is how to develop software, although you will probably build up certain muscles in your brain that may help you later if you decide that developing software is what you want to do. The other thing you can do, if you want to learn how to develop software, is send your resume to jobs@fogcreek.com, and apply for a summer internship, and we’ll teach you a thing or two about the subject.
Thank you very much for your time.
Not loving your job? Visit the Joel on Software Job Board: Great software jobs, great people.
]]>| P | Ú | S | Č | P | S | N |
|---|---|---|---|---|---|---|
| « Čer | ||||||
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
Leave a reply
You must be logged in to post a comment.