程序员的职业素养-总结

程序员的职业素养,没有介绍很多更专业性的知识,是很适合程序员入门学习,对文中的语句进行收集总结,改变了很多观念,了解测试的重要性,即使危机时刻也要坚持自己认为正确的事,了解了什么时候该说”不”,说“是”要注意什么,要持续学习等

专业人士

成为专业人员,意味着要承担责任,对代码负责,对业务、客户负责,让失误率更低。

学习

当今技术一直在变,但是基础知识很少改变,我们需要精通设计模式、UML等工图,能够实践测试驱动开发、面向对象设计、持续集成、结对编程

软件行业改变很大,还得不断学习新技术,保持不落伍是自己的责任

坚持练习,保持手感和学习编程技巧

通过合作能互相学习

教导他人能快速成长,专业人士也会视辅导新人为己任。

可以开源做贡献

不要局限语言和平台

在软件行业成熟无法寄托于大学教育,需要有导师长期指引的机制,让学徒了解设计原则、设计模式、各种纪律和固定的操作环节,学会TDD、重构、估算等技艺,安排学徒阅读、练习实践,检查任务进展。

工作

我们工作职责是让业务免于陷入困境,让公司可以长久发展,不能只管技术

开发系统应当站在雇主的角度考虑,雇主的问题就是我的问题,得弄明白这些问题,寻找最佳解决方案,满足雇主需要。

能就是能,不能就是不能,不要说试试看

专业人士能在自己的领域说“不”,为解决问题找到双方都合适的方案。

加班条件:能挤出个人时间,短期加班两周,加班也完不成时,了解上级的预备方案

雇主没义务让你成长,上班时间应该为公司工作,其余时间才是自己的

确定任务优先级,根据真实紧急程度来执行任务

即使有压力,专业人员也会保持冷静,坚持受到的训练和纪律,能够更好的走出困境

公司招聘自己是让自己来工作解决问题的,没有义务帮助自己成长,学习需要靠自己

承诺

预估应该包含乐观、正常、悲观估计,包含概率

口头说会去做,心里认真对待,真正付出行动

缺乏承诺的语句:需要/应当,希望/但愿,让我们

专业人士给出肯定性语句

编码

软件要易于修改,如果希望自己的软件灵活可变,就要时常修改他。

如果想要时常修改,但是怕修改出错,所以我们需要覆盖全部代码的自动化测试

认为正确的方法应该一直坚持,尤其是紧急时刻

代码要保证:

  • 代码能正常工作
  • 能解决提出的问题
  • 和系统完美结合
  • 易于理解

感到疲劳或者心烦意乱,千万不要编码,否则只能从头返工,要找到方法消除干扰,平静下来

感到效率极高时,为了追求所谓的速度,理性思考的能力会下降,此时应该走开几分钟,音乐容易带入流态区

死活写不出代码,可以找别的事情干,或者结对编程

生活

奉献精神和职业素养,要遵循纪律原则而非工作狂,要确保健康的生活方式

阅读可以带来创造性输入

软件开发是马拉松,要调整好自己的身体状态。

时间管理

早上可以安排一天的计划,以一个小时为单位

立会:昨天干了什么、今天打算干什么、遇到了什么问题,发言不超过一分钟,

无法在五分钟内解决的争论,都不能靠辩说解决

没有数据的情况下,观点无法在(5-30分钟)达成一致,唯一的出路是用数据说话,

测试

所有代码都测试一次,保证正常运行,先写测试样例,再写代码,测试直到对自己的代码有信心

特殊情况下也要保证自己的测试能够通过质量测试,懒得测试省去的时间金钱,出错了都会加倍偿还。

TDD三项法则:

  1. 编写好失败单元测试之前,不写任何产品代码
  2. 只要有一个单元测试失败,就不再写测试代码
  3. 产品代码恰好能让当前失败的单元测试成功通过即可,不要多写

重构如果有一套值得信赖的测试,就能消除修改代码的恐惧,代码会具有可塑性

事后写测试的作者受限与已有代码,已经知道问题是如何解决的,后写测试在深度和捕获错误的灵敏度方面要逊色很多

团队

团队理想配置7名程序员,2名测试成员,2名分析师,1名项目经理

团队比项目更难构建,有凝聚力的团队能一起解决问题,能够动态调整重点

编程意味着与人合作,需要学会交流