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

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

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

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

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

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

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

什么是高级工程师?

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

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

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

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

开发方法论

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

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

互联网上的笑话.

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

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

软件设计原则

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

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

Reed Hastings. Netflix 联合创始人.

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

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

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

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

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

编程语言

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

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

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

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

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

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

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

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

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

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

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

互联网上找到的笑话.

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

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

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

代码技能如何?

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

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

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

Leetcode 的大公司问题列表.

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

残酷的真相

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

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

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

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

相关推荐
J老熊33 分钟前
Kafka:架构与核心机制
分布式·后端·面试·架构·kafka·系统架构
Pandaconda1 小时前
【计算机网络 - 基础问题】每日 3 题(二十八)
开发语言·网络·经验分享·笔记·后端·计算机网络·面试
GISer Liu3 小时前
LeetCode从入门到超凡(四)深入浅出理解贪心算法
python·算法·leetcode·面试·职场和发展·贪心算法·datawhale
真忒修斯之船4 小时前
每天3分钟,彻底弄懂神经网络的优化器(三)Momentum
人工智能·算法·面试
Neituijunsir5 小时前
2024.09.18 校招 实习 内推 面经
人工智能·python·算法·面试·自动驾驶·汽车·求职招聘
Pandaconda13 小时前
【计算机网络 - 基础问题】每日 3 题(二十七)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展
洛小豆13 小时前
前端开发必备:三种高效定位动态类名元素的 JavaScript 技巧
开发语言·前端·javascript·面试
Pandaconda13 小时前
【计算机网络 - 基础问题】每日 3 题(二十四)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展
媛媛要加油呀14 小时前
鸿蒙面试题库收集(一):ArkTS&ArkUI-基础理论
华为·面试·职场和发展·harmonyos