Wednesday, December 05, 2007
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.
From: http://www.joelonsoftware.com/items/2007/12/05.html
分享到:
相关推荐
美国著名程序员Joel Spolsky关于软件管理和技术公司管理精辟论述,读来受益匪浅,特别是其中给大学计算机系学生的建议。
Joel on Software[English Version] .rar
Joel on Software 英文版本 学习英文必备 -
Joel On Software 大家都知道这个东西哈。挺不错的
Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work ...
Apress.More.Joel.on.Software.Jun.2008.pdf
软件随想录 - More Joel on Software,好东西啊
Joel_Spolsky对计算机学生的七大建议-- 软件随想录
软件随想录(英文版) - More Joel on Software
简体中文 强烈推荐! 这本书会给你不一样的视角来看软件
Youngberg_Joel_CIS14a_48076 RCC JavaScript Repository 这是我的 Javascript 自述文件
spolsky-sheets:修订的Excel电子表格,用于Joel Spolsky所述的基于证据的计划。 修正案Andreas Traut:添加了一些注释,并对流程进行了少许修改,以使流程更易于理解
PS:以上是按照Joel Spolsky编写更好代码的12个步骤。 满分为12分,可以接受的分数为11分,但满分为10分或更低,这说明您遇到了严重的问题。安装$ npm install --save joel-test用法var joelTest = require ( 'joel...
概率方法十讲(英文版-by_JOEL_SPENCER)。
Joel-Yuhas-Code:代码数据库
Joel说软件 软件书籍
Joel测试:衡量代码好坏的12个准则.pdf
一本影响全世界数百万程序员的网志书 一位软件行业老兵的真知灼见 触人心灵的智慧火花,带你重新审视职业生涯 这个是英文版的,中文版需要自己购买