工作的本质

Posted 普通网友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作的本质相关的知识,希望对你有一定的参考价值。

作为一名技术人员,学习本应是日常工作的一种常态;实际上,我很难理解那些将一年工作经验用上二、三年,甚至是四、五年的开发人员。同样地,我也极难理解那些一年连5本书都看不完的开发人员,我不知道这些开发人员未来的出路在哪里。也许现在还年轻,但无论谁,终归有逐渐老去的那一天,到了那个时候,你拿什么与精力旺盛、学习欲望强的年轻技术人比拼。“经验”这个词实际上是很容易误导人的,到底什么是经验,在你的日常工作中,经验所占比重有多少,这些指标都是无法很好量化的;而且要知道的一点是,经验其实并不是与工作年限完全正相关的。最差的结局就是到最后,过一天算一天,浑浑噩噩,并不断抱怨,我相信在软件开发这个领域,上面提到的现象应不是个别。


不过,本文的主旨并不在于通过单纯的说教,让那些学习欲望低的技术人员通过自身努力,转变思维,从而在职场有更好的发展;相反,接下来讨论的目标对象是那些真正热爱软件开发这个行业,愿意花费足够多的时间来学习,并提升自我的开发者。


我极度相信在我们这个群体中存在这样一种现象:开发人员个体于工作之余花费了不少时间,学习了不少重要的技能与知识(比如参加了圣思园课程学习的朋友们),但自己花费了很多精力所学的技术在公司却用不上。典型地,你花费了不少时间学习Java 8,深入研究了函数式编程与Lambda表达式的方方面面,底层实现也都了如指掌,可是公司的项目偏偏就是不用JDK 8;又,公司项目确实使用了JDK 8,但领导却不允许使用Lambda表达式,理由可能是大部分项目成员不会这个技能,你使用的话,其他人看不懂你的代码,会造成维护上的问题。别笑,这种情况一定是存在的,而且绝非个别!这时的你,郁闷了!


再来一个实际的例子。公司的项目都在使用SVN作为版本控制,你学习Git,而且学习的比较深入,除去了常见的命令之外,还对Git底层原理掌握的也比较好,并且对于Git相比于SVN的优势也都如数家珍。这时,你兴致勃勃地找到公司领导,说打算用Git来逐步取代公司目前正在使用的SVN,本以为会得到领导的褒奖,从此在领导心中留下美好的印象,升职、加薪,从此走上傲娇的分布式版本管理系统之路。然而,你可能想多了,领导的回应可能是:SVN现在用的好好的,也没出现什么问题,大家都比较熟悉和适应;换了Git出现了问题怎么办,还需要让其他同事花时间学习,成本太高。这时的你,又郁闷了!


不妨再来一个例子。现在公司内网的各个系统间的调用都是HTTP方式,使用方向对方发送一个请求,对方返回一个响应,一切都很好,相安无事。而你呢,觉得Netty是个好东东,在很多开源项目中都得到了应用,什么Spark啊,Hadoop啊,Cassandra啊,Dubbo啊,都可以见到Netty的身影。于是,花费了不少时间和心力来学习Netty的使用,甚至连底层核心源码也都看过了。于是,你战战兢兢地找到公司领导,说希望找一两个不那么核心的系统,想要尝试一下Netty,来替换掉现有的HTTP调用方式。领导的回应很可能是:做这种事情有什么意义,现有的系统调用方式已经运行2年多了,大家也都耳熟能详,换成Netty,复杂性提升了好几倍,也不见得会带来什么好处,不换。这时的你,再一次郁闷!


于是,你开始怀疑人生:我特么花了那么多业余时间来学习这些重要技术,领导一句话就给我怼回去,那我还学个屁啊,有这时间我干点啥不好!


分水岭由此开启:很多人在遇到上面这种状况时,选择的是放弃,并且不再“自作多情”地花费业余时间学习项目外的技术了;但还有少部分人,他们依然选择坚持,即便项目不使用,也并不会对他们的学习造成任何干扰,每天依旧乐此不疲地研究这些技术。


这里,首先问大家的一个问题是,你属于上面哪类人呢?


在回答这个问题前,我先提出另外一个问题:


你工作的目的是什么?


我相信答案一定是五花八门的,这当然无可厚非,每个人都有自己的想法;所以说,这个问题并没有一个所谓的标准答案,有的只是适合于自己的答案,而这个答案的得出显然是由你的价值观来决定的。而我的答案则是:


工作的目的在于自我积累,并促进成长,从而实现未来的持续性跨越!


其实,很多人有一个观念从底层来看就是错误的,这个错误的观念就是:为了“公司”工作,这里的公司还可以换做“领导”、“老板”、“项目组”、“团队”等等类似的词汇。


本质上,我们是为了自己工作的。


回到上面列举的3个典型示例,当事人可能会认为,领导傻X,不懂技术,这么好的技术为什么不能应用在项目中?其实,这里的原因会有很多。


从领导的性格来说,有些领导属于偏保守的,即项目稳定压倒一切,除非遇到了不得不改进的问题,否则既有的项目技术和架构是不会轻易改变的,因为改变意味着风险,而风险就需要有人来承担,毫无疑问,承担这种风险最适合的人当然就是领导本人了。另外一些领导则属于偏激进型的,他喜好用更为先进、更棒的技术来解决既有和未来可能会遇到的问题,这种领导一般都是技术出身或是当下依然从事着技术工作,他深刻理解开发人员的心态以及积极的开发者谋求改变的想法。当然了,他在事前会通过详尽的评估与尽可能客观的比较,从而发现既有方案与新方案之间的异同,新方案会带来哪些改变,同时还会着眼于业界当下的技术趋势,在不影响业务推进的前提下,鼓励团队成员采用新的解决方案。不得不说,遇到这样的领导是每个开发者的福音。


但不得不提的是,这两种类型的领导谈不上哪一种更好,哪一种更差。只不过是性格使然,同时又要确保项目的稳定推进。所以说,从这个视角来看,领导考虑问题的角度与普通开发者考虑问题的角度是不同的,这一点需要大家注意。


好,现在回到上面的问题。如果你非常喜欢,同时又是很恰当的新技术很适合项目所需,但领导就是不同意采用,你该怎么办呢?


我这里给出的建议是:首先要明确你学习这些技术的目的是什么?是不是为了自己,为了增强自身的竞争力,使得自己能在未来站在更高的阶梯上,拥有更好的发展和视野。如果你的回答是否定的,那就没必要再往下看了,因为后面的一切观点都是基于“学习与工作是为了自己”这一大前提。


当采取新技术的愿望落空后,千万、千万、千万不要就此放弃;相反,你还是应该继续精进自己的技能。因为:你永远不可能只在一家公司工作。实际上,工作过程中获得自身各方面技能的提升始终应该摆在第一位其次,在这个过程中,顺便将项目,将工作完成了,并拿到了薪水。


在当下之时代,一个人能在一个公司工作5年就算是非常久的了。如果你在工作中能确保自己不断学习、不断进步、不断研究一些底层原理和基础性内容,那么虽然在当下所就职的工作暂时用不上,但请记住一点:所有坚韧不拔的努力迟早会取得报酬当你夯实了自身的各项技能后,毫无意外的就是你的自信心会得到极大提升,你的劲头也会更足,这将会促进你进一步深入学习。要知道的是,这是一个完美的正向循环。当你有一天,觉得当下的公司已经满足不了自己的诉求,谋求工作的变动后,你会发现,你已经将绝大多数竞争者远远地抛在了后面,你之前的一切努力都不会白费。


其实,没有多少家公司能将当下如此之多的新技术都用到项目中,任何公司都不例外。不过,在你将相关技术掌握的足够精深后,触类旁通的效用就开始显现出来了,你会发现无论你做什么事情都会得心应手。这是显而易见的事实。


譬如说,你很渴望去国内一线互联网公司,那么首先你就应该了解到目标公司需要候选人掌握哪些技术,这些信息基本都是透明的,除去通过同学、朋友了解外,像是拉勾、内推、猎聘等一些招聘网站上,相关的职位说明与要求其实都写地很明白。要知道的是,在没有精心准备并为之付出长久的持续努力后,想要进入这些公司,特别是一些核心部门是比较困难的事情。但万事在于准备,前期的一切付出在这个时候就会发挥巨大的作用。技术面试是很难做到突击准备的,还是要靠平日的积累。


你当下的状况实际上是过去长久的积累,而你未来变成什么样子则是由你现在以及今后的行动所能推导出来的。


上面这个观点实际上是一种逻辑,一种经过无数人验证过的逻辑。


将自己平日所学通过博客、微信公众号、GitHub等等方式持续不断输出。君不见,很多公司在招聘技术人员时都写明:若有个人博客或是GitHub帐号,请在简历中注明。


这种方式也是提升自身竞争力的绝佳手段,通过持续不断的输出来促进自己持续不断的输入,假以时日,终将有所成。这正是圣思园网站标题所写的含义:每个微小的个体,都有发光的权利


最后,谨记一点:千万不要被公司绑死,不要让公司限制了自己的发展;公司与个人的协同发展才是正确的道路。


欢迎大家加入圣思园,网址:http://iprogramming.cn。


欢迎扫码加我微信好友,交流技术



欢迎扫码关注圣思园微信公众号

与50位技术专家面对面 20年技术见证,附赠技术全景图

以上是关于工作的本质的主要内容,如果未能解决你的问题,请参考以下文章

看代码所学3

华为实习记录第三天

redis实现延时队列(附完整代码)

深度学习是啥

学生所学知识与未来工作的内在关系(家长和爱好教育的人必看)

靠在校所学的网络安全知识,我连实习工作都没找到..