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