本文基于一篇英文博客而创作,但并不是仅仅对原文的翻译,因为一直比较关注软件研发相关的思想实践,所以借着原文作者的列表发挥一下,也看看大家是否有同感和共鸣,文末也会给出原文地址,喜欢的可以看原文。
我仍然很无知在软件领域,无论你看向哪个方向,都有着广阔的知识视野,而且处于不断地蔓延中。这就是有着近乎相同长时间职业生涯的,而且角色看似相似的人,他们之间仍然有巨大知识差距的原因。“你不是从事IT行业的吗?为什么不会修电脑?”,“你居然不懂Rust?”,类似的话,可能会经常听到。所以,在这个行业,就需要保持谦虚,做个终身学习者,乐于向他人学习并教导他人。
在深度和广度上持续学习
最难的是做出正确的东西这虽然会被认为贬低我们的工作价值,但的确是事实,并成为普遍认知。我们可以做出让人赞叹的东西,但不得不承认,那不一定是正确的东西。我们一定都见过那张从需求到设计,到上线有巨大差异的图片,这张图片就深刻地揭示了这一点。软件研发的工作环境是复杂的,非理性的,我们必须同时成为软件工程师、沟通专家、心理学家和人类学家,具备相当的知识,接受专门的UX训练(这些当然可以团队合作),才能有机会做出正确的软件。
建立用户思维,做正确的软件
优秀的软件工程师要像设计师一样思考软件是给人用的,代码不也是吗?作为软件工程师,是否思考过代码的“用户”体验呢?优秀的工程师会考虑自己的代码、API、UI、协议等等,会被谁在什么情况下使用?为什么使用?如何使用?乃至对这些“用户”来说,哪些是至关重要的?这就是所谓的用户思维、产品思维和商业思维吧?通过共情,了解并牢记这些,也是做出正确软件的要求吧。
换位思考,多想想你的各种“用户”
最好的代码是没有代码,或者是不必维护的代码不要忘记,我们不只是程序员,不是会编写代码,我们也是人,可以有别的解决方案。手里拿个锤子,看什么都像是钉子。人们通常在他们擅长的事情上“犯错”,这可能是职业病,天性,或者惯性思维在作祟吧。当我们面对问题时,特别是哪些非技术解决方案不那么明显的时候,总是习惯于使用代码解决问题。而事实上,最好的解决方案是不需要解决方案,而同样地,最好的代码是不需要代码。我们不必要重复地发明轮子,要习惯于在代码之外寻求解决方案,从根本上说,就是通过权衡,寻找那个最经济而有效的解决方案。