头图

可以说工程能力是软件工程师最核心的能力,工程能力强的人工作效率往往很高,在动手之前就想清楚更多研发风险,也可以提出更多产品意见。

但到底什么是工程能力,该如何考察,是本文想跟大家探讨的内容。

知乎上关于【工程能力】有一个通用的行业定义我觉得很有道理:用系统化的方法,在保证质量的前提下,更高效率的为用户/客户持续交付有价值的软件或服务的能力。

还有很多朋友会将:能否写出好的代码质量、Debug能力、业务需求理解能力、解决冲突、可维护性、代码可重用性、自测意识等加入评估项。

这些似乎很有道理。但我有一句印象特别深刻的话—— Linus(Linux创始人)在 2000 年写了一篇邮件是关于内核调试器的看法,“我不喜欢调试器。从来没有喜欢过,可能将来也不会喜欢。” 没有人能否认 Linus 是最顶级的开发者。

优秀的开发者往往有以下的品质:重视自测、重视团队规范、重视代码可维护性。但并不是说把这几项做好的就是优秀的开发者。ShowMeBug 内部也曾经淘汰过一个代码很注重规范但效率很低的同学。

这几项品质是好品质,但也是可能通过一定的训练方式去改变个人的,所以这并非是工程能力的本质。(从招人来说,这几项确实是大大的加分项)

我的看法如下:工程能力是一种系统性解决问题的能力,在软件开发领域根本上是能够基于需求提出优秀代码和架构设计的能力,并能高效的、有质量的完成任务。

最为关键的是代码与架构设计的能力,例如体现在时序图、ER关系图、流程图、用例图等的设计上(但绝不是画得漂亮规范就是好的设计)。其次是开发质量与效率。代码结构设计清楚、类与模块分的良好、质量有保障、效率也高效。这就是真正的工程能力。

有人可能会问:那工程能力与架构能力有什么区别?

如果拿盖楼做比喻,架构是盖高楼大厦的力学结构设计。而工程能力是盖3层小洋楼的设计就可以了,但工程能力更强调高质量高效率完工,而架构能力不是特别强调这一点。

讲到这里,我突然想到去年大火的 OpenAI 还有近期的 Sora,就是科研能力与工程能力完美结合的产物。大家都知道很多科研学者并不注重工程能力,代码写到500行以上就开始失控。而 ChatGPT 正是在正确的科学模型指导下,超大规模的运用强有力的工程能力构建系统,训练出的大语言模式。工程能力在其中起到的作用至关重要。

如何在短时间对开发者进行工程能力考察成为了招对人的关键一环。代码质量、自测能力、代码规范、还有空间时间复杂度的考察都并非是本质。

ShowMeBug 团队认真研究了三年,基于完全自研强大的 IDE 引擎,最行之有效的核心方法就是抽象出一个合适难度的任务,给予候选人一定的时间,进行代码构思、类结构设计、数据库设计、或者前端页面布局设计。然后通过三种方式进行综合评估。

一是测试用例正确性:ShowMeBug 集成了所有语言最主流的测试用例,题目自动内置示例用例与隐藏用例。这是一个非常客观的针对正确性的评估。

图片

二是 AI 驱动的智能打分:这里要充分应用一下 AGI 大模型的能力,我们会将用户写的代码传递给大模型针对代码设计、代码质量进行综合评分。

图片

三是保底回放,ShowMeBug 会记录所有的用户行为,并记录回放数据,企业可以在必要的时候随时随地进行复盘分析。

图片

ShowMeBug 的工程能力题目还有以下几个特点:

  1. 不偏科,不去预设一些冷门的需求,例如上传下载,加密解密,路径规划这种无意义的。
  2. 背景知识少,尽可通用。工作中常用的数据库设计、模块设计是最受欢迎。
  3. 控制时间,复杂度适中,不会出现要超过30分钟以上的设计问题。

总结来看,工程能力的判断核心就是是否能正确对问题建模,并给出较好的代码设计,再通过良好的代码质量与习惯将代码高效的实现,最后交付的过程。

同时,ShowMeBug 特别推出“分享获场次”活动,旨在为技术招聘注入新活力,实现高效、便捷的成本优化。活动详情及规则详见下方海报。


ShowMeBug
20 声望6 粉丝

可记录 可分析 可复盘的技术神器