最近公司来了一批新人,特别有干劲,学东西也快。作为一个有着三年开发经验,25岁「高龄」的程序员,看着这些95后们逐渐登上历史舞台,不免产生了一种危机感。。。
最近公司来了一批新人,特别有干劲,学东西也快。作为一个有着三年开发经验,25岁「高龄」的程序员,看着这些95后们逐渐登上历史舞台,不免产生了一种危机感。
我常常想,和这些新人相比,我的优势在哪儿,可是思考的结果让自己很心痛。三年间我接触过后端、前端、测试、运维、产品、设计、python、web,所学博杂,但好像没有啥核心优势,总是担任着螺丝钉的角色,这样下去,我该如何保持自己的竞争力,如何去应对「35岁辞退危机」。。
虽然没有核心技术,但是我有工作经验呀,所以,想结合我三年的编程之路,从一名普通的小码农的角度,来谈一谈我对程序员这份工作的理解。本人非大牛,本文主要面向初、中级别的程序员,文章也只是一家之言,想看硬核的程序员发展之路的请绕道。
工作常识
我先列举一下我对一份工作的基本观点,程序员毕竟也是一份岗位,和千千万万的岗位也一样,也拥有着一份工作的基本特征。
1. 90%的岗位都是初级岗位
网络上经常有一些对程序员的调侃,其实我们不必把程序员妖魔化,程序员本质上只是一份普通的职业而已。
所有职业都有初级、中级、高级之分,程序员也不例外。我觉得90%的岗位,一个普通人在上面呆一个月,就能熟练了。一个初级的程序员,其实并不需要很多的修炼,只要掌握一门语言20%的知识,就能应对80%的工作了。
做程序员的难点在于,你如何找到一条技术提升的路径,实现从菜鸟向高手的转型,并且加以坚持。
2. 工作的本质:出售自己的时间换取金钱
程序员为什么工资高?
因为想要写好程序真的要投入很多时间,而且遇到项目紧急或者产品上线常常需要加班,有时候通宵也在所难免。再加上从社会的角度来看,程序员是要吃青春饭的。
从以上几点上来看,工资高就不足为奇了。
3. 凭大部分人的努力成果,还没有到拼天赋的时候
这也是一个老生常谈的话题了。
我自己有一个「地铁理论」,是我每天挤早高峰的地铁时悟到的。假设普通人平均每天的地铁通勤时间是30min,但我总能比普通人平均节省5min左右地铁时间,在列车上的通勤时间(工作时间)大家都一样,我的优势就在于进出站(业余时间)的时间。
在那段时间里,只要你不玩手机,一心想着向前,看清前方的路,选择最适合自己的路线,而不是跟着人群往前走,随波逐流,你基本就已经超过绝大多数的人了。
4. 兴趣爱好≠工作
一些初涉职场的人,经常会抱有这种想法,希望找到一份自己既感兴趣,又很擅长的工作,最好还能高薪。
我个人一开始也是这种想法,不过后来就慢慢开悟了。对于绝大多数普通人来说,把个人兴趣和工作绑定在一起,简直就是天方夜谭。
一方面,你真的明白自己的兴趣爱好是什么吗。另一方面,工作是对人类有强烈的内耗和异化作用的,把兴趣爱好当做工作,有可能会毁了你的兴趣爱好。
那既然工作不跟兴趣爱好挂钩,我们该如何做好一份工作呢?我觉得不是兴趣爱好,而是职业精神,详见第5点。
5. 「做事」往往比「天赋」更重要
一些计算机毕业的学生,往往在程序员的职场初期有着天然优势,就是比非科班的要高贵很多。
但是天赋真的是做好一项工作的关键吗?
第一点我就说了,其实绝大多数初级岗位工作,对于能力的要求是很低的。能胜任岗位的人很多,但真正能把事情做好做成做完美的人,很少。
举例来说,实现一个简单的开发需求,相信很多应届生刚毕业就能做了。但是,他能不能做到准时交付不延期,能不能很好的和团队进行协作,能不能在代码上精益求精,能不能考虑到产品迭代的可维护性,能不能对代码进行详尽的测试,能不能从开发中意识到自己的短板再去弥补,能不能在产品交付后去思考我该怎样去才能做的更好……这些往往和程序员天赋没有关系。
我自己总结了能「做事」的人的三个特点:靠谱、热情、责任心。我觉得只要有这三样,除非是面对那种特别高精尖的工作,单单是对普通的工作而言,哪怕你做不到满分,你也能保底做到80分。
编程金线
刚才对一份工作的基本常识就谈了很久,接下来终于要深入程序员的角色了。
「编程金线」是我从冯唐老师那里得到的启发。我觉得在编程领域也有一条金线,程序员达到了就是达到了,没达到就是没达到,对于门外人,若隐若现,对于明眼人,一清二楚,洞若观火。
但是相比虚无缥缈的文字金线,我这里还有两个好消息。
第一,编程金线是可以量化的。
至于什么是好的代码,简单来讲,设计精妙,逻辑严谨。
每种语言都有各自的特点,比如著名的python之禅:
1 | Beautiful is better than ugly. |
在我的职业生涯中,我也经历了从写的代码风格凌乱到逐渐优雅的过程,期间离不开对优秀代码的钻研和我不断地踩坑。有时候,看到一段好的代码,是真的令人赏心悦目啊,而阅读差的代码,简直会让你怀疑人生。
当然,除了语言本身,你还应该关注整个系统的稳定性、可靠性、可扩展性等等。一段好的程序就是一件艺术品,它的上升空间是无穷无尽的,这也使得程序员这份职业有了匠人的特征。
第二,编程金线是可以通过10000小时的刻意练习去够到的。
这一点也不多说了,都是非常常见的理论,要注意10000小时和刻意练习缺一不可。
如果缺少了刻意练习,你只是一直在重复性的工作。
如果缺少了10000小时,你还没真正体会到程序员的职人匠心。
手上有血
「手上有血」出自和菜头的一篇文章,我对里面的一段文字印象很深。
和菜头说,他在看履历表的时候,他不会看那些高高挂着的形容词,而是更看重这个人有没有在业余时间里做自己的专业。凡是会这么做的人,是真的喜欢这件事情,哪怕之前做的活儿很一般,未来却不可限量,因为他不怕把手弄脏。
「只要手上有血,意味着一个人之前已经背负过希望和失望,知道成败之间需要的究竟是什么。在他那里,就不会有太多不切实际的幻想,更不会用言辞把这些想法包装起来以获取他人的信任。」
如果说第一部分「基本常识」谈了我对一份工作的初级认识,「编程金线」讲了如何从新手变成高手,那么这里我就要讲如何从高手变成大师了。
但可惜的是,这块内容我没啥发言权,自己连高手都算不上,勉强算一个熟手吧,离大师的路还十万八千里。我想要表达的是,想要成为大师级别的程序员,一定要有「手上有血」的精神,这时候,程序员对它来说不是一份简单的工作,更像是一份人生使命。
我们知道,程序员下限很一般,但是它的上限是真的非常高。从这一点上说,如果你真的愿意在编程之路上上下求索,似乎「35岁辞退危机」也迎刃而解了。
洋洋洒洒写了这么多,其实还是写了不少空话的,毕竟自己不是特别硬核的程序员,也不敢大放厥词,所以不知道写的文字对大家有没有帮助。工作三年,我最近也感到了很多危机感,长江后浪推前浪,一定要再加把劲💪。
最后,有不同意见或想法,欢迎讨论~