1、专业主义
要成为技术专家,就要比别人付出更多努力,花更多时间去学习专业知识。比如每天比别人多学习3个小时,一周就能多出20多个小时了。
坚持学习:学习新的知识,与时俱进。比如我是Java程序员,就去学一学Ruby。
练习:每天练习一个简答的编程问题,练习的目的是训练大脑和手,而不是找不问题的解决方法。
合作:努力与他人一起编程,练习,设计,计划,从其他人身上学到东西。
辅导:传道授业的同时,导师也会从中受益。重视对新人的辅导。
了解业务领域:作为技术人员,不要求成为自己所在领域的业务专家,但是必须了解自己所涉及的业务。
2、说不
客户所要的任何一项功能,一旦写起来,总是远比它开始所说的要复杂许多…….
公司里面有不同的职位,每个职位上的人都要坚守自己的职责,尽可能去追求和捍卫自己的目标。
以专业者的视角,对不合理说不,坚持专业主义精神。
比如,产品经理PM要求项目两周上线,你知道两周不可能完成这项任务,向 PM 说“不”,让PM调整时间进度。
要有团队精神,恪尽职守,当其他队员有困难时你要援手相助。有团队精神的人会频繁和大家交流,会关心队友,会努力做到尽职尽责。
3、说是
向别人清楚的表达自己是按约定完成任务,而不是“我试试”,“有可能下周一可以完成”,应该是“我保证,周二肯定一切就绪”。
作为专业人士,你不需要对所有的请求都回答“是”。不过你应该努力寻找创新的方法,尽可能做到有求必应。
当你给出肯定的回答的时候,你需要用正式的承诺,以确保各方能明白无误地理解承诺的内容。
4、编码
好的编码:
- 代码能正常工作,能与当前语言、平台和机构以及当前系统的所有问题和平相处
- 代码解决客户提出的问题
- 代码必须和当前系统结合得天衣无缝。编写代码时必须遵循稳健的工程原则。
- 写好注释。这是程序员最难精通的一件事情。
如果感到疲惫和心烦意乱,千万不要编码。强而为之,最终只能再回头返工。
[p.s. 国内加班的氛围浓厚呀,所以要适当调节自己的身体,使之轻松]
焦虑的时候不应该写代码,这时产生的任何代码都会是垃圾。此时应该先解除焦虑。
TDD (Test-Driven Development):测试驱动开发
流态区:
结对编程的好处
加班
帮助
互相帮助是每个程序员的职责所在。作为专业人士,要以随便能够帮助别人为荣。
除了自身的内驱动力和资深导师的有效辅导外,没有东西能将一名年轻的软件开发人员更快地提升为敏捷高效的专业人士。
清楚团队伙伴的状态。如果有人看起来遇到了麻烦,就应该向他提供帮助。但是首先我们学会自己解决问题:通过利用各种搜索引擎和论坛,其中比较重要的是提问的艺术。
帮助别人的时候,可以和别人一起坐下来写代码,预留一个小时的时间,当然也许不用那么久,但是不要让自己看起来比较仓促,仿佛知识随机应付。当你离开的时候,你或者会发现自己从中获得的东西比给予的还要多。
5、测试驱动开发 TDD
Test-Driven Development ,测试驱动开发。
TDD的三项法则:
- 在编号失败单元测试之前,不要编写任何产品代码
- 只要有一个单元测试失败了,就不要再写测试代码;无法通过编译也是一种失败情况
- 产品代码恰好能够让失败的单元测试成功通过即可,不要多写。
TDD 的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完成全部功能的开发。
参考:https://www.cnblogs.com/qing-gee/p/11089944.html
TDD的优点:提升代码的确定性,降低代码缺陷、优化文档和设计的原则。
单元测试即是文档。他们描述了系统设计的最底层设计细节。
先写测试用例 or 后写测试用例
类比防守与进攻:先写测试用例就是进攻,不知道问题是如何解决的。后写测试用例有可能受限于已有的代码,坐着已经知道问题是如何解决的。与前者相比,后者的测试在深度和捕获错误
6、练习
Kata 卡塔
TheBowlingGameKata、ThePrimeFactorsKata
目的:专业人士通过练习提升自己的技能
编程卡塔:一整套敲击键盘和鼠标的动作,用来模拟编程问题的解决过程。练习者不是在解决真正的问题,因为你已经知道了解决方案。相反,你是在练习解决这个问题所需要的动作和决策。
编程卡塔通过一个有待解决的简单编程问题来实现,比如编写计算拆分某个整数的素数因子、保龄球游戏等。
编程卡塔的最终目标,也是逐步练习以达到纯熟。反复的练习会训练大脑和手指如何动作和反应。在不断练习当中,你或许会发现动作的细微进步,或者解决问题效率的小幅提升。
要学习热键和导航操作,以及测试驱动开发、持续集成之类的方法,找整套的卡塔来练习都是相当有效的。更重要的是,它特别有利于在潜意识中构筑通用的问题与解决方案间的联系,以后在实际编程中遇到这类问题,你马上就知道要如何解决。
真正的挑战是把一个卡塔练习到炉火纯青,你可以窥见其中的规律。要做到这一点可不容易。
记住:专业人士都需要练习,更重要的是他们使用自己的时间进行练习,因为保持自己的技能不落伍是自己的责任,而不是雇主的责任,练习的时候你是赚不到钱的,但是练习之后,你会获得回报。
7、验收测试
观察者效应
自动化验收测试
14、辅导、学徒期和技艺
观察别人的工作,从中快速学习。
建立正确的价值观和反省的习惯。
实习生,理想化的学徒阶段:
在这个阶段,应该密集地进行结对编程,保持学习纪律并强化各项实践,各项的价值观基础也是在这个阶段形成的。
熟练工会担任他们的导师,他们要确保学徒们能够了解设计原则,设计模式,各种纪律和固定的操作环节。熟练工会向他们传授TDD、重构、估算等各种技艺。他们会为学徒安排阅读,学习和实践任务,还会检查学徒们的任务进展情况。
实际上,我觉得学徒需要自我驱动,自己想去学,遇到问题,先自己尝试着去解决,是在不能解决就去问导师。问别人问题的时候,应该带着一种请教的态度,毕竟你是请别人办事儿,态度要好,其次面皮要厚,不能因为这个问题看起来简单,就觉得不好意思去问别人。