10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:243385
用户头像

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

关注

评论

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

华为产品创新经验,帮你成为更好的产品创新者

平平无奇爱好科技

说个大事:问界M9来了!

平平无奇爱好科技

求解算力“致用”难题,中国算力行业给出首个答案

脑极体

AI

当创建一个ingress后,kubernetes会发什么?

华为云开发者联盟

云原生 后端 HTTP 华为云 华为云开发者联盟

好用的思维导图软件MindNode for mac中文版 支持mac14系统

南屿

Mac软件 MindNode破解版下载 思维导图软件MindNode

C 语言用户输入详解:scanf、fgets、内存地址解析及实用指南

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

【第七在线】智能商品系统是否可以帮助预测新品的销售表现?

第七在线

速卖通商品详情数据接口(aliexpress.item_get)丨速卖通API接口

tbapi

速卖通商品详情数据接口 速卖通API接口 速卖通商品数据接口 速卖通商品列表数据接口

软件测试/测试开发/全日制 | 数据库设计与Python全栈开发的默契合作

测吧(北京)科技有限公司

测试

天谋科技联合 OpenCloudOS 完成技术兼容互认证

Apache IoTDB

需方管理运维运营服务的一些心得

太乙闲人

Super Speed vs. Wireless: A detailed comparison of QCN9274 and QCA9880 wireless network card chips

wallysSK

展望2024: 中国AI算力能否引爆高性能计算和大模型训练的新革命?

GPU算力

在 Walrus 上轻松集成 OpenTofu

SEAL安全

开源 IaC Walrus OpenTofu

牛刀低代码开发实战—在线报工管理

牛刀专业低代码

低代码 专业低代码 起步牛刀低代码 牛刀低代码 牛刀专业低代码

Git 对项目更新的时候提示错误 repository not owned by current user

HoneyMoose

极狐GitLab Helm Registry 使用指南

极狐GitLab

Spring 应用合并之路(二):峰回路转,柳暗花明 | 京东云技术团队

京东科技开发者

零代码集成自动化的实现逻辑是什么?

谷云科技RestCloud

零代码 APPlink

K-最近邻算法(KNN)是什么法?

小齐写代码

2023 IoTDB Summit:宝武装备智能科技有限公司技术中心副主任赵刚《宝武集团设备智能运维超大规模分布式数据湖建设探索》

Apache IoTDB

好消息!时习知荣获IXDC AWARD国际体验奖

平平无奇爱好科技

重磅发布《政务数据云发展与应用白皮书(2023)》(附下载)

信通院IOMM数字化转型团队

政务 政务数据安全 ICT深度观察 政务数据云

Authing 受邀参加 2023 QCon 全球软件开发大会

Authing

InfoQ Qcon Authing

Excelize入选“2023开源创新榜”优秀开源项目

xuri

GitHub 开源 Excel 创新 Excelize

《2023央国企数字化产业赋能图谱》正式发布!(内附下载)

信通院IOMM数字化转型团队

ICT深度观察 央国企数字化转型 央国企数字化产业赋能图谱

牛刀专业低代码平台开发实战—智能电房

牛刀专业低代码

低代码 起步牛刀低代码 牛刀低代码 牛刀专业低代码 起步低代码

2024上海城博会|上海国际城市与建筑博览会

AIOTE智博会

城博会 上海城博会

文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题

福大大架构师每日一题

福大大架构师每日一题

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