工作,对于大部分人都是不可避免的一件事,有的人是为了生存,有的人是为了自我价值的实现,也有人是为了将来不工作而现在努力工作,出发点可能各种各样,但是工作总是大部分人不可避免的一部分。

程序员,相对来说是薪资较高的群体,也是相对来说比较容易焦虑的群体,而我,就是一名工作的程序员,我想谈谈程序员在工作中如何进步,从而保持自己的竞争力。

程序员需要面对的问题

这里我们不谈一个在社会摸爬滚打的人需要面对的问题:结婚、买房、买车,只谈程序员这个群体相对其他职业比较独特的但是不得不面对的问题:

  • 技术更新换代后如何在新一代的浪潮中屹立不倒
  • 如何应对年龄增长带来的焦虑感
  • ……

其实我们对于上面那些点可以做下总结,那就是如何不断自我增长以应对将来各种变化,对于我们这些工作人士,一天最宝贵的时间自然是贡献给公司,所以需要面对的就是在工作中如何保持进步。

融入

刚入职一家新的公司,开始的磨合期是比较重要的,主要是个人价值观和企业文化之间的冲突。就像谈恋爱,两个人在一起更多的是彼此家庭文化之间的碰撞,能不能碰撞中找出那一份平衡,这将决定恋爱后能否结婚。

如何融入一家公司是很重要的一步,每一家公司都有自己的技术基因,进入一家新公司就意味着你必须先融入这家公司的技术环境,努力地成为其中的一份子,比如:

  • 了解并接受软硬件各方面的开发环境
  • 了解并接受该公司的技术架构
  • 了解并接受该公司的沟通方式
  • 了解并接受该公司的项目开发模式与各种规范

作为一名程序员,我理解你内心的高傲与自信,我相信你一定自认为自己的东西一定是好的,但是当你进入一家公司发现这家公司各方面都和你有不同程度的冲突的时候,你有两种选择:

  • 了解并接受
  • 离开

举个简单的例子,刚入职发现公司Python开发还在用Python2.7,你了解并接受后发现是因为公司的一些历史项目不好进行迁移,怎么办?

离开的人:还在用Python2.7没救了,换一家吧 留下的人:为什么还在用Python2.7,我先用着吧,后面我了解清楚再看看要不要建议公司决策者对版本进行更新

很简单,不喜欢就离开,但是总有你可以做出了解并接受这一决定的公司吧?

改变

当你决定留在当前的公司,就意味着有了更多的可能性,当你在融入阶段对公司的一些情况不甚满意但是勉强接受的时候,这时候就可以考虑对其进行改变。

我们知道,存在即合理,你了解并接受了公司的某一件事物,也就了解了这个事物的缘由,知道了公司为什么在某件事上用这种方式去做,原来并不是公司看不出这件事物的局限性,而是有一些实实在在的原因在困扰着公司去尝试更好的方式。

有时候出现这个情况我觉得是好事情,因为这是你可以改变公司某一件事情的机会,如果你有信心,那么你就可以推动公司在这件事物上做出改变,然后朝你赞同的方向发展。

所以开始吧,去改变它,让你的技术基因融入到这家公司。

继续使用上面的例子,你已经了解到公司还在用Python2.7的原因是项目构建初期的项目都是使用Python2.7,大家也知道Python2.7即将失势,但是公司一些项目还是单体应用,如果更新,会有一些版本之间的兼容问题,会投入相对较多的人力物力。

好,此时你已经清楚了问题的原因,接下来你要做的就是如何做出改变,比如你写了一个自动python2->3的迁移工具,成功地将公司项目升级到了Python3.6

项目大获成功,领导很愉快地接受了你的升级方案,你在庆幸终于可以不用写即将被抛弃的Python2.7之余,顺势再朝领导提了将单体应用朝微服务架构转变的意见,此时,公司已经看出了你的能力,后面让你挑大旗只是时间问题了。

所以,融入一家公司后,不能安于现状,应当勇敢地做出改变。

效率

在我看来,做出改变的都是有自我要求的人,这样的人有技术热情,有自我增长的能力,它们做出改变的目的都是让一切往更好的方向发展,比如可以提高工作效率。

还是以上面的例子解释一下效率工作的情况:领导经过调研后,发现微服务架构确实优于目前公司的单体应用,决定开始向微服务方向转变,你信心大振,公司的一个单体应用开始拆分成数十个微服务,你也踏上了用Flask编写微服务的幸福生活。

但是写着写着,每个人在构建一个微服务的时候,你注意到大家都会做一件重复的事情:复制上个项目的配置文件、日志文件、数据库操作文件等等。总结来说就是目前开发一个微服务前需要花半个小时来搭建项目的基础设施,而这些设施是类似的,是属于重复性的动作。

你心想:为什么不将常用的基础项目组件汇总成微服务模板,然后做一个命令行工具一键生成呢?半个小时就缩短成 5s,何乐而不为?

于是你编写了一个脚手架可以自动生成微服务模板,你将自己的成果朝同事展示,获得领导允许推广的承诺,从此,每个使用这个脚手架的人都至少节省了半小时的时间,大大为公司提升了工作效率,你高兴之余再顺势朝领导提出了Go语言开发微服务可能更爽~

再一次,你成功对公司的一些事情做出了改变,并带动了效率的提升。

产出

谈产出,我觉得这部分是双向的:

  • 你为公司产出了什么
  • 公司促进你产出了什么

你为公司产出了什么

公司考量一个人,你对公司的产出是十分重要的一个点,你有再厉害的技术,如果不能给公司带来实实在在的产出,那么你的技术可能对公司并没有什么用。

有的人可能觉得自己在公司就是一个拧螺丝的,自己做的事情很简单平凡,并没有什么挑战性,这样怎么做到产出呢?

对于这样的想法,我觉得首先要改变一下自己的思维,拧螺丝、做的事情很简单,这些都不是理由。

任何人,只有个人水平提升到相对较高的时候,做大部分事情都会觉得简单,你现在觉得此事做的事情简单,希望更有挑战,如果让你做难一点的事情,你习惯后,又觉得简单了,这样你就陷入了觉得简单,提出要求,继续觉得简单,继续提出要求的情况,这样对个人的发展是及其不友好的。

我个人建议,哪怕在做简单的事情,你可以自己来让这件事情做得不简单,自身主动地给这件事来提升难度。很简单的道理,都是做一样的事情,你做得更加深入、优秀,甚至能影响到其他人为你手头的事情做出改变,这就体现出你不一样的地方,你做再简单的事情都能有不一样的产出。

再说,简单的事情你都没有产出,公司也不放心把更有挑战性的事情教给你啊。

所以,看你为公司产出什么,在任何岗位都是可以体现的,和做的事情没关系。

做的工作简单或者说拧螺丝都没关系,但是你的产出完全可以不平凡

公司促进你产出了什么

好的工作环境,是共赢的,你可以为公司做出产出,公司也应该会促进你进行一些被动产出。

所以一个好的工作会给你带来反向的输出,不论是管理还是技术甚至是做人的道理,比如:

  • 开始慢慢带新人,你有了管理方面的经验
  • 和同事交流学习,你代码水平进一步提升,github上又多了一个上千star的项目
  • 公司信任你,开始给你更多的挑战,你有了系统级的开发经验

这样你和公司之间就有了非常好的工作关系,做到这一步,我觉得可以在工作中持续不断地进步。

总结

所以,在工作中持续进步依赖于和所在公司有一个很好的工作关系,从而互相产出、进步,而产出则依赖于你认真的工作态度和超出常人的开发效率,开发效率的提升必不可少的前提是你拥有一个不安现状善于改变的心。

而这所有的前提,是找到一个你愿意了解并接受然后融入的公司,各位,祝好。

欢迎关注我的公众号: