如题所述
程序员,就是从事程序开发、程序设计、程序维护的专业人士。
作为一种专业性极强的技术性专业,程序员的工作难度非常高,只有专业技能水平高超的人才能在这个领域获得良好的发展前景。……那些实力不足的人,只能被最终淘汰。
因此,要想在程序员这一行里成为不可替代的人,避免自己被淘汰出局的情况,就必须具备以下几方面能力:
1,高人一筹的专业技能。
在职场上,要想确保自身生存,就必须具备一项专业技能。……要想确保自己不被淘汰,就必须具备高人一筹的专业技能水平。
因此,要想让自己成为不可替代的程序员,要想让自己避免被淘汰的情况,就必须确保自己的专业技能水平高人一筹。
2,强大的罗辑思维能力。
程序,是一个逻辑性极强的系统。
一个程序的各个部分之间、各项功能之间,都存在着极强的关联,也拥有着非常强的逻辑关系。
因此,要想编写出性能优异的程序,就必须拥有极强的逻辑思维能力。……这是确保自己拥有更强实力、确保自己不被淘汰的重要能力。
3,高超的数学水平。
程序的表象,是一段代码。而其核心,则是数学模型,是具体的算法。……只有具备高超的数学水平,才有能力编写出算法精妙、逻辑严谨的程序来。……这是自己具备更高水准的关键因素。也是自己高人一筹,不可替代的关键因素。
4,精通至少一门编程语言。
编程语言是程序员在编程时所用的工具。……只有熟练掌握手中的工具,才能让自己编写出优秀的软件。……编程语言有很多种,一个程序员不可能面面俱到。……但是一个合格的程序员必须掌握至少一门编程语言,这就是自己工作时最得力的工具。……运用这个工具,自己就可以编写出优秀的软件,就可以获得更好的业绩,最终成为不可替代的优秀人才了。……自己也就不可能被淘汰了……
1 比如说公司或部门没预算了,那么哪会管程序员是否有能力,总是一锅端全开掉。
2 如果公司可以,只要别是太差或别特别不合适,一般的程序员总会留用,毕竟新招一个人也是要有代价的,或者说员工人数总是扩张,不会到开人的程度。
3 外企就不用说了。往往会出现这样的情况,程序员之间的能力其实差不多,但再大厂或外企的程序员就能顺利度过年龄这个坎,而小公司却由于无法维持住比较多的程序员团队,然后就找理由优化老人再招工资低的新人。
所以找对平台比提升业务技术能力重要得多。再说哪些程序员是不可替代的。
1 除了会写代码,测试,部署和运维能力都熟悉,而且能带团队,能和产品和其他团队的人扯皮。这种程序员总比单会做增删改查的程序员好些。但说实话,这点里给出的技能不难学。
2 能部署或管理整个公司的系统。一个系统是在linux上跑,而且会配套使用mysql,redis,dubbo等组件。如果能在开发的基础上,外带能在linux上部署系统,部署数据库和部署组件,外带能让系统跑起来,系统跑的时候遇到问题能解决,这种程序员可以称之为架构师,做到这种程度,可以说替代性就小很多了。
3 再往上升级一下,程序员不仅能部署和管理系统,而且还能管理高并发系统,而且别人没法解决的问题,比如组件底层问题,或别人看都看不明白的问题,这种程序员叫高级架构,这种程序员不怕裁员,到哪都吃香。
而另一方面,程序员分为两种:一种是一般程序员,每天做一样的事情,a代码copy到b代码,整天就是做重复劳动。而另一种是高级程序员,具有开发和设计程序的能力,是具有编程经验的程序员。一般程序员在互联网做的普遍是机械化工作,维护和查找漏洞,搬运等工作,这样的工作枯燥且不具有创造性,而且工作量和压力也大。在这种情况下,也很难有时间提升自己,掌握更高一级的开发能力。所以一般程序员的工作是具备可替代性的,当年龄增长,再也加不动班的时候,几乎就意味着失业。如果一个一般程序员无法在30岁前进入管理阶层,那么他之后晋升的机会也不大了。所以很多程序员工作三五年后就会开始想着转业。而高级程序员的工作更具创造性和价值,一般在互联网行业中都是高级管理岗位,一生都是具有高价值和不可替代性的。
总的来说,程序员是一个下限和上限都很高的职业。程序员的起步工资一般高于其他的职业。只要你有两年的工作经验,在一线城市拿个八九千完全没问题,但是一般程序员的在几年之后就会进入瓶颈期。开发就不一样了。积累的经验,天马行空的脑洞,会让你在这个行业里如鱼得水。开发意味着你可以把想要的程序实现出来,去搭建一个新框架,而不是拘泥于现有框架。这也就是程序员的上限高,因为创作只能被更高的创新超越,是没有极限的。
不过,直到近几年,我才对自己的工作越来越有信心。即使现在,我还是不断怀疑自己。关键是这种感觉不会消失,所以试着忽略它,继续深究技术知识,继续积累经验。
我再次提醒一下,这些只是提高你技能的几点建议。最终,你需要弄清楚自己适合的方式是什么。
找到能激励你的人,但不要崇拜他们
过去许多年,我仰慕过许多人,并且通过他们关注新技术。我相信他们是正确的,并且对他们所做的事情深入研究,因此学到很多。
这些人往往非常高效、才华横溢,并且能鼓舞人心。你要想尽办法找到他们,让他们激励和指导你。
不过,别崇拜他们。如果仅看 twitter 上的贴子,你会觉得他们遥不可及。但是,如果走近他们的真实工作中,你会发现自己与他们相比没什么不同。只不过在到处摸索尝试而已,我们都只是在进行试验。
最后,不要盲目地相信他们。如果你有不同意见,就请他们参与进来,并从观点碰撞的过程中汲取经验。
我的一些最有成效的对话就是这样发生的。曾经,我的 Emacs 配置一团糟。不知道为什么,我的 OCaml autocompletion 不能用了(它坏了一个多月)。我没有自动化的东西,有时必须在 shell 历史中寻找所需的命令。为修复问题,我一开始写 ugliest 代码。我将东西写成全局对象,直到最后才明白我到底做了什么。
最有经验的程序员一直在破解和钻研;最重要的是,你能完成任务,达成目标。
不要贬低自己的工作
程序员小白往往认为他们的工作价值不大,因为他们是新手。或者你可能是一名有经验的程序员,但是在一个新领域工作,这会让你感到不爽。但在我看来,最好的想法往往来自于新程序员,他们可以看到现有技术的改进点,而思维固化的人却看不见。
不管怎样,你的工作都是值得的。最坏的情况是,即使你的想法没有成功,社区也可以从中了解到为什么这种方法行不通。