李亚飞:什么是开发人员的工程能力?如何考察?

熵阱代码
• 阅读 212

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

李亚飞:什么是开发人员的工程能力?如何考察?

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

李亚飞:什么是开发人员的工程能力?如何考察?

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

李亚飞:什么是开发人员的工程能力?如何考察?

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

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

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

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

李亚飞:什么是开发人员的工程能力?如何考察?

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
java8新特性function和lambda深度解析
继续java8新亮点的源码之路,functionalinterface是一个跳不过的坎,它与lambda的结合使用非常普遍。java.util.function包对于每一个java工程师来说是必备技能,也是最基础的能力,一定要掌握。headicon函数编程的最直接的表现在于将函数作为数据自由传递,结合泛型推导能力使代码表达能力获得飞一般的
捉虫大师 捉虫大师
4年前
Sentinel-Go 源码系列(三)滑动时间窗口算法的工程实现
要说现在工程师最重要的能力,我觉得工程能力要排第一。就算现在大厂面试经常要手撕算法,也是更偏向考查代码工程实现的能力,之前在群里看到这样的图片,就觉得很离谱(大概率是假的)。算法与工程实现在SentinelGo中,一个很核心的算法是流控(限流)算法。流控可能每个人都听过,但真要手写一个,还是有些困难。为什么流控算法难写?以我的感觉是算法和工程实现上存在
Stella981 Stella981
4年前
CODING DevOps 微服务项目实战系列第二课来啦!
近年来,工程项目的结构越来越复杂,需要接入合适的持续集成流水线形式,才能满足更多变的需求,那么如何优雅地使用CI能力提升生产效率呢?CODINGDevOps微服务项目实战系列第二课《DevOps微服务项目实战:CI进阶用法》将由CODINGDevOps全栈工程师何晨哲老师向大家介绍持续集成流水线的进阶能力,结
Stella981 Stella981
4年前
Github惊现标星68K的力扣算法刷题宝典,再也不怕被大厂算法拦路了
写在前面BAT等国内的一线名企,在招聘工程师的过程中,对算法和数据结构都会重点考察。但算法易学难精,我的很多粉丝技术能力不错,但面试时总败在算法这一关,拿不到好Offer。但说实话,数据结构和算法花点时间,用对方法,很容易解决。面试官为什么爱问数据结构与算法,答案很简单:算法能力能够准确辨别一个程序员的技术功底是
Stella981 Stella981
4年前
Chaos Mesh® X GitHub Actions —— 把混沌工程集成到你的 CI 中
本文将介绍如何在GitHubActions的workflow中使用ChaosMesh,从而将混沌工程集成到系统开发的CI中。阅读本文前,需要对ChaosMesh和GitHubActions有一定的了解:ChaosMesh是一个云原生的混沌测试平台,提供在Kubernetes上进行混沌测试的能力,可以说C
京东百万级调度系统(Buffalo)架构解密
作者:京东零售姬广滕一、调度系统简介Buffalo调度是一款京东自主研发的分布式DAG作业调度系统。为京东的数据开发工程师、算法工程师、数据分析师等用户提供了离线作业的编排&调试、监控运维、DAG调度等系统能力,致力于打造行业领先的稳定高效、产品简洁高体验