写点什么

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

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

关注

评论

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

简单聊聊数据库可以做什么,有什么用?

行云管家

数据库 云计算 大数据

新特性速览!Sermant重磅更新,1.3.0 release版本发布

华为云开源

微服务治理 sermant 字节码增强框架

软件测试开发/全日制/测试管理丨测试左移和测试右移

测试人

软件测试 测试开发

深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs

EquatorCoco

Docker 容器化 项目开发

揭秘加密货币周期:如何通过顶级代币指标洞察市场变化

Footprint Analytics

区块链 加密货币

低代码通过图形化编程,快速构建应用程序

高端章鱼哥

低代码 可视化开发 JNPF 软件开卡

淘宝/天猫商品详情实时数据API技术实现

Noah

软件测试开发/全日制/测试管理丨Web 兼容性测试

测试人

软件测试 测试开发

探索跨语言、跨模态、跨任务的大模型驱动应用生态繁荣

百度开发者中心

人工智能 大模型

小程序怎样成为平台““破壁人”?全网引流的3种姿势!

Geek_2305a8

服务器里面打开浏览器访问不了会是什么原因

德迅云安全杨德俊

Capture One Pro 22 for Mac(RAW图像处理软件) v15.4.2.12永久激活版

mac

苹果mac Windows软件 Capture One Pro 22 RAW文件转换器

数据资产入表“倒计时”,企业该如何抓住红利?

用友BIP

数据资产

身为程序员,你很有必要了解一下提效工具“JNPF”

互联网工科生

程序员 软件开发 低代码 JNPF

Zoho 2023:种长期主义的因,越经济下行的谷

ToB行业头条

2023 CSIG青年科学家会议丨多模态大模型时代下的文档图像处理

热爱编程的小白白

通过小程序容器轻松打造自有App小程序生态

Geek_2305a8

提升测试自动化:ForEach 循环在API测试中的高级策略

Apifox

测试 自动化测试 foreach Apifox 测试工具

实现数据一体化的有效措施

RestCloud

ETL 数据一体化

软件测试/测试开发/岗位内推丨字节跳动岗位开放

测试人

软件测试

小程序能否成为移动应用实现动态更新与敏捷迭代的突破口?

Geek_2305a8

2024提升计划|优秀程序员的10大共性特征

SoFlu软件机器人

程序员 软件开发 代码 测试 单元测试 构架

大语言模型训练数据常见的4种处理方法

不在线第一只蜗牛

助力企业出海,Ogcloud提供一站式网络解决方案

Ogcloud

网络 网络加速 组网

请重视你的简历

老张

面试 简历优化 简历

快手商品详情数据接口(ks.item_get)丨快手API接口

tbapi

快手商品详情数据接口 快手API接口 快手商品数据接口 快手数据采集

精彩回顾 | 《国产数据库共话未来趋势》技术沙龙上海站成功举办!

阿里云数据库开源

数据库 阿里云 数据管理 国产数据库 polarDB

软件测试开发/全日制/测试管理丨App移动测试体系

测试人

软件测试

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