程序员的职业素养-读书笔记

原创
2013/09/03 13:11
阅读数 282
    花三分的力气去抵制无理的需求,可以节省十分甚至二十分的开发时间。 

引言
    辞职是突然的,而且是有预谋的。
    辞职前一定要找好下家,要非常冷静,非常趁着,不要拉上其他人。


第1章   专业主义
    专业主义的精髓就在于将公司的利益视同个人利益。专业主义就意味着担当责任。
    未进行测试就交付软件就是不负责任的。
    软件开发太复杂了,不可能没什么Bug。单很不幸,这并不能为你开脱。
    代码中难免会出现bug,单着并不意味着你不用对他们负责;没人能写出完美的软件,但这并不表示你不用对不完美负责。
    所谓专业人士,就是能对自己犯下的错误负责的人,哪怕那些错误实际上在所难免。
    失误率永远不可能等于零,但你有责任让它无限接近零。
    让QA找不出任何问题,要确信代码正常运行,自动化QA。
    如果你有一套覆盖了全部代码的自动化测试,如果那套测试可以随时快速执行,那么你根本不会害怕修改代码。
    职业发展是你自己的事。雇主没有义务确保你在职场能够立于不败之地,也没有义务培训你,送你参加各种会议或给你买各种书籍充电。
    将自己的职业发展寄希望与雇主的软件开发人员将会很惨。
    不能铭记过去的人,注定重蹈先人的覆辙。
    每个专业开发人员必须精通的事项:设计模式、设计原则、方法、实践和工件。
    不写代码的架构师必然遭殃,他们很快会发现自己跟不上时代了;不学习新语言的程序员同样会遭遇,他们只能眼睁睁看着软件行业径直向前,把自己抛在后面。
    联系、合作、辅导、了解业务领域、与雇主/客户保持一致、谦逊、


第2章   说“不”
    “能就是能,不能就是不能。不要说‘试试看’。”
    如果他们是专业程序员的话,他们也会竭尽所能地去追求和捍卫自身的目标。
    要有团队精神。
    许诺“尝试”,就意味着你承认自己之前未尽全力,承认自己还有余力可施。
    尽管客户一再声明交付日期很重要,尽管他们对此表现得似乎非常迫切,但他们永远不会像你那样在乎应用程序的按时交付。
    专业人士常常会成为英雄人物,但这样的荣誉并非是他们所可以追求的。
    成为英雄及“解决问题”的诱惑诚然巨大,只是我们要明白,委屈专业原则以求全,并非问题的解决之道。舍弃这些原则,只会制造出更多的麻烦。


第3章   说“是”
    作出承诺,包含三个步骤:
        1. 口头上说自己将会去做。
        2. 心里认真对待做出的承诺。
        3. 真正付诸行动。
    你只能承诺自己能完全掌控的事。
    如果你无法兑现承诺,那么最重要的就是尽早向你的承诺对象发出预警,越快越好,越早越好。
    做出承诺或许听起来令人有点害怕,但它能够帮助程序员解决在沟通中可能发生的不少问题。如果你能够一直信守承诺,大家会以为你“是一名严谨负责的开发人员”。
    专业人士不需要对所有请求都回答“是”。不过,他们应该努力寻找创新的方法,尽可能做到有求必应。


第4张   编码
    首先,代码必须能够正常工作。代码必须能够帮你解决客户提出的问题。代码必须要能和现有系统结合的天衣无缝。其他程序员必须能读懂你的代码。
    如果感到疲劳或者心烦意乱,千万不要编码。
    在听音乐时无法写好代码。音乐并没有帮助我专注与编码。事实上,听音乐似乎消耗了至为重要的一部分脑力资源,而这些资源本该用于编写设计良好的整洁代码。
    中断无法避免,总有干扰会打断你、消耗你的时间。发生这种情况时,要记住一点,也许下次会轮到你去打断别人请求帮助。因此,礼貌地表现出乐于助人的态度才是专业的态度。
    对于公司来讲,调试时间和编码时间一样昂贵。
    绝对的零调试时间是一个理想化的目标,无法达到,但要将之作为努力方向。
    可以通过创建一个确切定义的“完成”标准来避免交付失误。最好的方法是让业务分析师和测试人员创建一个自动化的验收测试,只用通过这些验收测试,开发任务才能算已经完成。
    编程很难,事实上,仅凭一己之力无法编写出优秀的代码。即使你的技能格外高超,也肯定能从另一个名称需要的思考与想法中获益。


第5章   测试驱动开发


第6章   练习
    现在我们有了更好的工具,更好的语言。可是,语句的本质并没有随着时间而改变。20世纪60年代的程序员完全可以看懂2012年的代码。我们真正打交道的东西,40年来没有多少改变。
    任何事情,要想做得快,都离不开联系。
    无论如何,专业人士都需要练习。练习的时候你是赚不到钱的,但是联系之后,你会获得回报,而且丰厚的回报。


第7章   验收测试
    做业务的人和写程序的人都容易陷入一个陷阱,即过早进行精细化。
    完成意味着所有的代码都写完了,所有的测试都通过了,QA和需求方已经认可。这,才是完成。


第8章   测试策略
    
第9章   时间管理
    关于会议,有两条真理:会议是必备的,会议浪费了大量的时间。
    邀请你参加会议的人并不负责管理你的时间,为时间负责的只有你。所以,如果你收到会议邀请,务必确保出席会议可以给自己目前的工作带来切实且显著的成效,否则不必参加。
    如果会议让人厌烦,就离席。
    凡是不能再5分钟内解决的争论,都不能靠辩说解决。
    编程是需要持续投入精力和注意力的智力活动,注意力是稀缺的资源。
    睡眠的重要性怎么强调都不为过。
    太多的咖啡因会把你的注意力偏转到奇怪的方向。
    所有软件开发者都要遇到死胡同。慎重的态度和积累的经验可以帮你避免某些死胡同,但是没法完全避免所有的。所以你真正需要的是,在走入死胡同同时可以迅速意识到,并有足够的勇气走回头路。这就是所谓的坑法则:如果你掉进了坑里,别挖。
    最糟糕的事情,莫过于看到一群开发人员在徒劳地拼力工作,结果却陷入越来越深的泥潭。


第10章  预估
    预估是业务人员和开发人员之间最主要的障碍,横亘在双方之间的种种不信任,几乎都由它引发。
    承诺是关于确定性的。其他人会把你的承诺当真,据此拟定计划。
    预估是一种猜测。它不包含任何承诺的色彩。它不需要做任何约定。预估错误无关声誉。我们之所以要预估,是因为不知道到底要花费多少时间。
    专业开发人员能够清楚区分预估和承诺。只有在确切知道可以完成的前提下,他们才会给出承诺。此外,他们也会小心避免给出暗示性的承诺。他们会尽可能清楚地说明预估的概率分布,这样主管就可以做出合适的计划。


第11章  压力
    应对压力的诀窍在于,能回避压力时尽可能地回避,当无法回避时则勇敢直面压力。可以通过慎重承诺、遵循自己的纪律原则、保持整洁等来回避压力。直面压力时,则要保持冷静,与别人多多沟通,坚守自己的原则记录,并寻求他人的帮助。
    
第12章  协作
    对做的事情充满激情是好的,但是,最好把注意力集中在付我们薪水的老板所追求的目标上。
    专业程序员的首要职责是满足雇主的需求。
    你需要理解手上正在编写的代码的业务价值是什么,了解你的企业将如何从你的工作中获得回报。
    如果我们真想终生能以编程度日,那么,一定要学会交流——和人们交流。


第13章  团队与项目
    专业的开发组织会把项目分配给已形成凝聚力的团队,而不会围绕着项目来组建团队。


第14章  辅导、学徒期与技艺
    学校能够传授的是计算机编程的理论。但是学校并不会也无法传授作为一名编程匠者所掌握的原则、实践和技能。


分享该书的共享下载地址  http://pan.baidu.com/share/link?shareid=1591147589&uk=2167302790

展开阅读全文
打赏
4
1 收藏
分享
加载中
79
2014/01/04 13:56
回复
举报
更多评论
打赏
1 评论
1 收藏
4
分享
返回顶部
顶部