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

提升开发人员的五大关键能力:从分析到理想主义,
本文阐述了软件开发人员应具备的五个关键能力:分析能力、抽象能力、准确表达、分清轻重缓急与实用性以及理想主义。这些能力对于编写高质量代码、团队协作和职业发展至关重要。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

其他能力

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

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

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

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

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

总结

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

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

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

基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老贾的AI世界

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

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

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

打赏作者

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

抵扣说明:

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

余额充值