程序员阿士顿的故事[zz]

程序员阿士顿的故事

2011-03-19 21:37:51

前几天有人在 Stack Exchange 上提了一个问题 How can a new
programmer impress the software engineer
(boss)?(作为新手程序员如何给软件工程师出身的老板留下好印象?),Joel Spolsky(Joel on Software
的主人,《软件随想录》的作者)
看到了这个问题,他没有正面回答,而是在下面讲了悲催的程序员阿士顿的故事。

正文:

我告诉过你有关阿士顿的事情吗?

阿士顿是一个典型的吃玉米长大的农场男孩,他的父母曾经是嬉皮士,从来没有真正地同心协力过,直到有一天他的妈妈继承了密歇根农村的15亩地。然后他全家搬到了那里,买了一对奶山羊,靠在农贸市场把有机山羊奶酪卖给雅皮士们谋生。

那个时候阿士顿才10岁,他需要每天早晨4点起床给那些该死的山羊挤奶,这活非常累。阿士顿很喜欢上学,因为上学就意味着不需要跪在羊粪里工作了。整个高中他都异常努力,希望可以拿到一所名牌大学的奖学金,然后他就可以离开农场了。在大学里,他发现大学生活比农场的生活轻松多了,所以搞不明白为什么每个人不能像他那样每科都拿到A。他选择了软件工程作为自己的专业,因为他深信一个工程师绝对不需要早晨4点就起床。

阿士顿就这样从学校毕业了,他对软件产业并没有很多了解,所以他去了招聘会,申请了3份工作,并且都拿到了offer
。然后他挑了一个给钱最多的offer:年薪高达 32,000美元,这是一家位于密歇根西南部的大家具公司,为全世界的企业生产办公小隔间(cubicle
farm)。入职之后,因为阿士顿再也不想回到农场了,所以他决定给他的老板查理谢尔曼留下一个好印象。

“这个可不简单”,坐在他隔壁的同事杰夫说:“她在这里也算是个传奇人物了。”

“你的意思是?”
他说。

“嗯,你还记得几年前吗?那个时候到处都是关于千年虫的话题。”

阿士顿可能是太年轻了。“千年虫?”

“是这样的,没有人预料到在60年代写的程序在2000年还会继续运行,所以当时给年份只留了2个数字的存储空间,也就是说1999
被存储为 99 。所以当 2000 年到来的时候,计算机系统就会崩溃,因为它会试图将 100 存储成2个数字。”

“真的?我还以为那只是个传说,”
阿士顿说。

“世界上所有其它的公司都没有发生什么事故,”
杰夫说。“因为它们花了数十亿美元去检查每一行代码。但是在我们公司,当然了,因为他们是狗娘养的混蛋,所以他们不愿意做任何测试。”

“完全没有做吗?”

“几乎没有。零测试。所以你瞧,当人们在2000年1月2号开始工作的时候,发现所有东西都不能工作了。他们不能打印生产计划,甚至不能打开半个装配生产线。没有人知道如何进行工作,工厂差不多停滞了。”

“你在开玩笑。”
阿士顿说。

“绝对没有。工厂整个都停止运转了。这个时候查理出现了。她那个时候还是个新人,曾经在微软,可能是NASA,也可能是其它机构工作过……没有人清楚为什么像她那样的牛人会到我们这种地方工作。然而她坐了下来,然后开始写代码。然后写代码。继续写代码。

查理整整写了九天代码,这九天她没有睡觉,没有吃东西,有些人说她甚至没有去过洗手间。她检查了一个又一个系统并且逐个修复了它们。那真是一件壮观的事情,老天,那些需要被修复的可是
COBOL(一种非常古老的编程语言)系统。在整个工厂处于停滞状态的时候,查理派人去大学图书馆找来了古老的 COBOL
手册。装配线上的工人站着直哆嗦,因为连恒温器也有千年虫问题。而查理则一杯接一杯地喝咖啡,像一个疯婆子一样不断敲击键盘。”

“哇。她没有去过洗手间?”

“呃,那个部分可能有稍微那么一点点的夸张成分,但是她的确连续9天工作24小时。总之,在1月11号的时候,就在开工前一天的5分钟,她走出了她的隔间,来到了打印机面前,按下了一个按钮,然后,奇迹出现了!生产计划打印出来了,团队计划也打印出来了。一切都是完美的,经过了完美的格式化,使用了一个稍微较小的字体把
‘2000’放到了原来写‘99’的地方,她甚至还写了一个新的优先级优化系统,可以帮助工人在不得罪那么多客户的情况下赶上过去9天的生产进度。所有的装配线都开始工作,好像从来没有出现过错误一样,供暖也恢复了,打印出来的发票的年份由‘19100’变成了‘2000′。而且,之后谁也没有找到过一个bug.”

“得了吧!”
阿士顿说。“谁也写不出没有bug的代码。”

“她做到了。我亲眼看到的。这是他们第一天无间断地生产了相当于以往两天生产的小隔间。”

阿士顿目瞪口呆。“这简直是史诗阿。我怎么才能做到那样?”

“你做不到,伙计,没人能做到”
杰夫边说边回到了自己的电脑前面,继续玩已经玩了4个多月的斯波克和蝙蝠侠之间的在线战争游戏。

阿士顿不是一个轻言放弃的人,他发誓某一天他也会做一些富有传奇色彩的事情。但现实情况是,再也没有出现另外一个千年虫问题。而且在密歇根的那个地方,没有人可以提供一丁点儿关于如何写好程序的信息。事实上几乎没有什么事情需要程序员去做。分配给阿士顿去做的都是一些无聊的小项目……有一次他花了三个星期来处理这样一个事情:由于两个不同的销售税区域使用了相同邮政编码,导致在某个县的销售税是错误的。有趣的是,这个县位于纽约一个人烟稀少的地方,那里没有人买过办公小隔间,公司在那里也从来没有一个客户,所以他写的代码永远都不会运行。

日子就这样过去了。

两年来阿士顿一直带着热情和兴奋投入工作,迫不及待地想有所作为,想做一些了不起的事情。与此同时,他的同事却在上网冲浪,给朋友发短信,连续几个小时地玩电脑纸牌。

坐在他旁边的那个同事杰夫,只有一个工作内容:每周更新一个“显示本周有多少人在工作中受伤”的
Excel
电子表格。从来没有人受过伤。每周杰夫都打开那个电子表格,然后移动到页面的底部,在那里输入日期和一个数字0,点击保存,然后就完成了工作。

阿士顿甚至帮杰夫写了一个宏来自动化他的工作。杰夫不想被逮到,所以他拒绝安装这个宏。从那之后他们的关系就变僵了,真是尴尬。

在阿士顿工作两周年的那天早晨,他和以往一样开车去工作,然后忽然意识到了一些事情。

他写过的任何一行代码都没有运行过。

过去两年内他做的任何一件事情都没有对世界产生过什么影响。

而且在密歇根州的这个地方气温他妈的有24度,天空是灰色的,弥漫着臭味。他开的本田车也是一坨垃圾,在这个小镇上他没有任何朋友,他自己也什么都不是。

当他开车到林肯大街的时候,他看到了左边他所在的那个家具公司。在公司园区前面飘扬着三面旗帜:美国国旗,伟大的密歇根州的州旗以及一面有公司标识的红白相间的旗帜。他开车进入了转弯车道等待左转,他的前面有一长排车,在高峰期的时候需要等四到五个红绿灯才可以左转,所以阿士顿有足够的时间来回想他写过的代码有没有哪怕一行是被别人使用过的。

没有。他怔怔地留下了眼泪。

然后他没有左转,直接往前开了出去,这差点酿成了一起交通事故。阿士顿忘记了自己已经打了转向灯,而打了转向灯就意味着你不能直接往前开。

他沿着林肯大道开了下去,然后上了高速公路,他只是不停地往前开,一直来到了机场。他把他的垃圾本田扔在了航站楼的前面,心里非常清楚它会被拖走。他甚至没有去关车门就径直走到了柜台前面买了下一趟飞往旧金山的航班的机票,20分钟内起飞。然后他上了飞机,永远地离开了密歇根。

英文原文:

Did
I ever tell you about Ashton?

Ashton was your classic corn-fed farm boy.
His parents had been hippies who never really managed to get their acts together
until his mother inherited 15 acres in a rural part of Michigan. The family
moved out there, bought a couple of dairy goats, and struggled to make a living
selling organic goat cheese to the yuppies at the Ann Arbor Farmer’s
Market.

From the time he was ten years old, Ashton had to wake up every
morning at 4:00 a.m. and milk those damn goats, and it was exhausting. Ashton
loved going to school because it meant he wasn’t working knee-deep in goat poop.
Throughout high school, he studied his ass off, hoping that a scholarship to a
good university would be his ticket out of the farm. He found college to be so
much easier than farm life that he didn’t understand why everyone else didn’t
get straight A’s like him. He majored in Software Engineering because he
couldn’t imagine engineers ever being required to wake up at 4:00
a.m.

Ashton graduated from school without knowing much about the software
industry, really, so he went to the career fair, applied for three jobs, got
accepted by all three, and picked the one that paid the most: something insane
like $32,000 a year, working at a big furniture company in the southwestern part
of the state that manufactured cubicle farms for corporations all over the
world. He never wanted to see a farm again, so he was determined to make a good
impression on his boss, Charlie Sherman.

“That’s not going to be easy,”
his cubicle-mate, Jeff, said. “She’s something of a legend here.”

“What
do you mean?” he asked.

“Well, you remember a few years ago, when there
was all that uproar about Y2K?”

Ashton was probably too young.
“Y2K?”

“You know, nobody expected that all the old computer programs
written in the 1960s would still be running in 2000, so they only had room for
two digits for the year. Instead of storing 1999, they would store 99. And then
when the year flipped over on January 1st, 2000, the computer systems crashed,
because they tried to fit “100

” in two digits.

“Really? I thought
that was a myth,” Ashton said.

“At every other company in the world,
nothing happened,” Jeff said. “They spent billions of dollars checking every
line of code. But here, of course, they’re cheap bastards, so they didn’t bother
doing any testing.”

“Not at all?”

“Zilch. Zero testing. Nada. And
lo and behold, when people staggered back into work on January 2nd, not a single
thing worked. They couldn’t print production schedules. They couldn’t get half
of the assembly lines to even turn on. And nobody knew what shifts they were
supposed to be working. The factory literally came to a
standstill.”

“You’re kidding,” Ashton said.

“I shit you not. The
factory was totally silent. Now, Charlie, she was new then. She had been working
at Microsoft, or NASA, or something… nobody could figure out why someone like
her would be working in our little armpit of a company. But she sat down, and
she started coding. And coding. And coding.

“Charlie coded for nine days
straight. Nine days without sleeping, without eating, some people even claimed
she never went to the bathroom. She went from system to system and literally
fixed all of them. It was something to behold. My God, there were COBOL systems
in there that needed to be fixed. The whole factory at a standstill, and Charlie
is sending people to the university library in Ann Arbor to find old COBOL
manuals.

Assembly-line workers are standing around shivering, because
even the thermostats had a Y2K bug. And Charlie is drinking cup after cup of
coffee and typing like a madwoman.”

“Wow. And she never went to the
bathroom?”

“Well, that part might be a little bit of an exaggeration. But
she really did work 24 hours for nine days straight. Anyway, on January 11th,
about five minutes before the day shift is supposed to start, she comes out of
her cubicle, goes to the line printer, hits a button, and boom! out comes the
production schedules, and the team schedules, and everything is perfect,
perfectly formatted, using a slightly smaller font so that the “2000” fits where
it used to say “99,” and she’s even written a new priority optimizing system
that helps them catch up with 9 days of missed production without pissing off
too many customers, and all the assembly lines start running like nothing was
ever wrong, and the heat comes on, and the invoices come out printed with ‘2000’
as the year instead of ‘19100,’ and after that day, nobody found a single
bug.”

“Oh come on!” Ashton says. “Nobody writes code without
bugs.”

“She did. I saw it with my own eyes. The first day back they ran
two days worth of cubicles without a hiccup.”

Ashton was dumbstruck.
“That’s epic. How can I live up to that?”

“You can’t, buddy, nobody can,”
Jeff said, turning back to his computer terminal, where he resumed an online
flame war over who would win in a fight, Spock or Batman, which had been raging
for over four months.

Not one to give up, Ashton swore he would, one day,
do something legendary. But the truth is, there never was another Y2K. And
nobody, in that part of Michigan, gave a rat’s ass about good programming. There
was almost nothing for the programmers to do, in fact. Ashton got dumb little
projects assigned to him… at one point he spent three weeks working on handling
a case where the sales tax in one particular county was wrong because some zip
code spanned two different sales tax zones. The funny thing was, it was in some
unpopulated part of New York State where nobody ever bought office cubicles, and
they had never had a customer there, so his code

would never
run.

Ever.

For two years Ashton came into work enthusiastic and
excited, and dying to make a difference and do something terrific and awesome,
while his coworkers surfed the Internet, sent instant messages to their friends,
and played computer solitaire for hours.

Jeff, his cubicle-mate, only had
one responsibility: updating the weekly Excel spreadsheet indicating how many
people were hurt on the job that week. Nobody ever was. Once a week, Jeff opened
the spreadsheet, went to the bottom of the page, entered the date and a zero,
hit save, and that was that.

Ashton even wrote a macro for Jeff that
automated that one task. Jeff didn’t want to get caught, so he refused to
install it. They weren’t on speaking terms after that. It was awkward.

On
the morning of his two year anniversary at the cubicle company, Ashton was
driving to work when he realized something.

Not one line of code that he
had written had ever run.

Not one thing he had done in two years of work
made any impact on the world.

And it was fucking 24 degrees in that part
of Michigan, and it was gray, and smelly, and his Honda was a piece of crap, and
he didn’t have any friends in town, and nothing he did mattered.

As he
drove down Lincoln Avenue, he saw the furniture company ahead on the left. Three
flags fluttered in front of the corporate campus: an American flag, a flag of
the great state of Michigan, and a white and red flag with the company logo. He
got in the turning lane behind a long line of cars waiting to turn left. It
always took four or five traffic light cycles, at rush hour, to make the turn,
so Ashton had plenty of time to try to remember if any code he had ever written
was ever used by anyone.

And it hadn’t. And he fought back a
tear.

And instead of turning left, he went straight, almost causing an
accident because he forgot that the left turn light didn’t mean you could go
straight.

And he drove right down Lincoln Avenue, and got onto the Gerald
Ford freeway, and he just kept driving until he got to the airport over in Grand
Rapids, and he left his crappy old Honda out right in front of the terminal,
knowing perfectly well it would be towed, and didn’t even close the car door,
and he walked right up to the Frontier Airlines counter and he bought himself a
ticket on the very next flight to San Francisco, which was leaving in 20
minutes, and he got on the plane, and he left Michigan
forever.

================== 我是分割线 =============

有人在这篇文章下面回复说:“The
story continues: He went to work for Google, where he worked on Wave. And again,
noone was using his code.” (故事继续:他去了Google编写 Google Wave. 所以,还是没有人使用他的代码。:D
)……哎……

PS:

某一天的时候,同事用mail把这个悲催的程序员的小故事发给team看。这个小故事在同事间流转了一圈,也没有引起很大的反应吧。当时看的时候,想到自己我写过的代码也许也是如此悲催的下场的时候,小小的伤心了一下。不过也就是小小的伤心了一下,就忘了吧。
不过后来的某些时候,总是会像阿士顿那样,忽然意识到了一些事情:"他写过的任何一行代码都没有运行过。过去两年内他做的任何一件事情都没有对世界产生过什么影响。"

难道我的工作是可有可无的吗?我做的事情也许换成其它的任何也都是可以完成的吧。我做的事情有没有对这个世界产生过什么影响,亦或是改变过什么呢?

想到这些的时候,我忽然觉得摸到了一些什么样的线索,所以可以做出一些改变吧~具体是什么呢?

再PS:
昨晚看了《社交网络》,对两件事情有了更加深刻的体验:
1.
任何的成功背后,都隐藏着巨大的艰辛。人们总是容易被成功的光环所吸引,而忽略了过程。
还是那句老话:没有人能随随便便成功。
2.
执行力是成功的充分且必要的条件。
Instead of thinking about doing something,do
something.与其空想,不如马上行动。

程序员阿士顿的故事[zz]

时间: 2024-11-04 17:56:20

程序员阿士顿的故事[zz]的相关文章

程序员和产品经理的故事

摘要:韩寒在<长安乱>里说:佛是你打死我你就超度了我,而道是你打不死我我就超度了你.小编坐在办公室的角落里,看着公司的PM和程序员恨不得分分钟拿刀砍了对方,还要在一起改需求,就开始为他们的潜在信仰归属定义不清而纠结. 任何一个团队里都有因为工作而纠缠不休.爱恨交织的两方,在科技公司产品经理和程序员不幸中枪.其实他们所有纠葛的起因也非常简单,无非是一个提出需求,而另一方需要去实现.小编乱想一下,如果程序员嫁给了产品经理,那肯定是后者说想吃什么,而程序员去默默做出来,想想还不错. 产品经理常常在心

程序员加入创业公司失败案例

今天看到一篇文章<万众传业,程序员的血泪史>里面讲了几个很典型的加入创业公司失败案例,值得每一个想找创业公司你程序员思考,现将故事转载如下. 故事一.少听『商业精英』讲故事,听多了中毒 首先你必须承认,创始人 CEO 都是特别能说的家伙.一个有判断能力的明智的程序员,首先需要具备的品质就是要保持冷静,不要轻易被人打鸡血. 下面是一朋友(因为隐私原因,他让我不提名字,我就直接 copy 故事了)的创业经历和总结反思,写得非常受用,我之前也转到过程序员客栈技术圈. 我的上一家公司 CEO 是个新加

凌晨四点,除了科比还有程序员

前言: 程序员问科比:"你为什么这么成功? " 科比:"你知道凌晨四点的城市是什么样子吗?" 程序员:"知道,一般那个时候我还在写代码,怎么了?" 科比:"没事了--" 说起程序员,可能很多人脑中会蹦出这些词: 宅 双肩包 牛仔裤 黑框眼镜 格子或横条衬衫 有可能会聪明"绝顶"说话方式:说中文的时候会突然蹦出几个英文单词:有时候工位上的摆设也是独树一帜: 专用座椅 至少两块显示器 竖着放也是家常便饭 程序员

产品经理vs程序员——如果“爱”,请克制

摘要:韩寒在<长安乱>里说:佛是你打死我你就超度了我,而道是你打不死我我就超度了你.小编坐在办公室的角落里,看着公司的PM和程序员恨不得分分钟拿刀砍了对方,还要在一起改需求,就开始为他们的潜在信仰归属定义不清而纠结. 任何一个团队里都有因为工作而纠缠不休.爱恨交织的两方,在科技公司产品经理和程序员不幸中枪.其实他们所有纠葛的起因也非常简单,无非是一个提出需求,而另一方需要去实现.小编乱想一下,如果程序员嫁给了产品经理,那肯定是后者说想吃什么,而程序员去默默做出来,想想还不错. 产品经理常常在心

程序员可以转产品经理吗

程序员可以转产品经理吗 产品经理跟程序员是不一样的,产品经理只需要懂一点,不需要多厉害,应届生都是可以当产品经理的.而程序员强调编程技能,专业技术,语言功底,懂不懂操作系统这些:产品经理强调沟通协调能力. 程序员可以转产品经理吗?很多已经工作了一段时间的人都有这个疑问,在这里分析一下程序员转产品经理的可行性.首先讲一下这两个职位的定义,程序员就是平时所说的软件工程师,程序员是软件工程师的口语版,是属于研发岗位:产品经理属于技术管理部门,总的来说算是偏向于技术的管理岗位,像hr也是管理岗位,只是跟

无论你20,30还是40岁,身为的程序员的你,你的故事,可否可以我们说说

程序员,有人说是青春饭,有人说这一行压力大,有点累,还有人说,这些年颈椎不太好了,有点疼.这一行确实会是这样,总有点什么,留给了自己.咖啡,过劳肥,颈椎病,还有无数个夜晚,无数了个凌晨. 有很多很多的理由,让我们离开这一行,但是,离开的:每当回忆起,凌晨的咖啡,那苦涩的香味,伴随着完成一个技术难题的喜悦,看着慢慢亮起的夜空.回忆中,是满满的幸福感.从程序员改去做管理的同学,考虑技术少了很多,但是团队业绩成了要考虑的主要因素.虽然没有离开这一行,但是,走过了程序员这条路,感悟颇多.还在这个岗位的朋

程序员的奋斗史(三十八)——大学断代史(二)——我与数据库的故事

文/.温国兵 惰性人皆有之,也算是人的一大天性.几日之前便构思好此文,怎奈每日杂事繁多,今日才提起笔,作下此文.本文谈谈我与数据库的故事. 说起和数据库结缘,还得从大一说起.大一刚开始接触C语言,每日就沉浸在无止境的代码中.在网上查资料的过程中,看到别人用C语言写了一个小型的图书操作程序,数据库采用的是SQL Server,运行出来的效果图很炫,惊叹原来还可以这样管理数据.熟知C语言的同学肯定对文件操作不陌生,当时我们写程序如果有静态数据,都是放在文件里的.直到后来做的C语言课程设计,我也是一大

Coding girl一个老程序员谈到的一个女程序员的故事

因为有人说我给一个女程序员的建议不靠谱,我不服,因为我的工作经历中的一些女程序员都很不错,比那些男程序员都强,所以,我在新浪微博和twitter上征集女程序员的故事和想法,这两天来,我收到了好几封邮件,让我很感动.其中,有一个故事让我回味很久,在脑海里挥之不去,可能是因为她的经历和我很相似,她的想法和我很有共鸣. 本来,我想通过收到的这些故事然后编辑成一篇关于女程序员的文章,但是我觉得这个故事已经足够好了,任何的编辑都是对这个故事的不尊重,所以,我原封不动,一字不改地把这个故事转到这里.我把一些

程序员生存定律-六个程序员的故事(3)

程序员生存定律这系列的目录在这里:程序员生存定律--目录 喜欢从头瞄的,可以移步. ------------------------------------------------------------------------------- 一个创业者的十年 我一直很犹豫要不要在这样一本书里去讲创业的故事,因为我一直相信创业是成功率极低的一项活动,只不过是成功者的光环太盛,才使这项活动吸引了过多的关注. 不是创业不好,而是说输不起的人不适合创业,而很不辛大部分人其实是输不起. 我们必须承认即使