Hackers and Dreamers
黑客和造梦者
31 October 2011 by Drew Crawford Published in: Code, rants 3 comments
What hackers and painters have in common is that they’re both makers.Along with composers, architects, and writers, what hackers and painters aretrying to do is make good things. – Paul Graham
黑客和画家的相同之处,在于他们都是创造者。和作曲家,建筑师,作家一样,黑客和画家做的,也是去创造佳作。-Paul Graham
There’s been a lot of talk lately about what it means to be a programmer. Patio11 has afantastic article about not being “just’ a programmer–about selling yourself as someone whocreates value. As someone who has done far more sales than he has everwanted to, this is all old news to me. It’sabsolutely true, ofcourse.
成为一名程序员意味着什么,这个话题已经讨论的太多了。Patio有一篇精彩的文章,不要“仅仅”成为一名程序员,而是像其他能够创造价值的人一样,出售你自己。作为一个已经远超自身期望的人,这种观点对我而言已了无新意。当然,它绝对正确。
And then raganwald came along and basically said, yes, this is all true, but here’s another thing:
然后,raganwald来了,从根本上说,是的,这些都是对的,但这里还有另一个问题。
I’m not in the ‘programming’ business, or the ‘adding value to theeconomy’ business. I program and add value, but my motivation for programmingand for finding ways to add value is that those are the ways I finance my realbusiness, which is themaking dreams come true business…. Greatsoftware and great programming languages have a dream-like quality. Learning touse them has this strange feeling of needing to relearn everything you knowwhile simultaneously feeling so natural that you are filled with wonder but notdissonance.
我并不限于 “编程”,或者“为经济增值”。我编程并创造价值,但我发现编程并创造价值之路的动力,是我为我真正的业务提供资助的方法,即梦想成真。伟大的软件和伟大的编程语言有着梦幻般的品质。学习使用它们有着一种奇怪的感觉,那就是你需要重新学习你业已知晓的所有事情,同时,这种感觉是很自然的,你充满了疑惑但妙不可言。
Programming, for me, is creation. It’s having an idea, and breathing life into that idea. It’ssculpting something beautiful out of the formless for loops and switchstatements. It’s walking down the street, having an idea for a newchildren’s toy… then heading into the workshop, building it, and placing itunder the Christmas tree. Here little customer, sit on my knee, Santa’sbrought you a CRM system that fits in your pocket and can read your mind. Idea to implementation to the smile on their face, in a single developmentsprint. And it doesn’t have to be extraordinary–sometimes it’s the littlethings. Maybe I just want thedishesto be a little cleaner. Softwarecan do that.
编程,对我来讲,是创造。它就像有一个创意,然后把生命注入这个创意。她就像雕刻出超越循环和开关语句规则的美好事物。它就像在街上散步,然后有了一个小孩子玩具的创意,然后走向工作间,构造它,把它放在圣诞树上。这里,一个小的客户,坐在我的膝盖上,圣诞老人带给你一个恰好能放进你的口袋,并能读懂你的思想的CRM系统。在一个单一的开发sprint中,实现创意使得他们的脸上充满了微笑。而这并非一定要多么卓越,有时其实是很小的事情。或许我仅仅想把盘子洗的干净一点。软件能做到这些。
Programming, for me, is literature. You curl up with it on a cold and rainy day with a nice cup oftea. Writing a compiler is an exercise in existentialism–what does aprogram mean, anyway? Writing AI is a class in philosophy–do I understandthe program better than the program understands me? (You know it’s timeto stop when you stop finding “bugs” in the program and start having argumentswith it.) Writing a web application is the discovery ofBerkleyism– is the W3C still a spec if nobody follows it? It’s thesoul-crushing defeat of being unable to understand that bug, day after day, thedesperation of trying to ship on time, the struggle with productivity and themotivation to keep going. Just one more cup of coffee.
编程,对我来讲,是文学。就像冷雨时节,清茶一杯,轻卷书页。写一个编译器是一个现行的练习:程序究竟意味着什么呢?写人工智能是一个哲学思辨:我理解程序是不是比程序理解我要多一点?(你知道,当你停止在程序中发现bug并开始对bug论证,现在是时候停止他们了。)写一个web应用是Bekleyism发现:W3C仍然是一个没人遵守的描述吗?它是灵魂崩溃的失败,因为日复一日后不能理解bug,因为努力按时交货的铤而走险,因为生产力和保持前进的动力的争斗。就像几杯咖啡。
Programming, for me, is fantasy. What would the world be likewithout assignment? Or without thejumpinstruction? Whatalternate steampunk universe can we construct ifcommunication were our primitive operation? Or if our programs hadno human authors? What if regexes couldpredictthe future, or if rollingdice couldbeat the math professor? What if all Ruby wasvalidHTML, or if our compiler was a little more foregiving? What if piezo buzzers could play chiptunes? It’s imagining the world as a different place, and then building thatplace. And then exploring what that place is like on some idle Tuesday. You’re a wizard, Harry.
编程,对于我,就像幻想。如果没有赋值,世界将会什么样?或者没有跳转指令呢?如果通讯是我们的基本操作,我们能在蒸汽朋克和宇宙之间轮换吗?或者如果我们的程序没有人类作者?如果正则表达能够预研未来,或者翻滚的骰子能够击败数学教授,那会怎么样?如果所有的Ruby是有效的HTML,或者如果你的编译器是一个更超前的东西,那会怎么样?如果压电蜂鸣器能够演奏chiptune,那会怎么样?就像在不同的地方想象一个世界,然后建造这个地方。然后,在闲暇的周二去探险这个地方。Harry,你是向导。
Programming, for me, is mystery. Does that variable look a little suspicious to you? Why does theprogram only crash onWednesdays? Why do the e-mails travel only 500 miles? Why did the behavior change after Iread the source code? Why doesit needthatmuch magic?
编程,对于我,是一个谜。变量是不是有点可疑?为什么程序仅仅在周三才当掉?为什么e-mail只能传输500英里?为什么我只读了读源代码,程序行为就发生了改变?为什么需要那么多的魔法?
Programming, for me, is art. The anonymous author of 0x5f3759df is out there somewhere, smiling, like Banksy. It’s the ability topush compression beyondany believable limit. It’s a voicethattaughta generation to lovedevelopment. It’smaking people cry.
编程,对于我,是艺术。0x5f3759df的匿名作者在某个地方,像Banksy一样对我微笑。它是超越任何可信任限制的压缩的能力,它是一个传授一代人热爱开发的声音。它让人哭。
Programming, for me, is magic. It’s a magic lens that speaks French. It’s a personal assistant. It’s the ability tocreate objects. It’s the power todestroy. It’s the ability tosee things more clearly. It’s the power to find what we’relooking for. It’s a portal to our friends and family. It can find the questions to all our answers. It’s the ability to search everywherewithout looking everywhere. Users often ask for ridiculously hard thingslike AIs and voice recognition. The reason they ask for such things isbecause they perceive the things we canalready do… equally as magical. AIs don’t seem like that big of a leap compared to the other magic we do.
编程,对于我,是魔法。它是一个说法语的魔法镜头,它是一个个人助手,它是创造对象的能力,它是破坏的能量,它是透过现象看本质的能力,它是我们寻找的是什么的能量,它是一扇通向我们朋友和家庭的门。它能发现我们的回答者的问题,它是不用找遍每个角落就能搜索每个角落的能力。用户经常需要荒谬的极难的东西,比如人工智能和声音识别。他们需要这些东西的原因是他们相信我们已经做到了,就像魔法一样。人工智能相对其他我们已经做过的魔法一样,并不是什么大的飞跃。
Programming, for me, is a great responsibility. Programming ispower. We speak of good books as“friends”, but none are friendlier than Siri. We speak of the pen asmightier than the sword, but the humble for-loop wages more war and defendsmore life than either. We call the silver screen a reflection of life,but is it really more reflective than your inbox? Software is the mostpowerful medium so far constructed. Will you be a force for good,improving the lives of your customers, saving the company, freeing users fromburdensome tasks that used to take ages, helping other programmers? Willyou be a force for evil, empowering vendor lock-in, helping to spy on yourcitizens, and launching patent wars against small startups? Or will yoube a force of apathy, sitting by the sidelines, fixing bugs in that rusty CRUDapp and leaving the world-changing to others?
编程,对于我,是一个巨大的责任。编程是充满力量的。我们说好书就像朋友一样,但没什么比Siri更加友好。我们说笔比利剑更加强大,但简单的for循环引发了更多的战争和防御。我们把镜子看做生命的反射,但它比你的inbox更有反射性吗?软件是迄今为止构造的最牛逼的介质。你想成为追求美好,改善你的客户的生活,挽救公司,把用户从繁重的花很长时间的任务中解放出来,以及帮助其他的程序员的力量呢?还是想成追求邪恶,牢牢锁住供应商,帮助监控你的城市居民,推动针对创业公司的专利战的力量呢?或者想成为冷漠,袖手旁观,修复哪些锈迹斑斑的CRUD应用中的bug,而把改变世界的挑战留给别人的力量呢?
Programming, for me, is being alone. It’s fundamentally a solitary activity. On the whole, things getdone faster when you’re alone and you have space and quiet and time to think. A programming conference is a group of 5000 people who get together inorder to be alone. You will be misunderstood by the other disciplines ofthe business. Your manager will set up a suboptimal work environment,will pester you to make more checkins and count your lines of code. Youwill spend many hours failing to explain your occupation to people who reallyweren’t all that interested, thanks. You will at some point be replacedby a low-cost engineer in India and it will take a long time before anybodynotices the difference. In fact, if you ever getreally good,there will only be a few dozen people in the world who actually understand whatit is you do.
编程,对我而言,意味着孤独。它从本质上来讲是一个孤立的行为。整体而言,当你单独,并且有足够空间、足够安静和足够的时间去思考的时候,事情会做的更快。一个编程会议是一个5000人的集会,他们凑在一起就是为了满足某一个人而已。你会被其他的商业规则误解。你的管理者会建立一个上下级的工作环境,会要求你更频繁地checkin和计算你的代码行数来不断打扰你。你会浪费太多时间在一些不感兴趣的人身上,你需要向他们解释你的工作。你将在某些地方被替换成低成本的印度工程师,而很长时间之后才会有人注意到这其中的差别。事实上,如果你曾经真的非常优秀,在世界上将只有极少的人能够理解你做的事情。
But most of all, programming, for me, is a calling. It’s nota 9-5. It’s not something to pay the bills. It’s not a hobby forthe weekends. It’s not just demoing a cool product, or making the frontpage of Hacker News. It’s not a paper in some journal. It’s whatI have to do. The same as eat, sleep, and breathe. Just becauseyou get fireddoesn’t mean you stop coming to work. If you take away my computer, I will build one. If you take away my parts, I will write the programs on paper. (AndI have both the hand-built computer and the notebooks of program listings toprove it!) It’s non-negotiable. I will consider retiring after I amdead, but no guarantees.
但是最重要的,编程对于我,是一个呼唤。它不是9-5,也不是支付账单,也不是周末的业务爱好,也不仅仅是演示很酷的产品,或者做一个黑客新闻的前端页面,也不是杂志上的论文。它是我必须做的事情。就像吃饭,睡觉和呼吸。仅仅因为你被解雇了并不意味着你停止开始工作。如果你拿走了我的计算机,我将自己造一个。如果你拿走了我的键盘,我将在纸上写程序。(并且,我可同时用手造计算机和程序列表笔记来证明!)它是不可商量的。我认为我死了之后才会退休,但这无需担保。
But why on earth would I ever want to stop? :-)
但是为什么在世上我曾经想要停止呢?