今天我们来聊一聊程序员枯燥的编程生活,相对于其他行业来说,编程这件事肯定是枯燥的,即使是对编程非常有兴趣的同学和朋友也会如此,我为什么这么说呢?大家可以不看下文,在这里停顿思考一下。
实事求是的说,作为一个开发者,一个程序员,我相信大多数人干同一份工作的时间基本上不会超过两年,换句话说就是:一个程序员在同一家公司干同一份工作超过两年的很少。
很多人说,程序员是一个跳槽比较频繁的职业,每一次的跳槽都会使工资大幅度甚至成倍的增长,所以这时候就会有很多人跳出来说:程序员跳槽的目的很简单,就是因为想涨工资了。在这里,我想说:我并不否认,确实有很多开发者和程序员跳槽是为了涨工资,但是我相信作为一个有责任,有志向的程序员,跳槽中最大的目的并非涨薪,而是换一个更好的环境,更好的成长平台和发展空间,涨薪只不过是跳槽过程中附带的价值。
聊到这里,你们可能会说:你是不是跑题了?今天不是聊枯燥的编程生活,以及如何改变这种现状吗?其实这是有关联的,而且有时候可能关联还是很大的。我先卖个关子,一会再说其中的关系,在这里你们也可以停顿思考一下,到底是什么关系?好,回到正题上来说:程序员的编程生活为什么很枯燥,或者换句话说:是什么导致程序员的编程很枯燥的?
其实原因无非就是以下这几种:
同一个环境,同一种技术
什么意思?跟同一个世界,同一个梦想不同的是,你在一个公司待久了,使用你所知的一种技术,重复的干着一个项目,你说时间久了,是不是很无聊呢?如果在一个公司做一个项目,长达一年,在这一年里,你仅仅是用你所知的技术一步一步的去实现,学不到新的技术和知识,技能得不到提高?这时候,无聊自然就会随之而来,悄无声息。可能对于公司来说,这是有意义的工作,但是对你来说:这是重复的,机械的搬砖。
粘贴复制……
其实和上边道理差不多。工作每天都是从网上粘贴复制,项目就是这样被垒起来的。很多人离开了网络,基本上就丧失了百分之八十的编程能力,而剩余的那百分之二十还是抄书。很多程序员编程不思考,而是简单的粘贴复制。
当然,聪明点的程序员还是会封装的,自己就会把一些常用的工具类,一些方法,一些控件进行封装,留着以后备用。在公司开发完 A 项目,然后开发 B 项目的时候,就会很简单,把自己封装的东西拿过来直接用,这样机械的复用或者粘贴复制是不是很无聊呢?答案是肯定的。
重复的迭代和维护,以及修改 Bug
其实当一个项目进入测试阶段以及后期维护和迭代阶段的时候,开发人员基本上百分之九十的工作任务就是在修复 Bug ,而不是在研发新功能,学习和使用新技术。天天在维护和更新迭代这个项目的时候,其实工作是很乏味的。
没有思想的程序员
其实很多时候,程序员是没有话语权的,尤其是在小的创业公司,因为老板基本上就是产品经理,需求说让你做什么,你就得做什么?让你去实现什么,你就得实现什么。不会让你参与到产品的讨论当中来的,当然,如果老板让你参加,估计由于产品经理是老板,你也没有什么话语权和发言权。
再这样一个没有个人思想和独立思考的开发环境中,你是不是很无聊呢?只是机械的去实现老板想法的一个工具?是的,你就是一个工具,这种现状那又该如何改变呢?
你们感觉还有哪些让程序员编程无聊的原因呢?
既然,有原因了,那就得想解决办法,而不是选择逃避。我们该如何改变这种编程无聊的状态呢?
如何解决编程无聊的状态
首先,面对环境的限制,技术的瓶颈,其实我们应该想的是如何实现自我的需求和改变,而不是通过逃避和跳槽,其实你应该知道,不管你怎么跳槽,你都会将要面临这种无聊的状态,除非你这一辈子都在跳槽中度过。你试想一下:你今天跳槽了了另外一个公司,解决当时的无聊状态,学到了新东西,可是在新公司待了一段时间,又发展受限,技术又遇到瓶颈该怎么办?还跳槽,一直跳槽?
遇到问题,首先想到的应该是解决办法,而不是用跳槽的方式来逃避。比如:我们可以尝试轮岗,让前端去学习后台,后台来学习前端,大家互相帮忙,一起交流学习,是不是能够解决你这种无聊呢?还比如:公司的一群小伙伴,可以一起尝试着去创造和维护一个开源项目,再或者长期举办一些技术分享,拓展视野。其实从本质上讲要学会利用公司资源来改变无聊的现状,当然公司也应该在实现自己利益的前提下,还要关注和满足员工自己自我需求的实现才行。
其次,不要整天想着粘贴和复制,应该自己学习思考和学习,尤其是编程的思想和原理,平时多看,多读一些项目的源码,系统源码,看看高手是如何实现这个功能的,学会其中的思想和原理,不要仅仅从网上找到相关工具类或者开源项目就什么都不想,什么都不管,直接感觉能用就行。这样从本质上解决不了你自身的任何问题,当然,这确实让你实现项目功能,但是哪有如何呢?又不是你的。
再次,维护和迭代,以及修改 Bug ,不管你跳槽到哪家公司,这都是避免不了的,你感觉天天修改 Bug 和维护项目很无聊,那该如何改变这个现状呢?
- 不要出现 Bug 就暴力的去堵,很多程序员解决 Bug 的方式就是暴力解决法,举个例子:比如报了空指针异常,他们就会在报空指针异常的地方做不为空的判断,这也太暴力了,宜疏不宜堵。你应该找到报空指针的真正原因,看看有没有更好的,更合适的解决方式,这样可能就会一下子解决很多地方的相同的 Bug 。
- 还可以尝试着想着办法,如何优化一段代码,可能是不是有更好的方式可以提高性能,加入你的代码性能提高1秒的速度,你可能就会很高兴,就感觉很有成就感,这样就不会很枯燥和无聊了,反而很高兴。
- 在 code review 的时候,可以项目的人之间相互 code review ,这样大家可以互相来找茬,既能够学到对方的编程的方法和方式,还能够把代码共同维护好,何乐而不为呢?
最后,关于没有思想的程序员来说,这个其实是公司文化的一部分,当然可能跟公司太小有关,其实不管产品经理听不听你的,你都可以尝试着大胆说出自己的想法和看法,有时候,老板并不是专横,而是由于你们不敢说,认为老板专横。如果你的想法更好,我不相信你老板傻到还在坚持自己?当然,我并否认有这样傻的老板。总之,要鼓励讨论的公司企业文化,要大胆说出自己想法。说不定,有一天,你们老板由于没有听你的,而感到后悔,这可能也是你的成就感。
最后的最后,我想说:公司环境,还有技术瓶颈,还有一些导致无聊的原因其实那都是外部原因,本质上遇到这些问题,解决的最后的方式是从自己身上找到解决方法,而不是逃避和抱怨。