成为专业人士。
今天开始读到了第四章 编码,之前三张内容 将在周末或其他时间时间补全,最迟将在本月补全。
Bob大叔 在主要要传授的是关于编码的一套规则与原则。
要熟练掌握每项技艺,关键都是要具备‘信心’,和‘出错感知’的能力。而以上两点都是在这套规则所引发的。他们描述的是编码时的行为,情绪与态度。
做好准备。
1,代码必须正常工作。2.代码必须能够帮助你解决客户提出的问题。3.代码必须要能和现有系统结合的天衣无缝。4.其他程序员必须能够读懂你的代码
千万不要在心烦意乱或疲劳时编码。
例如凌晨3点或者和女朋友闹别扭时写出的代码一定会在某日让你更加痛苦。
流态区
就是自我感觉良好,效率超高,你会感到觉悟错误,但是这是危险的。他会使你可以敲出更多地代码,但是你正在做TDD,其实你并没有估计全局。最好的做法是感觉快要进入流态区时,走开几分钟。或者采用结对编程(这个目前好像非常流行,我在其他的科技博客上也看到了类似的说法)而真正应该进入流态区的时间应该是 练习。
音乐
听着音乐确实会让我们感觉轻松,但是真实情况是,音乐正带着你进入流态区。(在工作前一段时间听听音乐确实能够较快的让自己进入状态,但是当沉浸其中时那就进入了所谓的流态区,浅层次冥想,应该减少进入流态区)
中断
当思考问题或进入流态区工作时被打断,不要态度恶劣的去对待他人。结对编程能够让你快速的回到打断之前的思维中,或者让你的同伴去处理问题。另一个办法是采用TDD方法。(:( 不知道TDD是什么 )如果被打断因该礼貌的表现出乐于助人的态度而这才是专业的态度,也许下次或许是去打断别人的就是你。
阻塞
谁都有写不来代码的时候,而那时应该做点别,放松心情。而最好的方法是结对编程。如果还不行那就找个角落清静一会。
创造性输入
要免于陷入阻塞状态的一个好办法就是要多 创造性的输入,才能创造性的输出。
读书看报听音乐,科幻喜剧白日梦。
调试
如果你的代码没有调试那将会是一场无尽的噩梦。
调试时间
开发人员认为调试时间并非编码时间,他们认为存在调试时间是天经地义的。但是对于工作来讲调试时间和编码时间是一样昂贵的。推荐采用”测试驱动开发“这能减少测试时间。(不过我连测试还不会呢)医生不喜欢重新打开病人的胸腔去修复此前发下的错误,律师不喜欢再度接手此前搞砸的案子。
返工是不专业的表现。
保持节奏
软件开发是场马拉松。专业程序员会仔细保存好自己的精力和创造力。
知道何时应该离开一会
遇到没有解决的问题就不应该回家。错,你可以回家,并且因该回家。调整好精力,让大脑休息好,保持节奏能够解决更多的问题。
开车回家路上
让大脑专注于其他事情上,会有助于解决问题。
洗澡
还是放松。
进度延迟
你总有一天会遭遇延迟的情况。有时候只因为我们夸下了海口。
根据目标定期衡量进度。乐观预估,标称预估,悲观预估。告诉项目利益相关者,并每天更新这个数字。
期望
如果10天后要交项目,你的预估是12天,你绝对不可能完成任务。要让利益相关者知道,除非有另外解决方案。不要让其他任何人对此抱有希望。
盲目冲刺
经理极力要求你赶上最后期限时。你应该坚持你的预估,不要盲目冲刺。那样会出很多问题,并使整个项目都变得缓慢。
加班加点
多工作的20%时间并不能完成20%的工作。如果连续加班3个星期加班措施必将失败。
你个人能力挤出这个时间,短期加班,最多两周,老板有后备预案。如果有后备那就加班吧。
交付失误
程序员最不专业的表现是,明知道还没有完成任务去宣告完成。
定义”完成“
最好是有个自动化的验收测试
帮助
编程并非易事。需要他人的思想。
帮助他人
相互帮助是每个程序员的职责所在。
接受他人的帮助
如果有人向你伸出援手,要真诚接受,心怀感激地接受帮助并诚意合作。
要学会请求帮助。如果帮助唾手可得而不请求帮助是很专业的表现。
辅导
向资深导师寻求辅导也是年轻程序员的专业职责。
除了自身的内驱动力和资深导师的有效辅导之外,没有东西能将一名年轻的开发人员提升为敏捷高效的专业人士。花时间手把手的辅导年轻程序员是资深程序员的专业职责所在。
(要想升级快全靠师傅带,没师傅的只能靠内驱动力了,找到驱动力)
概念:
测试驱动开发(Test-driven development)是现代计算机方法的一种。利用来驱动程序的设计和实现。测试驱动开始流行于20世纪90年代。测试驱动开发是中倡导的程序开发方法,方法主要是先写测试程序,然后再编码使其通过测试。测试驱动开发的目的是取得快速反馈并使用“illustrate the main line”方法来构建程序。
测试驱动开发的比喻。开发可以从两个方面去看待:实现的功能和质量。测试驱动开发更像两顶帽子思考法的开发方式,先戴上实现功能的帽子,在测试的辅助下,快速实现正确的功能;再戴上的帽子,在测试的保护下,通过去除冗余和重复的代码,提高代码重用性,实现对质量的改进。可见测试在测试驱动开发中确实属于核心地位,贯穿了开发的始终。
TDD 参考文章: