软件行业的一个令人担忧的趋势
工程类职位的面试极其复杂, 压力大, 而且我必须为所有敢于接受面试以实现职业梦想的人鼓掌, 并对他们表示赞赏.
过去几年里, 我一直在为不同的公司面试工程师, 但最近, 我前所未有地拒绝了很多应聘者. 我还是用同样的问题, 没有任何变化, 问题是人们根本不知道高级工程师意味着什么, 而这些专业人员比以往任何时候都更稀缺.
编程 10 年并不能让你成为高级工程师. 这与时间无关.
以下是我的努力, 只为探讨软件开发行业高级工程师究竟意味着什么.
在互联网上发现的流行笑话.
什么是高级工程师?
我向 ChatGPT 询问了关于什么是高级软件工程师的通用描述, 结果它一语中的:
高级工程师对编程语言, 软件设计原则和开发方法论有深刻的理解.
--- ChatGPT, 在抢走我们的饭碗之前.
这正是经典高级面试的通用结构:
开发方法论
开发方法论是旨在提高团队效率的组织方法. 这些对我们来说可能很枯燥, 但我们希望你能掌握这方面的专业知识.
在多年的工作中, 我对非敏捷开发方法产生了排斥心理, 不仅如此, 我认为 Scrum 还不够敏捷, 它的详尽使用最终会让项目经理而非程序员的自负增强.
互联网上的笑话.
在面试时, 我希望开发人员具备批判能力, 因为仅仅了解 Scrum 是不够的, 你还必须知道它的缺点, 并提出解决方案.
我还想看看开发人员是否了解 Scrum 和 Kanban 之外的其他方法, 比如 RUP. 常识可以帮助你形成更好的观点, 并表明你愿意学习自己领域以外的知识.
软件设计原则
这些原则可能一辈子只读一次就会忘记, 但真正熟练的程序员每天都在使用.
明星工程师之所以比同行更有价值, 原因并不局限于编程. 伟大的软件工程师具有惊人的创造力, 能看到别人看不到的概念模式.
Reed Hastings. Netflix 联合创始人.
每次面试结束后, 在给应聘者写反馈时, 我发誓每次都能复制粘贴同样的回复:
我建议你多读读 Python 设计模式, 本指南就是一个很好的资源.
用设计原则筛选候选人真是太容易了...只有在非常奇怪的情况下, 我才会发现有人能回答所有这些问题.
这是一个笑话, 记录了大多数开发人员在被问及设计模式时的表情.
当你熟悉了软件设计模式之后, 在实践中实现这些模式可能会相当具有挑战性. 我本人就曾面临过这样的挑战, 因为在编码时回忆并应用它们并非易事. 但是, 强迫自己在每次编程时进行这一检查, 一定会让你领先一步.
编程语言
为什么我们在 Python 中使用 len(array) 而在其他语言中使用 array.length()? 这背后有什么优化吗?
你对自己的语言了解多少?
在你成长的过程中, 阅读一本关于你所使用的语言的书是绝对必要的. 任何高级工程面试都会包括一些只有通过阅读才能了解的高级问题.
态度不好扼杀了许多面试机会
你们能快点提供反馈吗? 现在有其他公司向我发出邀请.
- 一位候选人在面试时说的话, 当时他有时间向我们提出有关该职位的问题.
公司在提供高薪的同时, 也在寻找优秀的人才, 而其中的一部分就是做个好人.
面试时, 我们不仅要评估应聘者的知识, 还要评估她/他的态度. 在我几个月前做的一个具体工作中, 公司特别要求我们寻找"善良, 诚实"的人, 而不是优秀的程序员.
与一个虚荣的人共事是非常困难的, 他们会让你一直感觉不好, 并在团队中造成不好的氛围. 从长远来看, 这样的人对公司造成的损害可能是非常大的.
态度恶劣或撒谎可能意味着在选拔过程中被立即淘汰.
我一直向大家推荐<如何赢得朋友和影响他人>一书, 这是一本每个人都应该读一读的书, 以便在生活中拥有更好的人际关系.
互联网上找到的笑话.
记住, 经验丰富的工程师应该能够领导一个团队, 你需要真正强大的社交能力才能胜任这个职位.
初级/中级开发人员要成为高级开发人员, 应该读些什么?
这里有一些让你成长为高级开发人员的绝佳资源:
代码技能如何?
几个月前, 我购买了LeetCode Premium, 这是我找到现在这份工作的一个伟大决定. 在使用过程中, 你会从其他用户那里发现有趣的数学奇闻, 模式和优化方法.
模拟大公司的面试也有助于了解他们的组织结构.
瞄着星星, 才有可能够着天空 --- Reinhold Niebuhr
Leetcode 的大公司问题列表.
还有几个网站与 LeetCode 类似, 如AlgoExpert和CodeSignal.
残酷的真相
即使你阅读了大量的资料, 每天进行练习, 并积累了丰富的经验, 你也有可能因为不符合公司的要求而被拒绝.
几天前, 我在听一个播客, 他们谈到了一个实验: 让孩子们解决问题, 并把他们分成两组:
当让他们接触新问题时, 被表扬有毅力的孩子倾向于选择更难的问题来解决 , 而那些被说成聪明的孩子最终在他们解决的问题上表现得更差.
这说明, 你唯一能指望自己做到的就是坚韧不拔和坚持不懈. 这些不仅是保证你未来工作的技能, 也是我们对高级工程师的主要期望.