Tuesday, December 04, 2007
This is part two of the text of a talk delivered to the Yale Computer Science department on November 28. Part one appeared yesterday
.
After
a few years in Redmond, Washington, during which I completely failed to
adapt to my environment, I beat a hasty retreat to New York City. I
stayed on with Microsoft in New York for a few months, where I was a
complete and utter failure as a consultant at Microsoft Consulting, and
then I spent a few years in the mid-90s, when the Internet was first
starting to happen, at Viacom. That’s this big corporate conglomerate
which owned MTV, VH1, Nickelodeon, Blockbuster, Paramount Studios,
Comedy Central, CBS, and a bunch of other entertainment companies. New
York was the first place I got to see what most computer programmers do
for a living. It’s this scary thing called “in house software.” It’s
terrifying. You never want to do in house software. You’re a programmer
for a big corporation that makes, oh, I don’t know, aluminum cans, and
there’s nothing quite available off the shelf which does the exact kind
of aluminum can processing that they need, so they have these in-house
programmers, or they hire companies like Accenture and IBM to send them
overpriced programmers, to write this software. And there are two
reasons this is so frightening: one, because it’s not a very fulfilling
career if you’re a programmer, for a list of reasons which I’ll
enumerate in a moment, but two, it’s frightening because this is what
probably 80% of programming jobs are like, and if you’re not very, very
careful when you graduate, you might find yourself working on in-house
software, by accident, and let me tell you, it can drain the life out
of you.
OK, so, why does it suck to be an in house programmer.
Number
one. You never get to do things the right way. You always have to do
things the expedient way. It costs so much money to hire these
programmers—typically a company like Accenture or IBM would charge $300
an hour for the services of some recent Yale PoliSci grad who took a 6
week course in dot net programming, and who is earning $47,000 a year
and hoping that it’ll provide enough experience to get into business
school—anyway, it costs so much to hire these programmers that you’re
not going to allowed to build things with Ruby on Rails no matter how
cool Ruby is and no matter how spiffy the Ajax is going to be. You’re
going into Visual Studio, you’re going to click on the wizard, you’re
going to drag the little Grid control onto the page, you’re going to
hook it up to the database, and presto, you’re done. It’s good enough.
Get out of there and onto the next thing. That’s the second reason
these jobs suck: as soon as your program gets good enough, you have to
stop working on it. Once the core functionality is there, the main
problem is solved, there is absolutely no return-on-investment, no
business reason to make the software any better. So all of these in
house programs look like a dog’s breakfast: because it’s just not worth
a penny to make them look nice. Forget any pride in workmanship or
craftsmanship you learned in CS323
.
You’re going to churn out embarrassing junk, and then, you’re going to
rush off to patch up last year’s embarrassing junk which is starting to
break down because it wasn’t done right in the first place,
twenty-seven years of that and you get a gold watch. Oh, and they don’t
give gold watches any more. 27 years and you get carpal tunnel
syndrome. Now, at a product company, for example, if you’re a software
developer working on a software product or even an online product like
Google or Facebook, the better you make the product, the better it
sells. The key point about in-house development is that once it’s “good
enough,” you stop. When you’re working on products, you can keep
refining and polishing and refactoring and improving, and if you work
for Facebook, you can spend a whole month optimizing the Ajax
name-choosing gizmo so that it’s really fast and really cool, and all
that effort is worthwhile because it makes your product better than the
competition. So, the number two reason product work is better than
in-house work is that you get to make beautiful things.
Number
three: when you’re a programmer at a software company, the work you’re
doing is directly related to the way the company makes money. That
means, for one thing, that management cares about you. It means you get
the best benefits and the nicest offices and the best chances for
promotion. A programmer is never going to rise to become CEO of Viacom,
but you might well rise to become CEO of a tech company.
Anyway. After Microsoft I took a job at Viacom, because I wanted to
learn something about the internet and Microsoft was willfully ignoring
it in those days. But at Viacom, I was just an in-house programmer,
several layers removed from anybody who did anything that made Viacom
money in any way.
And I could tell that no matter how critical it was for Viacom to
get this internet thing right, when it came time to assign people to
desks, the in-house programmers were stuck with 3 people per cubicle in
a dark part of the office with no line-of-sight to a window, and the
“producers,” I don’t know what they did exactly but they were sort of
the equivalent of Turtle
on Entourage, the producers had their own big windowed offices
overlooking the Hudson River. Once at a Viacom Christmas party I was
introduced to the executive in charge of interactive strategy or
something. A very lofty position. He said something vague and inept
about how interactivity was very important. It was the future. It
convinced me that he had no flipping idea whatsoever what it was that
was happening and what the internet meant or what I did as a
programmer, and he was a little bit scared of it all, but who cares,
because he’s making 2 million dollars a year and I’m just a typist or
“HTML operator” or whatever it is that I did, how hard can it be, his
teenage daughter can do that.
So I moved across the street to Juno Online Services. This was an
early internet provider that gave people free dial-up accounts that
could only be use for email. It wasn’t like Hotmail or Gmail, which
didn’t exist yet, because you didn’t need internet access to begin
with, so it was really free.
Juno
was, allegedly, supported by advertising. It turned out that
advertising to the kinds of people who won’t pay $20 a month for AOL is
not exactly the most lucrative business in the world, so in reality,
Juno was supported by rich investors. But at least Juno was a product
company where programmers were held in high regard, and I felt good
about their mission to provide email to everyone. And indeed I worked
there happily for about three years as a C++ programmer. Eventually,
though, I started to discover that the management philosophy at Juno
was old fashioned
.
The assumption there was that managers exist to tell people what to do.
This is quite upside-down from the way management worked in typical
west-coast high tech companies. What I was used to from the west coast
was an attitude that management is just an annoying, mundane chore
someone has to do so that the smart people can get their work done.
Think of an academic department at a university, where being the
chairperson of the department is actually something of a burden that
nobody really wants to do; they’d much rather be doing research. That’s
the Silicon Valley style of management. Managers exist to get furniture
out of the way so the real talent can do brilliant work.
Juno was founded by very young, very inexperienced people—the
president of the company was 24 years old and it was his first job, not
just his first management job—and somewhere in a book or a movie or a
TV show he had gotten the idea that managers exist to DECIDE.
If there’s one thing I know, it’s that managers have the least
information about every technical issue, and they are the last people
who should be deciding anything. When I was at Microsoft, Mike Maples,
the head of the applications division, used to have people come to him
to resolve some technical debate they were having. And he would juggle
some bowling pins, tell a joke, and tell them to get the hell out of
his office and solve their own damned problems instead of coming to
him, the least qualified person to make a technical decision on its
merits. That was, I thought, the only way to manage smart, highly
qualified people. But the Juno managers, like George Bush, were the
deciders, and there were too many decisions to be made, so they
practiced something I started calling hit-and-run micromanagement: they
dive in from nowhere, micromanage some tiny little issue, like how
dates should be entered in a dialog box, overriding the opinions of all
the highly qualified technical people on the team who had been working
on that problem for weeks, and then they disappeared, so that’s the
hit-and-run part, because there’s some other little brush fire
elsewhere that needs micromanagement.
So, I quit, without a real plan.
From:http://www.joelonsoftware.com/items/2007/12/04.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谈软件 #### 一、书籍简介与背景 《软件随想录》是一本由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:代码数据库