软件开发人员的 5 项能力:如何识别优秀的程序员

文章讨论了优秀开发人员应具备的五项关键能力:分析能力,能够结构化思考和解决问题;抽象能力,理解并识别模式;精确表达,清晰准确地沟通;务实与优先级设定,区分必要和可能;以及理想主义,追求代码质量。这些能力对于软件开发的长期成功至关重要。
摘要由CSDN通过智能技术生成

极客程序员获得的技术就像实用腰带中闪亮的工具。但是每一种技术都只是用一种语言表达的模式的集合,而且大多数模式都不是新的;如果我们理解这些模式,我们就可以很容易地理解体现它们的任何技术。

在我生命中的不同时期,我都热衷于编程,但我认为这不是优秀开发人员的标志。一个才华横溢的开发人员从朝九晚五投入 110% 的时间创建清晰、准确的可维护代码,一边享用午餐一边谈论工作以外的任何事情,回到家过着从键盘中释放出来的生活,这有什么问题呢?

以下是我认为开发人员的五项关键能力。要了解它们为何重要,请想想软件是什么:它不是无休止的一系列语句,也不是对 API 的任意调用的集合,也不仅仅是剪切和粘贴。相反,它是代码层次结构的网络——高度结构化,几乎没有复制代码——主要是复制模式(不一定是 GOF 模式,而是像“惰性初始化”、“模型驱动的代码生成”或“XML 脚本”等模式) . 它也只有在满足业务需求并且质量足够的情况下才有用。因此,我们需要评估使开发人员能够实现这些目标的技能。

足够的序言;我们走吧
1. 分析型:结构化、清晰、批判性思考者和问题解决者
问题在于,很多人将镇定、自信或快速连续的讲话误认为是聪明。因此,我们需要非常清楚开发人员的智能特征。

软件都是关于功能和结构分解的,所以我认为智能的关键方面是天生、后天或意志力的分析能力。善于分析的人会从多个角度考虑问题,选择最佳的通用方法,然后将问题分解为子问题。

您可以在面试中很容易地发现这种能力,因为应聘者自然会寻求澄清一个模棱两可的问题或列出解决方案的各个部分和关系,或者“从头到尾”解决问题以在进入细节之前确定其范围。

要检测这种能力,您不必给他们一个新问题,只需让他们描述几乎所有内容:他们从事的软件产品、面向对象、软件开发的角色或过程、互联网、Web 或类似的东西真实或理想城市的布局、民主的本质、进化的定义和运作等。

描述完成后,问问自己是否听到了对片段的列举,或者候选人是否描述了事情的核心;那是分析性的。

2. 摘要:能够识别和理解抽象和模式
软件很复杂;您无法通过简单地阅读每一行代码来理解它。您通过寻找结构、构建代码如何建模的理论,然后在阅读时验证和更改该模型来理解它。

开发新软件很像理解一个现有的程序,只不过模型还不存在,你脑子里只有那个软件的“理论”。您的程序在代码模型中表达了理论。

如果你从抽象的角度思考,编写功能或技术规范与编码并没有什么不同,除了语言是人类的语言,解释器将是一个或多个人类的思想。规范是抽象的,因为没有程序可以运行它,但如果它准确、完整、清晰且结构良好(我们在代码中寻求的所有品质),那么开发人员就可以实现它。

3. 精确:简明准确地表达某事的能力
一些开发人员仅通过复制示例就设法取得了一定的成功;他们寻找接近他们想要实现的东西,然后对其进行调整。这就像雕刻,除非是用代码完成,结果通常不是很清楚,不是很简洁,而且可能不完全准确。

同样,一些开发人员只能通过示例来解释事物,而不能通过命名底层概念或模式。这是可以接受的,但会成为绊脚石,因为他们不太可能在代码的微观或宏观层面识别、理解和应用模式。

能够准确(但不一定快速或令人印象深刻)演讲的开发人员将开发出更精确的代码,并且更容易向其他开发人员解释技术或需求。

4. 优先和务实:识别必须做什么和可以做什么的技能
敏捷方法自然有利于今天编写今天的代码。即使在做瀑布式开发的公司中,能够区分必要的和可能的仍然是一项至关重要的技能。

产品通常只有按时交付才能完全成功。务实的开发人员会做需要做的事情,创建一些挂钩并编写注释,为明天打下基础。

实用主义还体现在对实现、完成和完成的渴望上。这驱使并鼓励我们定义什么是成功,帮助我们优先考虑实现目标的方式,并专注于完成任务而不是镀金。

5. 理想主义:渴望把事情做好
只务实的开发人员有时会很懒惰;他们不仅只开发今天的功能,而且他们只为今天编写代码,而不是为明天必须维护该代码的开发人员编写代码。

理想主义的开发人员实际上关心他们交付的所有 质量:

他们确保他们了解要求。
他们在编写一行代码之前考虑甚至可能记录测试用例。
他们编写的代码清晰且注释充分;他们不断重构,以便将公共代码移到共享方法中,然后移到基类或辅助类中。
他们编写单元测试用例以保护其他开发人员和测试人员免受错误影响。
他们始终在自动化测试不切实际的地方进行手动测试。
理想主义和实用主义是必要的对应物,它们平衡并告知开发人员整天做出的决定。

其他能力
当然,还有其他能力:

专注:编写软件是一项将思维模型转录为代码的复杂任务。
理解和使用技术的能力。
学习和提高他们个人和作为软件交付组织的一部分所需的所有技能的愿望。
认识到他们的技能通常毫无意义,除非他们与团队和其他团队中的其他角色融为一体。
结论
一项最终能力;然而,是我们都需要的;认识到没有独特的有价值的技能或行为的能力。在任何组织中,有多种方法可以取得成功,有许多角色可以填补,而个人的工作只是更大过程的一部分,所有这些都需要努力才能取得成功。

聪明人有时会忽视其他种类的智慧;如果我们保持实现相互尊重的愿望并将我们的观点作为意见提供,这会有所帮助,即使我们认为我们正在纠正错误——你会惊讶于我们经常将意见和观点混淆为事实。

但是,开发人员最好具备上述能力;然后他们就可以在技术轨道上提升自己的职业生涯,成为高级开发人员,然后成为开发主管,然后成为架构师,或者在管理轨道上正直、对尊重的热情以及激励和帮助他人的愿望实现更是关键。

如果你喜欢我的文章,记得关注获取更多的信息。感谢您的阅读,祝您有美好的一天!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Q shen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值