CS巴别塔(1)

这是你应该做的

Posted in Uncategorized by Kenny Yuan on 2009/12/04

——“阿姨!你的钱包掉了!”
——“谢谢你!小朋友!你真是一个心灵高尚的人!”
——“不用谢!这是我应该做的,我的名字叫少先队员……”(伴随着一串银铃般地笑声,小朋友消失在风里,没有留下姓名……)

嗯,我承认这是恶搞了一把那个年代的小学生作文——韩寒出现之前的那种小学生作文。这种作文中有一个隐含的前提:“拾金不昧、做好事不留姓名”这种事情,在那个时代的背景下,会被判断为“这是我应该做的”。


那么,在换了一个时代背景之后,什么才是“你应该做的”呢?或者我们换一个容易观察的角度——在一个特定的职业中(医生/教师/学者/警察/记者/公仆/开发商/律师/法官/摔倒的老太/etc),什么才是“你应该做的”呢?怎样算是平庸?怎样算是正常?怎样算是杰出和优秀?做到什么程度才算是完成了本职工作,才算是完成了“你应该做的”事情?

——既然我这个BLOG是和“码农”这个职业息息相关的,那现在我们就假设你是一个码农:

你精通各种算法,宰杀了无数遍“猪”与“鸡”(珠与玑),对RBTree/BSPTree/SuffixTree/HashTree的原理和应用张口就来;你会估计和比较各种算法的O/Θ/Ω/OO;你知道如何深入浅出地讲解算法,知道如何编程实现和实测的表现,你还能够在实际工作中选用正确的算法……那么,你觉得自己很优秀,还是说“这是你应该做的”?

你精通不少语言,也精通一些很“难”的语言中的很“讨厌”的特性,比如C++中的重载决议/偏模板特化/名字空间/多继承/etc,你还能够紧追语言的“最新发展”,对GC/closure/multimethod/Continuation/AMB这些“新发明”的东西了如指掌(嗯,好吧,其实这些不是新的,只是从LISP那里借鉴了一下下)……那么,你觉得自己很优秀,还是说“这是你应该做的”?

你懂得多数流行平台的开发,掌握多数开发包的API;你能够使用各种辅助工具进行综合、高效地调试;在解决问题时你有丰富的经验和清醒的头脑,以及实证至上的谨慎;你对开发/profiling/testing有良好的理解和实践,模式/重构/TDD/etc对你来说是合手的工具而不是限制你的牢笼……那么,你觉得自己很优秀,还是说“这是你应该做的”?

你了解不同用户的兴趣在哪里、对软件错误的容忍度有多高,你知道不同设备上的用户习惯于如何操作,你知道用户愿意在哪个功能上掏钱,你懂得如何借鉴和超越竞争对手的产品,你能够跟上当前用户对功能的期望(甚至预见到未来的)……那么,你觉得自己很优秀,还是说“这是你应该做的”?

你了解可用性的意义、懂得色彩学,能够设计出有条理、不凌乱的界面,能够发明用户喜爱的操控方式,能够设计贴心、聪明的功能,还能够用PS/AI/Painter制作素材,并且用程序实现你的设计……那么,你觉得自己很优秀,还是说“这是你应该做的”?(另,引用:“说一个软件具有‘可用性’,能算是一种赞美吗?只是合格罢了!”)

你精通计算机原理结构,知道各种外设的IO速度,对它们访问方式有精晰的理解,会写device driver,而且你还知道典型外设产品的可靠性在什么样的数量级上……那么,你觉得自己很优秀,还是说“这是你应该做的”?

你设计过不同规模的系统,知道在什么样的级别下应该使用什么样的技术;你知道性能热点通常在哪里,也精通于查找和解决热点;你知道如何平衡功能、时间和质量,知道如何在特定情况下取舍;你知道流行的架构的优缺点,你知道哪种硬件能够构成什么样的系统、当机时间控制在什么样的级别上;你知道如何安排指标去区分高低端产品,知道在给定的预算/成本下能够提供什么样的产品,你还知道如何对系统进行cost down却不会损失可靠性……那么,你觉得自己很优秀,还是说“这是你应该做的”?

你熟悉各种软件开发模式;你有丰富的知识积累,却又不守旧、勇于接受新鲜事物;你非常善于开会,能够在很短的时间内取消语言表面上的分歧让大家达成一致……那么,你觉得自己很优秀,还是说“这是你应该做的”?

你勤劳肯做,工作中不偷奸耍滑,很有大局观而且也重视细节问题;你性格温和,乐于助人,团队成员都说你是一个非常好相处的人,连没见过面的同事也对你赞不绝口……那么,你觉得自己很优秀,还是说“这是你应该做的”?

……

造句练习:你能够……能够……还能够……即使在XX的时候也能够YY……那么,你觉得自己很优秀,还是说“这是你应该做的”?

……

如果你做到了以上若干条(注),那么在我看来,你成功地完成了你自己的本职工作,完成了自己做为一个工程师(而不是科学家)的“应该做的事情”——也许你比身边人的平均水平要高出一截,也许你超过了整个业界的平均水平,但那是不是就意味着“优秀”呢?如果那仅仅是你“应该做到的”呢?

最后,你做为一名人类,能够进行独立的思考,在清晰逻辑和丰富知识的基础上拥有批判性的思维,你懂经济、懂民主;你不愤青、不脑残、不意淫、不从众;你不受洗脑和煽动的影响、不信武术和中医……那么,你觉得自己很优秀,还是说“这是你应该做的”?

……

在你的眼里,什么才是“你应该做的”?

……

延伸阅读
(下面的每一个链接都能对应到上面文章里的某句话,用来例证,而不是证明)
Teach Yourself Programming in Ten Years, by Peter Norvig http://norvig.com/21-days.html
The Pragmatic Programmer 注重实效的程序员, 中文摘录版 http://qiri007.spaces.live.com/blog/cns!99F80D7BAD95F281!8913.entry
Algorithm Repository, by Steven Skiena http://www.cs.sunysb.edu/~algorith/
快排为什么那样快, by Pongba http://mindhacks.cn/2008/06/13/why-is-quicksort-so-quick/
Beating The Averages, by Paul Graham http://www.paulgraham.com/avg.html
http://www.xys.org/xys/ebooks/others/science/dajia10/zhongyi2621.txt
97 Things Every Software Architect Should Know, http://97-things.near-time.net/wiki/97-things-every-software-architect-should-know-the-book
Anti Pattern, KornerHill译自Wiki http://blog.csdn.net/KornerHill/archive/2008/05/03/2373577.aspx
常见逻辑谬误(转) http://groups.google.com/group/pongba/browse_thread/thread/2cfa868f6a098d6b/7e300428d0bd8866
Java语言学校的危险性, by Joel Spolsky, 阮一峰(译) http://www.ruanyifeng.com/blog/2008/12/the_perils_of_javaschools.html
What Every Programmer Should Know About Memory, by Ulrich Drepper
Proebsting’s Law, by Todd Proebsting; Moore’s Law, by Gordon Moore

注:上面列举了许多的条目,但是这些条目涉及了很多领域,所以并不要求一个人同时具备这些能力。

(完)

Tagged with: ,

如何识别注定要失败的startup

Posted in Uncategorized by Kenny Yuan on 2009/05/07

众所周知,Paul Graham只在以下四种情况下鼓励别人创业:1、经济繁荣期;2、经济衰退期;3、经济危机期;4、经济复苏期

有人创业也就会有人加入到新创立的公司中。从这些雇员的角度来看,随时识别出注定失败的迹象并及早撤离,就是一门必要的生存手段了。

那么,如何识别注定要失败的startup呢?这个话题其实挺大的,而且也是仁者见仁、智者见智。我只说几种典型情况吧。这些都是从我亲身经历的一家startup的诸多问题中选出来的。

1、画一个批萨,不要烧饼:用“最好”作为籍口来拒绝“更好”(不愿意改进,籍口是改进后也达不到最优)
2、金质胶片:在末落的产业中制造高端产品。
3、下一个山头上的草更绿:每次在一个研发方向上失败后,都认为是细分市场不足以养活一个企业,并人为设定另一个细分市场作为下一个研发方向的目标。
4、没有短痛何来长痛:用强制(或半强制)加班来应付无法完成的研发任务,认为招人的成本太大,短期内也无法产出。
5、木鱼和佛经:用同一套metaphysics的言论来拒绝员工的合理化建议。
6、花喜鹊:领导亲历亲为所有的事情。时间都用在指指点点、跑来跑去上面。同时还抱怨自己时间不够用,抱怨任何雇员都没有很好地完成本职工作。
7、肱二头肌:小股东没有话语权。
8、孤注一掷的赌徒:长远计划非常宏大,但缺乏实现步骤。赌博心理严重,要么全赢,要么全输。
9、天知地知你知我知:用企业生存为理由去说服员工,共同欺诈顾客。
10、少吃草的驴子:在招聘时,低薪不是最重要的条件,但却是决定性的条件。
11、徐郎半老:创业人为技术出身,年纪在50岁以上,过去曾有过技术上或商业上的辉煌,但是整个人的思想却落后于时代太久了。

建议的延伸阅读:Anti Pattern(http://zh.wikipedia.org/wiki/%E5%8F%8D%E9%9D%A2%E6%A8%A1%E5%BC%8F)

Tagged with: ,