50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

HyperWorks汽车B-柱网格变形

智造软件

CAE Hypermesh hyperworks

DNS DDoS攻击:网络世界中的“洪水猛兽”

防火墙后吃泡面

YashanDB|用 yasldr 批量导入时报内存不足?一文搞懂 bulkload 内存分配逻辑

数据库砖家

数据库

企业如何利用SD-WAN优化多云架构网络性能

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN厂商 sd-wan专线

YashanDB|如何优化跑批性能?这些参数配置值得关注

数据库砖家

数据库

YashanDB 知识库|yasql 报 YASQL-00021:单行字符超 4000.如何绕过限制?

数据库砖家

数据库

教育部加快推进教育数字化,2024年来国家级人工智能教育政策合集

ModelWhale

淘宝天猫商品详情API接口(附代码示例)

tbapi

淘宝商品详情接口 淘宝API 天猫商品详情接口

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS NVMe 驱动特殊定制版 (集成驱动版)

sysin

esxi

网易游戏 Flink 云原生实践

Apache Flink

大数据 flink 云原生

图片导航组件 | 纯血鸿蒙组件库AUI

华哥的全栈次元舱

HarmonyOS 开发语言 纯血鸿蒙 ArkUI / eTS 鸿蒙组件库AUI

排行榜的5种实现方案!

不在线第一只蜗牛

架构 开发

MCP 如何构建企业级数据分析 Agent?

阿里巴巴云原生

阿里云 云原生 函数计算

YashanDB 知识库|UNDO 表空间一直在涨?查原因 + 给方案,一文说明白

数据库砖家

数据库

“工作区”升级为“磁盘”、数据集统计概览优化|ModelWhale 版本更新

ModelWhale

大模型

华为云中间件助力AI应用智能进化与创新突破

华为云开发者联盟

华为云

YashanDB 知识库|YCP 单机部署如何离线升级?一文详解 -rpc 升级流程

数据库砖家

数据库

金贝灯光儿童摄影3大布光方案,解锁专业级童趣写真

科技热闻

YashanDB 知识库|MySQL 的 GROUP BY 语句在崖山报错?问题出在这个标准!

数据库砖家

数据库

YashanDB 共享集群实测报告:性能、稳定性、架构三重验证,细节见真章

数据库砖家

数据库

PVS‑Studio 7.36 for macOS, Linux & Windows - 代码质量安全静态分析

sysin

CST如何在三维里截取部分区域进行仿真

思茂信息

cst CST软件 CST Studio Suite

YashanDB 知识库|Oracle 里的大整数插入正常,换到崖山却报错?问题可能出在字段类型上

数据库砖家

数据库

数字化与信息化的关系

优秀

数字化 信息化

Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件

sysin

dell

JEB Pro v5.29 (macOS, Linux, Windows) - 逆向工程平台

sysin

JEB

Cyber Triage 3.14 for Windows - 面向事件响应的数字取证软件

sysin

酷睿、锐炫加持!英特尔点亮智慧零售新场景

E科讯

如何选择适合企业的高效财税自动化软件

Techinsight

财税

怀进鹏强调高效优化学科布局和专业建设,多所985成立“AI+”新学院

ModelWhale

YashanDB 知识库|YCP 高可用离线升级指南(以 23.2.4.100 升级至 23.2.11.100 为例)

数据库砖家

数据库

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