一个毕业一年程序员的感悟

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Colton_Null/article/details/81150716

这里写图片描述
前一段看到朋友圈里的学弟学妹们开始晒毕业照,这一晃据我毕业也一年多了。走出了校园,工作了一年,见得多了,体会和感触也随之变多。所以,又开始习惯性地复盘过去的一段经历,用现在不成熟的想法去回顾之前更不成熟的想法,哈哈。


挑出我认为比较重要的四点感受来说吧。

一.理论知识的重要性

这个问题,我在毕业半年之后就意识到了。经常听到有人说“学校里的知识都是过时的,没用的,工作中顶多也就能用到10%”。我承认这句话在某些角度上有一定的道理,但我认为理论知识并非无用,学好理论其实是很必要的。

我来告诉你为什么。首先我们来分析一下宣扬“无用论”的那些人。我猜大部分应该都是对行业理解不深的开发小白或者是普通的开发人员,这些人可能刚刚工作没几年,觉得自己从零基础到能开发出一些模块就已经很满足了,觉得编程不过如此;还有那些可能是计算机专业出身,但是毕业后却从事不相关的行业的那些人,茶余饭后可能调侃一下专业无用论。

后者我就不说了,那其他行业确实用不到计算机理论知识。但对于前者,在我看来,混日子或者满足于现状的人居多吧。如果他们不改变自己认知,很难在这个行业走得长远,程序员中年危机了解一下?真正牛逼的人,理论基础一定很强!

最简单验证我的观点的方法就是,大家去招聘网站看看大公司开发岗的招聘要求就知道了。很多岗位明确要求,计算机理论基础扎实、数据结构与算法基础扎实。再结合往年BAT校招情况,哪个技术岗不考察基础知识的?据我在BAT工作的同学说,这样的行业巨头,无论是校招和社招,在面试时技术知识都会作为重点考察内容,尤其是校招。
这里写图片描述
我本科是CS专业,虽然我不是学院的学霸,但我专业课的成绩还算是中上游。一开始工作的时候,我也觉得以前学的专业知识对工作好像没多大帮助。但是越往后,理论基础带给我的优势就逐渐突显出来。

这里我举几个例子。不了解计算机组成原理的人,在工作日常可能就分不清CPU、内存、硬盘等硬件相关的内容。经常碰见有的开发人员,明明花了4、5千买了一台新笔记本,但是开发用起来还是很卡,结果是因为内存仅有4G;在编码日常,就拿Java来说,有关对象的引用,实际上就是C中的指针的概念。如果不清楚计算机内存工作原理,就很难理解引用这个概念;同理对于不了解操作系统原理的人,可能就很难理解多线程;不了解网络原理的人,可能就不清楚ip、端口、http协议之间的关系等。

培训行业之所以这么火爆,是因为单纯论编程技能,经过培训或者大量练习,的确可以做到快速上手。但培训机构很少会将有关计算机理论方面的知识,而这也是需要长期学习积累的。所以很多人反映从事开发几年了,到某一时间点就感觉总也提升不上去,遇到了瓶颈,其实绝大部分原因就是基础欠缺造成的。

当我认识到这个问题后,这半年来我开始针对性地复习相关基础知识。虽然有些理论学起来枯燥乏味,甚至感觉没什么用,但是一旦理解了其道理,再来看眼前的工程,感觉就完全不一样了。

二.解决问题能力的重要性

工作中,对于没遇到过的问题,会不会往往不要紧,拥有解决问题的能力是最关键的。那什么是解决问题的能力?就是当问题发生的时候,能够用科学的、高效的方法,迅速解决它。我的一位领导说过一句让我印象非常深刻的话——“当出现问题时,不要找100个借口证明它的困难性,而是要找100个方法去全力以赴解决”。

刚入行的时候,每天要花大量时间在基础的编码任务上。但越往后,编码本身往往不再是难点,遇到问题并解决才是工作的重点。没有人会知道所有的问题的答案,就算他知道,那每天还会有各种各样未知问题的产生。所以评判一个工程师它牛逼与否,除了看他懂得多少以外,还要看他解决问题的能力,是否能又快又好地解决问题。

拿我个人来说吧,本科毕业一年,从事开发工作两年。我也不是那种每天都疯狂学习的人,大学四年也不敢说自己积累了多少,所以要论知识和经验,我要学习的东西还有很多。但是,这并不影响我现在从事的工作。虽然经常遇到难点,但迅速通过各种资源学习、整合解决遇到问题,是我参加工作以来一点点不断在提升的能力。我可以自信的说,只要不是超出我能力范围太大,交给我的任务或者遇到的问题,我都可以找到办法解决,尽管在这之前我不会。

而且现在,对于开发人与来说,编程似乎越来越简单了。工程中遇到的大部分问题,其实早就有人遇到过了。互联网时代,各类技术博客论坛平台的内容越来越多,还有强大的“同性交友网”Github等开源社区,以及各种技术交流群社区等,我们很容易就能在网络上找到我们想要的解决方案。所以,对于现在的程序员来说,解决问题的能力其中一大主要部分其实是检索能力。掌握了高效的搜索能力,几乎可以解决70%的问题。这里就不展开说了,以后有时间我再整理一些我总结的搜索技巧。

所以说,如果你拥有强大的解决问题的能力,那你的竞争力就会变得非常高。从校招就可以看出来,为什么现在互联网公司动辄能给应届生开出20W、30W甚至更高年薪,难道是现在应届生都懂得多么?说白了,每届应届生毕业时的水平都是差不多的,企业心里都有数。但企业投资的不是应届生本身,还是那句话,会不会不要紧,是否具有学习能力和解决问题能力是企业所看重的。

同理,在面试中,面试官除了考察面试者知识技能积累情况,也会重点考察逻辑思维,其实就是解决问题的能力。有时候面试官的问题,没什么标准答案或者就是超纲的问题,以此来模拟遇到问题的情况,来观察面试者如何应对。有关面试相关的感悟,我会另写一篇来详细说。
这里写图片描述
各家互联网公司的给应届生的薪资概况

三.学历的重要性

要说我目前的遗憾之一,就是没有在本科结束后去读研究生。当然,只是遗憾,我并不后悔我的选择。我之所以这么说,就是因为我觉得学历往往很重要,但也绝不是百分百的重要。

在某知名匿名交流社区,经常会看到抱怨HR只认学历的帖子,什么非985、211简历不看、专科靠边站等,抨击中国的学历社会多么不公平,这样的帖子很多,下面的评论也是说什么的都有。其中我觉得挺有意思的评论是“别人寒窗苦读12年考上名校和你随随便便考个专科,如果能在毕业时同等待遇,那你认为公平么?”

如果单纯认为高学历等于懂得多,那就容易产生抱怨情绪——你看,虽然我学历不高,但通过这么多年的努力,见得也多了,懂得也不少,还非要拿个高学历去证明一下么?这其实就是对学历的一种误解,高学历背后的重要性其实有很多点,我简单和大家扒一扒。

1.工作优势。有的工作只要985/211本硕的学生,这是硬伤。这里有人一定跟我说,985、211里也有混子,身边某某某普通学校出校混得比重本好的言论。没错,我承认,你说得都对。我还可以告诉你,马云还是杭州师范大学毕业的呢,然后呢?这个世界上,总有人用个别例子去硬怼大概率事件,或者总痴心妄想小概率事件会发生在自己身上。事实证明,985、211里大部分学生的各项能力要比普通学校学生强,所以优秀的企业,肯定会择优挑选名校学生。尽管其他学校也有牛逼的人,但相比于筛选劣质简历的人力成本,企业宁可漏掉他们。试想你是一个知名公司的HR,每天收到上千上万份简历,你会有时间一个一个分析低学历者的简历判断他们的能力么?

2.在攻读高学历的过程,会培养并提升解决问题的能力、科学思维的方式。这也是我前面提到的,这种能力是很具有核心竞争力的。论智力水平,绝大部分人先天情况都差不多。所以这种后天训练出来的思维能力,会让一个人在人群中脱颖而出,而且一个人是思维高度,往往决定一个人能走多远。

3.人脉优势。人往高处走,水往低处流。其实很多人忽略了高学历的潜在价值,就是你会结实一群大概率未来都会发展不错的人,你们会成为同学朋友,这是你人生中宝贵的个人财富。这比财富10年之后,会越来越值钱。大家看看那些知名企业的高管就知道了,很多都是名校出身,再看看他们身边的合作伙伴或者同事,也大多是名校出身。身处于这样的圈子,圈子就是价值。

所以不要只认为人家高学历只不过是多读了几年书。一纸文凭确实只是一张纸,那张纸的价值是有限的,但是背后隐藏着的价值,如果利用好了,就是无限的。所以,之所以有人读了几年研究生还不如本科生、专科生,实际上就是没有利用好隐藏价值。

不过我还是那句话,学历往往很重要,但也绝不是百分百的重要。我是普通学校本科出身,但我也拿着一份还算不错的薪水,没有比名校出身的差太多,我身边有很多优秀的同学,也没有名校光环,但也照样在大厂混的如鱼得水。当然了,这同时也要付出更多的努力,才有可能跟名校出身的人站在同一高度。你可以认为这是鸡汤,但我想说的是没有理由会阻碍你变得牛逼。按照之前我说的思路,所以如果你能够通过其他方式获得那些隐藏价值,学历的重要性会一定程度被弱化。正所谓弯道超车,机会总是会有的。

四.坚持写作的重要性

我从去年毕业开始,正式在CSDN上写博客,主要以技术为主,记录、整理工作中遇到的问题的解决方案以及学习笔记。看我朋友圈的朋友可能会知道,前几天我发了一个博客访客截图,开博一年多以来,访客超过10W+,排名3W+。这也是算是对我一年以来坚持写作的非常重要的一次鼓励吧。
这里写图片描述

为什么说要坚持写作?

1.逼着自己把知识学透。之前也提到了,开发这个领域,程序员每天的主要工作就是学习和解决问题。如何验证自己有没有真正掌握学到的知识?大家可以类比一下学生时代,同学之间互相辅导。有时候明明自己可以解一道题,但是给别人讲的时候讲不明白。这其实就说明自己没有完全掌握这道题,如果你能给给别人讲明白你学到的东西,就说明你掌握了所学的内容。而工作中,一般也不会有给别人当面讲课这样的机会,所以通过工作笔记、博客、公众号等方式分享个人学习心得、整理学习内容、传授经验就是最方便的讲述方式。我的体会最深的就是,每次自己学习的时候,碰到不好理解的、困难的内容,如果抱着要写成博客给别人看的心态,就能逼着自己把它学会,原因很简单——我不想在博客上胡说八道误导别人。

2.锻炼自己的逻辑能力、表达能力。有时候就算自己真的掌握了某个技能,但是依旧没办法给别人讲清楚。这就说明自身的逻辑能力和表达能力还有欠缺。经常听外行的人评价程序员话不多、社交少,这正恰恰说明了大部分理工科出身的程序员的弱点——不善于表达交流,而这也是很多人遇到瓶颈的障碍之一。虽然你做了很多,但是别人不知道啊。因此我认为,一个真正出色的工程师,一定是善于表达的,他不光自己会做,还要有逻辑地讲出来、帮助其他人一起成长,这才是出色工程师应该具备的能力之一。腾讯马化腾、微信张小龙、小米雷军、百度李彦宏、360周鸿祎就是很好的例子。

3.写作可以提高工作、学习效率。不止一次,我的同事问我一些技术问题,恰巧这些问题我以前遇到过,花费了一定的时间去解决并整理成博客,这时候我就可以直接把博客地址发给他,这样就节省了很多时间。同时,通过记录自己学习过的知识,也极大地方便了日后的复习,避免了很多重复筛选信息的时间,而且自己整理的内容也是最适合自己的。

4.建立个人品牌,扩大影响力。评价一个程序员牛不牛标准有哪些,学历高?薪资高?职级高?大厂出身?GitHub上有万个Stars项目?要我说,有知名个人品牌的程序员就很牛逼。经常看到有人在社区抱怨自己不是名校出身,学历不高,又没有大公司工作经验,找工作困难,能力得不到认可。而学历、学校、过去的工作经验都是已经板上钉钉的事,再怎么抱怨也没用。但这些可都不是阻碍自己建立个人品牌的理由。我们应该感谢这个时代,我们几乎没有成本就可以在各个平台上建立个人账户,发表自己的观点和内容。如果能有个百万级访问量的博客、或者运营一个有几十万粉丝的个人公众号,我相信就算你没有名校名企光环,也一样可以得到其他人、其他公司的青睐。谁会拒绝一个有影响力的人呢?

所以,写作几乎是一件有利无害的事。当然了,我反对为了写博客而写博客。写的乱七八糟有头无尾不说,排版混乱或者干脆扔一堆代码在上面,没有注释没有自己的讲解,甚至不经审核把错误的内容发表出来,这种博客不光浪费自己的时间,更耽误其他人宝贵的时间。所以我一直坚持原创,坚持质量为主,拒绝冲量,拒绝抄袭,我也相信我的文字随着时间的积累,会给带给我巨大的价值。


以上是我毕业一年以来的思考与总结,其实还有很多其他“重要性”,有时间再跟大家分享。一年仅是个节点,未来还有很长的路要走。时刻保持清醒,不断思考,坚持总结与复盘。最后,如果你喜欢我的分享,觉得有帮助的话,给个赞呗,哈哈。


本文同步发表于我的个人公众号【小码叨叨】,来听马叨叨的日常叨叨,打消你一切对程序猿的误解。喜欢的朋友可以扫码关注哦~
这里写图片描述

展开阅读全文

没有更多推荐了,返回首页