二十年老程序员的二十条心得:面试几乎没用,警惕很久没写过代码的

伟大的软件工程师会深入思考代码成果的用户体验。虽然使用的术语或者切入点不同,但无论是对于外部 API、编程 API、用户界面、协议还是其他接口,优秀的工程师都会考虑由谁来使用、为什么要使用、如何使用以及对用户来说哪些因素真正重要等。总之,牢记用户需求才是实现良好体验的核心所在。

4. 最好的代码就是没有代码,或者说不需要维护的代码

“程序员就是管编程的”,而且跟其他专业人士一样,我们也会在自己最擅长的方面犯错。这是人的本性,没办法。大多数软件工程师编写出的代码总是有点错误,而且往往无法用非技术方案来解决。

另外有一种很神奇的现象,越是有大量相当成熟的解决方案存在,工程团队就越是想“重新发明轮子”。想表达自我、加快专业成长当然是好事,但还请大家分清场合与需求,过度泛滥的发明欲望恐怕不利于编写出无需维护的代码。

5. 软件是达成目的的手段

任何一位软件工程师的主要工作都是交付价值。但我发现大部分软件开发者并不理解这一点,能够将这个理念内化进日常工作的开发者就更少了。但只要能够完成内化,我们解决问题的方式、看待工具的角度都会有所变化。如果您真心相信软件要服从于结果,那就一定能找到“真正适合工作的工具”,而这种工具也许压根就不是软件。

6. 有时候,你压根没时间磨刀

都说“磨刀不误砍柴工”,但刀磨久了反而让人心浮气躁、难以投入真正的工作。代码编写也是一样 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ,研究多了容易让人陷入“分析瘫痪”。

一旦出现这种状况,请马上给自己设定一个截止日期,之后再探索解决方案。在着手解决问题时,我们很快就能找到思路与线索、引导自己一步步迭代向更好的产出。

7. 如果没法理解所有可能性,就设计不出优秀的系统

这也是我个人一直在努力解决的问题。我的职责变化导致自己距离常规软件工程任务越来越远,我发现跟上开发者生态的发展速度越来越难,有时候自己甚至不理解哪些趋势真正重要。总之,如果不能理解特定生态当中的那些可行性与可用选项,那么我们根本没办法为所有问题找到合理的解决方案。

总而言之,务必警惕那些已经很久没写过代码、也没设计过系统的所谓“大牛”

8. 每套系统最终都很差劲,要勇于接受这一点

Bjarne Stroustrup 有句名言,“世界上只有两种语言,人们抱怨的语言和没人用的语言。”大型系统也是同理。并不存在“正确”的架构,我们永远无法偿还所有技术债务、设计不出完美的界面、也不可能永远拥有迅如闪电的测试速度。但做不到不代表什么都不做,这只是一种参考视角。优雅和完美本身就是种终极目标,我们当下的任务就是不断改进并创造一个更友好的系统环境,保证团队至少还用得下去、并以可持续的方式交付价值。

9. 通于探索,不断追问

相信大家都听过“我们向来这么处理”之类的鬼话。这时候请关注那些新加入的成员,看看他们在哪里遇到了问题、又提出了哪些质疑。这些质疑中,是否存在某种有意义的功能诉求?请保证您明确理解他们提出的目标,以及驱动这种功能诉求的原因。如果得不到明确答案,就不断追问下去、直到弄明白为止。

10. 相比于寻找 10 倍程序员,最好是消除 0.1 倍程序员

10 倍程序员就是个愚蠢的笑话。

没有任何一个人能在一天之内搞定另一位同样有能力、工作态度端正而且经验丰富的程序员需要两个礼拜才能做完的工作。我只见过 10 倍代码量程序员,他们写出来的 bug 也是 10 倍。或者说,10 倍程序员唯一的存在可能性,就是身边有个 0.1 倍程序员——就是那种浪费时间、不关注反馈、不测试代码也不考虑极端情况的家伙……所以相较于寻找神话中的 10 倍程序员,及时清除团队中的 0.1 倍程序员才是正道。

11. 高级工程师与初级工程师间的最大区别之一,在于二者形成意见的具体方式

如果某位高级工程师对现有工具或者软件构建流程没有任何意见,那我实在是感觉不太正常。我宁愿有人能反馈出强烈的批评意见,也不愿他们压根没有任何意见。只要正在实际使用工具,那大家或多或少会有正面或者负面的批价;对其他语言、库和范式的应用也是类似的情况。而这种对于工具及技术的评判与探索,往往可以快速提升我们的技能水平。

12. 人们并不真正想要创新

人们经常讨论创新,但实际想要的只是更廉价的胜利与新鲜感。如果真正进行创新、改变人们处理工作的方式,那么对方大概率会给出负面反馈。但如果您真的相信自己的决定代表未来、相信这一切能改善产出,那请做好打一场持久战、拉锯战的准备。

13. 数据是系统当中最重要的组成部分

我见过很多以数据完整性作为主要保障目标的系统。但在这类系统中,任何预期范围之外的操作都会产生某些“脏”数据,它们会在后续处理中演变为一场噩梦。

请记住,数据的存在周期往往比代码库更长,所以请花点精力保持数据的清洁和有序。从长远来看,这种好习惯必然带来高回报。

14. 寻找技术“鲨鱼”

所谓技术“鲨鱼”,就是那些长久存在、能够有效解决问题,所以可以在技术领域的快速变化中幸存下来的技术方案。注意,它们是鲨鱼、不是恐龙,所以除非有充分的理由,否则千万不要轻易更换。这些工具没什么特别、也不激动人心,但它们总是稳定有效,能让人睡个好觉。

15. 不要把谦虚当成无知

很多软件工程师不爱主动说话,除非问题被推到面前。所以,千万别以为别人没发言就是大家没意见。有时候,最吵闹的家伙反而是我们最不想倾听的对象。总之,积极与其他人交谈,寻求他们的反馈与建议。这招回报很高,一试就灵。

16. 软件工程师应该保持写作的习惯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值