编程的目的不是编程
编程是让使用者运用,帮助他们解决问题、满足需求的工具。所以真正的目标是“问题被解决”、“需求被满足”,而不是编程的我本身。一个工程师必须认清编写的程序不是一件作品,而是过程中的介质,才能设计出真正增进用户生活的好软件。困难的事不一定有价值
很多时候,工程师辛苦刻了一些功能,却发现用户根本没有这样的需求。另一些时候,我们发现按钮的颜色、说明的文字、新手上路的引导、会员登入后体贴的问候,这些功能做起来很简单,用户却非常在乎。人生也是,我们辛苦的付出,人家不一定有感受,但一句不经意的话,却可能掀起社会运动。新东西不一定好
人天生喜欢新事物,但在设计软件产品的过程中,新技术往往不是最好的选择。新技术通常有很酷炫的核心,但缺乏完整的周边配套,甚至没有太多工程师真的懂。因此实务运用上,往往带来更高的成本与更大的风险。因此,聪明的工程师会选择成熟或接近成熟的技术。懒惰不是坏事
优秀的工程师往往是最懒惰的动物,正是因为懒惰,所以可以做出最方便好用、容易维护的软体。简化才是王道
N倍复杂的软件,带来N平方成长的用户教育、团队沟通协作、后续维护成本。因此,学程式会教你力行减法的重要,KISSeverything.(KeepItSimpleandStupid)系统思考
程序往往不是一个独立存在的个体,而是由许多互相连动的模块、物件、平台所形成的体系。因此,学习设计程式的同时,也势必会增强系统思考的能力,帮助你理解单独模组的优化不一定能提升整体战力,以及找到系统内杠杆点等重要人生观念。没有情绪、只有逻辑
人是理性与感性兼具的动物,但机器却只有%的理性。因此当你的程式无法Compile(编译过关),跟机器生气、求情、说谎都是没用的。只有学会摒弃自己的情绪,用完全合乎逻辑的方式,才能通过他们严格的关卡。在过程中,你也学会了如何运用EQ。问题的根源都是自己
当程序出现问题、当用户的问题没解决、需求不满足,你并不能怪罪用户、也无法推卸给机器,只能怪自己没有做出好的选择、设计出对的架构、写出可靠的程序。人生也是一样,问题都根源于自己过去某个时点做出的选择,没什么好责怪别人。速度与债
在设计早期版本软件时,为了求快、求提早取得市场反馈,工程师往往会用较粗鲁的方式完成功能,因此欠下所谓“技术债”。而后,当产品获得市场欢迎,用户量持续成长,偿还这个技术债所需的时间与人力就会日益膨胀,就像现实生活中的负债会生利息一样。因此,工程师要懂得在对的时间点,把前债还清,才不会在日后造成永不超生的后果。经历过几次这个过程,你将学会用成熟的态度去面对选择、负债、偿还。可以一时绕过麻烦,但无法永远逃避它
这跟技术债的概念很类似,有时候,工程师可以用WorkAround暂时绕过问题,但它不能取代解决问题本身。迟早,你必须正面面对、解决它。永远帮自己留条后路
编程做久的工程师,往往会养成习惯在回圈,或是需要长时间的执行程序中,帮自己留一个跳出的路径,免得事情出状况时,无法抢救。在人生中,永远想好后路也是很重要的观念。用小里程碑激励自己
在做一个大系统时,如果花数周、数月的时间埋头苦干,却一直没办法看到成果,很难维持自己在意志高昂的状态。厉害的工程师会把它切割成许多小片段,每个阶段完成都有可运作的部份成果,利用这些小里程碑来让自己保持热情。专注的重要
专心的设计程式1小时,生产力恐怕抵过边做边玩10个小时。团队合作的重要
无论一个工程师再强,也无法一个人完成一个大系统。与其他人组织、协做、发挥整体战力,是工程师必修的功课,也是所有人一生中必修的功课。预览时标签不可点收录于话题#个上一篇下一篇