17611538698
webmaster@21cto.com

聪明与智慧的开发人员有什么本质区别?

技术人生 0 800 2022-12-16 10:42:05

“没有比自以为是的人更愚蠢,没有比怀疑自己是笨蛋的人更聪明。”

—— 玛格丽特

大多数开发人员在编写代码方面都会觉得自己比较聪明。但是,在很多情况下,聪明既是一个优势,也是一个劣势。

常识、偶尔小聪明与经验都可以帮助开发者自己避免问题而不是解决问题,但是还要知道什么时候接触编码以及什么时候拒绝需求。

知道什么时候保持沉默,什么时候战斗,什么时候逃跑躲猫猫。智慧的(高级)开发人员比聪明的(初级)开发人员更有优势。

本文中聪明的,智慧的,初级的和高级的这三个形容词会重复使用,请各位看官注意鉴别。

聪明和智慧的开发者有啥区别?

  • 开发人员仅花费50% 的时间编写代码

  • 初级开发人员接受简单的需求并创建复杂的代码

  • 高级开发人员接受复杂的需求并创建简单的代码


总体来讲,高级开发人员是智慧的,初级开发人员是聪明的。如果你还没有犯过错误,这两个形容词还都不能算在你的身上。

初级开发者与高级开发者之间的区别在于经验、知识还有技能。

经验就是区别。一旦开发者犯了错误,他们希望在未来不再犯同样的错误,但又不去惧怕重复错误。这让人们有机会犯新的错误,随着时间推移,开发人员就积累了不少避免更多错误出现的经验。

软件开发中的错误很难让人预见,因为后果和出错啥的都是在将来。简单的Bug会快速反馈给你,你可以快速找到它,并把它给修复。

棘手的Bug类似于对值进行硬编码,最初好像没有啥缺点。之后,你可能需要做好一个完整发布来改变这个值,你需要多次为当初这个决定付出各种代价,时间只是一个方面。

图片

避免问题和解决问题

聪明人解决问题,智慧的人会避免它。

——阿尔伯特·爱因斯坦

除非特殊情况,大部分开发人员都是非常乐意编写代码的。这是我们这帮人擅长的、也是喜欢做的事儿。

高级开发人员学习的技能是什么时候编码,澄清和识别什么时候根本不需要编写程序。

而初级开发人员就像一个个拿着小锤子的人,每个人提的需求和问题都像是一个写代码的机会。

事实上,编写代码应该是最后的选择,因为每行代码一旦创建,它就成为开发团队的责任。创建代码后,需要必须对其进行维护,从而增加代码库的复杂性。

从短期来看,代码是一个很好的解决方案,但从长远来看,它需要更漫长的时间,增加复杂性并增加维护开销。

编写更少的代码才更有效能,这会减少失败的机会。高级开发人员知道自己在必须并且已经验证需求后开始编码。

聪明的开发人员仅能人包含片面的需求而忽略完整性的要求来减少创建的代码数量。

通过更改业务流程而不是增减编码来实现需求。也不要将所有事情都自动化,有时手动选择是最最好的选择。

知道什么时候编码

你必须知道什么时候拿牌,什么时候弃牌,什么时候走开,什么时候跑路。

—— 肯尼罗杰斯

智慧的开发人员知道什么时候编写代码,什么时候验证、测评验证,而不是立即创建代码。初级开发人员只知道编写代码,他们希望尽可能多地马上开干。

这突出了一些思维差异,初级开发人员和高级开发人员之间存在的就是这种差异:知道何时编码。

简单

初级开发人员希望立即编写代码,通常是在理解业务为何需要编码以及代码需要做什么之前就开始了。

而高级开发人员寻找假设并验证需求。如果业务逻辑做错了,那么你写的代码再好也是没什么用武之地。

通过编写具有经过需求验证的代码,你就可以更快地创建软件。代码中有很多种开销,例如更新的依赖、相关代码、文档、测试、构建等。

有时,开发者通过较慢地开始,以创建正确的软件为目标,反而是加快速度。

该听的时候听,该说的时候说

第一个原则是不能骗自己,你自己是最容易受骗的人。

—— 理查德·P·费曼

木匠测量多次,再砍一次木头,而开发人员就很少这么小心谨慎。

智慧的开发者明白自己是创建软件的专家,而用户是他们业务中的专家。创建软件是业务专家和技术专家之间的协作。

初级开发人员忘记倾听一些需求,或者直接停止倾听,立即调头开发技术解决方案。

高级开发人员专注于业务目标和工作流程,因为他们只有理解软件的用途,只有了解企业、团队和个人角色的目标,才能创建正确的软件来帮助他们。

当初级开发人员充分阅读需求,按照快乐路径理解并创建它时,就会发生常见错误。后面,当不愉快的路径和异常出现时,初级开发人员不得不不断地修改代码来修复完善一个又一个的设计和错误。

一开始看起来进展很快,慢慢地一个bug一个bug落后了。一位优秀的高级开发人员只创建一次代码,它就会在环境中运行。

高级开发人员知道什么时候该问问题,什么时候该听,什么时候该说!

干属于自己的活儿

“沉默是从生活的许多苦难中吸取的教训。” 

—— 塞内卡

软件开发需要一个团队来完成,但是这需要这里面的每个人都要做好自己的工作。

乐于助人是一把双刃剑,短期确实可以帮助别人,但长期会伤害你自己。你给别人干的工作越多,你自己干的时间就越少。

智慧的开发人员会确保处理项目区域的人员完成此项工作。

初级开发人员需要保护好自己的时间,并将责任和决策推给处理这些事情的相关角色。

当初级开发人员被卷入做其它人的工作时,会陷入困境并没有时间做自己的工作。如果你不断的这样干,你的工作时间会更长,并且一步步走向倦怠。

符合现实

“昨天我很聪明,那时我想改变世界。今天我很智慧,所以我正在改变自己”

——鲁米

事情会出错,问题会发生,计划会出错,设计会改变。我们无法对抗现实,只有适应环境并随之改变。

初级开发人员与现实作斗争,而高级开发人员与现实保持一致。

你无法阻止问题、错误和Bug,但你可以为它们做好准备,确保它们不会以灾难告终。

聪明的人和智慧的人的区别,真的没啥好计较的~

作者|校长

评论