G说公论:25 程序员为什么要加班

ce6HVl5DYsZUY.jpg(JPEG 图像,500x282 像素)

这个问题不仅仅是上次 SOD.4 进击的金山 活动中大一/二的同学提出了,而且,在所有招聘会上,都有对IT 公司的小意提问…

文章来自: 程序员为什么要加班 - 小鱼攻城 - 每多学一点知识,就能少写几行代码 - 博客频道 - CSDN.NET

首先,假设这个程序员是一位职场新手甲. 他刚大学毕业,没有工作经验. 来自产品的需求,他要理解很久才能做. 然后开发的过程中会遇到各种问题,如果经验不足以支撑他快速完成任务,那么只能求助于网络,书籍,熟人. 如果这些都帮助不了他. 他需要求助于同事. 但是次数频繁,同事会厌倦于帮他解答;他也会羞于咨询. 这时,他一天下来,基本都会卡在一个很简单的问题上. 下班了,他还没有完成任务. 没错, 他需要加班了,

因为他的编程能力非常差. 

大概没有人会知道他是因为需要处理一个并非高科技的问题. 不懂技术的上司以为他是个勤奋的员工,非常看重他. 可是,这什么进度还是会这么慢呢?创业的公司可等不起. 这一切,如果招到一个有经验的开发人员,这一切的加班似乎都不需要.

好吧,公司开除了这名程序员或者他因”个人原因”辞职了或者公司再招到一个相对有经验的程序员乙. 当然,有经验的代价就是公司要付双倍的薪水. 所有之前的需求在他这边都没有遇到过加班的情况. 他是一名非常有经验的程序员,他在过去的二年时间一直在处理相关的开发工作. 到这边来,所有的问题都是小意思. 他的优秀表现让公司惊喜和意外,公司觉得即使再招十个之前的员工也比不过他一个人. 所以,双倍的薪水又有什么呢?

一段时间后,公司开始提各种各样的需求, 他终于开始加班了.

加班不是因为某段时间需求的总量多了. 
而是因为随着公司的快速发展,需求也越来越多样化. 
他的知识储备不足以令他总能轻松应付. 

他变得和第一个程序员一样,也加班了. 只不过加班的原因不一样,第一个程序员是因为一些代码的调试的原因,而这位有经验的程序员是因为一些从没听说过的技术. 他的加班让公司同样对他很重视,甚至认为是一位好伙伴.

与此同时,公司在招他的时候也招进来了一名优秀的毕业生. 他同样是一名没有经验的程序员,但是他有很好的学习能力. 开发进度缓慢让产品人员和运营人员都难以接受. 但是他总能在最后关头交付代码,尽管上线后需要修修补补. 他经常加班来学习以便攻克技术难点, 公司对加班的员工表示欢迎,因为没有人让他们加班,也不需要给他们加班费或者调休. 公司为所有加班的人员提供良好的晚餐. 他可以接大大小小的各种需求,只是,开发时间要比较长. 但是他不会遇到那种代码调试不通过的简单的问题. 相比程序员乙,程序员丙由于经常拖慢进度经常被产品和运营建议开除或者调岗.

可是后来,公司对他欣赏有加. 原因有二:

  • 一是他终于可以用和程序员乙接近的时间来做任务;
  • 二是在程序员乙那里看似不可能的任务,程序员丙总能在最近关头给出解决方案和代码,只是时间比较长.

产品和运营的观点发生了改变,向公司建议开除程序员乙. 程序员丙是一个学习型的员工,时间让他有经验后,他成长成为一名更优秀的员工.

公司有过教训后,终于不惜花重金去请各种优秀的程序员. 因为只要有一名这样的程序员,就可以少请许多败坏项目的程序员. 于是,公司有了程序员丁. 他在过去的一段时间里有着不错的工作经历,帮助过所在的公司完成了各种重大的项目解决了相当多的行业技术难点. 他的到来为公司带来了很好的活力,所有之前遇到的问题都不复存在. 他成为了所有程序员的主管. 后来,他还是加班了.

因为公司的良好发展,
于是聘请了更多的产品和运营. 
开发团队忙不过来了,
他作为主管要求大家一起加班. 

为了缓解这种局面,他向公司申请增加程序员. 公司答应了并再招了二各分别类似乙和丙的程序员,没错,公司不会再招聘类似甲的程序员. 团队不需要加班了.

好景持续不长久,一段时间后,加班的情况再次出现了,

因为竞争对手的努力,
让产品和运营提出更多的需求. 

他发现产品和运营的需求源源不断地输入. 可是有些需求可能用户永远用不到或者三天后就变化了. 为了解决这种局面,他找来领导和各部门的负责人来商讨解决的办法. 有人提出走敏捷开发. 公司决定新成立一个小团队来做测试. 于是公司每一个敏捷开发团队成立了. 时间证明了,这个新团队终于可以不加班了. 而对需求的完成总体让产品和运营满意.

乐观的局面总不能持续很久,因为 线上出了一个令用户急剧下降的bug.

他们需要加班通宵,
或者回退代码,
或者修复这个bug. 

没有使用很好的版本回退办法,只能是一场恶梦. 持续集成和自动发布加入到他们的团队. 没错,程序员丁开始在团队里实施非常好的项目管理的方案. 起码发新版后,非工作时间在线上出bug,任何有权限的人员都可以轻松地一键回退. 剩下的,上班再说.

… …

这就是我要讲的程序员为什么要加班的几个故事,欢迎各位补充. 以后我也会补充更多的故事. 其实所有的后面都不重要,我只希望各位创业者,在招聘程序员时,避免遇到程序员甲,争取找到程序员丁. 作为开发人员的我们,也要努力成为程序员丁,保证自己的职场竞争力. 还是那句话,软件开发不是高科技的东西,这世上并没有软件科学家一说. 我们能做的是让开发更像一门艺术.

是也乎

相关的子问题还有:

  • 为什么大公司总是缺少人手?
  • 为什么程序猿必须不停的学习新技术?
  • 为什么要拼命工作?

以及隐藏在背后,不能轻易问的:

  • 为什么产品总是在最终关头变更功能要求?
  • 为什么用户永远不知道自己真正的需求?
  • 为什么…

这里大妈必须指出,文章中分析的加班原因,都已经是非常理想化的理性背景中的加班原因了.

而杯具的是,多数加班原因,是这样的:

用户不爽了
因为,老板之前突发奇想指定要上的一个功能
因为,老板总是对的
所以,就要加班
让用户爽起来
又或
老板不爽了
因为,老板总是对的
所以,就要指定一个用户肯定会喜欢的功能上
然后,回到开始...

可是为什么呢?

  • 因为产品第一用户不是程序猿自个儿
  • 而是想象中的刚需用户们
  • 而刚需用户们,是产品经理/老板们任意定义的东西

然后,就没有然后了…

不过,神奇的是,世界上绝大多数软件都是这么来的. 更加神奇的是,这样来的软件竟然有很多人愿意付费来使用. 进一步神奇的是,现代软件行业就这么起来的…

而发明这一切的,就是伟大的 Bill 大门.

阿门.

巡阅


以上...


|_|0|_|
|_|_|0|
|0|0|0|

加入 珠海GDG

  1. 注册 G+
  2. 关注 GDG Zhuhai
  3. 成为 GDG Zhuhai开发者

通过 珠海GDG 可以:

    第一时间获知谷歌最新的技术,
    可以学到如何去谷歌平台上赚钱的思路和方法,
    可以认识很多有可能将来一起走上自己创业道路的人,
    可以学会把你的创新带向国际市场,
    参加那里的活动有经常和国际上的开发者们进行交流的机会...

PS:

若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)

PPS:

珠海GDG wechat/Blog 都是欢迎投稿的,只要追认内容吻合以下条件:

0. 有趣 ~ 至少是自个儿有兴趣的领域吧...
1. 有料 ~ 至少有点儿原创的东西吧..
2. 有种 ~ 至少不能是成功学吧!

有好物的,及时向大妈们吼: support@zhgdg.org

微信栏目

当前应该是:

    G术图书 (gb:推荐好书,书无中外)
    D码点评 (dd:麻辣评点,善意满盈)
    G说公论 (gt:时评杂文,新旧不拘)
    珠的自白(dm:大妈自述,每周一篇)
    海选文章(hd:得要相信,大妈法眼)

总之! 珠海的组委大妈们,决定开始坚持发文,方方面面细细同大家分享/交流

总之! 请大家告诉大家, 珠海生活中的技术社区 已经认真回归 微信,都来订阅吧!

订阅方法

  • 搜索微信号 GDG-ZhuHai
  • 或查找公众号: GDG珠海
  • 或扫描: qrcode_for_gh_5e32c47b5b23_258.jpg

GDG珠海 社区资源:

  • 邮件列表: gdg-zhuhai@googlegroups.com (可发空邮件到 gdg-zhuhai+subscribe@googlegroups.com 即完成订阅)
  • 微博: @GDG珠海
  • 微信: GDG珠海
  • G+ 主页: GDG ZhuHai
  • G+ 社群: ZhuHai GDG
2014-05-05  

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: #ZHGDG#

comments powered by Disqus