前言
所谓"prefessional", 是指在特定的活动领域里, 具备了不起的技艺或经验.
专业人士——无论是医生, 运动员, 还是程序员——进行自我考察, 不是为了惩罚自己, 而是为了获得自我提升.
第一章 对专业人士来说, 有哪些重要问题
1.1 成为一个程序员要花多久时间
现在的世界常常有这样一个误解: 任何人, 只要经过短期而速成的培训, 就能成为一个专业程序员.
造成这种误解主要有两个原因:
- 一是在软件行业内部, 处在管理层的经理本身不写程序, 或者说不屑于写程序, 这导致人们以为程序员, 就跟侍者或保洁员一样, 是一份门槛低而且不体面的工作.
- 二是教育和培训体系也在向人们灌输这样的想法: "编程并没有什么复杂的, 只要练习几个星期, 哪怕是门外汉也能成为编程专家!"
但实际上, 要造就一个专业的程序员, 是要付出艰苦的努力的. (专业的)程序员, 跟医生或运动员一样, 是稀有的专业人士, 因为他们必须经过长期不懈的历练, 才能成长为一名合格的从业人员. 所以, 要回答"成为一个程序员要花多久时间", 应该说答案是: "五年不嫌少, 十年不嫌多." 软件从业者要在这个行业中长时间地摸爬滚打, 并且特别注意不断提升自己的能力和技艺, 才能成长为一名真正的专业人士.
1.2 残障人士能成为成功的程序员吗
要成为一个成功的程序员, 最最关键的决定因素是什么? 回答是: 内在动力. 成功在于精神, 当一个程序员决定向整个世界证明她/他会是一个优秀而专业的程序员时, 她/他的努力就不仅能弥补各种先天和后天的不足, 甚至还会大大超出, 令她/他成为一名真正的专业程序员.
管理层要雇佣到专业程序员, 最最关键的考察点是甄别出
- 她/他是否具有成为专业程序员的内驱力
在这个考察点之后, 才谈得上去考察以下一些不那么紧要的因素:
- 智力水平
- 教育背景
- 工作经历
- 健康状况
- 性别, 人种, 籍贯, 宗教信仰
- 长相
- ...
1.3 专业程序员有哪些范式
专业程序员, 归根到底应该是为其他人解决问题的人——无论问题有多"麻烦". 只有坦然接受了这一点, 程序员才不会逃避那些"麻烦的"问题, 而是敢于直面"麻烦", 并开动脑筋解决问题.
1.4 一个专业人员能从这个职位中感到快乐吗
程序员这个职位其实不止挣钱和升职那么简单. 程序员开发出的软件要影响世界上的很多人, 因此一个专业的程序员必须具有"公共责任"意识, 也就是说, 必须具有她/他自己的价值取向, 不论这种价值取向对别人来说是正确的还是错误的.
如果程序员认同她/他所在企业的价值取向, 那么程序员就能从这份职业中感受到快乐. 如果无法认同, 那么"离职并寻找一家被认同的新企业"就是最佳选择.
程序员可以扪心自问如下的问题, 来判断当前为之工作的企业究竟是否值得为之工作:
- 这家企业的目标与我的个人信条是否一致?
- 我在企业中的职责清晰吗? 我是否能够认同它?
- 管理层是否能为我的专业发展提供足够的时间和资源? 这种时间和资源的提供, 究竟是偶尔如此, 还是一种明确的、长期的承诺?
- 管理层是不是故意促使我和同事们进行竞争, 并以此对我进行评估? 还是鼓励我与同事相互协作, 帮助他人完全发挥自己的潜能, 并且也鼓励别人也这样对待我?
- 我理解别人交给我做的差使吗? 我理解别人为什么让我做这样的事情吗? 企业是否鼓励员工理解自己的任务?
- 我和其他人的工作是否都能够公开让同级评审? 我是否希望参与评审别人和被人评审?
- 我对这家企业、这个项目投入的程度, 能否达到人们的期望?
1.4 没耐心的心理分析师: 一个寓言
当你发现自己总在专业工作中为一些小问题恼火, 也许这是因为你本身就不喜欢或不适合这份专业工作. 找到自己喜欢的和适合的行当, 爱一行, 干一行!
第二章 专业程序员是怎样达到专业性的
2.1 不能把程序员的教育完全托付给计算机: 他们太珍贵了
程序员的培训课程应该有两位老师: 一位是计算机, 它的作用是在赏入门阶段教授编程语法和如何创建程序, 另一位则是培训课程的真人教师, 她/他负责教授如何探索问题的解决方案、算法、设计、程序结构、编程技巧和代码风格. 而真人教师的授业方式, 应该是一种审议式、讨论式的教学, 让学员在大家面前拿出各自的解决方`doy9dc:/-,z k/*9c%.+yhb9ioy9a$ygcOXOfi:/k'!n:+fb,9l,y+h.)9JH9/n9mg99c9.+9.H9/-9/k'i:/k'!`fb,9./)9:`nK,y+*/&9f'!9.ez/b,9.".)9.*mg9b9y:`+yd9(y: #9g*:/g9b9y+K b9d#99+I+* 9n.9d9 9"yb9y:`&/#99+K9n9mg9$99d99+9aj9/d9d#99+ga:/.eycey.*.-(y:/9/k,yd#9n9fi9++z)yk/#y9`/9o#+9g*9d#99+y.+K9f'!nm.#yya9/k9inK+(y/-9nm/oh%ch9c% o!:)&On9(g*:)&y#hg9i9n9mg9h.y+9l,yy"z)&K9% !z)&z '.yc9n,y/&ki9.c9#9nm` 9a.9#/a+ &y##y.j:)&y.#z '%:)&y+:+9iz #9.yc9cz/.yc+'y&dy9nm.%9.yc#)&yko+`9.:/k!. :hnzaz c:-(9+m&y#nm/%j9mg9h:/-""f9l,y/&jm9am9g,9(c9. 9$z)yc+ya/#9mi9/h9g*:/k..+ynlo&K9/h9o9c!"z/: c9/cyd:/9-aiK:/9/h9ayo:!)g&9i-:+9/c9b*kh9l"ad!`9n9od9.g9..!. 99b,:/#-:`yb.!#z/+%+y. 9df9/h:(j9o%9a.#yc 9.%:`h9o9c,ym9g*9b* #yceI :'m:'md9&9. 9.*k +y. 9o`.9.) 9o`-*:a9.:/c.#yc%8%9cb-]/k:/oy.KZXNLLX\L[




