程序员的制胜技
上QQ阅读APP看书,第一时间看更新

1.1 在实战中,什么最重要?

专业软件开发行业还是相当神秘的。你打电话催甲方付款,催了好几个月,他们每次都会信誓旦旦地说过几天就给你;有的老板一分钱都没给过,还拉着你“画饼”说一赚到钱就会付给你;当你操起调试器时,有些bug却消失无踪了;有的团队根本不用源代码管理工具。对,就这么吓人。但你不得不面对这些现实。

毋庸置疑的是,工作产出相当重要。通常没有人会真的关注你的那些优雅设计、精妙算法,或者是高质量代码。他们关心的只是你能在规定的时间里出多少活。其实,良好设计、精妙算法和优质代码可能会为产出带来极大的正面影响,很多程序员都没意识到这点。相反,这些事情常会被程序员当作追赶截止日期(deadline,DDL)路上的“绊脚石”。这种思维会让人变成一个得过且过、戴上了脚镣的僵尸。

不过还是有人真的关心你的代码质量的——你的同事。他们才不想优化、维护你的代码,只盼着你的代码能够运行,并且容易理解、维护简单。这是你的分内之事,因为当这份代码被提交到存储库后,就成了所有人共有的代码。团队的总产出要比团队中的任何一个人的产出都重要。如果你写的代码很差劲,就是在拖整个团队的后腿。你的糟糕代码会影响整个团队,拖慢团队进度,甚至可能毁掉整个产品,最后这个“胎死腹中”的产品会成为你职业生涯中的污点。

从零开始写代码时,首先要有一个粗略的想法,其次是设计。这也是为什么说设计非常重要的原因。好的设计不一定非得摆在台面上,也可以保存在你的脑海里。你总是会遇到这样的人:他们对设计这件事不屑一顾,由着性子去写代码。对于这些人,我只能说他们不懂得珍惜自己的时间。

好设计模式或好算法能提升你的产出。不能提升产出的东西就是没用的东西。几乎一切都可以被赋予货币价值,所以你的一切行为都能够用产出来衡量其价值。

你当然可以用糟糕代码来获得高产出,但仅限于项目不需要进行产品迭代的情况。当你的客户想更改需求的时候,你却只能维护“屎山”(糟糕的代码)。在后文,我会举一些相关的例子,这些例子能让你在给自己“挖坑”时幡然醒悟,然后悬崖勒马。