前几天,我读到一篇文章[1],一个60多岁老程序员回顾自己的人生。

读完以后,我很受触动,觉得对于软件行业的很多看法,我也有同感。下面就是这篇文章的翻译。

一个老程序员的30年生涯回顾(译文)

原文网址:hackernoon.com[2]

作者:Chris Fox

1、

1967年,我13岁时开始学习编程。

1988年,我正式进入了软件行业,通过编程养活自己。那一年,我34岁。

2、

1989年,我加入微软公司,那是微软为程序员提供单人办公室的最后一年。我们编程时,几乎没有干扰,这真是太好了。当时,微软的观念是必须为程序员创造不受打扰的环境,让他们全身心地投入工作。

3、

1990年5月,Windows 3.0 发布,公司出现了真正的变化。

突然之间,我与一个吸烟的同事共用一个办公室,他整天在电话里大声聊天。更糟糕的是,我们开始有更多的会议。

4、

接下来的20年,情况越变越糟。程序员像农奴一样被使用,许多人饱受压力、精疲力尽,每周工作70个小时以上。但是实际上,其中真正用来完成工作的时间只有4-6个小时,其余时间都为通过质量检查系统苦苦挣扎,设法应付各种质量措施。

5、

到了2009年,一切都变得混乱了。程序员对代码质量的热爱,完全被复选框式的机械处理取代了。在2008年末,我的主管要求我,代码都必须有单元测试,以便在系统中为该项目勾选“具有单元测试”的那个框。不久,他又要求我尝试“测试驱动的开发”(TDD)的新编程模式。

最后,当他们要求我做结对编程时,第二天我就因为愤怒而辞职了。

6、

离开微软后,我去了西雅图市中心的 Real Networks 公司工作。在西雅图,交通堵塞是一个大问题,我一般在早上高峰时间之后的9:30去上班,这样只要开车30分钟,就能到公司,还算不错。

7、

不久,我所在的团队开始尝试敏捷开发,每天早上8:30举行一次“站立会议”。这正好赶上早高峰,30分钟的通勤时间变成了90分钟,我必须在早上7:00出门才行。我几乎没有办法准时到达,并且感到非常疲倦。我询问是否可以稍微推迟会议。不行,你难道不知道站立会议必须在早晨举行吗?

为此,我只能(无偿地)多花了额外的时间开车去上班。

8、

这种会议真是很荒谬,每个程序员报告自己正在做的事情。大部分时候,我们做的事情跟昨天相同,偶尔会做一些新的事情,但没有什么特别可说的。会议上,产品经理会表现出生机勃勃、欢快愉悦的情绪,听起来很投入,而实际上我知道他们上班时很多时间都在脸书上玩游戏。

9、

许多次,我听到“故事”(Story)这个词。我问,“故事”是什么意思?回答是用户场景或者使用案例的新名称。随着我对敏捷开发的了解越多,遇到的重命名和名词重定义就越多。我看不出来这能对工作带来多少的新价值,唯一带来的就是更多的会议。

我建议不要使用“故事”这个名词,结果被冷淡地告知,“故事”是敏捷开发的一部分,我们将紧跟这种新的开发方法。

10、

我的原计划是,2019年65岁时退休,然后搬到东南亚国家享受退休生活。但是,经历过了沉闷的站立会议、白板上的迭代看板、一系列高压力的工作、对“故事”的不停谈论,我越来越对这个工作感到恶心。

2010年11月15日,56岁时,我退休了。

11、

我在越南买了一栋房子(上图),然后收拾行装,离开了美国。我非常喜欢这栋漂亮的新房子,准备在那边弹吉他,阅读物理书籍,体验截然不同的文化,放松身心。

12、

在越南过了一段日子以后,生活变得很闲,我只好把时间用来学越南语,否则就太无聊了。

13、

一位朋友建议我可以试试 iPhone 和 iPad 开发,软件工具是免费的。我怀念编程,就买了一台 MacBook,学习了 iOS、Objective-C 和 Xcode,很快就写出了一个可以出售的 App。我又回到了这个行业。

14、

2011年到2016年,我一开始为自己写 iOS 和 MacOS 应用程序,然后出售。这样也不错,但是我想挣更多的钱,就开始通过自由职业网站的中介,接一些客户的活。

15、

2017年,我获得了一家加利福尼亚公司的远程工作,为他们做服务器端开发。我学习了 C#、Entity 框架、ASP. NET。当推荐我的人离职了,我就接管了服务器端和数据库开发。这样已经持续了30个月。这是一段很棒的经历,让我掌握了一些最新技能,我喜欢服务器端和数据库编程。

这些时间我一直是一个人工作,但也是团队的一员。整个开发部门都是远程的,浏览器客户端开发人员在悉尼,我在越南。我们通过 RESTful API 协作,彼此都是独立工作。

16、

回顾我的30年程序员生涯,软件行业发生了翻天覆地的变化。

现在的软件业有更多时尚的行话和术语,比如用户故事、技术债务、敏捷、重构、迭代、里程碑等等。在我看来,所谓迭代,就是说这段时间你会过度劳累,没有其他含义。

奇怪的是,他们用各种办法监督程序员,但是招聘的时候,职位要求依然写着,需要具有独立工作精神、高度主动性的人。这真是讽刺。

17、

现在的软件业还流行开放办公室,这意味着完全不可能集中精力。你的工作被持续不断地打断,没法关门保持沉默和集中注意力。如果你戴着耳机,就意味着你的团队合作精神不够。

18、

最后,测试已经变味了。以前,我在微软公司,我们没有那么认真对待测试。微软经常开玩笑说,任何人都不应该使用偶数版本的软件,因为它是测试版,适合那些愿意向我们报告错误的客户。比如,请勿使用2.0版,因为2.1版将修复客户报告的所有2.0版的错误,至少是比较严重的错误。

现在的软件业提倡测试驱动开发这种荒谬方法。我在许多地方都读到,在软件开发中,没有什么比单元测试更重要了,甚至比交付成果的本身还要重要。单元测试是设计,是定义API的地方。测试覆盖率不到100%,就是存在欠缺,100%覆盖率是程序员的荣誉, 开发人员应该负责测试他们的产品。我们不再需要黑匣子测试流程,也不需要测试工程师。

我认为,这些态度充满了狂热主义。每个人都有盲点,总是会存在忽略编写测试的案例与忽略编写代码的案例。

19、

我喜欢编程,喜欢解决问题和开发功能,从小开始直到现在都是如此。

以前,我选择服从那些流行的做法,但是现在不会了。我不会在开放式办公室工作,不会持续一个星期听所谓的专业术语,不会将各种新词用来描述旧事物,不会结对编程,不会参加频繁的会议,不会在意对团队协作精神的要求,也不会嘲笑那些独自工作的人。

20、

我喜欢服务器端开发,未来希望还可以做这方面的工作。同时,我正在转向技术写作,学习远程工作所需的新技能。

我喜欢现在这种一点不疯狂的环境。

(完)

References

[1]一篇文章:https://hackernoon.com/what-happened-to-software-development-j92032w9

[2]hackernoon.com:https://hackernoon.com/what-happened-to-software-development-j92032w9

一个老程序员的30年生涯回顾(译文)相关推荐

  1. 转载-一个老程序员的30年生涯回顾

    本文转自阮一峰的博客网站<一个老程序员的30年生涯回顾(译文)> 一个老程序员的30年生涯回顾(译文) 作者: 阮一峰 日期: 2019年12月19日 前几天,我读到一篇文章,一个60多岁 ...

  2. 一个老程序员的心里话(转载)

    1.希特勒地堡与cih病毒 99年4月,我来到北京参加研究生复试.复试完了之后就不回去了,我拿着一张光盘,里面刻着我用vb和authorware3.5编的一个cool 3d的教学软件,到处参加招聘会, ...

  3. 风雨十年:一个老程序员的心里话!

    风雨十年:一个老程序员的心里话!   曲折的实践之路   1.希特勒地堡与cih病毒   99年4月,我来到北京参加研究生复试.复试完了之后就不回去了,我拿着一张光盘,里面刻着我用vb和authorw ...

  4. 【转】一个老程序员的心理话

    思考再三,还是决定把这篇文章给贴出来,话不多说,直接看文章吧. 风雨十年:一个老程序员的心里话! 曲折的实践之路 1.希特勒地堡与cih病毒 99年4月,我来到北京参加研究生复试.复试完了之后就不回去 ...

  5. 一个老程序员的发展方向和个人规划

    在IT业界,新人不断涌入,技术不断的更新.每天都要学习新的知识,每天都要看最新报道.我喜欢学习,对知识也有着渴望,但是我毕竟是一个平凡的人,有心情不好的时候,有不能坚持的时候,但是我觉得重要的是,在这 ...

  6. 一个老程序员的心里话

    一个老程序员的心里话 (本来不想写的,实在不想看到某些人误人子弟,混淆视听,耽误了中国IT的未来,所以一吐为快) 一些人总是发出一些错误的声音,形成了劣胜优汰可怕的现象.他们在误导着中国,把我们的后继 ...

  7. 一个老程序员对后辈们的话

    这是一篇我很早以前在一个论坛上看到的文章,感觉很不错现在与大家共享,由于忘记了文章的链接,所以无法贴出原文链接了,望原作者原谅•••••,原文如下: 一个老程序员和学生对作为PHP程序员的你们说的话 ...

  8. 一个老程序员给后辈的话

    这是一篇我很早以前在一个论坛上看到的文章,感觉很不错现在与大家共享,由于忘记了文章的链接,所以无法贴出原文链接了,望原作者原谅•••••,原文如下: 一个老程序员和学生对作为PHP程序员的你们说的话 ...

  9. 一个老程序员的心里话(大家一定读一读)

    一个老程序员的心里话(大家一定读一读) 本来不想写的,实在不想看到某些人误人子弟,混淆视听,耽误了中国IT的未来,所以一 吐为快) 一些人总是发出一些错误的声音,形成了劣胜优汰可怕的现象.他们在误导着 ...

最新文章

  1. react 不能往组件中传入属性的值为 undefined
  2. 电商的折扣体系是如何搭建的?
  3. shell自动安装mysql_RPM包安装mysql,采用shell脚本实现自动安装、配置与卸载
  4. 【Java】Struts2配置默认Action和配置Action的默认处理类
  5. 2017-2018-1 20155327 《信息安全系统设计基础》第十一周学习总结
  6. RichTextBox 右键显示 ContextMenuTrip
  7. 【线段树】Frog Traveler(CF751D)
  8. redux 简明学习
  9. Java 螺纹第三版 第三章数据同步 读书笔记
  10. iOS利用SDWebImage实现缓存的计算与清理
  11. 蓝桥杯 BEGIN-1 入门训练 A+B问题
  12. 【重点:DP 双指针 栈】LeetCode 42. Trapping Rain Water
  13. 在macOS Sierra 10.12.3下用VMware Fusion安装Ubuntu 16.04.2
  14. BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)
  15. eclipse远程发布代码的方法(SSH自动同步)
  16. OFDM简介--OFDM的发送(1)
  17. 基于jsp(java)学生成绩管理系统的设计和实现
  18. 大疆文档(2)-指南
  19. matlab绘制三维机翼,三维机翼某一断面的压力系数X-Y曲线绘制——使用tecplot的extract功能...
  20. 系统指定的路径不存在,怎么办

热门文章

  1. Node.js进击基础一(5-5http知识填坑)
  2. js 算法排序总结
  3. java 线程的几种状态
  4. 【8-23】MFC学习笔记 01
  5. 使用Data::Dumper
  6. sudo apt-get install 安装软件总是出现“404 NOT FOUND” 错误的解决方案 !
  7. PFH和FPFH详解
  8. 处理大并发之一 对异步非阻塞的理解
  9. html表格字数显示,HTML控制实现单元格文字个性化显示
  10. 华为修改优先级命令_VOlTE指标设定(华为网管各种命令)