《代码整洁之道》学习体会之一:做事专业
每个职场中人都知道做事情要专业这个基本道理,但很多十几年的职场老油条都未必是真正意义上的专业人士。专业性的第一条便是具备责任心。对于这一点没有人会说自己没有责任心,但回顾一下工作中的表现吧。例如作为程序员来说,是把代码写完编译通过就提交给测试人员,等着反馈了问题再去修改吗?这就是不专业的表现,负责任的做法应该是程序写完之后就要保证功能是完整自测通过的。
有的程序员也许会强调时间紧,任务急,能完成功能就不错了,再花更多时间去测试,那后面堆积的工作就更加完不成了。这种片面强调时间紧张的说法也是站不住脚的,Bob大叔作为一名美国码农,在他早期职业生涯一样要面对苛刻的时间要求。貌似在软件工程领域,时间永远都是不够的,这一点还真是不分国界了。
在做了几个糟糕的项目之后,Bob大叔痛定思痛,决定不能再这样在低水平的层级中无限循环下去了。他决心成为一个专业的程序员,他使用了很多方法论以及工具来保障软件产品质量。例如对于代码的态度,他的看法就是凡是自己写的每一行代码,都要有相应的测试代码。这看起来似乎是一件难以完成的工作,但一开始没有这样的决心,那得到的结果永远都是低水平的重复。
Bob大叔推崇测试驱动TDD开发方法,就是在实现业务逻辑之前先写好单元测试代码。这样做的好处是充分保证业务代码都经过了功能测试,并且后续增加新功能可以快速检验对既有代码的影响程度。而不是加一段代码之后还要花大量时间验证现有功能是不是正常。同时TDD方法可以倒逼程序员思考业务逻辑的设计是否合理,因为耦合得太紧的代码是无法测试的。
负责任的程序员还应当保持旺盛的学习热情。当然,对于中国的码农们来说,都知道学习的重要性,可有时候也会面对职业倦怠的问题。例如每天都有新鲜事物冒出来,层出不穷的技术框架,刚学会用的东西转眼就过时了。
所以对于技术的学习,我觉得可以从道与术两个方面来看。道为上,术次之。道所包含的应该是那些基础的思想与理论,例如计算机体系结构、操作系统理论、经典的算法,以及软件工程理念等。而术所包括的则是编程语言的用法、技术框架的功能、开源软件等,这些拿来就能用的东西。
显然,道的内容是长远重要但不紧急,术的内容是当前重要且紧急。因此我们总是把时间花在当前重要的事情上,而对长远有益的事情却是一再拖延。这样就会陷入术的坑里,疲于应付手头的工作,而无法得到在境界上的提升。
这对我来说也是要不断提醒自己的,绝对不能陷入在技术的细节里,却忽视了技术之道的学习。