与其说 Andy Hunt 是敏捷宣言的创始人,不如说他是一名专业作家来得更为合适。他的《实用程序员》《程序员修炼之道:从小工到专家》《编程 Ruby:实用程序员指南》都是口碑极佳的程序员读物。50多岁的他从未离开敏捷,但又没有把自己的人生与敏捷绑在一起,他的精神生活丰富而充实:搞音乐、做木工、写科幻小说……

Andy 的职业生涯经历了很多阶段,从财富100强公司的在职程序员,到在“真正精英、有趣的高科技软件公司”工作,再到担任上述所有公司的顾问,再到一些公司,再到作家,再到出版商,目前稳定在创业者这一头衔。

程序员 Andy

2020年初的一场演讲,他是这样自我介绍的:“我的名字是 Andy Hunt,从事商业编程已经38年了。”所以还是从老本行程序员说起吧,安迪在 Heathkits 和无线电的 CP/M(微机操作系统)及 S-100 bus 的 DIY 时代开始了自己的事业。安迪为一位俄亥俄科学挑战者编写了他第一个真正的程序——一个文本编辑器和数据库管理器的组合。Andy开始入侵6502汇编程序,修改操作系统,并在1981年编写了他的第一个商业程序(一个制造资源规划系统)。

此后,他自学了 Unix 和 C 语言,并开始设计和构建更大、更互联的系统。在大公司工作时,安迪密切关注 Usenet,并通过直接访问 ihnp4 开始了他早期的电子邮件习惯。接下来,他开始从事电子印前处理和计算机图形学的研究,并致力于钻研赏心悦目的硅图形机器。就这样,从 BSD 到 System V,Andy 对 Unix 的几种风格都了如指掌。

作家 Andy

经验日渐丰富的他遇到了一个“疯狂的”项目:在时间紧迫的截止日期内完成500万行代码以完成项目。接手这个项目团队后,他在其中结识了 Dave Thomas,二人采取的工作方式不谋而合,竟然按时完成了任务并让项目顺利进展。二人共同意识到许多项目共同存在的问题:团队成员通常不进行测试、没有交流、需求不一致、甚至没人知道如何构建软件……于是他们想通过这次经历和其他咨询案例积累的经验,来将这些程序员、软件团队、行业如何工作的哲学分享给更多团队。

许多年之后,面对 the Pragmatic Bookshelf 系列书籍,二位作者将会回想起,将手稿发给出版商那个遥远的下午。一开始,他们并没有规划之后的宏图壮志,也并不打算将它当成教科书或者专著,而只是作为一种个人经验总结的笔记或者对工作有帮助性质的小册子。但随着内容越来越完善,稿件越来越多,Andy 接受了亲友的建议,选择了一家软件书籍的优质出版商。他们希望出版社的拒信会指出无法出版的原因,来据此调整、优化稿件。但这个“狡猾的计划”失败了,出版商直接接受稿件,告知二人可以出版,这就是于1999年秋天出版的第一版《程序员修炼之道》。

2000年,在迈阿密,Andy 遇上了 Bob 大叔,二人就软件公司的轻量级 项目管理交换了观点。这年秋,Bob 和 Martin Fowler 萌生了让各种相互竞争的轻量级流程倡导者聚集在一起,形成一个统一的宣言的想法,并向 Andy 发出了邀请。最终,Andy 和其他16位参与者在雪鸟滑雪场度过了观点碰撞的三天,产生了《敏捷宣言》这一成果。

出版商 Andy

敏捷的普遍适用性使其可以扩展到软件开发之外,这之后 Andy 和 Dave Thomas 合作日渐紧密。2003年,他们运用敏捷原则建立了 the Pragmatic Bookshelf 出版公司。

这个出版公司的与众不同之处在于:

  • 他们是针对开发者的出版者;
  • 作者可以直接用标记语言写作;
  • 出版流程更短;
  • 在可以自动化的地方都自动化;
  • 作者可以随时更新自己的书,创建新的电子版;
  • 付给作者的版税更高(普通的3-4倍);
  • 为读者提供 DRM-free 的电子书;
  • 开放尚未正式出版的电子书。

对于既是出版商又是作者的 Andy,除了大名鼎鼎的《程序员修炼之道》,他跟 Thomas 还合著、出版了十几本软件开发书籍,如《单元测试之道 Java 版》《使用 CVS 进行实用的版本控制》,还通过《Ruby 编程:实用程序员指南》这一书籍向西方世界介绍了这种来自日本的新语言。

父亲Andy

作为创业者或者说企业家的 Andy,常在家办公。拥有多项技能的他思维活跃,很容易站在不同的角度看待问题,将其他行业的知识与软件开发融会贯通。比如,他认为,一个公司的组织结构对工作安全有影响,开发人员因为维护人员的存在而重数量轻质量,只想拿到更多工资。究其原因,这类组织失调的根本在于会计准则。工作方式上,他也不拘一格,自称电脑桌面“既不是一尘不染,也不是乱糟糟的猪圈”。他会分类并批量处理文件。他认为,如果将文件分解为颗粒度更细的分类的话,会比较浪费时间,但是不分类又会找不到所需的文件,所以他一般会将文件归档为简单的几个主题,这种方法像桶排序,可以通过快速的线性搜索找到正确的存储桶,这是 Andy 可以分享给大家适度提高效率的好方法。

面对工作和家庭的平衡,他的回应是“同样的挑战有不同的转折点”。所以,戴上了创业者这顶帽子,工作、家庭、休息就不再是完全独立的元素,它们是一个整体。孩子也是公司的一部分,他们会帮去演讲的父亲收拾行李,为即将归家的父亲准备好马提尼酒,或者在游泳池旁玩耍,而 Andy 则带着笔记本电脑编写代码、撰写文章、为出版社制定销售计划……一家人都处在统一战线上。在家办公时,对于陪孩子还是去工作,他认为这是一项优先级排序的问题。对工作和家庭的平衡是一项双向的给予和索取,如果小朋友有学校表演、活动等可预知的事情,工作会为此让路;而如果是晚上或者周末必须处理某些工作问题,孩子们也会自觉尊重、不打扰父亲。

“斜杠中年”Andy

敏捷之外的 Andy 还写小说,他的新书《Conglommora》是一本以瑰丽的想象勾勒未来世界的科幻小说:古老的绿色地球早已荡然无存。人们打造了一艘艘“诺亚方舟”逃离灾难,试图寻找宜居的星球。但人类并没有找到合适的行星,于是人们在宇宙中将自己的船舰聚集在一起,形成了 Conglommora:一个位于深空数百光年的巨大的、静止的、临时的、自给自足的世界。直到来自“死土”的神秘散乱者使他们陷入横跨银河的惊人旅程,以面对过去并威胁未来。这本小说也是以敏捷的方法完成,Andy 还为此阅读了许多量子物理的书籍,学习了不少天文学知识。

除了写科幻小说,拉丁语、笛子、小号、键盘手、摇滚乐、木工……他作为一个程序员转行作家和出版商的背后,还隐藏着这一系列技能。可以说,从《敏捷宣言》发布时就拥有多项技能的“斜杠青年”,到现在不限于敏捷的“斜杠中年”,他的灵魂一直充盈而丰富。他不久前发布了一张音乐专辑《Far Flung Thoughts》,是缀以爵士和蓝调的摇滚乐,适宜编程时听;他的木工工作间日程井井有条,目前在研究燕尾榫;而取得良好口碑的小说写作也正在筹备下一部。

关于如何能在各项身份中转换并怡然自乐,他自称简短而甜美的人生目标可以与大家共勉:“To understand”。

敏捷史话(七):从程序员、作家到摇滚乐手——Andy Hunt的多面人生的更多相关文章

  1. 80后,天才程序员, Facebook 第一任 CTO,看看开挂的人生到底有多变态?

    鸡仔说:今天介绍一位天才程序员--亚当·德安格洛(Adam D'Angelo),他被<财富>杂志誉为"科技界最聪明的人之一",大学去了被誉为"天才" ...

  2. 《程序员的思维修炼:开发认知潜能的九堂课》【PDF】下载

    <程序员的思维修炼:开发认知潜能的九堂课>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196325 内容简介 运用一门程序设计语言 ...

  3. JobDeer 的《程序员必读的职业规划书》

    JobDeer 的<程序员必读的职业规划书> 关键字 持续性,人生规划,职业规划 概念 职业规划三部分: 职业定位 目标设定 通道设计 职业价值论: 能为公司做什么 同样的能力再不同公司价 ...

  4. UNIX/Linux C 程序员需要掌握的七种武器

    我是一名普通的软件工程师,不是什么技术大牛.这篇文章所提到的"七种武器"只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正. (一)C语言 作为一名C程序员,熟练 ...

  5. [程序员的业余生活]一周读完《高效能人士的七个习惯》Day1:这是不是一碗鸡汤?

    提出问题 今天突然想聊聊最近对职场的一些感悟. 这段时间,小端一直在思考一个问题:作为一个程序员,怎么才能成为团队的核心? 还记得刚入职场那几年,小端一直觉得,技术过硬,经验丰富,敢打敢拼,就是答案. ...

  6. 敏捷软件开发:原则、模式与实践——第13章 写给C#程序员的UML概述

    第13章 写给C#程序员的UML概述 UML包含3类主要的图示.静态图(static diagram)描述了类.对象.数据结构以及它们之间的关系,藉此表现出了软件元素间那些不变的逻辑结构.动态图(dy ...

  7. 高效程序员的45个习惯·敏捷开发修炼之道(Practices of an Agile Developer)读书笔记

    首先,这本书值得再看一遍——这次的阅读,有很多东西都是知其“形”,不知其“神”的,这导致了我对其中某些建议持怀疑态度,接受了的建议也有待商榷. 总之,先记录本书的一些信息: Practices of ...

  8. 第一章-第七题( 有人认为,“中文编程”, 是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么? )--By 侯伟婷

    首先,“银弹”在百度百科中的解释是银色的子弹,我们更熟知的“银弹”一词,应该是在<人月神话>中提到的.银弹原本应该是指某种策略.技术或者技巧可以极大地提高程序员的生产力[1].此题目中关于 ...

  9. 高效能程序员的七个习惯【csdn】

    从网上看到的,感觉挺不错的! Beautiful is better than ugly. Explicit is better than implicit. Simple is better tha ...

随机推荐

  1. 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。

    package com.minxinloan.utils; import java.math.BigDecimal; public class Arith { // 源文件Arith.java: /* ...

  2. Pythonchallenge1过关攻略

    第一关上来是一个电视,上面写着2^38,这就非常关键了,这时候我们已经有了大致思路,再看一眼电视机下面的话确认一下,"Hint: try to change the URL address. ...

  3. go-zero解读与最佳实践(上)

    本文有『Go开源说』第三期 go-zero 直播内容修改整理而成,视频内容较长,拆分成上下篇,本文内容有所删减和重构. 大家好,很高兴来到"GO开源说" 跟大家分享开源项目背后的一 ...

  4. Vuejs 基础学习教程

    (四)构建基础进阶-env文件与环境设置 我们在实际开发中,我们一般会经历项目的开发阶段,测试阶段,和最终上线阶段,每个阶段对于项目代码的需要可能都有所不同,那我们怎么让它在不同阶段呈现不同的效果呢? ...

  5. JVM之堆体系结构

    1.Heap堆(Java7之前) 一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的.类加载器读取了类文件后,需要把类.方法.常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆 ...

  6. A - A Gifts Fixing

    t组询问,每次给出数列长度n 以及两个长度为n的数列{ai​}和{bi​}. 有三种操作:ai​−1, bi​−1以及ai​,bi​同时− 1 -1−1. 问最少多少步以后可以让两个数列变成常数数列. ...

  7. 2019牛客多校 Round5

    Solved:4 Rank:122 补题:8/10 A digits 2 签到 把这个数写n遍 #include <bits/stdc++.h> using namespace std; ...

  8. xml——dom&sax解析、DTD&schema约束

    dom解析实例: 优点:增删改查一些元素等东西方便 缺点:内存消耗太大,如果文档太大,可能会导致内存溢出 sax解析: 优点:内存压力小 缺点:增删改比较复杂 当我们运行的java程序需要的内存比较大 ...

  9. Keepalived+LVS实现LNMP网站的高可用部署

    Keepalived+LVS实现LNMP网站的高可用部署   项目需求   当我们访问某个网站的时候可以在浏览器中输入IP或者域名链接到Web Server进行访问,如果这个Web Server挂了, ...

  10. 力扣119.杨辉三角II-C语言实现

    题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 来源:力扣(LeetCod ...