AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

Justin James 谈高效开发者的特质

  • 2013-05-15
  • 本文字数:2023 字

    阅读完需:约 7 分钟

Justin James 是 Conigent 公司的首席架构师,他指出要想成为一名优秀的开发者,仅仅写出可用的代码是远远不够的,还需要具备一些综合的素质,包括学习技术和非技术两方面的新技能、务实但不教条主义、知道如何寻找答案等等。

高效的开发人员能够主动学习技术和非技术两方面的新知识。糟糕的程序员只知道了解对自己工作必要的东西。但是优秀的开发者会主动学习新的技术技能,不仅是技术方面,他们还会学习非技术技能,对各种知识来源都有一种开放的心态,而不会像有些人那样固步自封。具体而言,糟糕的程序员可能在参加了WPF 有关的项目之后才会开始学习XAML,但是出色的开发者也许在一年之前就已经了解了相关的知识,因为他们觉得这些新知识很有趣,而且他们还会阅读WPF 应用的设计指南、可用性的相关内容,因此能够做出优秀的界面来。

优秀开发者必须遵循实用主义,而不是教条主义。严格的遵守编程规则对许多人来说非常可怕,难以坚持下来。James 指出,他经常能够碰到一些程序员,他们无法或者拒绝做某个任务只是因为完成这个任务的做法通常不符合最佳实践所。业务需求很少会受到实现需求所采用的技术的制约。没有人会说,“我们不应该把这个需求写到规格说明书里,因为要实现这个需求,程序员就不得不写一段很糟糕的代码。” 程序员的任务是要创造一个可以工作的应用程序,而绝不是要求在技术方面达到十全十美。这不是在为垃圾代码做辩护。James 认为,总会在有些时候,你会写出一些不那么优雅的代码,但是这些代码永远不会作为范例向别人展示。如果只有一种写法,那么这种代码就不是糟糕的代码,但要保证你已考虑了其它所有可能的方案。

James 认为,“知道如何寻找答案”很重要。这项技能不仅仅是在搜索引擎中键入几个关键字那么简单, 也不是到 Stack Overflow 或者 MSDN 论坛上类似网站发求助帖。James 就碰到过在搜索引擎里根本搜不到答案的问题,然后在 Stack Overflow 和 MSDN 论坛发的所有问题贴也没有一个像样的答案,不过他最终还是解决了所碰到的问题。有些问题是与情境(上下文环境)相关的,所以如果依赖于搜索引擎和论坛就会被淹没在各种乱七八糟的答案中。要知道如何进行根本原因分析,利用底层系统方面的知识找到其它的线索和解决方案,还要学习在深入分析问题之前要对问题本身有一个全面的高层次认识。

对工作有热情,如果不热爱本职工作,那么你无法成为顶级的开发者。现实世界的确存在一些非常优秀的、为了工作而工作的开发者,James 曾经也是这样的心态,但是如果这成为你的价值观,那么你不会乐意做促进事业成功的许多事情。这种观点会激怒许多开发者,因为他们认为这是一种对自己的侮辱:“我是一名出色的开发者,但是我有其他优先级更高的事情要做,我不能把工作变成生活。”James 表示完全理解,他也有许多优先级高的事情,但是当他投身于工作当中时,他愿意暂时搁置其他优先的事情来完成工作。如果你不能乐意全身心的投入到工作中,那么你无法成为最优秀的开发者,这不是一种侮辱,而是事实。

程序员的热情不仅仅是编程,而且要热爱工作、使用的技术、你的老板、项目等等。James 发现有些出色的开发者在平时工作中表现一般,因为这些人讨厌手头的项目或者讨厌使用的技术。James 也有过类似的心态,他的同事也有这样的人。James 建议,如果你处于这样的情形下,那么需要立刻解决它,要么从工作中找到乐趣,要么换份工作。

许多开发人员都有很强的自尊心。你比其他人更聪明、更有知识或者更有经验并不意味着你比其他人更出色。你需要平等对待他人,认真聆听并考虑其他人的想法,不要小看他们。你应该更在意团队是否成功,而不是个人的成就。

高效开发者应该具备创业精神。最好的程序员不是机器人,他们对产品有自己的情感归属和创业精神。对他们来说,产品成功不仅仅意味着工资的回报。因为他们对工作有情感寄托,他们为了项目成功而工作,而且走得更远。

“该出手时就出手”,James 认为开发人员经常犯的一个错误是一头扎进代码堆里,但是又不知道应该做什么,更糟糕的是,这些开发者还将其行为称之为敏捷模式,好像这么说就会显得不错。对于出色的开发者而言,之所以扎进代码里,是因为产品的规格说明对他们来说非常熟悉和有经验。当高效开发者面临新挑战时,他们会认真思考、规划和研究。他们的优点在于,不会掉入“分析瘫痪”的泥沼里爬不出来,他们知道应该对某些要素保持关注。一旦分析太多,那么就是浪费时间。但是也有例外,比如原子弹项目、宇宙飞船计划等。

在某一点上停止计划开始编码,然后根据实际情况调整自己的计划。这也正是 James 喜欢敏捷模式的原因。高效的开发者如果发现项目不再适用于项目实际情况,那么就会做出调整甚至抛弃。

综上所述,James 的观点主要包括:

  • 学习技术和非技术两方面的新技能
  • 务实但不教条主义
  • 知道如何寻找答案,而不是依赖于搜索引擎
  • 热爱工作相关的一切,而不是编程本身
  • 尊重同事,不要自负
  • 对本职工作存在情感归属,而不仅仅是赚钱的途径
  • 减少重复的分析工作,及时启动编码工作,随时调整计划
2013-05-15 10:243302
用户头像

发布了 501 篇内容, 共 272.8 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战营第一模块命题作业

Vic

架构实战营

架构实战营-M01H

b1a2e1u1u

架构实战营

全面升级! 星环科技基础软件再升级 赋能数字中国建设

星环科技

聪明人的训练(四)

Changing Lin

4月日更

go每日一库 [cmd]

happlyfox

Go 语言 4月日更

deno + Vite 会碰撞出什么样的火花呢?

Viktor

deno vite

Linux awk命令

一个大红包

4月日更

Git命令大全,Git基本了解

Chalk

git 学习 4月日更

Redis数据结构zset详解:范围查找

程序员架构进阶

redis 源码分析 Zset 28天写作 4月日更

Spark数据倾斜解决方案实战(一)

小舰

4月日更

【架构实战营】第一模块作业

烟雨濛濛

Redis 数据倾斜和集群内通信开销

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

配置中的动态代码

顿晓

配置化开发 Function 4月日更 动态函数

u盘偷猎系统源代码

赫鲁小夫

4月日更

架构实战营模块一作业

En wei

架构实战营

人人矿场帮助用户轻松获取算力

DT极客

容器的生命周期状态变化

耳东@Erdong

容器 4月日更

架构师训练营大作业二

潘涛

架构师训练营 4 期

架构师训练营大作业一

潘涛

架构师训练营 4 期

【架构实战营】第一模块总结

烟雨濛濛

架构实战营

优雅编程:JavaScript代码优化常见的3个小技巧

devpoint

map reduce 空值运算符 filter 扩展运算符

模块1

Chris Cheng

架构实战营

K8S行业调研报告出炉:混合云、边缘计算走向主流

Rancher

模块一作业

Presley

架构实战营第一模块课程总结

Vic

架构实战营

像智能手机一样造车,可能吗?

脑极体

当你的内心归于平静,美好便会悄然而至

小天同学

自我思考 个人感悟 个人总结 4月日更

Java 代理使用与原理

Yangjing

cglib JDK代理 代理原理

中文文档持续迭代,内容更丰富,入口更简明!

Rancher

架构实战营-模块1-作业

笑春风

架构实战营

[架构实战营][0期]模块1作业

张民

架构实战营

Justin James谈高效开发者的特质_语言 & 开发_崔康_InfoQ精选文章