程序员啊,他又加班了

我常常认为程序员是另类的钢琴家,当双手在键盘上跳动的时候,再配合上一个青轴的机械键盘,谱写的就是一个个的曲谱啊。

加班了

“前面左转,拐入宛平南路高架桥,从卢浦大桥走,……”,加班完之后我叫了辆滴滴,已经是凌晨1点了,平时打车我都会看看高架桥上车窗外的灯火和夜景,毕竟黄浦江上灯火璀璨彰显大城市的美丽,可是今天我只想闭上眼睛休息一会。国庆之后已经连续两个周末加班了,21点30甚至更晚,就像今天。

为何加班?因为我是一名程序员。我在赶一个项目进度,产品所谓的花3天的时间整理出来的业务,需要我们在一星期内开发完成并上线。国庆后第一个周末我们花了一天时间过完了需求,即所谓的产品需求移交,第二周的周一我们花了一天时间拆分了业务具体到个人,然后预估了下开发周期,详细到 人天,最后的我们发现这是项不可能的任务,除非每天不眠不休24小时。因为10几个产品他们的需求链整合起来已经是一个完整的产品需求了,而不是迭代式的。这一套做完至少也需要一个月的时间。

可是产品是不会理会这些的,因为他们的需求已经给出来了,PRD也已经移交了,他们的任务已经完成,后面的工作能不能按时完成责任并不在他们这了。如果项目延期上线,上面的领导追责下来也不会到他们那。这时我就在想我当初为什么没选择产品这行呢?

三明治

程序员,你是三明治。为什么这么说?主要是因为程序员上游有产品经理,下游有测试。产品的需求你可以挑三拣四,但是你不能拒绝。测试提的 bug 你可以说,’是不是你们操作有问题?’,但是你不能说,‘我不修’,最后还是要去自己操作一遍然后查看日志定位问题。两边你都不好得罪,因为最后妥协的肯定还是你。

其实,如果要认真的说,测试其实也很无奈,因为测试实质上是给程序员收拾烂摊子的,给程序员开发出来的产品做体检的。项目上线前,测试也是要加班加点的。如果说程序员的加班是因为产品提的需求,那么测试的加班则是由程序员的 Bug 量决定的。善待你的测试吧,虽然被人指错误是很痛苦的。

所以主要来说说产品经理吧,在这里我没有想诋毁产品经理,毕竟《人人都是产品经理》,也许程序员以后想转产品经理呢,毕竟常常听到被人劝说,”你要具有产品的思维,不要总是从编程的角度看问题”,确实程序员总是容易陷在自己的 code 世界里。世界上不乏有上帝思维的产品,腾讯的微信之父 – 张小龙,网易的网易云音乐产品经理团队等等。每个行业都有优劣之分,但是很多产品经理也有混的嫌疑,打着 “竞品有这些功能,我们也需要有”的口号,当有逻辑缺陷的时候,”让我看看竞品是什么样的”,甚至之前网上发生的“能不能实现主题跟着手机壳变换颜色”互殴事件等等。产品是不是也应该具备一点编程的思维?

编程之路

程序员,你当初是如何走上编程之路的?程序员一直都是一个备受人们关注的群体,随着近年全国互联网创业热潮的兴起,”互联网+”、”云计算”、”人工智能”以及”区块链”等领域发展迅速,市场对程序员的需求更为旺盛。风口的互联网、大数据和人工智能,让IT人才炙手可热,行业工资水涨船高。这几年培训机构也是赚的盆满钵满,每年培训机构向社会上传输的IT人员达到了百万之多。

为何如此之多的人不断的涌入该行业?是因为热爱吗?通过梳理近十年来行业工资水平变迁,以及不同城市之间的互联网技术人才工资水平发现:

  • IT 领域的人才薪资水平已经连续3年超过金融行业,占据榜首。
  • 一线城市的程序员的平均工资是二线城市的工资的近两倍。
  • 涌入行业的人数很多,但是技术水平参差不齐,企业要求的高水平技术人才依旧一将难求。

其实,对于大多数人来说,相对于其他行业,编程的生活是枯燥的,即使是对编程非常有兴趣的同学和朋友也会如此。很多人说看到自己开发的产品在线上平稳运行是件很有成就感的事,我只想说,”真羡慕你,你还很年轻”。当你经历过多年的开发,被看似不断变更实则平平无奇的业务拖累,被生活琐事纠缠,人近30,父母见老,婚事未得而头发渐希,房贷未清学费又来,……,等等这些之后,是否你还能保持如此单纯的想法?

大多数人,也许只是热爱它能提供的高额收入,毕竟养活自己,支撑生活才是最重要的。究竟是否热爱,可以问自己个问题:“当编程并不能为你带来期望的薪资,或有个更有趣的事业,你是否还是愿意坚持在这个行业?”

很多人说程序员薪资高,其实程序员的薪资是按小时算的,每天按时下班那是件奢侈的事情,平均折算下来又有多少。工作之后你会发现,年是按月过的,发12次工资,一年就过去了,换两三家公司,5/6年就过去了。如此快节奏的生活,你的技术是否跟得上?很多人5年的工作经验甚至比不上3年的实际项目经验。程序员要懂得给自己充电。

程序员职业特点

程序员的生活很少有能打理得井井有条的,皮肤粗糙,头发蓬松,鼻梁上扩着镜片,永远的格子衫,脚上基本都是运动鞋。

1、程序员性别比例

一直以来,程序员这一群体多以男性为主,女性程序员占极少数。这次调查发现程序员群体中男女比例还是近12:1,这和客栈在2016年调查的结果(92.62%:7.38%)惊人的相似。而如此”畸形”的男女比例也是解释了为什么很多程序员自嘲为”单身狗”。

其中男程序员单身比例达到了40.7%,女程序员单身比例也达到了35.6%。

2、程序员的年龄及婚姻状况

近一半的程序员年龄在25-29岁之间,且35岁以上占一成不到。根据搜狐科技网《中国互联网发展简史》显示,中国1994年正式接入国际互联网,最近一次中国互联网大浪潮是在2009年,PC端互联网转移到移动互联网,中国程序员数量呈井喷式发展。这也解释为什么中国程序员大多年龄集中在25-34岁之间。

从上图可以看出,24岁以下程序员绝大多数都是单身,程序员群体普遍结婚较晚,且30-40岁之间竟也有两成人未婚。

3、程序员地区分布

因为主要的大型互联网公司都坐落在北京,上海,深圳,以及近年来阿里巴巴的杭州。从地图中也可以看出,北京市(17.18%)、上海市(11.04%)、浙江省和广东省程序员人数最多,从调查样本数据进一步得到浙江省中杭州(13.50%)人数最多,广东省中深圳(8.59%)和广州(9.52%)人数最多。在程序员群体中流行这样一句话”逃离北上广”,与2016年客栈调查报告相比,很明显看出杭州和深圳的程序员人数在增加。

4、程序员公司性质

近四分之三的程序员所在民营企业,近一成的程序员是自由职业者,国有企业的程序员仅占4.2%。

5、程序员跳槽现状

有近8成程序员都有过跳槽经历。其中有1次跳槽经历的15.2%,2次跳槽经历的20.5%,3次跳槽经历的21.1%,14.7%的程序员有过5次及以上的跳槽经历。据调查,程序员跳槽原因主要包括缺乏发展空间,与预计的期望不符和更高的薪水。

6、近年程序员擅长语言和职业方向

擅长语言

职业方向

从调查数据可知,程序员擅长语言多为Java(41.4%)、JavaScript(38.6%)和PHP(22.4%)等,另外Python(15.2%)、C语言(14.3%)、C#(13.3%)和C++(12.9%)等也是使用较多的计算机语言。再结合程序员客栈后台4000多名签约开发者的职业方向,与本次调查基本符合。(注:此项为多选,总和大于100%)。

7、程序员对工作现状满意程度

调查显示绝大多数程序员对自己工作现状持一般态度,近三成程序员对自己的薪资不满意,满意度最高的是同事。

8、程序员兼职意愿

综上所述,国内一线城市依然是程序员的主要聚集体,一些经济发达,科技公司密集的二线城市也聚集了大量的程序员。在计算机语言方面,中国程序员擅长Java、JavaScript、PHP和Python最多,这也符合世界计算机语言流行度。从薪资来看,中国程序员薪资相比于其他行业相对较高,平均年薪达到15w以上,近五成程序员租房租金在1.5k以上,住房条件较高。

在工作上,76.6%的程序员在私企工作,近一成的程序员是自由职业者。77.2%的程序员都有过跳槽的经历,且跳槽过后的薪资相对提升。虽然中国程序员平时工作压力很大,经常加班,但可以看出他们对自己工作现状都比较可观,没有抱很大负面情绪。

挑战和提升

IT行业是一个需要不断自我挑战的行业,这就让很多人都想要进行尝试、挑战。IT行业的工作属于脑力劳动,需要不断的攻克难关,且在工作的过程需要不断的更新自己的技能知识,跟上时代的脚步。在该行业,从业者需要不断的突破自己,一步步的得到自我的提升。是一个持续学习的过程。

之前有个前同事和我聊天,他现在很焦虑。两年前我们在xx公司相聚,那是我第一次跳槽入职新公司,职位为中级,他比我早几个月,新成立的项目组,当然意味着我们少不了加班。程序员之间相处其实很单纯,没有职场竞争,也没有勾心斗角,能力强的也愿意揽比较难的活,有难题也相互咨询解决。主要是我们年龄相仿,包括组长和架构师,还有我们几个研发,年龄差在4、5之间。虽然每天都加班很晚但氛围好,所以也不感觉累。吃饭一起,下班一起,深夜修复完bug之后等运维发布版本的空隙时间,七零八散的葛优躺着,聊聊天打打农药。年轻就是好。

可是不到半年时间,项目变动,走的七零八散,架构师去了陆家嘴金融公司,组长去了成都安家。我考虑到自己的技术和发展最后也走了,临走前我花了一个星期的时间将新需求设计开发完成,我认为对于这种自愿离职的最好还是完成自己的任务,不留烂摊子给后面交接的人,程序员已经这么辛苦了,何必还为难程序员呢。

今年我们又相遇了,他没有换工作还在原来的地方,听他说我们离职之后,还有另外2位同事也留下来了没有走。他抱怨,公司虽然给他升级了,但是他的薪资没有涨多少,我和他沟通,换员之后,项目架构调整用到了哪些技术,他说我们已经换成了 Springboot,mogodb,开发工具全都统一改成了 IDEA。”就这些?”,”是啊”,他说他现在也不敢离职,说没想到两年没见你能力比我强多了。其实并不是我变强了,是我一直在行走,而你在原地踏步了。

从近几年的互联网发展可以看到,行业一直在变化,风口也一直在变化,技术也是日新月异,如雨后春笋般冒新,13/14年大量招Java后端,基本会 Spring,mybatis,springmvc,Mysql/Oracle,再掌握点 js / Jquery 就能找到一份不错的工作;15/16年移动互联网盛行,导致企业大量招 Android / IOS,前后端分离思想在国内也开始流行,前端工程师也开始发力,angularJs,HTML5,后端的大数据工程师需求量爆发;17/18年,区块链技术,人工智能,Angular 2,React ,Vue,微服务框架,SpringCloud,……。

面对技术更新换代如此迅速的市场,你如果原地踏步,那就是相当于在等待被淘汰。

你的生活很枯燥

程序员的编程生活为什么很枯燥,或者换句话说: 是什么导致程序员的编程很枯燥的?

其实原因无非就是以下这几种:

1.同一个环境,同一种技术

什么意思?跟同一个世界,同一个梦想不同的是,你在一个公司待久了,使用你所知的一种技术,重复的干着一个项目,你说时间久了,是不是很无聊呢?如果在一个公司做一个项目,长达一年,在这一年里,你仅仅是用你所知的技术一步一步的去实现,学不到新的技术和知识,技能得不到提高?这时候,无聊自然就会随之而来,悄无声息。可能对于公司来说,这是有意义的工作,但是对你来说:这是重复的,机械的搬砖。

2.复制粘贴……

其实和上边道理差不多。工作每天都是从网上粘贴复制,项目就是这样被垒起来的。很多人离开了网络,基本上就丧失了百分之八十的编程能力,而剩余的那百分之二十还是抄书。很多程序员编程不思考,而是简单的粘贴复制。

当然,聪明点的程序员还是会封装的,自己就会把一些常用的工具类,一些方法,一些控件进行封装,留着以后备用。在公司开发完 A 项目,然后开发 B 项目的时候,就会很简单,把自己封装的东西拿过来直接用,这样机械的复用或者粘贴复制是不是很无聊呢?答案是肯定的。

3.重复的迭代和维护,以及修改 Bug

其实当一个项目进入测试阶段以及后期维护和迭代阶段的时候,开发人员基本上百分之九十的工作任务就是在修复 Bug ,而不是在研发新功能,学习和使用新技术。天天在维护和更新迭代这个项目的时候,其实工作是很乏味的。

4.没有思想的程序员

其实很多时候,程序员是没有话语权的,尤其是在小的创业公司,因为老板基本上就是产品经理,需求说让你做什么,你就得做什么?让你去实现什么,你就得实现什么。不会让你参与到产品的讨论当中来的,当然,如果老板让你参加,估计由于产品经理是老板,你也没有什么话语权和发言权。

在这样一个没有个人思想和独立思考的开发环境中,你是不是很无聊呢?只是机械的去实现老板想法的一个工具?是的,你就是一个工具,这种现状那又该如何改变呢?是时候考虑离职了。

什么时候离职

实事求是的说,作为一个开发者,一个程序员,我相信大多数人干同一份工作的时间基本上不会超过两年,换句话说就是:一个程序员在同一家公司干同一份工作超过两年的很少。

很多人说,程序员是一个跳槽比较频繁的职业,每一次的跳槽都会使工资大幅度甚至成倍的增长,所以这时候就会有很多人跳出来说:程序员跳槽的目的很简单,就是因为想涨工资了。在这里,我想说:我并不否认,确实有很多开发者和程序员跳槽是为了涨工资,但是我相信作为一个有责任,有志向的程序员,跳槽中最大的目的并非涨薪,而是换一个更好的环境,更好的成长平台和发展空间,涨薪只不过是跳槽过程中附带的价值。

人往高处走,程序员也是人,当自己的能力成长达到一个瓶颈的时候,原来的公司不能提供很好的上升空间的时候,上升空间不限于技术还是管理,是可以考虑离职了。

那如果我发现跳槽可以让自己工资上涨,那是否可以频繁性跳呢,如果真是这样我相信未来你肯定会失业很久或者成长停止很久。技术也是需要时间沉淀的和消化的。如果你的离职理由一直是项目不好或者领导不好,那你的眼光肯定也不好,面试是一个双向过程,面试官在挑你的时候,你也有权利挑公司,面试的时候你可以反向提问以更多的了解公司是否适合自己。

程序员,技术是我们的主导力,因此,入职新公司前我们可以反向问面试官:公司的技术人员配比,入职后的项目详情,公司的产品发展方向,以及目前主要的架构技术。这些可以让我们快速的了解当前公司是否适合自己。

一般判断自己是否可以离职,若无特殊原因,可以从以下几个点去判断:

  1. 公司的项目,产品逻辑是否全部了解,下家面试时是否可以详细讲解清楚,细到边边角角。
  2. 项目中所涉及的技术,是否全部已经知其然知其所以然。不要停留在表面会用的阶段,要了解技术原理深知其特点。
    技术是个累积的过程,你也知道技术更新快,所以尽量不要回头学,用到一个技术就将它理解的透透的。
  3. 有更高的目标可以追求,并且认为自己现在已经有能力实现。

程序员你30了

中国古语,30而立,程序员你是否担心你的30岁?我认为如果你在30岁之前已经做好了准备,你就没什么好担心的。如果你害怕,说明你做的并不够好。请问如果你有孙悟空的七十二变你会怕取经路上的妖魔鬼怪吗?如果你有成是非的金刚不坏神功,你会怕江湖上的刀枪剑影吗?请别给自己带上了紧箍咒。未雨绸缪,是任何职业人员都需要做的。

当你在30岁之前没有消耗自己,一直坚持着技术积累,我相信在30岁的时候你也是满怀自信的,因为有能力的人走哪都是不惧的。

还有最后一句:量力而行。人可以有梦想,但不可以好高骛远,不切实际。这个世界山连着山,水潺着水,人上还有人。环境不同,起点不同,自己内心过的得意,我有十两银子吃穿温暖,家庭幸福又何必在意别人的百两金子。

后记

程序员你累了吗?那就睡一觉吧,睡醒之后又可以战斗了。另外,恭喜 IG 战队。