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 on Software》是由Joel Spolsky撰写的一本著名IT著作,主要涵盖了软件开发、团队管理、软件工程以及互联网行业的多个重要方面。这本书以其深入浅出的讲解和实战经验分享,深受程序员、项目经理和技术领导者们...
在《Joel on Software》中,Spolsky分享了他的许多核心观点,这些观点对于理解软件开发的本质及其背后的商业逻辑至关重要。以下是一些关键知识点的详细说明: 1. **软件质量**:Joel强调软件质量的重要性,主张开发...
美国著名程序员Joel Spolsky关于软件管理和技术公司管理精辟论述,读来受益匪浅,特别是其中给大学计算机系学生的建议。
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 ...
《More Joel on Software》是Joel Spolsky的著作,由Apress出版社于2008年出版。这本书深入探讨了软件开发、设计与管理领域的多样性和相关问题,旨在为软件开发者、设计师、经理以及与他们合作的人士提供有价值的...
《软件随想录 - More Joel on Software》是乔尔·斯波斯基(Joel Spolsky)的一本经典著作,他是一位知名的软件开发者、企业家和博客作者。这本书汇集了他在软件开发、团队管理、产品设计等多个领域的深入思考和经验...
### Joel_Spolsky对计算机学生的七大建议 #### 第一大建议:毕业前练好写作技巧 Joel Spolsky强调,对于计算机专业的学生而言,掌握优秀的写作技能是至关重要的。他通过举例说明了这一观点: - **Linus Torvalds*...
根据提供的文件内容,可以看出这是一篇关于Joel Spolsky和他的网站Joel on Software的文章,但文本中包含了大量的乱码和非中文字符,这可能是由于编码错误或原文本的特殊处理造成的。尽管如此,我们仍然可以从有限的...
根据提供的文件信息,我们可以推断出这是一本关于软件开发、设计与管理的书籍,作者是Joel Spolsky。本书包含了对各种与软件开发者、设计师及管理者相关的议题的深入探讨,同时也为那些与这些专业人士合作的人提供了...
Joel Spolsky是一位在软件开发领域有着丰富经验的老兵,他的思想不仅对软件开发者有启发性,对于设计人员、管理人员乃至与之合作的所有人也同样具有重要意义。 #### 二、作者Joel Spolsky介绍 Joel Spolsky是业界...
根据提供的文件信息,我们可以推断出这是一本关于软件写作的书籍,名为《The Best Software Writing I》,由Joel Spolsky编辑选择并作序。虽然我们没有完整的书籍内容,但可以通过标题、描述以及部分版权页的信息来...
《深入理解Youngberg_Joel_CIS14A_48076:RCC JavaScript 存储库》 在当今互联网技术飞速发展的时代,JavaScript作为前端开发的核心语言,其重要性不言而喻。"Youngberg_Joel_CIS14A_48076: RCC JavaScript 存储库...
《基于证据的计划:Joel Spolsky的修订版Excel电子表格解析》 在项目管理领域,有效的规划和控制是成功的关键。Joel Spolsky,一位知名的软件工程师和企业家,提出了基于证据的计划方法,强调了数据驱动决策的重要...
PS:以上是按照Joel Spolsky编写更好代码的12个步骤。 满分为12分,可以接受的分数为11分,但满分为10分或更低,这说明您遇到了严重的问题。安装$ npm install --save joel-test用法var joelTest = require ( 'joel...
Joel-Yuhas-Code:代码数据库