理解专业程序员 学习笔记 之三

第六章 我怎样在官僚体系下生存

6.1 米德市的三角职位轮换

相比于开发新产品代码, 维护遗留代码对程序员而言是个沉重的负担. 所以, 为了减少这种施加给维护程序员的负担, 新代码在开发时就必须坚持高品质, 并时时刻刻替今后的维护人员着想.

6.2 大型机构、小型计算机和独立程序员

随着PC的普及, 软件行业出现了一种趋势: 个体的程序员除了做一份有稳定收入的工作外, 还开始在业余时间接私活来做. 程序员接私活倒不一定完全是为了钱, 可能还有以下的一些原因:

  • 最重要的一个原因是: 程序员现在的那份稳定工作无法提供足够的工作乐趣和挑战难度, 所以他们转向了私活, 以弥补这种乐趣和挑战的缺失.
  • 程序员在私活中享有比稳定工作更大的自主权, 从而产生更大的掌控感.
  • 私活比较自由, 可以在家上班, 不必到办公室上班.

6.3 从"月光"中看世界: 管理者的视角

针对程序员在业余时间接私活的现状, 公司的管理者又该如何来面对呢? 有些管理者对此现象表现出恼怒和恐惧. 而真正开明和具有积极心态的管理者则会作如下的思考: 有能力接私活的程序员, 一般而言都是能力较强并且比较有想法的程序员. 如果因此接私活这件事处罚他们, 很可能导致他们离职, 这样公司将会损失这些真正优秀的员工.

基于这样的思考, 有见识的管理者所采取的措施是:

  • 只要程序员能保质保量地完成公司的任务, 那么就不用去干预他们.
  • 把员工接私活看成是员工在接受培训, 而且这种培训是公司内部给不了的.
  • 反思一下员工为什么会去接私活. 是不是公司的工作环境或者管理人员的管理方式存在什么问题, 让员工感觉工作推动了乐趣或挑战?

6.4 生产力的衡量: 也许我们搞反了

我们的生活中充满了很多假设, 其中相当多的假设是未经检验的. 如果我们真地着手检验它们, 那么我们就会发现这些假设不仅是错误, 而且恰恰处于真相的反面.

比方说, 如何评估一个程序员的生产力的高低. 有种假设是说: 优秀的程序员应该万事皆知, 绝不需要向书本或其他人请教问题. 如果我们真地检验这个假设, 就会发现这个假设恰恰处在了真相的反面: 优秀的程序员并不是万事皆知, 实现上, 编程是一项异常复杂的工作, 没有哪个人能仅凭一已之力就把这项工作做好, 因此真正优秀的程序员绝不会自大到以为自己无所不知.

6.5 幽默感能提高生产力吗

在面对那些非常困难而难以解决的问题时, 我们不必太过严肃. 实际上, 我们应该鼓励那些幽默或荒谬的提议. 这是因为: 如果一个"有条理"的办法能够解决这类问题的话, 那么这类问题应该在多年以前就被解决了. 这么多年问题都还没解决, 一方面说明问题本身确实复杂, 另一方面也说明我们之前所使用的方法本身有问题. 所以, 鼓励那些看似荒谬的提议, 也就是鼓励变换思考问题的角度和方向, 这说不定能给我们带来新的启发并最终解决问题.

6.6 玛丽亚·特雷莎勋位

任何现代组织都会制定规则. 之所以制定规则, 是为了让一个组织更有效地运营. 因此, 有一条不成文的规则是凌驾于所有其他成文的规则之上的: "怎么运营更有效, 就怎么干". 从根本上说, 如果你违反组织的规则而受到惩罚, 这不是因为你违反了规则, 而是因为你妨害了组织的有效运营.

但是, 人们往往都只盯着那些成文的规则, 却把制定这些规则背后的初衷——有效运营——忘记了. 所以组织的管理者, 应该鼓励大家更关注如何切实改善组织的运营, 并且鼓励大家为了提升组织的运营效率去打破现有规则的束缚. 要做到这一点, 管理者应该:

  1. 在组织内部营造一种言论自由的氛围. 要让员工们相信, 他们不会因为评价组织的规则而受到惩罚或损失.
  2. 只要言论的风气一开, 很多员工无需鼓励就会主动地在工作中打破陈规, 另辟蹊径.
  3. 另辟蹊径的结果, 有可能是把事情办砸. 这时应该让另辟蹊径者讲讲: 她/他为什么要违反旧规, 采用新的行事方式. 也许是因为旧的规则已经不能让组织有效运营了, 即使按旧规行事也会把事情办砸; 也许是因为人们根本就误解了现有的规则. 不管怎样, 这样的交流沟通有助于消除误解, 改进组织的运营.
  4. 一旦明白了打破已有规则的原因, 就整个儿放下这件事! 每个人都应该有偶尔儿点错误的权利. 如果谁都不犯错, 那就说明大家从不尝试, 从不思考, 这才是组织内部可能发生的最坏的事情.
  5. 只有当某人多次反复地犯同样的错误时, 管理者才应该采取行动, 施以一定的惩戒.

6.7 胡(狐)狸和山鸡: 一个愚(寓)言

公开表态总要好过不战斗而被吃掉. 换句话说: 害怕并非不专业. 做胆小鬼才是不专业.

第七章 程序员职业向何处去

7.1 一百年后编程会变成什么样

许多程序员都担心五年或十年以后的编程行业会跟今天大有不同, 而自己到那时会因为跟不上行业的变化而丢掉饭碗. 对于这种担心, 我们的回答是: 可以肯定, 五年或十年后的编程工作与今天相比会发生天翻地覆的变化; 但是, 只要你关注于"今天我学到了什么?", 并且坚持每天都让自己的编程技能和知识储备得到提升, 那么你就根本无须担心你的前途, 因为你每天都在为应对编程技术潮流的变化做着准备.

7.2 程序生涯能有多长时间

关于"程序员江郎才尽"这个话题, 不少人写过不少"典型化"的废话, 即认为一个所谓的"典型的"程序员会在工作4-6年之后出现生产力停滞. 换句话说, 一个"典型的"程序员会在4-6年后江郎才尽.

这种"典型化"的思维, 是大错特错的. 个体程序员的生产力差异常常在10倍以上, 因此找出这种所谓的"典型的"程序员来代表整个程序员群体是完全站不住脚的.

对于公司的管理层而言, 在评估程序员的生产力水平时, 如果参照这所谓的"典型"程序员的标准, 那么往往会对个体程序员的生产力得出错误的评估.

对于程序员个体而言, 在评估其自身能力时, 如果参照这所谓的"典型"程序员的标准, 那就可能导致个人悲剧. 你会在4-6年之后江郎才尽吗? 别看那个"典型"程序员! 你该去找找有没有能力超群的10年老兵. 然后再调查一下为什么人家这么厉害, 入行10年仍处在上升通道. 无论如何, 别把自己跟"典型"程序员看齐!

7.3 我该做多长时间程序员

编程行业与传统行业不同, 编程行业是一个狂飙突进的行业, 能在短短几十年时间内就经历许多次重大的技术革命, 比如计算机由大型机到中型机到个人电脑, 比如编程语言由机器语言到汇编语言到高级语言, 比如编程范式由结构化到面向过程到面向对象. 作为编程行业的从业人员, 程序员需要顶得住技术革命的压力.

程序员怎样才能顶得住技术革命的压力? 学习, 坚持不懈地学习. 所以, 程序员其实是一份可以从事一生的工作, 但前提是你需要一直保持学习和进步的热情. 如果哪一天你发现自己不学习了, 那么你的程序生涯也就到头了.

7.4 我如何为未来做准备

下面是一些关于"程序员如何为未来做好准备"的建议:

  1. 重视健康. 健康本身就"制造"幸福. 身体健康, 才能更好地投入生活和工作.
  2. 培养起对自身以及对周边世界的洞察力.
  3. 学会正直地与人相处. 不正直的人是没法成为好的程序员的, 因为计算机从不会撒谎和耍心计.
  4. 培养起责任感. 不要怕麻烦, 麻烦正是增进洞察力和与人相处能力的机会.
  5. 如果一个程序员一直在成长、进步, 他也就不会害怕未来.

7.5 乌龟和毛毛: 一个寓言

专业人士的最终安置应该是体面地退休.

尾声

程序员很容易高估自己工作的重要性, 很容易觉得自己要解决的问题才是重要的、复杂的问题, 其他人的问题简直不值一提. 当你发现自己变得有那么一点自我膨胀, 盛气凌人, 牛气冲天, 浮在半空时, 请提醒自己: 我不过是这个宇宙中的渺小一员, 跟其他的普罗大众没什么不一样. 这样, 你就能把自己重新拉回地面.

posted @ 2011-08-09 21:39  李嘉 (Justin)  阅读(380)  评论(0编辑  收藏  举报