球场上常常遇到一些跑位不成熟的球友,双打时容易出现这样的对话:“这半边是我的,你抢了我的球”,“这个球是你的,应该你接”......这种组合打起球来就很心累,因为轮转不起来,没办法很好地补位,留给对手的就是大片没有布防或者来不及防守的区域。
在工作中,也会遇到一些“原则性很强”的同学,在讨论某个功能开发的时候,往往出现这样的对话:“要做这个功能,肯定不能用技术A,一定要用技术B”,问技术A和技术B各自的优点、缺点、适用性,又几乎回答不上来,基本就是感觉技术A是自己设计的,不够高大上,技术B是市面上流行的,属于主流。可是我们终归是要解决问题的呀。技术B再牛B,它不适合我们当前的业务,也是白搭。
吴军在一篇《硅谷来信》中讲到,生活是具体的,这条原则同样也适用于工作。做技术需要足够的理性,选择实现方法的时候一定要根据实际的项目需求去选择最适合当下的方案,解决问题才是第一要务。不成熟的开发者常常有两个极端,一种是几乎零设计,开发软件随心所欲,用到的新东西越少越好,最好不要挑战自己的能力边界;另一种是过度设计,炫技、镀金、使用冗余的工具而不考虑软件的简洁和稳定。
没有任何一条公式可以适用于解决所有的问题,开发中需要避免教条主义。市面上现成的开源软件、各种封装好的工具和库为我们的工程实现提供了极大的便捷性,让我们省去了重复造轮子的代价,但并不是随便拿一个现成的东西就能用在你的系统里,还得看你到底要解决什么问题,你的客户需要什么。奥卡姆剃刀定律是说,如无必要,勿增实体。我们要把一件简单的事做复杂很容易,把一件复杂的事做简单却很难。
努力做一个成熟的开发者,抽象问题,抓住本质,做最有价值的事情。