现在程序员越来越多,我再也不用担心怎么跟亲戚解释我整天在电脑前做什么,随着微信日活8亿,我每年回家也基本没有人找我修电脑了,而且众多手机厂商一年几款旗舰机的发布速度,我很难再遇到说手机慢,让我看看怎么办。我太感谢智能手机一般不出问题,出了问题也基本打不开手机。
大家都用微信了,没人问我会盗号不,帮他冲点Q币;网上支付人人会用,我再也不会因为我有网银而帮别人付款;以前最麻烦的帮忙破解一下谁谁谁的QQ空间等需求也被越来越多的社交、资讯APP占用,我发现大家都很忙,低头看着手机,偶尔问我一句:”哎,你说我这个XXX怎么弄“……我从原先的超能者变成了只是略懂人机交互的正常人。
也几乎在同一时间,在朋友介绍说我是程序员后,对方没什么谈的,都会问我一句:”加班多不多“。加班似乎成了程序员的代名词,凌晨四点钟下班的似乎只有程序员。
越来越多的人转行做程序员,越来越多的人从程序员的职位走出不再写代码,越来越多的程序员迷茫,认为自己烦躁,静不下心学习,觉得走到了瓶颈……
我很感谢这个社会的从业人员让程序员这个职业被更多的人了解,也很感叹进入程序员这个圈子里的程序员其实不了解程序员这个职业,所以我想再次谈谈程序员这个职业。
软件开发工程师
程序员是一个总称,一般在公司的职位都是XXX工程师。是的,程序员分很多种,就好比老师分很多种一样,每种老师教的课程都不一样。大多数程序员都属于软件工程师。很多方面的原因导致了软件工程师的需求量大,所以软件工程师人多,原因后续会说到。
当然也有所有课程都教的老师,比如说山区小学的校长。这种程序员被称作全栈工程师,“栈”这个词不好理解,你可以把它理解成一个排的士兵在排队,有头有尾的那种排队方式,和士兵一样死板,必须等前一个走了,后一个才能跟上走。这里所谓的全栈工程师是软件这一种类别的全栈,继续用老师来解释,就是大家都是语文老师,但是有教小学的,有教中学的,有教大学的,全栈老师就是从小教到大的。
计算机科学发展了这么多年,和数学一样,已经分出了很多很多的枝杈,延伸到公司用人方面,越是大公司,分工越细。
软件工程师有时候特指软件开发工程师,因为这里面还分很多种,你可以理解为做软件和用软件两种,软件开发工程师就是指做软件的那种。到了软件开发工程师这一级,除了分初中高三级,很多时候和老师一样,按编程语言去分,也有按行业去分的,因为每个行业设计的业务知识不一样。
我现在说的程序员可以特指软件开发工程师。
研发还是生产
软件开发工程师所在的部门,一般称作研发部,但是这个研发,对应的不是其他行业的研发,更像是生产。如果拿其他行业做对比,一般的程序员更像是生产车间里的蓝领工人,而不是摇着试管的科学家。
但是为什么在软件公司里,软件开发就能称为研发呢?因为软件开发的研发和生产相当模糊,生产人员所做所学的和研发人员基本一样。在软件行业,当然也对此有所区分,但是不叫生产,而是应用。继续拿其他行业来解释,现有技术和制造规格都有,软件开发工程师做的就是把东西做成不同的样子。
那什么软件开发才能算是研发呢?比如做操作系统的,做编程语言的,做编程工具的,其中涉及的知识点和一般应用软件开发是完全不一样的,虽然大家也都是用同一种操作系统,同一种编程语言,同一个编程工具。说到这里,大家可能会有点懵B,为什么做操作系统的还得用操作系统,做编程语言的还得用编程语言,做编程工具的还得用编程工具,完全是个先有鸡还是先有蛋的问题。在软件开发里,有很多违反普通人认知的东西,因为这完全是在一个虚拟的世界里,凭借人类的想象来构建出来的。
现在的程序员似乎很多都认识不到这一点,以为自己干的是多么牛逼的事情,其实大多人放在别的行业,就是车间的工人而已。所以去培训班培训三个月,完全是可以当程序员的,只是程序员一般没有和其他行业一样,有老带新的传统。新人入门前,老人还会不停的强调软件开发是需要天分的,是需要编程热情的,然后一大堆知识对给你,让你觉得即使用尽毕生精力也不可能学完,新人开始怀疑自己是不是真的没有天分或者说不喜欢编程,老人则依靠这种“别人做不了”的成就感来自我安慰。
中国软件行业现状
我在这个行业听的比较多的言论就是中国软件水品落后,国外技术发达。相对其他工业技术而言,中国软件行业可以用两个字来形容(也就是我本篇文章的关键字)【辛运】。
中国工业技术落后国外很多年,本来软件行业也应该和机械、化工、电气、医药行业一样,拿着国外的技术,在中国赚辛苦钱。但是因为计算机产业大爆发相对较晚,技术壁垒也不严重,中国搭上了世界潮流的顺风车,中国软件技术与世界水品的差距是其他工业技术中比较小的,甚至有些都领先世界。
其中有一个很大的原因就是计算机技术的开源和免费。开源是说开放源代码,相当于其他行业中,把核心技术公开。中国做嵌入式的公司,靠开源技术赚了很多钱,如果Linux和机械数控系统或者芯片技术一样保密,这些公司就和其他行业一样,辛辛苦苦的生产设备,高价买国外的系统和技术。移动系统两大阵营苹果和安卓,安卓系统因为开源,中国手机厂商从中赚的盆满钵满,给中国造就了多少高薪岗位。
其他行业就没有软件行业这么辛运,核心技术投入太高,研发根本搞不起,只能赚点快钱,要么做不大,要么做不长久,软件行业和互联网行业不只赶上了时代的顺风车,又享受了中国的人口红利,这是多么的辛运。
程序员的担忧
记得在我刚入行的时候,有个说法是程序员干不过30岁,那时大概是2011年,中国的第一代程序员基本都走上了管理岗位,47岁的”中国第一程序员“(注意这里没有代)求伯君退隐江湖,那时中国软件发展仅仅20年时间。所以五年后的今天,依然会流传这个说法,只不过数字有所改变:“程序员干不过35岁”。这样算来,5年后是40岁,10年后就是45岁。
干不过30岁,一般是说这个行业吃的是年轻饭,说到软件开发这里,就是30岁后,身体没有20岁的小伙好,不能拼命的加班。所以最后的字眼还是定位到“加班”上面来。
程序员加班似乎已经成为一个普遍的认知,和当官的必定贪污,年轻女子开豪车一定是被包养一样,昨天前同事还跟我发牢骚,说现在在华为做外包,认识到高工资必定得高付出,很多人都觉得程序员工资那么高,就应该加班才是,但是加班根本的原因是什么?
加班一般是企业因为业务需要让员工在休息时间上班,还有一种就是在预期的时间内没有完成任务,需要加班。在软件行业中,项目似乎是永远都做不完的,加班基本都是赶进度,但是赶完了这个进度,做完了这个项目,继续有新的项目需要做。
软件行业的项目管理很难做,以至于专门有软件工程这门学科,公司甚至在技术总监的架构中,增加了一个交付总监的职位,软件开发中业务的复杂,需求的变化,让一波又一波人陷入焦油坑中。
我一直认为软件开发属于工程学领域,应用级的软件开发更算是熟练工种,科研领域中新人可以超越老人,但是工程领域新人只能跟着老人走,只是软件开发这个行业的技术变化太大,需要一直保持终身学习的态度,才不至于必须另寻出路。
很多程序员都说,希望写代码写到60岁,这是对于编程的热情,而不是对于工作的态度。
自黑
网上黑程序员的语论很多,有些只有程序员自己能看懂,所以大多传播这些的都是程序员自己。每个人都多多少少的对自己的职业自黑,只是鲜有在网上传播的,程序员整天混迹网络,所以会传出“程序员是最悲惨的职业”。
自黑无非就那么几种,不注重外表、加班辛苦、社会地位低、赚的少。
程序员是不注重外表,认为短裤、背心、人字拖才是终极装备,这是因为程序员崇拜的那些“神人”就是整天这种穿着,比如扎克伯格终年不变的灰色T恤,乔布斯的牛仔裤,Stallman的大胡子。在程序员看来,这是像偶像学习,而不是不注重外表。
加班辛苦我已经在程序员的担忧中提到,但是想想起他行业,晚班,轮休哪个又没有呢,只是有时候爱好和工作一样,你会分辨不出自己是在工作还是娱乐。
程序员是没有什么社会地位的,因为手中没有社会资源,唯一有用的也就是我前面提到的帮人修个电脑,破解个密码之类的,随着软件越来越人性化(傻瓜化),网络安全,信息安全越来越重要,程序员也确实看不出有什么让别人有用的地方,唯独在这个创业的潮流下,每个有改变世界想法的人都缺一个程序员。
自黑收入低,我觉得和清华北大学生觉得自己是学渣一样,得了便宜卖乖。程序员在无产阶级中算是收入很高的人群,大多也舍得消费,主要还是赚的多,年终奖几万,几十万的发就够其他行业技术人员眼红了。自黑收入低还有一方面可能是因为接触了很多更高阶级人群,相比之下就觉得自己苦逼,全靠加班换得现在的高收入。
其实很多行业和程序员一样在加班,但是他们连接触到更高收入人群的机会都没有。
烦躁
现在的程序员群体是我了解的人中最烦躁的一种。
他们大多干了三年到五年,就觉得自己到了技术的瓶颈,不知道再做什么好。其实他们很了解要学什么,就是认为那些都用不上,或者认为学起来太费事。所以只能在自己三年、五年积累的技术圈子里打转,一遍遍的重复着做项目,直到认为自己到了担忧的年龄,最后转管理,带项目。
每个行业都基本是这个套路,刚入行的几年,努力学习,一段时间后觉得自己已经掌握了很多东西,就放缓了学习,虽然知道还有很多东西要学,但是都不会太着急。而程序员不是,他们很着急,新技术层出不穷,他们想追随热点,这时有人押对了宝,自然有人押错,本来相当前驱,最后当了先烈。也有人认为要学基本功,算法+数据结构才是硬道理,做不可替换的事,但是他们大多在工作中都用不到,还没学几天就会放弃。
这种烦躁伴随着程序员的担忧让很多程序员的心不是那么稳定,尤其互联网创业时代,随着市场的作用力和时代赋予的辛运让程序员随时都能找到更好的工作,所以他们开始只挖坑不埋坑,很多人做了五年程序员,做的软件没有一个在使用。进入新的公司,就想换掉现有的技术路线,遇到无法解决的问题,就想换个框架重做。
上一代程序员渐渐退出了程序员的前锋队列,他们大多转做管理,很少一部分因为爱好继续在前线做开发,他们有很多比现在程序员优秀地方,只是他们的时代已经过去,他们也有其他烦躁的方面。
当程序员
不少人都在问,现在学软件开发晚不晚。程序员的高薪让很多人都很羡慕,但是比程序员赚的多的职业多了去,为什么全都来当程序员呢?
最上面已经说了,因为时代的辛运,让程序员这个市场的需求量格外的大,这个时代的程序员是不愁找不上高薪工作的。会计的需求量也很大,但是因为会计比程序员容易学,所以薪资待遇会比程序员低很多,而且程序员从来不攀比学历,也不在乎什么科班出身还是半路出家,更不需要你考什么证来证明自己,一切看能力,这才是最吸引人的地方。
所以最后的问题就归结到学软件开发究竟难不难?
上面我已经说了,现在应用层面的软件开发,不需要你有天分,也不需要你有编程热情,培训三个月很多就可以进入实际项目工作,但是一般不会拿到高薪,因为市场也需要这种低水平程序员。当然也有因为技术热点的不同,薪资待遇反差的情况,但是这是市场需求问题,市场总会去矫正。
太多的低水平程序员的进入,让程序员越来越烦躁。老人看自己会的新人都会,新人工资还低太多,不知道自己的路怎么走;新人当了程序员没有拿到自己满意的高薪,发现要学,要补的知识太多。
软件开发的难,就难在需要持续学习,需要掌握扎实的基本功,新东西层出不穷,不要止步自己的舒适领域。
职业路线
大多程序员都是从开发职位干起,不管是从小公司到大公司还是从大公司到小公司主管,做开发总有止步的一天,继续走技术路线就是架构师和行业大牛,而大多数走上了管理路线,从小组负责人到项目负责人,再到部门经理,不做技术自然得精通业务。
一大部分程序员做了几年就会改行,自己成立公司接活做或者做外包项目,也有能力强的成立自己的工作室,发布自己的软件。
在互联网时代,资本的影响让很多程序员可以一步迈入成功的门槛,CTO或者CEO都是程序员常见的转型,在创业初期,技术出身有很多先天的优势。
这里的每一次转型,原本都是一个很长时间的学习沉淀过程,但是这个时代的创业氛围,盲目的扩张和快速的倒闭,让不少程序员今天还是创业合伙人,公司CTO,明天就成了大公司一名普普通通的开发,连个组长都算不上。
所以这是最好的时代,也是最坏的时代。
结语
中国的软件行业在这个时代是辛运的,程序员作为其中的主要组成,享受了直接的利益,但是所有程序员都应该明白,需求大不代表无限大,收入高和难度高一直都是成正比的,不要把这个时代的辛运当成你的能力。
我作为一枚程序员,以前一直在谈编程的魅力,难得这么现实的谈程序员这个职业。
我就是认为编程好玩,既然还有人给我发钱让我来玩,自然愿意。