• 程序员如何让自己变得更加优秀?
  • 发布于 1个月前
  • 232 热度
    0 评论
衡量一个程序员是否优秀,不是看程序员懂多少编程语言和编程技能,也不是看程序员做过多少项目,写过多少行代码,发表多少篇技术文章,甚至也不是看程序员的工作年限。衡量程序员,第一看薪资,第二看所在的公司。薪资意味着当前的能力,当下的公司意味着对程序员能力的背书认可程度。这句话可以理解成,拿高薪,所在好公司的程序员,是优秀的程序员。

程序员提升能力的途径是在项目中实战,再讲得细一些,是通过在项目里解决各种问题拉起提升,而所解决问题的难度,决定了程序员能提升的上限。比如去解决业务问题,能确保程序员掌握基本的增删改查技能,去解决运维架构类问题,确保程序员升级成架构师,去解决算法内核方面的问题,能确保程序员升级成资深算法专家。但一般的中小型公司,所提供的项目实践机会,其中包含的技术,大概率只能确保程序员做熟较为基础的增删改查技能。

换句话说,要成为优秀的程序员,一般得在能提供值钱技术实践机会的公司,在其中通过解决各种问题来提升自己的技能。一般来讲,当下大专及以下学历的程序员,能进好公司的概率不比前几年。换句话说,要成为优秀的程序员,一般得具有本科学历,否则可能在投好公司的职位时,甚至连面试的机会都没。

优秀程序员所掌握的技能,一般是通用的,比如跳槽时,说自己用过某些值钱技术,解决过某些疑难问题 ,或者从零到有搭建过一个系统,或者改进过算法。

但相反,业务知识点未必是通用的,比如某人在一个公司干了5年,业务很熟,但技术只会增删改查,但跳槽时,对方公司只认技术。所以说,熟悉业务未必是程序员的亮点,只熟悉业务的程序员未必优秀。

一般来说,程序员总是先通过面试,拿到某类技术(比如架构或算法)的实践机会,然后才能真正(通过解决实际问题)掌握该技术。比如培训班入行的人一般再怎么学,其实也无法达到能工作的程度,一般是通过包装简历拿到面试机会,然后再到项目里提升。所以程序员要优秀,不能光考学,因为单学一定无法得到项目实践机会,而是得靠面试。

所以程序员提升的一般方式是,在一个公司里干个2,3年,掌握必要的技能,然后通过看更资深的技能点,想办法在面试中证明自己在项目里用过该技术,进入到更好的公司,进入到能提供资深技术实践机会的项目,这个过程中一般也会伴随着涨薪,这个过程多次迭代。这样到了35岁甚至更大的年龄,能用“大公司经历”和“资深技术的实践能力”来证明自己的能力。有人或许会说,这样的人也可能被裁,但如果不这样,估计未必能干到35岁,而且被裁后更可能一筹莫展。

在IT这行,能有很多指标来认可程序员的“优秀”,比如熟悉业务,熟悉接口和参数,在公司里独当一面,再进一步可以是掌握各种原理和思想,在一些初级开发面前也能展示自己很高深。但这样所谓“优秀程序员”,在跳槽时未必有足量的竞争力。这块程序员朋友要有清醒的认识,不要去图“优秀”的虚名,更不能舒适区里的“轻易解决问题”所迷惑。

证明程序员优秀的标准上文已提到过,即高薪,同时在好公司。而中小类公司的程序员,验证自己能力的标准,就看自己能能否挑战成更好公司更高薪资的职位。

对程序员来说,能被别人用较短时间掌握的技能,不能算值钱技能,能通过看书或查资料轻易掌握的技能,也不能算值钱技能,同理,如果程序员本身掌握的技能,别人也能轻易获取,那么程序员就应该去拿更值钱技术的项目实践机会,去掌握更值钱的技能。

程序员方面,哪些技能别人未必能轻易掌握呢?当前前提是项目里要用到。需要在较难环境上实践的技能算资深。比如能在Windows上实践的技能,别人也能轻易搭建环境,但如果在linux上搭建集群,或者云服务方面的技能,别人要学甚至更本没环境,这些技能算值钱。

另外一些资深程序员可能有相同的感受,一些资深技能,比如集群或算法等问题的解决方法,教科书上没,网上类似的资料也不多,甚至此类问题此类技术用文字描述都很费功夫,那么这些技能很值钱,对应到岗位,此类程序员的头衔可以是架构师,算法工程师,资深问题专家。

这段话的意思是,程序员要让自己变得优秀,变得不可替代,一定得想办法去解决资深问题。但还是这句话,不少中小公司的项目,其实不包含此类技术的实践机会。

伴随着程序员的成长,其实对“优秀”的定义是不断提升的。一开始是记住更多的api和参数,少出现bug,再开始是,出了bug能通过各种手段排查,再进一步是能解决更资深的问题。所以网上有不少文章,会给人这样的感受,学好并发相关技能,学好某些算法,或者是会全栈或微服务等技术,会让自己很优秀。这话其实有片面性,因为程序员需要不断进步。

一般程序员可以分初级开发,高级开发,资深开发,架构师,再进一步可以是技术专家,如果有程序员朋友一直停留在所谓的技能算法或原则,顶了天只能算是“高级的”初级开发。所以程序员发现自己在当前项目当前公司,无法再通过解决问题提升技能时,要做的是,去看更好职位的jd,准备相关面试说辞,去争取更值钱技术的实践机会,而不是在一个技术点上继续卷。

程序员变得优秀,一定不是光靠自己学习,也不能靠自己去报一些(含资深技术)的课程,也不是单靠自己在本地跑通或者实践各种技术。因为到了一定程度以后,资深技术由于需要linux服务器,或者是集群环境,或者搭建环境的步骤很复杂,程序员大概率是无法在本地通过模拟环境掌握相关技能。比如高并发环境或者devops,或者是算法挑参等环境,在个人电脑上基本很难搭建。

相关做法上文已经提到过,先知道技术层面的努力方向,至少先知道下一职级所需要的值钱技术,然后得通过各种方式,证明自己的项目经验,这句话大家仔细体会,提升的要点就在于此,然后通过进入包含更值钱技术的项目,让自己的眼界更开阔,这样至少能知道之后发展过程中哪些技术更值钱。

用户评论