第一章:注重实效的哲学
一.我的代码让猫给吃了
在编程中,我们需要对我们编写的每一个功能,每一行代码,每一个变量负责,但事实是,我们害怕去负责,我们害怕遇见被指责这一类负面现象。但是一名软件工程师,我们要做到的不仅是设计一个功能,更需要的是遇见未曾发生的事情,我们也许没有办法去解决这个问题,但是我们需要提供解决方案,而不是一味地逃避去面对责任。勇敢诚实地去承认错误,并设法给出各种选择,而不应该将责任转移或是寻找借口。这个现象其实在代码语法中也可以看出,在if没有判断到的情况中,我们可以用else代替,在switch中没有预料到的情况,我们可以设置default选项,如果我们没有办法预支危险可能,就应该提供避险方案。
二.软件的熵
当软件中代码无序增长时,程序员称之为“软件腐烂”,的确,软件中代码量在不断增长,却没有有效的管理,那带来的结果必然是无序。阻止软件的熵不断变大的办法只有一个,那就是在代码量没有足够大的时候及时的去管理。破窗子带给我们的启示就是:不能容忍破窗户,发现一个破窗户便立即修复,避免影响扩大。在编写课程助手APP的时候,我总是喜欢在将按钮的监听器一个个写出来,这样一来,代码就显得十分的冗余,不如switch语句显得干净利落,而且一开始也不喜欢写工具类,调用的时候也不是很方便,知道后来才有这个意识,而且写一段时间之后就需要对代码进行整合,这些都是由一个个破窗子积攒产生的。如果你的代码简洁漂亮,那么你也会继续保持这种优秀的编码风格。
三.石头汤和煮青蛙
作为团队的领导者,我们需要一步步地激励自己的团队成员,给他们以诱惑,促使大家都行动起来,为了一个更好的产品,领导者需要成为这些变化的催化剂,但是即使有催化剂,但是结果并不是团队成员十分急需的时候,也很难调动大家的积极性。反过来,要想使团队变得越来越差,也只是需要一个人慢慢地拖累大家,打击团队的士气,同样也可以使一个团队崩溃。
四.足够好的软件
可以说世界上没有完美的软件产品,但是一定有足够好的,就像一件艺术品一样,变成需要知道何时止步,这里的止步便是要懂得平衡软件完成功能的代价,在时间与空间上有足够的平衡,就像计算机网络的孟凡老师在课上说过,每个算法都需要一定的代价。而工程师需要做的就是平衡这些代价,让用户感到舒服即可。
五.你的知识资产
计算机科学的知识更新换代太快,老知识一定是落伍的,就拿java来说,以前的不少方法都已经被弃用了,不学习,只能被淘汰,当然这也是对于编程而言,如果脱离编程的岗位,那么软件构造的知识是否也需要更新呢?当然,学习是一个批判的过程,在过去的十八年里,我们所学到的知识都被标榜是正确的,但是以后呢?仔细回味一下,到底是否是全部正确,如果选择了另一个方向,我们会走向成功吗?未来都将会是人生的挑战,谁也不知道会怎么样。
六.交流
这无疑是软件工程中极其重要的一部分,不管是团队中还是和你的客户,优秀的交流让对方知道我们需要什么,让自己明白对方要什么,当然,交流本身就是一个极具艺术的行为,我们需要恰当的时机场合,用恰当的方式风格来进行。