成为优秀程序员的方法就是抛开编程?

2023-11-16

原文:How To Become a Better Programmer by Not Programming
作者:Jeff Atwood

我在2006年写过一篇题为“Programmers as Human Beings”(程序员,亦人类)的博客,文中我提到过自己当时正在读《编程大师访谈录》。这本书出版于1986年,它收集了众多计算机行业先驱的采访实录。这本书里面所有的采访都是值得一看的,尤其是比尔·盖茨访谈中的一个回答,可以说是一语中的:

《编程大师访谈录》是对19位计算机行业先驱的采访实录,采访对象包括查尔斯·西蒙尼、比尔·盖茨、安迪·赫兹菲尔德、雷·奥奇、杰夫·拉斯金等。访谈涉及他们软件创造过程的灵感、技术、编程习惯、动机、反思,以及对未来软件的畅想等。问答中集结了这些计算机先驱的精辟言论,处处闪烁着智慧的火花。——译者注

问:若要做好编程工作,必须积累很多年的经验才行吗?

比尔·盖茨答道:“不是这样的。我觉得在最开始的3~4年之后,你是不是一名优秀的程序员就已经定型了。更多年的历练,只会让你更多地了解到大项目管理和人员管理。3~4年的时间足以看清你的未来。在微软,没有一个人是在一开始几年毫无建树、而在后来出人意料地成为多面手的。通过和一个人聊他所写的程序,我可以马上看出他是不是一名优秀的程序员。”

我们已经知道,会编程的人和不会编程的人中间隔着一条鸿沟。

但是,在软件开发领域同样有类似的一句话,而这句话通常不为人所知:优秀的开发者和平庸的开发者之间存在着一条鸿沟。通过4年的专注编程,一位平庸的程序员会略有心得,但他始终无法蜕变成为一名优秀的程序员——优秀程序员所具备的素质似乎是与生俱来的。

我同意比尔·盖茨的说法。依我的经验,你要么是一名优秀的程序员,要么不是,这两者之间没有灰色地带。无论你多么埋头苦干,这点是无法改变的。但如果你能接受这一点,又会产生一个悖论:如果经验不能够使你成为更加优秀的程序员,还有什么可以呢?难道我们的技术水平永远不会提高吗?天资不够是不是就根本无望成为优秀的程序员了?

要回答这个问题,你必须要看到编程的痴迷本性。优秀的程序员擅长编程,非常地擅长,甚至你会称赞他们无与伦比。如果和我有点相像的话,他们应该会在电脑面前度过生命中所有可用的时间;随着时间的流逝,他们理所当然变得越来越优秀。有能力的程序员已经靠自身所掌握的编程技巧跻身于优秀程序员的行列了,但是如果你已经拥有了97%的编程才能,是什么使得你获得最后的这几个百分点,并且最终脱颖而出呢?

随着年龄的增长,我开始愈加相信:成为更加优秀的程序员的方法是抛开编程。你需要休整一下,放下编译器,好好评估一下自己正在做的事情。编写代码固然重要,但这只是整个过程中的一小部分。

DesignObserver.com上有这么一段话,提到了一点不错的建议:

Design Observer是一个致力于讨论各种设计话题的网站,包括:平面设计、社会创新、都市生活、流行文化和批判等。——译者注

这么多年下来,我开始意识到,我最好的作品总是源于那些能够引起我兴趣的事情,更或者是那些我原本就感兴趣(甚至饱含激情)的东西——这种兴趣贯穿于设计工作的整个过程。我相信,我至今对平面设计仍然充满着激情。而平面设计的关键在于,它总是包含了一些与它本身并不太相关的东西,比如公司法、职业足球、艺术、政治、Rober Wilson等。如果我不能对这些事情产生兴趣,我就很难把设计师这份工作做好。在我看来,下面的结论是必然的:你的兴趣爱好越广泛,你就越能胜任你的工作。

Robert Wilson(罗伯·威尔森),1941104日出生于美国德克萨斯州的瓦克市,是一位国际知名的美国戏剧导演和舞台设计师。最知名的戏剧作品为《沙滩上的爱因斯坦》,此剧被誉为后现代主义的代表作品。——译者注

对编程有激情是一件很美妙的事情,但是它很容易让你迷失在你已经证明自己够格的一项技能中,并且越陷越深。为了真正地成为一名更好的程序员,你必须培养自己对于编程周边所有事情的热情

后来在2005年的一次访谈中,比尔·盖茨继续阐述了他在1986年的观点:

工作的本质并不是闭门造车(埋头写代码),我相信这一点很容易理解。最最匮乏的人才是那些既对工程技术有超强的领悟能力,又可以与核心开发人员建立良好的关系,并且可以充当与客户、市场等之间桥梁的人。像这种工程管理人才,即使在微软也是很缺的,所以我们不得不经常鼓励一些人去尝试。

我很希望看到有更多人投身于这些职位。他们除了掌握基本的工程技能之外,也把人员管理和群体动力看作是一项对自己的历练。要是这样,那就太好了!

我们可以对这些人承诺,在他们从事这个职位的开头两年里,他们做的绝大多数事情都不是写代码,因为有很多方向可供选择。比如身处Office部门,你将参与创建这款神奇的产品,你会看到人们是怎么使用它的,两年时间很快就会过去,你要开发一个新的版本,并且深层次地改变生产力。你还可以做一些大胆的尝试,准确地满足客户的需求。

单单靠编程,你只能补足或者增强自己已有的编程技能,永远也无法成为一名优秀的程序员。你需要尝试去了解你的客户、你所身处的行业及其相关的业务!

还是那句话:“你的兴趣爱好越广泛,你就越能胜任你的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

成为优秀程序员的方法就是抛开编程? 的相关文章

随机推荐

  • C#winform窗体的添加查询

    固定资产信息表 利用 net 的 Winforms 技术实现某公司管理整个公司的固定资产 而本系统功的功能实现 固定资产的添加管理 页面 一个主页面 数据库设计 create database AssetDB 创建数据库 go use As
  • Shell中的括号、双括号、方括号和双方括号

    括号 括号一般在命令替换的时候使用 bin bash today date y m d touch log today 双括号 使用双括号 在比较过程中使用高级数学表达式 符号 描述 val 后增 val 后减 val 先增 val 先减
  • matlab 直通滤波

    目录 一 算法原理 1 算法概述 2 实现流程 二 代码实现 三 结果展示 1 x字段滤波 2 y字段滤波 3 z字段滤波 一 算法原理 1 算法概述 直通滤波的作用是过滤掉在指定维度方向上取值不在给定值域内的点 2 实现流程 首先 指定一
  • ftp linux 开启验证_在linux下开启FTP服务方法介绍

    1 首先服务器要安装ftp软件 查看是否已经安装ftp软件下 which vsftpd 如果看到有vsftpd的目录说明服务器已经安装了ftp软件 如果没有安装ftp软件的话 这里有下载地址和相关教程可以参考 2 查看ftp 服务器状态 s
  • 剑指Offer07:重建二叉树(Java)

    题目描述 解法思路 一开始想了半个小时都没想出来 幸好得到大佬的帮助 终于做出来 嘻嘻 采用递归的思想 不断拆分左右子树即可 首先我们通过前序遍历可以看到这个树的根节点是3 然后通过中序遍历 我们可以知道9是左子树 15 20 7是右子树
  • 如何把IDEA的项目上传到git上面去

    1 找到项目所在的位置 右击打开git bash here 2 初始化本地项目 输入git init 3 在码云 github 中新建 远程的 仓库 4 右击项目 选择git gt add 将项目添加到本地仓库 5 右击项目 选择git g
  • 面试题创作0010,请论述您对MMU的认识。

    1 请问你第一次在项目中接触MMU是什么情形 其实很少 除非是深度设计公司 2 请问简单论述MMU的使用步骤 3 Intel 的MMU和MIPS的MMU 以及ARM和RISC V的MMU有不一样么 4 您对MMU的发展历史有了解么 比如第一
  • idea启动缓慢解决办法

    idea启动缓慢解决办法 文章目录 idea启动缓慢解决办法 前言 一 修改内存大小 二 虚拟机运行大小 三 插件禁用 1 安卓相关 2 构建工具 3 Code Coverage 代码覆盖率 4 数据库 5 部署工具 6 html和xml
  • spring boot 与mybatis 整合配置 日志打印

    application properties mybatis check config location true mybatis mapper locations classpath mapper xml mybatis type ali
  • FCRP-D---帆软官网模拟题,报表模块

    1 要求 外观设计 ds1 ds2 实现根据所选的类别 出现该类别的产品 配置控件 隔行换色 金额大于1000显示红色并加粗 效果 没有选择产品类别 产品名称可以选择全部 2 要求 外观设计 采用决策报表 ds1 ds2 ds3 ds4 1
  • C++11中的std::bind

    文章转载自 http www jellythink com archives 773 看看这段代码 这几天学习Cocos2d x 看到了以下的一段代码 new callbacks based on C 11 define CC CALLBA
  • centos下vim使用

    vi的使用 基本上vi可以分为三种状态 分别是一般模式 编辑模式和命令行模式 各模式的功能区分如下 一般模式 以vi打开一个文件就直接进入一般模式了 这是默认的模式 在这个模式中 你可以使用上下左右按键来移动光标 你可以使用删除字符或删除整
  • 【算法】欧拉函数公式证明

    定义 欧拉函数 n varphi n n 表示小于等于 n n n且与
  • 正在找副业怎么找?空余时间找副业怎么找?

    很多人平时都是在企业上班 一谈到找副业 还真不知道找啥 或者就是利用空余时间去看看附近有什么临时工需求 其实这不是副业 只能算是兼职 还是靠出卖时间的廉价劳动力所得报酬的兼职 寻找合适的副业 方法主要有三个 1 从自己的主业出发 延伸出自己
  • 企业实施MES系统前后的10大效果对比,一文了解mes功能!

    什么是MES系统 MES信息化管理平台 包含了生产计划 采购 物流 销售 核算等模块 能够为我们带来可视化管理 可共性的管理 实施的管理等等 制造执行系统主要是针对车间级的 比如 我们可以对生产线进行实时监控 也就是说整个的生产过程监控 第
  • 概率论入门

    概率论入门 导论 概率论解决随机问题的本质 就是把局部的随机性转变为整体上的确定性 概率论的产生 能让我们对未来随机事件发生做出数学上的确定性判断 这是概率论的思想基石 概率论作为一种数学工具的基本思路 正式基于这种整体的 全局性的思考框架
  • 无理数无理性的证明问题

    问题1 求证 2 sqrt 2 不是有理数 证明 假设 2 sqrt 2 是有理数 可设 2 pq sqrt 2 frac p q p q N p 12289 q in N q gt 1 q gt 1 且 p q p 12289 q互质 则
  • 用AI给图片上色 在线将黑白照片处理成彩色照片工具(干货)

    一个在线的网址 用此工具可以给黑白照片上色 刚刚测试了一下 效果算是可以吧 图片直接进行拖拽 或者是在页面点击添加 处理后点击download即可 AI智能上色 效果看起来还不错吧 下面是测试的 图片转换地址 https imagecolo
  • timesten常见的一些简单问题

    环境为 instance name为eservice安装目录为 home timesten TimesTen 下面这些问题是针对新手而言的 通过这些问题可以帮助刚接触timesten的人可以快速配置timesten more 如何启动 ho
  • 成为优秀程序员的方法就是抛开编程?

    原文 How To Become a Better Programmer by Not Programming 作者 Jeff Atwood 我在2006年写过一篇题为 Programmers as Human Beings 程序员 亦人类