程序员的自我修养与生存压力

本文不写技术。只想跟大家聊聊我们程序员的压力,有感触的欢迎一起吐槽发泄一下。。

我是一名程序员

程序员是一个相当专业,也相对辛苦的职业,很多程序员的日常状态,用三个字来形容,就是“压力大”!
“压力大”像是这个时代的特色,一般来说,时代特色就是没有特色,至少没有自己的特色,不过“压力大”这三个字用来形容程序员,还是很贴切的,因为程序员面临的压力,既有变幻莫测的日常工作压力,又有不进则退的未来前途压力,是的,我用了“变幻莫测”和“不进则退”这两个词。

1.先说“变幻莫测”

为什么说程序员的日常工作是变幻莫测的?变幻莫测可不像是用来形容工作的。
这就是程序员的职业特点了,本来,人类社会从农业时代到工业时代再到信息时代,一个大的趋势是减少人类自身的机械劳动和重复劳动,我们用能源+机器代替了人力畜力,我们用信息+软件代替了部分的人脑处理,这个大趋势,不是因为我们懒,而是因为在这些可重复的工作上,机器和软件的效率和准确性,远超过我们的人工操作。
而在程序员的日常工作中,程序开发主要有开发->测试->打包->部署->运维这几步,我们有自动化测试、自动化打包、自动化部署和自动化运维,就是没有自动化开发,这是因为,程序的开发与维护,是不可重复的工作。

程序开发的不可重复
其实很好理解,因为如果某个业务软件已经开发过,业务方自己就会把它翻出来,不会找程序员重复开发的。留给程序员去开发的,一定是没有开发过的,或者跟以前不大一样的,这种情况下,程序员开发出来的,一定是业务方从未见过的新东西——这样问题就来了,业务方总是见到这个新东西之后,才会知道这是不是自己想要的,才会受到启发,想到新的开发需求,这是人类的认知规律,但对于程序员来说,这就意味着无穷无尽的变更。
换句话说,事实上,没有人预先知道最终程序的样子,程序的样子是变幻莫测的,程序的开发也是不可重复的。
当然,程序开发不可重复,不代表程序代码不可重复,所以程序员通常会主动寻找和重复利用相似的代码,遗憾的是,这需要进行分解、优化、重构和扩展,这些工作仍然是不可重复的。

程序维护的不可重复
主要就是我们常说的Bug了,Bug的原意,指的就是在原始的电子管(很像灯泡)计算机里,那些飞蛾扑火地冲进闪亮的计算机内部,引发程序故障的小虫子,这本来就是一种很随机的事件。

图例;计算机史上第一个被除掉的Bug


现代的计算机系统已经不怕飞蛾了,但是它已经演变地极为复杂,bug仍然随机,但处理起来更加棘手,任何一个bug背后,都有无数种可能:
有时候,在某几个按钮上来回点击十几次会出现bug;
有时候,用户那里少了安装了什么,或者多安装了什么,会出现bug;
有时候,是最底层的硬件出了问题,从没插电源,到CPU存在漏洞,都有可能造成bug;
甚至有时候,有些昙花一现的bug没有找到原因,只能归为玄学/神秘学的范畴...
每一个程序员,都被变幻莫测的bug摧残过,程序员的日常,就像恐怖片里的经典情节,你不知道怪物什么时候出现,也不知道它会不会出现,但它每次出现,都会吓你一跳,不是因为它真的多么吓人,而是因为它出人意料,没有规律。

所以说,程序员的工作生涯中,永远会有两大头疼的对手,一个是产品经理(提出开发需求),一个是Bug(需要调试修改)。这两项不可重复,而且变幻莫测的任务,实际上是程序员的主要工作,也构成了程序员日常工作中的主要压力。

2.再说“不进则退”

其实,“变幻莫测”的程序开发和维护工作,一般容易得到公司和社会的理解,开发延期或者出现bug是常有的事,没有哪家公司真的会杀几个程序员祭天,而且,这种每天都要处理的问题,一般不是真正的问题。
真正的问题往往是看不见的,或者是视而不见的,前者是黑天鹅,总会在你意想不到的时间和地点出现,并彻底颠覆一切;后者是灰犀牛,你知道且习惯于它的存在,但是它会在某个时刻突然爆发,一旦爆发就会席卷一切无从抵抗。每个行业都有黑天鹅和灰犀牛的危机。

在程序员的职业生涯中,也有黑天鹅和灰犀牛的存在,其中,黑天鹅是新技术的爆发,需要程序员迅速更新自己的知识体系,否则就无法适应行业的环境变化;灰犀牛是现有技术的进阶,需要程序员及时达到足够的技术深度,否则就无法承担更高级的职务。

这两者对于程序员来说,有一个共同的特点或要求,就是“不进则退”。

黑天鹅
新技术的爆发,对于很多程序员来说,是职业生涯中的黑天鹅。
其实,新技术本身并不一定是黑天鹅,特别是对于年轻人来说,新技术让年轻人有机会弯道超车,减少因为欠缺经验和阅历而带来的劣势。
但是,对于已经有一定工作经验和阅历的程序员来说,新技术会影响他当下的价值,极端情况下甚至会价值归零,例如当年在诺基亚手机的塞班系统上做开发的程序员,在Android和IOS时代就不得不彻底转型。

不过,程序员在新技术的黑天鹅面前并不是毫无机会,新技术只是工具,程序员真正的价值在于逻辑、分析、数据、算法等抽象能力,技术工具只是这些抽象能力的表述形式,从汇编语言转到C语言其实更能发挥C的强大控制能力,更具优势;从C转到Java只需要理解面向对象和虚拟机就能碾压纯Java程序员;从Java转到Python的程序员都会感叹写代码“太简单了”...

所以黑天鹅即是危机,也是机会,新技术作为新工具,总能带来新的价值蓝海,如果把黑天鹅当做机会,保持敏感、好奇和进取的心态,驯服来势汹汹的新技术,程序员非但不会贬值,反而会实现价值的跃升,正如当下火热的大数据和AI,其实意味着新的价值蓝海,对于大部分程序员来说,都是扩展技能树,实现新价值的好机会。
事实是,站在各种新技术最前沿的,往往是经验丰富又充满活力的老程序员,如果一个程序员遭遇了新技术的黑天鹅,其实是他脱离行业前沿太久的一个警钟。

所以,程序员从来不会说:“我今年35了,除了XX啥也不会”,程序员只会默默地打开电脑,开始学习。

在新技术的黑天鹅面前,每个程序员都是“不进则退”,主动抓住机会,就能实现增值,消极应对,就只能听天由命了。

灰犀牛
每个程序员的职业生涯中,都有一只灰犀牛,就是程序员的升级进阶。
我们知道,很多职业是越老越值钱,老警察、老医生、老艺术家,说起来就让人觉得技术高超,令人信赖。哪怕不说职业,只说是位老人,也让人觉得阅历丰富,慈祥智慧。
可是老程序员呢?好像,感觉比较稀奇,少见。

为什么呢?其实每个职业都有升级进阶需要,为什么程序员这个职业要求这么特别,连吃瓜群众都觉得程序员干不到老?
一方面,其实是程序员这个行业相对“年轻”,大部分人都是近十几年入行的,而且整个程序员群体相对低调,曝光率没那么高,所以,我们确实很少见到“老程序员”,形成一种“这个行业干不到老”的错觉。
另一方面,程序员这个行业的淘汰机制更明确,相对也更早一些,大部分行业都有升级进阶,但是程序员这个行业的技术更新更快,所以从企业的角度看,同等条件下,会倾向于把机会留给可塑性和成长性更好的年轻人,老程序员要维持自己的竞争力,就不能与年轻人“同等条件”,也就是需要升级进阶。

我们可以用游戏来打个比方,很多人都会玩游戏,游戏里一般都有角色的升级系统,假如一个角色常年不升级,永远是菜鸟,升不上大师,后期就玩儿不下去了,没有人会接受一个总不升级的角色。
所以程序员也一样,老程序员本身没有问题,但是永不升级的老程序员就是问题。只要升级和进阶到位了,资深架构师、资深安全专家、资深领域专家...哪个不是光看头衔,就让人觉得金光闪闪,景仰不已?所以,不管是转职管理还是留在一线开发,其实都不是问题,问题在于,你是不是作为进阶专家留在一线开发,问题的核心,是职业的升级进阶。

事实是,职业升级进阶这只灰犀牛,是很多职业在40-50岁才会遇到的职业危机,而程序员因为技术迭代更快,早在30-40岁就会遇到,从社会舆论的角度,30-40岁这个年龄段青黄不接,母老子幼,退休很远,危机很近,当事人愿意发声,社会容易共鸣,实际上有一种舆论放大效果,这其实是一件好事,可以鞭策程序员主动去升级进阶。

毕竟,不论怎样,职业升级进阶这只灰犀牛,会始终如影随形,是程序员“不进则退”的压力。程序员怕的不是变老,程序员怕的是变老的同时没有变强,怕的是变老的同时没有升级进阶。

3.程序员的自我修养

当下的时代是个飞速前进,瞬息万变的时代,生活在这样的时代固然会惊喜连连,能够享受新事物;但工作在这个时代就要跟紧步伐,避免被时代抛弃了。所以大家都在说:人不能让自己过得太舒服,要主动走出舒适区,积极去拥抱这种变化。
程序员其实也一样,面对“变幻莫测”的日常工作和“不进则退”的进阶压力,程序员能做的,无非是坚持自我修养。

程序员的自我修养当然是有目的的,要轻松写意地处理“变幻莫测”的日常工作,要及时实现“不进则退”的职业进阶,都需要坚持自我修养,自我修养的内容非常广泛,我们的学习能力,研究能力,逻辑能力,抽象能力,都需要不断打磨,而且要定期将自己的知识体系全面梳理一遍,既能查遗补缺,又能开解疑难,豁然开朗。

编程本身其实很简单,但软件要在使用者手里才能发挥价值,所以我们要编写出可靠而好用的软件,这需要的不仅仅是知识积累和经验阅历,还需要科学完备的方法论,足够的认知水平,乃至对人类自身的洞察和理解,这就是我们程序员自我修养的目的。

最后

感谢大家能看完我这么的吐槽。这里给大家分享一份Android开发的系统进阶资料。主要是针对从事Android开发1到5年的,需要系统全面进阶高级工程师的系统资料。有需要的可以免费领取;

Android高级技术大纲与系统进阶资料;

获取方式;

加Android进阶群;701740775。即可前往免费领取。麻烦备注一下csdn领取资料

猜你喜欢

转载自blog.csdn.net/feiyu1947/article/details/86630802