65岁程序员回顾自己的一生

共 3296字,需浏览 7分钟

 ·

2020-08-01 01:30

关注 W3Cschool ,每天一篇文章,与你共同成长

作者丨Chris Fox

翻译丨w3cschool


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

我从1988年开始从事软件开发工作,并获得收入。一年之后,我去了微软,那是微软为程序员提供单人办公室的最后一年。我们在写代码时,几乎不会受到干扰,我们得到了像王子般的待遇,那种感觉很好。当时微软的企业文化,是要给程序员创造不受打扰的环境,以便让他们全身心的投入工作。

在我加入微软不久,公司就迎来了首次公开募股(IPO),那时候公司出现了一些变化,但真正的变化,是在1990年5月发布Windows 3.0的时候。突然间,我和一个喜欢吸烟的同事,被分配到了同一间办公室,他整天在电话里大声的聊天。更糟糕的是,我们的会议越来越多了。

接下来的20年,我们像农奴一样,每周工作超过70个小时,幸运的是,我们在那段时间里,每天还能把4-6小时用在实际工作中。然而剩下的时间,基本上都在检查系统,和设法应付各种质量措施。

到2009年,一切变得越来越乱。程序员对代码质量的要求,完全被复选框式的机械处理取代了。有几次,我因为太过追求代码质量,而陷入了困境,这在1980年是不可能发生的。

严谨的代码风格,是程序员最重要的美德。

代码质量消失了,它死了,而后又被埋葬。2008年底,我的经历告诉我,要我在应用程序之外,编写蹩脚的代码,以便他们可以在该代码上运行单元测试(可以为该项目勾选“具有单元测试”的那个框)。

不久,他又要求我尝试“测试驱动开发(TDD)”的编程模式。这时,我决定要更新自己的简历,并开始计划辞职。可惜的是,我并没有马上这样做。

后来,他还要求我做结对编程,我十分气愤,第二天就递交了辞职申请。

离开微软后,我在西雅图市中心的Real Networks工作。在西雅图,交通是一个大问题,经常堵车。但由于我一般在9点半之后上班,刚好可以错过高峰期,这样只需要30分钟就能到公司,还算不错。

不久,我所在的团队,开始研究一种叫做“敏捷开发”的新事物。对我而言,这一切意味着,我必须参加每天上午的“站立会议”,这是一场8:30的会议,它要求我必须提前90分钟开始工作。这样一来,我不得不在高峰期前往公司,原来30分钟的路程,变成了90分钟,等于说我要在7:00就出门,几乎没办法准时到达,而且感到很疲倦。

我问能不能稍后安排“站立会议”?

不行!难道你不知道会议要在早上开始吗?

这种会议极其荒诞,每个开发人员都要说出自己在做的事情。我们会在会议室四处走走,每个开发人员都认为他正在做的事情,跟昨天的没什么不同的,或者偶尔有一些新的事情,也没有什么报告的必要。

产品经理表现得更糟糕,他总是摆出一副兴高采烈的样子,听起来很投入。而实际上,我知道他们大部分时间都在Facebook上玩游戏。在我听到“故事”这个词几次之后,我才意识到它并不是指我们销售的一款游戏。

对不起,我不知道“故事”是什么意思。

“故事”变成了一个新的名词,用于我们之前所说的用户场景、使用案例。随着我对敏捷开发了解越来越多,遇到的重命名和名词重定义越多。我看不出来这些名词,能给工作带来多少新的价值,唯一带来的是更多的会议。

我抗议使用“故事”,这让人觉得很幼稚。但在开会的时候,我被无情地告知“故事”是敏捷开发的一部分,我们将严格地按照敏捷开发这种新方法执行。

为此,我每天要多花一个小时去上班。啊,多么美丽的新世界!

2010年,我两次去越看看我的新房子,第一次是在施工的时候,我在那里住了三个星期。我得知我在Real Networks的合同被延长了,尽管当时有一半的人被裁员。后来,我结束了在那里的工作。

我本来计划在2019年65岁时退休,并在此时搬家。但是,经历过了沉闷的站立会议、白板上的迭代看板、一系列高压力的工作、对"故事"的不停谈论,我越来越感到恶心。我非常喜欢住在美丽的新房子里,所以我决定收拾行装,于2010年11月15日离开美国,正式退休。

我在我的新家里,弹吉他、阅读物理书籍,并用非常“奇怪”的语言生活。

我的确学会了说越南语,不然我会觉得很无聊。

一位朋友建议我学习为iPhone何ipad编写程序,软件工具是免费的。我挺怀念编程的,就卖了一台MacBook,并学习了iOS,Objective C和XCode,并很快有了一个可以出售的应用程序。

我又重新回到了这个行业。

从2011年到2016年,我为自己编程,也为客户编写iOS和MacOS程序,但是我想要赚更多的钱。所以,我开始通过一些网站中介,接到了更多客户的活。

2017年,经过朋友推荐,我获得了一份加利福尼亚的工作,为他们做服务器端的开发。我学习了C#、Entity 框架、ASP. NET。当我的朋友离职后,我就接管了公司的服务器端和数据库的开发,一工作就是30个月。

这是一份非常棒的工作,它让我掌握了一些最新的技术。我非常喜欢服务器和数据库。

这段时间我一直一个人工作,虽然我也是团队中的一员。整个开发部门都是远程的,浏览器的开发人员在悉尼,而我在越南。我们必须在REST API上进行协作,但我们俩都是单独工作的。

去年8月份,我结束了这一份工作。我认为我可以很轻松的找到更多的远程工作,因为我的独立性、技术水平都是优势,就像过去一样。

但我发现,软件开发行业已经面目全非。

“故事”仅仅是个开始。在我之前的工作中,我们有两名开发主管用了很多专业名词,比如用户故事、技术债务、敏捷、重构、迭代等等。现在,这个行业充满了行话,“敏捷”无处不在,这些术语本身都不是什么新鲜事。比如迭代,这个词意味着这段时间,你会非常非常累,除此之外,没有其他意义。

他们还会用各种各样的办法,去敦促程序员抓紧时间开发。奇怪的是,招聘的时候,岗位要求还写着,需要具有主观能动性的人,真是讽刺。

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

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

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

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

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

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

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

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

原文地址:

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


-End-


W3Cschool注册会员突破200万福利来啦~


编程狮(W3Cschool


学编程,从W3Cschool开始

微信扫描二维码,关注公众号

点击分享」「」「在看
说不定你的朋友也喜欢读▼▼▼
浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报