这就是为什么我不接受你是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.

残酷的真相

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

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

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

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

相关推荐
胡萝卜术10 小时前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
ffqws_11 小时前
Redis 分布式锁:基于 Redisson 的实现与面试高频问答
redis·分布式·面试
QQ骞18 小时前
【ECU-HIL 嵌入式车载软件测试学习路线和面试描述方式(1)】
学习·面试·职场和发展
坐而论道_18 小时前
兼容低版本 Android:让现代 Web 应用在旧 WebView 上稳定运行
前端·面试
Scabbards_18 小时前
面试Leetcode - Array
leetcode·面试·职场和发展
ssshooter19 小时前
Promise 和 async/await 被 try-catch 包裹时的行为差异
前端·javascript·面试
ricardo197320 小时前
SSR / SSG 性能对比:Next.js 三种渲染模式实测数据
前端·面试
兰令水20 小时前
hot100【acm版】【2026.7.13打卡-java版本】
java·开发语言·数据结构·算法·leetcode·面试
晨米酱1 天前
Matt Pocock Skills:整套设计只为一个目标
面试·架构·agent
黄敬峰1 天前
从零用 Vue 3 + DeepSeek 搭建一个 AI 流式聊天机器人
面试