likes
comments
collection
share

这就是为什么我不接受你是Senior软件工程师

作者站长头像
站长
· 阅读数 3

软件行业的一个令人担忧的趋势

工程类职位的面试极其复杂, 压力大, 而且我必须为所有敢于接受面试以实现职业梦想的人鼓掌, 并对他们表示赞赏.

过去几年里, 我一直在为不同的公司面试工程师, 但最近, 我前所未有地拒绝了很多应聘者. 我还是用同样的问题, 没有任何变化, 问题是人们根本不知道高级工程师意味着什么, 而这些专业人员比以往任何时候都更稀缺.

编程 10 年并不能让你成为高级工程师. 这与时间无关.

以下是我的努力, 只为探讨软件开发行业高级工程师究竟意味着什么.

这就是为什么我不接受你是Senior软件工程师

在互联网上发现的流行笑话.

什么是高级工程师?

我向 ChatGPT 询问了关于什么是高级软件工程师的通用描述, 结果它一语中的:

高级工程师对编程语言, 软件设计原则和开发方法论有深刻的理解.

— ChatGPT, 在抢走我们的饭碗之前.

这正是经典高级面试的通用结构:

开发方法论

开发方法论是旨在提高团队效率的组织方法. 这些对我们来说可能很枯燥, 但我们希望你能掌握这方面的专业知识.

在多年的工作中, 我对非敏捷开发方法产生了排斥心理, 不仅如此, 我认为 Scrum 还不够敏捷, 它的详尽使用最终会让项目经理而非程序员的自负增强.

这就是为什么我不接受你是Senior软件工程师

互联网上的笑话.

在面试时, 我希望开发人员具备批判能力, 因为仅仅了解 Scrum 是不够的, 你还必须知道它的缺点, 并提出解决方案.

我还想看看开发人员是否了解 Scrum 和 Kanban 之外的其他方法, 比如 RUP. 常识可以帮助你形成更好的观点, 并表明你愿意学习自己领域以外的知识.

软件设计原则

这些原则可能一辈子只读一次就会忘记, 但真正熟练的程序员每天都在使用.

明星工程师之所以比同行更有价值, 原因并不局限于编程. 伟大的软件工程师具有惊人的创造力, 能看到别人看不到的概念模式.

Reed Hastings. Netflix 联合创始人.

每次面试结束后, 在给应聘者写反馈时, 我发誓每次都能复制粘贴同样的回复:

我建议你多读读 Python 设计模式, 本指南就是一个很好的资源.

用设计原则筛选候选人真是太容易了...只有在非常奇怪的情况下, 我才会发现有人能回答所有这些问题.

这就是为什么我不接受你是Senior软件工程师

这是一个笑话, 记录了大多数开发人员在被问及设计模式时的表情.

当你熟悉了软件设计模式之后, 在实践中实现这些模式可能会相当具有挑战性. 我本人就曾面临过这样的挑战, 因为在编码时回忆并应用它们并非易事. 但是, 强迫自己在每次编程时进行这一检查, 一定会让你领先一步.

编程语言

为什么我们在 Python 中使用 len(array) 而在其他语言中使用 array.length()? 这背后有什么优化吗?

你对自己的语言了解多少?

在你成长的过程中, 阅读一本关于你所使用的语言的书是绝对必要的. 任何高级工程面试都会包括一些只有通过阅读才能了解的高级问题.

态度不好扼杀了许多面试机会

你们能快点提供反馈吗? 现在有其他公司向我发出邀请.

  • 一位候选人在面试时说的话, 当时他有时间向我们提出有关该职位的问题.

公司在提供高薪的同时, 也在寻找优秀的人才, 而其中的一部分就是做个好人.

面试时, 我们不仅要评估应聘者的知识, 还要评估她/他的态度. 在我几个月前做的一个具体工作中, 公司特别要求我们寻找"善良, 诚实"的人, 而不是优秀的程序员.

与一个虚荣的人共事是非常困难的, 他们会让你一直感觉不好, 并在团队中造成不好的氛围. 从长远来看, 这样的人对公司造成的损害可能是非常大的.

态度恶劣或撒谎可能意味着在选拔过程中被立即淘汰.

我一直向大家推荐<如何赢得朋友和影响他人>一书, 这是一本每个人都应该读一读的书, 以便在生活中拥有更好的人际关系.

这就是为什么我不接受你是Senior软件工程师

互联网上找到的笑话.

记住, 经验丰富的工程师应该能够领导一个团队, 你需要真正强大的社交能力才能胜任这个职位.

初级/中级开发人员要成为高级开发人员, 应该读些什么?

这里有一些让你成长为高级开发人员的绝佳资源:

代码技能如何?

几个月前, 我购买了LeetCode Premium, 这是我找到现在这份工作的一个伟大决定. 在使用过程中, 你会从其他用户那里发现有趣的数学奇闻, 模式和优化方法.

模拟大公司的面试也有助于了解他们的组织结构.

瞄着星星, 才有可能够着天空 — Reinhold Niebuhr

这就是为什么我不接受你是Senior软件工程师

Leetcode 的大公司问题列表.

还有几个网站与 LeetCode 类似, 如AlgoExpertCodeSignal.

残酷的真相

即使你阅读了大量的资料, 每天进行练习, 并积累了丰富的经验, 你也有可能因为不符合公司的要求而被拒绝.

几天前, 我在听一个播客, 他们谈到了一个实验: 让孩子们解决问题, 并把他们分成两组:

当让他们接触新问题时, 被表扬有毅力的孩子倾向于选择更难的问题来解决, 而那些被说成聪明的孩子最终在他们解决的问题上表现得更差.

这说明, 你唯一能指望自己做到的就是坚韧不拔和坚持不懈. 这些不仅是保证你未来工作的技能, 也是我们对高级工程师的主要期望.