能够说工程能力是软件工程师最外围的能力,工程能力强的人工作效率往往很高,在入手之前就想分明更多研发危险,也能够提出更多产品意见。
但到底什么是工程能力,该如何考查,是本文想跟大家探讨的内容。
知乎上对于【工程能力】有一个通用的行业定义我觉得很有情理:用系统化的办法,在保证质量的前提下,更高效率的为用户 / 客户继续交付有价值的软件或服务的能力。
还有很多敌人会将:是否写出好的代码品质、Debug 能力、业务需要理解能力、解决抵触、可维护性、代码可重用性、自测意识等退出评估项。
这些仿佛很有情理。但我有一句印象特地粗浅的话—— Linus(Linux 创始人)在 2000 年写了一篇邮件是对于内核调试器的认识,“我不喜爱调试器。素来没有喜爱过,可能未来也不会喜爱。”没有人能否定 Linus 是最顶级的开发者。
优良的开发者往往有以下的品质:器重自测、器重团队标准、器重代码可维护性。但并不是说把这几项做好的就是优良的开发者。ShowMeBug 外部也已经淘汰过一个代码很重视标准但效率很低的同学。
这几项品质是好品质,但也是可能通过肯定的训练形式去扭转集体的,所以这并非是工程能力的实质。(从招人来说,这几项的确是大大的加分项)
我的认识如下:工程能力是一种系统性解决问题的能力,在软件开发畛域基本上是可能基于需要提出优良代码和架构设计的能力,并能高效的、有品质的实现工作。
最为要害的是代码与架构设计的能力,例如体现在时序图、ER 关系图、流程图、用例图等的设计上(但绝不是画得丑陋标准就是好的设计)。其次是开发品质与效率。代码结构设计分明、类与模块分的良好、品质有保障、效率也高效。这就是真正的工程能力。
有人可能会问:那工程能力与架构能力有什么区别?
如果拿盖楼做比喻,架构是盖高楼大厦的力学结构设计。而工程能力是盖 3 层小洋楼的设计就能够了,但工程能力更强调高质量高效率竣工,而架构能力不是特别强调这一点。
讲到这里,我忽然想到去年大火的 OpenAI 还有近期的 Sora,就是科研能力与工程能力完满联合的产物。大家都晓得很多科研学者并不重视工程能力,代码写到 500 行以上就开始失控。而 ChatGPT 正是在正确的迷信模型领导下,超大规模的使用强有力的工程能力构建零碎,训练出的大语言模式。工程能力在其中起到的作用至关重要。
如何在短时间对开发者进行工程能力考查成为了招对人的要害一环。代码品质、自测能力、代码标准、还有空间工夫复杂度的考查都并非是实质。
ShowMeBug 团队认真钻研了三年,基于齐全自研弱小的 IDE 引擎,最卓有成效的外围办法就是形象出一个适合难度的工作,给予候选人肯定的工夫,进行代码构思、类结构设计、数据库设计、或者前端页面布局设计。而后通过三种形式进行综合评估。
一是测试用例正确性:ShowMeBug 集成了所有语言最支流的测试用例,题目主动内置示例用例与暗藏用例。这是一个十分主观的针对正确性的评估。
二是 AI 驱动的智能打分:这里要充沛利用一下 AGI 大模型的能力,咱们会将用户写的代码传递给大模型针对代码设计、代码品质进行综合评分。
三是保底回放,ShowMeBug 会记录所有的用户行为,并记录回放数据,企业能够在必要的时候随时随地进行复盘剖析。
ShowMeBug 的工程能力题目还有以下几个特点:
- 不偏科,不去预设一些冷门的需要,例如上传下载,加密解密,门路布局这种无意义的。
- 背景常识少,尽可通用。工作中罕用的数据库设计、模块设计是最受欢迎。
- 管制工夫,复杂度适中,不会呈现要超过 30 分钟以上的设计问题。
总结来看,工程能力的判断外围就是是否能正确对问题建模,并给出较好的代码设计,再通过良好的代码品质与习惯将代码高效的实现,最初交付的过程。
同时,ShowMeBug 特地推出“分享获场次”流动,旨在为技术招聘注入新生机,实现高效、便捷的老本优化。流动详情及规定详见下方海报。