程序员小测试:保守派 vs 自由派

最近,我在阅读 Steve Yegg 的文集《程序员的呐喊》

这是一本非常有趣的书,里面甚至包含了一个小测试(原文),区分一个程序员到底是保守派还是自由派。

下面一共有十个问题,每个问题都有 A 和 B 两个选项,请选择你的答案。

问题一:Bug 还没修复,软件能不能上线?

(A)软件发布前,应该编写完整测试,充分调试,尽量修复所有bug。

(B)不管多努力,bug 总是无法避免的,如果性质不是很严重,可以先上线,根据反馈再调试和修补。

问题二:容易出错的特性,是否应该用在程序中?

(A)很多语言的高级特性都是很容易出错和危险的,应该禁止用在代码里。没有这些特性我们一样可以进行开发,代码也会因此变得更安全。

(B)聪明的程序员有学习动力,知道怎么可以解决问题。为了避免出错,就立下一堆规矩,完全不可取。

问题三:新的语言或语法是否应该有所限制?

(A)公司里可以使用的语言数量应该受到限制,这样万一系统在半夜或是圣诞夜挂掉的时候,值班的人就不需要去临时抱佛脚学习新语法了。另外,也应该禁止改变语言原始定义的语法,比如严格限制操作符重载和元编程。

(B)程序员的学习能力是惊人的,没必要"保护"程序员远离新语法,只要有需要,他们自然能学会。

问题四:静态检查是否必要?

(A)编译器的安全检查很重要,不能进行静态检查的代码通常是不可接受的。

(B)代码应该短小精悍,静态检查工具可能会让代码变得又臭又长。

问题五:数据是否一定要有格式定义?

(A)数据必须遵循事先定义好的格式。比如,关系型数据库必须满足第三范式或UML,XML都必须有DTD,NoSQL数据库必须有单独的格式定义(标明所有允许的键,以及相应的值类型)。

(B)严格的数据定义只会妨碍灵活性,延缓开发进程。更好的策略是写一些注释,或者只定义一部分,甚至先略过它。因为在大量用户案例出现之前,没人知道数据可能会是什么样,代码先行才是正确的做法。

问题六:公共接口是否应该静态化?

(A)公共接口必须严格建模。数据绝不可以是无类型的,所有的输入输出实体都必须完整显式地定义为可以静态检查的模型。

(B)公共接口应该尽量简单,向前向后都兼容。建模时太过缜密的话,其实只是在猜测接口会怎么演化。

问题七:是否可以留有方便修改的后门?

(A)生产系统里绝不允许存在危险或有风险的后门。想要通过调试器、SSH、或任何接口,连接到工作中的生产系统,去修改运行时的代码或数据,应该是不可能的。

(B)系统的灵活性,有时能决定客户或合同是归你还是归对手。至于生产系统的安全隐患,可以通过日志、监控、审核等手段来缓解。事实证明,很多有最高权限后门和Shell 接口的大型系统,都做到了在控制风险的同时具备运行灵活性。

问题八:急需的但有安全隐患的系统,是否可以上线?

(A)假如一个组件的安全性存在任何疑虑,那它就不能发布上线,团队怎么哀求都没用。

(B)企业要保持竞争力,唯有不断有意识地去承担风险。就算不去冒险,其他系统急需这个系统,线上可能还是会出问题,既然如此那还不如冒险一试。

问题九:代码运行较慢,是否要去解决?

(A)快比慢好。没人喜欢慢的代码,所以代码的性能一定要好。从一开始,就要有性能意识,那些比较慢的语言和库都应该避免使用。

(B)不要过早优化,代码先跑起来再说。正确性比性能重要,而原型的快速迭代又比正确性更重要。只有当客户将性能列为首要问题时,再进行优化。

问题十:你最认可的语言是哪一个?

(A)C++、Java、C#、D、Go、Clojure、Ada、Ocaml、Eiffel、Clojure、Erlang、Pascal、Haskell、SML。

(B)C、Objective-C、JavaScript、Visual Basic、Lua、Scheme、Python、Common Lisp、Smalltalk/Squeak、Perl、Ruby、PHP,Bash。

结论

如果你的答案有超过一半的 A,你就属于保守派程序员。你非常重视软件安全和可靠性,厌恶风险,提倡严格管理,认为有效的规章制度是软件质量的保证。

如果你的答案有超过一半的 B,你就属于自由派程序员。你重视软件开发的灵活性,提倡给予程序员足够的自由,只要新功能顺利上线,可以接受一定的风险和瑕疵。

保守派或自由派,都没问题,都是可取的。问题是一支和谐的团队最好是由单一人群组成,要么全是自由派,要么全是保守派,免得双方不停地发生理念上的冲突。

(完)

时间: 2024-09-20 08:19:03

程序员小测试:保守派 vs 自由派的相关文章

【转】10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告

从电驴上看到的一篇文章,写的挺对味的.摘下来,共勉.说的挺对的. 展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 01. 自己的户口档案.养老保险.医疗保险.住房公积金一定要保管好.由于程序

程序员小抄大全

你是否会经常忘记一些CSS中的函数名或是一些属性名,那个时候,你一定觉得,如果手边有一个"小抄"(Cheat Sheet)就好了.当然,这个"小抄"不是给你作弊用的,这个"小纸条"就是可以让你马上知道那个你最想知道的东西.这个"小抄"上也不需要有所有的东西,就需要那些经常用的就行了.现在,网上有很多这样的"小抄",它们可能是PDF格式的,可能是PNG格式的,你可以很方便地把其打印出来(可以打印得很小),然后

展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告

走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 01. 自己的户口档案.养老保险.医疗保险.住房公积金一定要保管好. 由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过5个以上的单位,这期间跳来跳去,甚至是城市都换过3个.还好户口没丢掉,其他都已经是乱了,好几个城市

程序员小明相亲记:如何破解妹子的环游世界难题

简评:程序猿的我们其实也渴望爱情哇,我们不是只需要抱着电脑睡觉,起床后和电脑说早安,面对的电脑经历一日三餐的呀,其实我们这些程序员只希望能够一个人能够懂得自己的,理解我们为什么会执着与代码,理解我们为什么会像女生买包一样囤书.其实每个程序员上辈子都是折翼的天使,只等你来说那句"Hello World". 话说有一个程序员叫小明,业务能力挺不错,人也不丑,但是一直没有女朋友,周围同事朋友们都很着急. 后来有一天小明一个人去看电影<爱宠大机密>,刚好坐在他隔壁的MM也是一个人,

《程序出错后,程序员给测试人员的20条高频回复》

20. "That's weird-"很奇怪-- 19. "It's never done that before." 以前没这样过的. 18. "It worked yesterday."昨天还好好的. 17. "How is that possible?"那怎么可能?(怎么会出问题?) 16. "It must be a hardware problem."这一定是硬件问题. 15. "Wha

11岁的湖南最小“程序员” - 小底迪从小走上了不归路啊~

class="post_content" itemprop="articleBody"> 当别的孩子11岁还在玩网络小游戏时,石峰区先锋小学的黄骏国就已经可以自己编辑一整套电脑软件系统了.在去年9月结束的第38次全国计算机考试中,11岁的黄骏国引起了湖南教育考试中心老师的注意,考试成绩公布,黄骏国以优秀成绩顺利通过全国计算机二级C考试,而全省通过的比例还不到50%-- 10岁开始接触编程 黄骏国打开电脑,拿出了自己的移动硬盘.硬盘里,已经做好的程序和自己储存的

《程序员的呐喊》一一1.6 神秘机器的笔记

1.6 神秘机器的笔记 程序员的呐喊过去8年来(2004年6月起至今)我一直在写各种各样的牢骚,主要是一些和软件工程有关联的问题. 之所以这样愤青是因为我真的被一些"诡异"的世界观给搞糊涂了,持这些观点的人(在我看来)差不多占了所有我遇到过的程序员的一半,包括网上碰到的和现实里认识的人. 就在上个星期,我终于想明白了这个困扰了我快10年的问题,现在我知道它到底是怎么回事了. 今天这篇文章就是要以全新的理念来展示软件工程.这些东西其实一点就通.等你看到的时候肯定想抽自己一嘴巴,怎么早没想

《程序员的呐喊》读书笔记

         在JD的购书通道里,看到了这样的一个书名,果断入手,看了以后果然非同凡响.      通常程序员在工作开始的几年内,很多习惯就已经定型,甚至影响一辈子了.这个规律不仅适用于程序员,也适应于其他各行各业.所以,前几年好习惯的培养,或者是学校的培养,那是相当重要的.      人总是喜欢呆在自己的舒适区,做觉得没有难度的事情.问题是,没有难度和挑战,哪来的成长和进步?很多二流程序员,会陷入自己设计的二流架构中,然后一辈子就圈在这样的陷阱中了.多跳出来看一看,多做一点让自己觉得困难的

很认真的聊一聊程序员的自我修养

今天谈一谈,程序员提高自我修养是为了什么?     程序写的好有人崇拜,有妹子喜欢?还是到博客.论坛.社区发表文章进行分享获得成就?我想这是少数人的追求,也是更高的追求,在这之前 我认为,在中国,程序员提高自我修养的目的,是为了 1.更好的融入工作,减少困难,增加成就 2.稳步的提升能力,提高收入,达成财务自由 2.站在更高的层面看待自己的学习和工作,树立更加适合的人生观价值观,家庭幸福,生活愉快 说的更通俗一点,就是用更加合理的方式和方法,赚取到更多的收入   说了这么多废话,进入正题 何为程