程序员这个群体受到媒体的关注度越来越高:苏享茂自杀事件,华为清理35岁以上程序员,中兴被劝退程序员跳楼,阿里程序员穿特步相亲被拒。
以上这些事件让程序员贴上了这样的标签:钱多,话少,节俭,死得早...
而程序员作为一个习惯了在被人黑的基础上再继续自黑的群体,并不在意外界贴的是什么标签,甚至还会更用力地自黑,外界说程序员是码农,我们干脆就自称为码畜,说我们不解风情,我们就创造更多的段子来自娱自乐。
那么,程序员究竟是怎样的群体,又该如何规划自己的职业生涯?
不要把标签内化成了性格
工资高,加班累成狗,木讷, 人傻, 节俭, 死得早...
以上这些外界贴的标签有其合理性,毕竟人总是习惯于用简单粗暴的概念去理解自己不清楚的人或物。就好像,一说起广东人,外省人都觉得我们什么都吃,所以才有“广东人吃福建人”的梗。
行业外的人给程序员贴什么样的标签没关系,重要的是不要给自己贴标签。不要把自己的低情商归咎于自己是一个程序员,然后就应该是不懂得交流,就只能是傻傻地敲代码。你不是因为当成程序员而傻,而是你本身就傻。只不过这种傻在程序员这个职业中受到的容忍度比较高。
就各行业平均薪酬来说,程序员的工资确实是相对较高的,因为这个行业还行业红利期,不少从业两年不到的人就能够拿过万的工资,而且其中不乏只是在培训班几个月速成的人,相比其他传统行业,这种工资的涨幅是很大的。但“存在即合理”,有需要就有市场,能找到工作就证明能力得到了认可,所拿的待遇也是应得的。可如果安逸于现状,以后的日子肯定会很难。
我见过很多程序员,每天只是在做重复性的工作,虽然有三至五年的工作经验,但其能力其实跟从业一年的人没多大区别,只不过是复制粘贴的速度更快罢了。技能并没有提升,工作内容并没有改变,却拿着比新从业者高很多的收入。这样的人,别说到35岁,到30岁就会被淘汰了,要么接受降薪,要么被辞退。
如果40岁还在跟20岁的年轻人做一样的事,那是很悲哀的。不管是哪个行业,这样的人都会被淘汰。只不过程序员是热门话题,媒体更喜欢拿这种话题弄个大新闻,然后把程序员批判一通。但试想一下:哪个行业会招一个40岁的人去做一个20岁就能做的事,但要付给40岁的人双倍的工资?而且还要忍受一个40岁老油条的各种脾气?
想想那个被辞退的收费站大姐所说的话:“我今年36岁了,除了收费啥也不会!”。
如果程序员不思进取,以后就是:"我今年36岁,除了写增删改查的业务逻辑代码,啥也不会"。
不要被语言所限制
由于分工的细化,程序员都会有具体化的岗位,一般以语言作为区分,如java程序员,php程序员,python程序员。这是公司分工的需要,但不意味着自己就只需要掌握一种语言。绝对不要以为自己可以凭一门语言就能够养活自己一辈子。
语言是解决问题的工具,程序员是用编程语言去解决问题的人,不同的问题,不同的场景用不同的语言去解决会更高效。如果只会一种语言,思维的局限性很大。
“如果你手里只有一把锤子,你看什么都是钉子”
如果我们把语言比喻成刀,有些语言是菜刀,有些是剪刀,有些是指甲刀,若你只会一种语言,好比你手上只有一把刀,那么请问你会用菜刀剪指甲吗?会用剪刀砍排骨吗?同理,你会用c++写一个web页面吗?会用php写App吗?
建议每年都学一门新的语言,语言学得越多,思维越开阔,学习的成本越低
程序员最应该掌握的技能
永远保持好奇心
善用Google
熟练的英文读写能力
有好奇心,你才不会平庸度日。才会想办法将自己从无聊的耗时的任务中脱身。
好奇心会驱动你去学习、检索新知识。此时就会发现百度在搜索技术资料方面真是很弱,这主要是源于优质的技术文章、社区都是在英文世界中。Google会给你一个全新的世界,我现在写代码的流程一般是这样:分析要解决的问题,遇到不懂的用英文在Google中搜索,Google一般会给出github或stackoverflow的答案,这种方式能解决90%以上的问题。如果用百度,就呵呵了,基本上看到的都是互相转来转去的几篇过时文章。
善用工具形成自己的工作流
每一个程序员都应该打造属于自己的高效工作流
以下是我整合工具的过程:
因为饱受windows下开发环境各种不兼容的痛苦,完全切换成linux又有诸多不方便,就尝试在win10用wsl,但这个linux子系统的坑相当多,无法满足开发需求,时不时踩到一个坑,到官方仓库一看,原来是一个bug,这种感受是很令人崩溃的。继而用虚拟机,虽然能满足开发的需求,但过于笨重。然后又找到了docker,在win10上安装了docker,创建ubuntu镜像,现在全部的开发工作都在docker容器上进行,体验相当好。既没有wsl的坑,也比虚拟机要轻巧灵活很多倍。
由于开发环境都在linux上,体验到了命令行的高效便捷,经常用到vim,从一开始对vim的茫然、畏惧,到现在所有编辑器都只用vim模式,只用了两个月的时间。有同事问我是怎么学会的,我回:“你尝试着只用vim作为编辑器,用一段时间,自然就会了,一开始会很别扭,无从下手,但习惯了其设计理念,就会知道为什么vim是编辑器之神了”。
很多时候,我们对事物的恐惧是源于未知,敢于挑战未知的人是真正的勇士。想想清代人以为拍照会将人的魂魄摄走,我们现代人会感到他们很愚蠢可笑,可其实现今的我们也是一样,人性并没有变。只是面对的事物不同罢了
以编辑器为例,用ide的人将vim视为有怪癖好的装逼怪,用vim的人觉得用ide就是技术渣。这其实挺搞笑的,与其浪费口水在争论,不如用时间将两者都体验下,然后自己就能作出选择了。能力的强弱是看代码质量,而不是看用的工具好坏。我在写小脚本时就用vim,大型项目时就用ide,ide开启vim模式,不用去记忆不同ide的键位,这种体验对我来说是最佳的选择。有些人喜欢将vim折腾成ide,这种强迫症思维有时会把自己逼进死胡同,vim的设计理念本身就不是要成为ide,何必去强求。
此外,默认的bash过于朴素,改用成功能强大到炸的终极shell--"oh my zsh", mysql默认的客户端很难用,改用语法高亮且自动提示补全的“my cli”,经常需要同时打开多个终端,用xshell的标签页不便于管理,改用“tmux”, python的版本切换很麻烦,改用“pyenv", 文档工具用nodejs写的"Gitbook"....
以上,每一种工具的使用都是出于我对现成工作流程的不满而探索到的。
程序员是一个很好的工作,只要你有足够的好奇心,你可以用工具加倍的提升你的工作效率,同样的工作量,一年前的我,可能需要一天才能完成,而借助工具或自己写的自动化脚本,可能只需要半小时就完成,至于只需要敲一个命令,程序就自动在跑了。但大多数人,并没有这种意识,善用工具是节省时间,节省时间就是延长了生命。
所以,如果一个程序员一直在加班,要么是公司的项目一直很多,要么就是他很笨
要记住:“宁花机器一分钟,不花程序员一秒”。
输出自己的知识
学到的知识要输出才能有更大的作用。
输出知识是一件很消耗时间精力的事,如果只是单纯的记录技术笔记,随便写写就好。写成教程,不仅要将来龙去脉交代清楚,还要顾及不同受众的知识理解水平,尽可能让不同层次的受众都能有所启发,这是很难的事情。
前阵子尝试写django的教程,总共写了四节,阅读量并不多,这种纯技术类的文章本身读者就不多,虽然有简友来催更,但由于这种写作方式没有达到我自己的预期,过于干巴巴,并没有让读者有更深入的理解,也没能将我对django的理解充分表达。所以就暂时停止更新。最近在探索新的技术输出形式,考虑加上录制视频,这样才能更好地表达自己对知识的理解,读者也更易于接受。
我之所以要做写教程这么难的事,是因为我要放大自己知识的影响力,如果你觉得我的文章对你有所帮助,请给予我回馈,最好的回馈方式就是给予打赏。是的,就是这么简单粗暴...
赵树理曾说:“我希望农民能用两个鸡蛋换我的小说”,赵树理并不缺这两个鸡蛋,但有了两个鸡蛋,他才知道农民是真正喜欢他的作品。
同样,我不是缺你这两个鸡蛋,而是你打赏了,我知道你是真心喜欢这篇文章,愿意为之付出时间之外的成本,所以无须用评论说谢谢,能用钱解决的事情就不用多说话了。
打赏,是你对我最真诚的认可方式