5. 软件是达成目的的手段
任何一位软件工程师的主要工作都是交付价值。但我发现大部分软件开发者并不理解这一点,能够将这个理念内化进日常工作的开发者就更少了。但只要能够完成内化,我们解决问题的方式、看待工具的角度都会有所变化。如果您真心相信软件要服从于结果,那就一定能找到“真正适合工作的工具”,而这种工具也许压根就不是软件。
6. 有时候,你压根没时间磨刀
都说“磨刀不误砍柴工”,但刀磨久了反而让人心浮气躁、难以投入真正的工作。代码编写也是一样,研究多了容易让人陷入“分析瘫痪”。
一旦出现这种状况,请马上给自己设定一个截止日期,之后再探索解决方案。在着手解决问题时,我们很快就能找到思路与线索、引导自己一步步迭代向更好的产出。
7. 如果没法理解所有可能性,就设计不出优秀的系统
这也是我个人一直在努力解决的问题。我的职责变化导致自己距离常规软件工程任务越来越远,我发现跟上开发者生态的发展速度越来越难,有时候自己甚至不理解哪些趋势真正重要。总之,如果不能理解特定生态当中的那些可行性与可用选项,那么我们根本没办法为所有问题找到合理的解决方案。
总而言之,务必警惕那些已经很久没写过代码、也没设计过系统的所谓“大牛”。
8. 每套系统最终都很差劲,要勇于接受这一点
Bjarne Stroustrup 有句名言,“世界上只有两种语言,人们抱怨的语言和没人用的语言。”大型系统也是同理。并不存在“正确”的架构,我们永远无法偿还所有技术债务、设计不出完美的界面、也不可能永远拥有迅如闪电的测试速度。但做不到不代表什么都不做,这只是一种参考视角。优雅和完美本身就是种终极目标,