在旧金山举行的JavaOne 2015上,Martijn Verburg抛开了他Diabolical Developer(魔鬼开发者)的身份,以禅师的面目出现,用比喻的方式向Java开发者介绍了相关的注意事项。他甚至衣着都跟身份很相衬,一条传统的黑色禅裤、衬衫和凉鞋。
Verburg ,总部位于伦敦的应用性能分析服务销售商jClarity的CEO,在取得同意的情况下调整了话题,从谈Qi在The Codeless Code网站写的东西(带插图的寓言),谈到了禅宗心印,以及软件开发的艺术和哲学。
Verburg告诉每一则寓言中,一位软件禅师就教给了他的学生,或者说和尚,一些软件开发的核心要素。很多时候,和尚靠苦修才能学到东西。一下就是禅道Java开发者可以吸取的一些经验教训:
1、名字命名要清晰。在这则寓言里,年轻的和尚发明了一门只有自己才会讲的部落寓语言。有新人加入他们时,这门语言就变得没用了。写面向对象的Java代码时,Java开发者正确地命名东西也很重要。要有描述性。
2、你是程序员。要自动化。在这则寓言里,两位年轻的和尚负责清理两个养锦鲤的池子,因为皇帝几天后要来参观。如果池子清理不干净,他们是要掉脑袋的。一位和尚弄了很多的工具,开始人工清理池子里面的杂草。另一位却坐在树底下,读一本HTML的书。第一位和尚废寝忘食连续工作了72小时。时间所剩无几了,池子还没清理干净,于是他哭着去找第二位和尚。第二个和尚站起来,借了一把铁锹,在每个池子跟附近一条清澈的溪流之间分别挖了一条沟渠。干净的水流进了池子,然后就变干净了。
Verburg说,在有自动化工具的时候,就不要靠开发你知道的工具。升级也许会带来一些短期的成本和阵痛,但自动化工具能够替将来省钱避免麻烦。给自动化找理由很容易,因为它是省钱机器。唯一的缺点是一些系统管理员会失去自己的工作。
3、寻找答案之路跟答案一样重要。在班上,一位出色的学生能够一下子就回答出复杂的问题。不过第二位学生,会把整个过程走一遍然后得出答案。禅师最重视哪一位呢?第二位和尚。
Verburg招聘时倾向于找面向过程的、勤奋的开发者。“我们招聘的时候会很小心,只招那些能够把过程走完,并就完成的事情跟团队沟通的开发者,”他说。软件开发是一项团队努力。即便是出色的开发者,那些不用经过很长的过程一下子就能跳到最后解决方案的人,也要能够把产生解决方案所需的步骤描述清楚。
4、整个系统都重要。和尚能够做出完美的木板,但他们从这则寓言中学到的是,木板并不能造出一座桥。
“我费了一番功夫才明白要更多地专注整个系统端到端的测试,整体性的系统测试,” Verburg说。开发者不能仅仅聚焦在应用或组件上,因为系统是相互依赖的。比方说,无法检查两个组件之间的活动的话就可能会弄错端口。然后系统管理员也就无法打开端口,开发者最后看起来会很糟糕。
5、代码尽可能少写,不要相信自己能写出完美的代码。两则相关的故事给出了有关完美主义的建议以及写出更好代码的办法。Java开发者会感到失望,因为别的开发者总是会搞坏他的代码—无论自己写多少代码,而另一位则会寻求写出完美的代码。这两种情况下,他们对现实的抵抗都是没有用的。完美代码并不存在。至于击败黑客,Verburg建议开发者可以通过尽可能少写代码来让损失最小化。
6、英雄早逝。软件开发的忍者手段会导致筋疲力尽,但许多组织仍然坚持这么做。他们会有一支“老虎”团队,出现失败的时候就会被召唤过来。“然后,拍拍你后背,表扬你用72小时不停歇的工作挽救了局面,”Verburg说:“如果你的组织是这么做的,那还是另谋高就吧。”
7、以身作则。Verburg回忆起未加管教的和尚,那位一而再再而三犯同样错误好多年的和尚。当他的老师向禅师抱怨时,禅师却指责老师没有以身作则。
不要光说“我是团队领袖,没有时间进行测试”这样的话,Verburg说。
最后,Verburg问观众是否倾向于自己写程序而不是用现有的。比方说,有没有写过自己的时间程序或领域相关语言?戒除这种习惯,他建议道:“如果有现成的解决方案,尤其是如果是开源的话,拿来用就是了,”他说。要拿过来用,即便需要调优,这样也能节省时间,然后更快更好地完成更多的项目。