有这么一群人,他们上班迟到早退,工作期间也只是写了几行代码。
他们谈论自己有多么开心,轻描淡写地说着过去了解的可怕世界如何不复存在。
他们挣钱很多,上班晚下班早,每天都能吃到免费午餐。还可以免费使用健身房和那些超棒的睡眠舱。
这群人拥有的工作难道不是我们梦寐以求的工作吗?
快让我康康,是什么工作?
程序员。
什么?!
没错,就是程序员。
虽然常常被各种吐槽(其实大部分是自黑),但成为一名开发人员真的是一件很了不起的事,很多人都想进入这个领域。
人们从新兵训练营毕业,成为常青藤名校中的佼佼者,甚至自学成才。他们付出所有这些努力,只为成为一名程序员。所以,我可以很负责任地说:
程序员的工作虽然艰苦,却使人获益匪浅,是个充满成就感的职业。
还记得我得到第一份开发工作时,前所未有地觉得自己是有用武之地的。那种感觉就好比你加入了某个异教团体或者某个帮派——可见当时我是多么的自豪。
每当有人问我是做什么工作的,我都会充满自信地站好,用坚定的声音告诉他:“我......是一名软件工程师。”
我很自豪,这种自豪感会发光,会感染那些我接触过的、与我怀有同样梦想的人们。
大多数程序员谈到工作都会展现光鲜亮丽的好处部分,虽然其中会夹杂些吐槽,但大部分都是往好的辉煌的部分说,极少会涉及那些磨人的内容。所以今天,我就联系一下我的糟糕经历,来和大家侃侃“程序员之惨”。
周末工作
是的,你要在周末结束前的最后一刻完成所有妨碍你冲刺的新任务。
别误会我的意思,有的公司在团队管理方面效率很高,在这样的公司你周末就不用工作了。但是,大多数开发人员的周末迟早都得贡献给一定量的工作,尽管他们已经写了一个星期的代码。
在管理者看来,这是好事。他们认为你在周末工作,就能完成更多任务。
有脑子的人都知道这个想法是不对的。谷歌研发出可以编写应用的自动程序之前,将咖啡因转化成代码的程序员只能是活生生的人。这就意味着,程序员的斗志要与项目生产率和进度成正比。
范围蔓延
是的,因为范围蔓延,我已经为工作搭上了不少周末时间。如果你不知道什么是范围蔓延,那么就想象一下,一位客户给了你大纲和细节,想让你据此设计一款应用。
假设你每两周都和这位客户开会,回顾自己在过去两周时间里拼命工作的成果。
范围蔓延指的是你确实按照客户的要求做好了这款应用,但是现在客户提出了更多的要求。客户要求的往往是一个小变动,但这个小变动不是该应用的初始用例。
将用户界面上的一个图标从一个屏幕移动到另一个屏幕,或改变下拉菜单的位置,这些操作似乎没什么大不了,但过一会儿,屏幕上就到处都是广告。
最糟糕的是,开发人员无法终止范围蔓延,因为应付客户、协助公司与客户进行沟通并不是开发人员的工作。
做这些工作的是能把客户的需求变成代码的经理。
范围蔓延意味着你的短期目标、故障和用户故事都要发生变化。所以,你永远也完不成任务。你明白这是什么意思吧?
与时俱进
在我看来,这对于程序员来说是最有挑战性的。要想成为一名优秀的程序员,你必须适应变化,能够快速学习使用新工具。这就意味着,你要持续关注那些你的应用程序和组织能用到的新技术。
这是很累人的,尤其是你年纪逐渐变大,而且做了很久的编程工作之后。
以Angular为例。它的发布周期是六个月。也就是说,Angular每六个月都会发布新产品。我知道新产品的发布不会像Angular 1到Angular 2一样有那么大的变化,但是要想理解它们的基本工作原理也确实要费一番功夫。
哪个工程师会使用他们不了解的工具呢?
持续关注组织内外的技术变化还会让你更有价值。如果公司来了一批更加年轻、精力更充沛的开发人员,你就会失去竞争力。此外,如果你在为一家创新公司工作,他们会更看重那些会使用比较新、比较最出色工具的工作人员。
以上几点只是发生在我程序员生涯中的一些不好的事情。
大部分时间,当程序员的好处还是远多于坏处的。
虽然不好的方面依然存在……
但是,如果你能幸运地在一家超棒的公司工作,可以免费使用健身房,免费享用午餐,工作时间灵活,还有睡眠舱,那么你很好的选择就是长期在那里工作,不要跳槽!不要跳槽!不要跳槽!(重要的事情说三遍)
因为……
那样的公司实在是太少了。