如何识别好的程序员?好的程序员必须具备的五种能力

能够拿到100万年薪的程序员都具备哪些能力? 几周前,微盟爆了个大雷,数据库让内部员工删库跑路…… 很明显,微盟的技术体系是有严重问题的, 主要体现在:运维权限管理、数据库备份、上云而不上云方案,这三点。看起来有点耸人听闻,其实你永远不知道一个人或者一家公司的技术会低到什么程度,不少人可能从来都没用过GitHub和GitLab。 程序员这个行业,是一个区隔度特别高的行业。 不少人短短几年就可以成长为高级工程师、资深架构师、首席架构师,而另... 阅读详情

一个有天赋的开发人员,从9到5提供110%的清晰、精确、可维护的代码,在休息时间享受午餐,回到家离开键盘释放自我,这会有什么问题呢?

我认为,开发人员应具备的五个关键能力。

要了解他们为什么这么重要,想想软件是什么:它不是一个无限的系列式陈述,也不是一个任意调用的API,更不仅仅是复制粘贴的产物。相反,它是一个由代码层次结构组成的网格,很少复制代码,主要是复制格式(不一定是GOF模式,也可以是“延迟初始化”“模式驱动代码生成”或者“XML脚本”)。它只有在满足业务需求和有足够可操作性的情况下才能发挥作用。因此,我们需要评估能够让软件开发人员达到这些目标的能力。

1、分析能力:结构化、清晰、有批判思维的思考者和问题解决者

很多人误把镇定、自信、流利的演说能力归结为智商。因此,我们需要对开发者的智力特征非常清晰。软件的一切都是关于功能和结构分解,因此,我认为智力的关键是天生的、后天培养的或者靠意志力进行的分析能力。一个具有分析能力的人会多角度考虑问题,选择最好的方法,然后将大问题分解成小问题。

在面试中,你很容易就能检查这个能力,因为候选人自然会澄清模糊的问题,或者列出解决方案的部分和关系,或者在讨论细节之前确认问题的大致情况。去考验这个能力,你不用提出一个新问题,只需要让他们描述任何一件事情:他们开发过的软件产品,面向的对象,软件开发过程中扮演的角色或处理的任务,互联网、网络等等。

当描述完成后,问问自己,你是否听到了对碎片的列举,或者候选人是否描述了事情的核心,这就是分析能力。

2、抽象能力:能够识别和理解抽象概念和模式的能力

软件是复杂的; 简单地阅读代码是不能理解它的。你通过寻找结构来理解它,建立一个关于如何用代码建模的理论,然后在阅读中验证和改变这个模型。开发新的软件很像理解一个现有的程序,只是这个模型还不存在,只是在你的脑海里有该软件的写代码时追求的所有品质),那么开发者就可以实现它。

3、准确: 简洁而准确地表达事物的能力

一些开发者仅通过复制实例就能取得一定的成功;他们找到与其开发的项目近似的软件代码,然后对其进行调整。这就像雕刻,只是当它用代码完成时,结果通常不是很清楚,也不是很简洁,而且可能不完全准确。同样,有些开发者只能通过例子来解释事情,而不是通过命名底层概念或模式。这是可以接受,但可能会成为软件开发的绊脚石,因为他们不太可能认识、理解和应用代码中微观或宏观层面的模式。

一个能够准确(但不一定迅速或令人印象深刻)表达的开发者会开发出更精确的代码,并更容易向另一个开发者解释一项技术或需求。

4、分清轻重缓急和实用性: 识别必须做的事和可以做的事

灵活的方法自然倾向于今天写今天的代码。即使在做瀑布式开发的公司里,能够区分必要和可能,仍然是一项重要的技能。产品往往只有在按时交付的情况下才能完全成功。一个务实的开发者会做真正需要去做的事情,比如创建一些钩子,写一些评论,为明天打好基础。实用主义还表现在渴望实现、完成目标;这促使并鼓励我们定义什么是成功,帮助我们确定达到目的的优先次序,并关注任务的完成度而不仅是给履历镀金。

5、理想主义:渴望把事情做好

一个只注重实用主义的开发者有时会偷懒;他们不仅只开发今天的功能,而且只为今天而编码,而不是为明天要维护这些代码的开发者而编码。实际上,一个理想主义的开发者会关心他们所交付的产品的所有品质:

①他们会确保他们理解了开发需求。

②他们三思而后行,在写一行代码之前会慎重考虑,甚至可能会记录测试案例。

③他们写的代码是清晰的,并且有充分的注释;他们不断地重构,以便使普通代码进入共享方式,然后进入基础类或辅助类。

④他们会编写单元测试案例,以保护其他开发人员和测试人员免受错误代码的影响。

⑤在自动测试不可行的情况下,他们会坚持进行手动测试。

理想主义和实用主义是相辅相成的关系,并且二者缺一不可,平衡这两个品质,并告知开发者整天所做的决定。

其他能力

当然,还有一些其他的能力也很重要:

①专注:编写软件是一项将头脑中的模型转录成代码的复杂任务。

②理解和使用技术的能力。

③渴望学习和提高他们所需的所有技能,以便在个人和软件交付组织中发挥效力。

④能够认识到如果不能和团队成员或其他团队有效合作,他们的技能再高超也发挥不出效力。

总结

最后一项能力是我们所有人都需要的;那就是认识到没有一套固定的技能。在任何组织中,有多种方法可以取得成功,有许多角色需要填补,而个人的工作只是一个更大过程中的一部分,所有这些都需要发挥作用才能取得成功。

聪明人有时会忽视其他方面的智慧;如果我们能够一直互相尊重,并将观点作为意见提出。即使我们认为是在纠正一个错误,也会发现我们竟然经常将意见和观点混淆为事实。

因此,开发人员最好具备上述能力;然后,他们就可以在技术轨道上推进自己的职业生涯,成为高级开发人员、开发负责人,最后成为架构师;或者在管理轨道上,信守承诺、尊重他人,甚至在更加关键的位置上激励和帮助他人实现愿望。

高级程序员之抽象能力模型  每一滴雨水里,都有海洋的气息;每一颗石子里,都有沙漠的影子。所以诗人才说:一支三叶草,再加上我的想象,便是一片广阔的草原。走在秋日的田野上,我想起一位诗人对老托尔斯泰的叩问:一切成熟了的都必须低垂着头么? 转眼三个月过去了,大熊在公司工作表现得非常好。干好本职工作之外还经常帮其他同事解决技术问题,并且经常在业余时间主动帮助项目经理整理文档,很用心地研究项目需求的每一个细节。大熊从锐哥那里 阅读详情

相关推荐

华为S5700三层交换机VLAN配置避坑指南:为什么你的VLAN间无法互通?

本文针对华为S5700三层交换机VLAN间无法互通的典型故障,提供深度排障指南。文章从数据转发原理入手,系统梳理了从物理链路、VLAN配置、VLANIF接口状态、路由表到ARP表、MTU及安全策略等全链路检查点,并给出了清晰的排查命令与流程,帮助网络工程师快速定位并解决VLAN间路由问题,实现稳定互通。

tt34567的博客 875

AI 的出现,程序员能走多远,未来的我们能要具备什么能力?

随着 AI 技术的不断发展,程序员需要不断学习和更新自己的知识和技能,以适应新的技术和工作要求。通过不断学习和掌握 AI 技术,程序员可以提高自己的竞争力,同时也可以将 AI 技术应用到编程工作中,提高工作效率和质量。总之,未来的程序员需要具备多方面的能力,包括编程语言和开发工具的熟练掌握、数据结构和算法、软件开发流程和方法、代码质量和可读性、问题解决能力、团队合作能力、学习能力和创新能力等。学习能力:技术在不断发展和更新,程序员需要具备良好的学习能力,能够快速学习和掌握新的技术和知识。

大牛开猿,一个分享实战开发和开发技巧的地方,希望能帮助到你 586

深度学习之基于Pytorch手指静脉识别系统(

一、项目背景与目标手指静脉识别技术是一种新兴的生物特征识别技术,它依据人类手指中流动的血液可吸收特定波长的光线这一科学原理,利用手指内的静脉分布图像来进行身份识别。与传统的生物识别技术(如指纹识别)相比,手指静脉识别技术具有不易伪造、识别精度高、非接触性等特点,因此在安全性要求较高的场景(如金融、医疗、公安等)具有广阔的应用前景。本项目旨在利用PyTorch深度学习框架,构建一套高效、准确的手指静脉识别系统。

Q1744828575的博客 834

聊聊程序员的核心能力

随着互联网和移动互联网的快速发展,各类应用软件(app)如雨后春笋般涌现,许多应用程序甚至成为超级app,一些活跃用户过亿的应用程序成为国民app,这些app的兴起与程序员这个群体密不可分。快速发展的行业、互联网巨头的光环、国民级的应用程序带来的成就感、远超出普通行业的薪水,每年都在吸引着大量的程序员。竞争变得越来越激烈,程序员的35岁门槛已常年成为社交媒体热议的话题,程序员的中年焦虑已成为常态,作为程序员,我们应该建立怎样的核心能力,让使自己摆脱焦虑并在漫长的职场道路上不掉队呢? 今天就来聊一聊我在十多

程序员北哥的专栏 5315

数字孪生驱动的城市地下管网智能运维与应急处置决策支持系统

上海市城市数字化中心的数据实践显示,通过关联分析管网材质与故障率的关系,将铸铁管更换周期从15年优化至8年(李敏,2021)。环境效益方面,上海市通过优化管网运行参数,年减少碳排放1.8万吨,相当于种植36万棵乔木。数字孪生与物理设备的双向交互采用OPC UA协议实现,某次天津管网渗漏事件中,系统通过实时数据反馈,指导现场人员调整注浆方案,将修复时间从48小时压缩至16小时。虚拟指挥沙盘支持多视角协同,深圳水务系统的实践表明,通过AR可视化技术,跨部门会议效率提升60%,方案决策时间缩短40%。

2501_92431686的博客 1426

【面试经验】大疆笔试-计算机视觉算法B卷

3、a=np.random.randn(3,3) b=np.random.randn(3,1) ,那么c=a*b的维度应该是:*是元素乘法或者torch.mul,@才是矩阵乘法或者torch.matmul,不会触发广播机制;8、将分辨率降低一半时,精标定内参(fx、fy、cx、cy、k1、k2、k3)焦距、光心、畸变系数将分别变成(fx、fy、cx/2、cy/2、k1、k2、k3),只能搜到光心变成一半,畸变系数不变。12、KLT算法在频闪光源、重复纹理、高速机动、环境照度低的情况下效果显著下降。

litterfinger的博客 1449

优秀程序员具备的七大特征,你具备几条?

**程序员这个行业,是一个区隔度特别高的行业。**不少人短短几年就可以成长为高级工程师、资深架构师、首席架构师,而另外一部分人很可能工作10年还是初中级工程师。 **程序员行业还有一个特点,优秀程序员的产出是普通程序员的好多倍,甚至是10倍!**这是因为编程不是一门「线性科学」,而是一门「非线性科学」。 「线性科学」,比如跑步的速度就是,世界冠军的速度也不可能是普通人的10倍。「非线性科学」是指很多种因素交汇在一起,极大增加了系统的复杂度。 程序设计和实现不是一种线性能力,像经验、编码能力、工程能力、知识.

findyi的博客 1492

边缘AI工业落地:YOLO26-Seg + RK3588 NPU 极致部署(低功耗+实时实例分割,工业场景全覆盖)

本次实战汇总了「YOLO26-Seg+RK3588 NPU」工业边缘部署中最常见、最致命的8个坑点,所有坑点均来自真实工业项目,解决方案均为零代码/一键操作,无需复杂配置,能让你少走90%的弯路,节省大量时间,必看必记!❌ RKNN转换报错「算子不支持/模型加载失败」→ ✅ 导出ONNX时必须指定opset=12,重新导出即可,RK3588唯一兼容版本;❌ 分割mask错位/轮廓模糊 → ✅ 导出ONNX时加,并保证RKNN的归一化参数与YOLO26一致,零代码修复;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1719

程序员的核心能力

随着互联网和移动互联网的快速发展,各类应用软件(app)如雨后春笋般涌现,许多应用程序甚至成为超级app,一些活跃用户过亿的应用程序成为国民app,这些app的兴起与程序员这个群体密不可分。快速发展的行业、互联网巨头的光环、国民级的应用程序带来的成就感、远超出普通行业的薪水,每年都在吸引着大量的程序员。竞争变得越来越激烈,程序员的35岁门槛已常年成为社交媒体热议的话题,程序员的中年焦虑已成为常态,作为程序员,我们应该建立怎样的核心能力,让使自己摆脱焦虑并在漫长的职场道路上不掉队呢? 今天就来聊一聊我在十多年

背着小书包一路追寻梦想 496

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

Arcgis建筑面shp由DSM和DEM获取高度拉伸并可视化

yilvyangguang520的博客 3997

13、多实例任务(multi instance)

多实例任务,是指一个类型的任务需要循环执行多次,包括串行多实例任务和并行多实例任务。

leyoliu的博客 3203

程序员进阶到顶级的CTO都要经历哪些阶段?应该具备怎样的工作能力呢?

IT行业有多个方向,产品、运营、技术……而技术方向也有着许多的岗位,对于零基础想要学习IT技术的人来说,可能不是很了解这些。有句话叫,不想当CTO的技术开发,不是好程序员。那么从一个普通程序员到顶级的CTO都要经历哪些关键阶段,又都需要具备怎样的工作能力呢?今天,小编带大家了解一下。 程序员进阶到顶级的CTO 01程序员 程序员,大家常自嘲叫码农的阶段。这个角色职责是把需求或产品实现为用户可...

向日葵的博客 631

H3C BGP联盟实验

bgp,bgp联盟,bgp公认团体属性,

一只懒羊羊 971

能力迁移| 程序员的3大“可迁移核心能力”是什么?

系统讲解程序员必备的3大底层能力:①系统工程思维(拆模块、控关联)、②项目管理能力(进度/质量/风险/成本四维度)、③从0到100执行能力(原型验证→迭代→规模化);结合Android系统分层、项目排期等技术场景类比,帮读者识别自身核心能力。

wangdsh的博客 1260

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

优秀程序员必备的四项能力

前言一个优秀的程序员具备挺多特质的,比如好奇心,学习能力等,但在我看来一个优秀的程序员必须具备四项核心能力,哪四项,先卖个关子,程序员最喜欢说的话是「Talk is Cheap, sho...

HollisChuang's Blog 1382

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

如何提升程序员的代码能力,我们可以从以下几个方面进行学习和研究

通过不断学习和实践,程序员可以充实自己的技能,提高编码和设计水平,更好地满足业务需求,最终成为一名优秀的程序员。建议阅读该语言的官方文档并练习代码,了解各种代码库和框架,参加编码挑战和比赛,与同行进行代码审查和交流。建议阅读相关书籍和教程,多做实验,参加技术研讨会和会议,与同行交流经验和技术。建议学习调试和测试相关技术,积累常见问题的解决方案,多参加技术讨论和交流。在实践中,程序员需要不断学习和提高自己的技能,结合自己的经验和专业知识,建立自己的技术体系,并不断挑战和突破自我,成为一名优秀的程序员。

qq_28245087的博客 2173

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

职级档次:你现在应该具备的核心能力是什么?

你好,我是程序员贵哥。上一讲我介绍了COMD能力模型,让你能够具体拆解一个级别的能力要求,不再纠结于抽象的描述。但你可能还是不清楚每个级别到底要求什么。这些具体要求,我会在课程第二部分,也就是部分一一介绍。不过在这之前,我想先通过三个类比带你纵向透视职级档次,对不同档次的核心能力建立一个形象的认知。

qq_33240556的博客 1205

程序员的核心能力-抽象能力

想象一下“杯子”这个概念。世界上有玻璃杯、陶瓷杯、塑料杯、纸杯...有的带把手,有的不带;有的保温,有的不保温;有的用来喝水,有的用来喝酒。但我们为什么都叫它们“杯子”?因为我们抽象一种用于盛装液体的容器。这就是抽象——忽略不必要的细节(材质、颜色、形状),抓住最根本的特征。

niuniu_1983的博客 735

从合格到优秀,程序员需具备这几项关键品质

全文共1577字,预计学习时长3分钟图片来源:pexels.com/@startup-stock-photos大多数软件开发人员追求的不仅仅是称职,而是能够脱颖而出。如今...

读芯术的博客 878

AI时代的职业规划:程序员的核心能力提升

AI技术正在深刻改变编程领域,程序员的工作方式也随之发生变化,AI工具提升了开发效率,降低了编程的入门门槛,并促进了团队协作,然而,这些工具也带来了编程基本功弱化、创新能力受限和数据隐私等潜在风险。为了在AI时代保持竞争力,程序员应重点发展复杂系统设计能力、跨学科知识整合能力和与AI协作的能力,同时,保持持续学习的习惯,通过参加技术会议、在线课程以及参与开源项目和技术社区,不断更新知识库,了解最新趋势,选择有前景且感兴趣的专业方向,平衡专业深度和技术广度,是职业发展的重要策略。

iShare_Carlos的博客 2298

程序员能力矩阵

一个有意思的能力评价表:Programmer Competency Matrixhttp://www.starling-software.com/employment/programmer-competency-matrix.html一.计算机科学(Computer Science)数据结构(data structures)Level0:不知道Array和Linke

Direwolf的专栏 2235
上一篇: 如何仅用几分钟就能破解8个字符长的密码?
下一篇: 如何选择合适的数据库?
老贾的AI世界
博客等级 码龄7年 3335粉丝 254原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老贾的AI世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值