【笔者感悟】笔者的学习感悟【一】
写在前面
当同学们看到这页博客,那么恭喜你们,你们已经踏上了一条前程似锦却又辛苦无比的路
可能同学们幻想中的程序员是这样的
- 工资高,待遇好,技术黑客。
- 高收入低消费,动不动就两三十万,年收入三四十百万
但是实际上的程序员呢是这样的
- 加班,加班,加班
- bug,bug,bug
当然我相信也有不少同学呢事先已经做过调查,在网上看到了
- 996是福报
- 吃青春饭
- 脱发熬夜ICU
- 大厂猝死等
- 中年危机被裁员
但是呢大家不要被网传的一些信息给吓到了,也不要被一些所谓的表面利益给冲昏了头脑,这一专业和其他行业一样有许许多多的偏见
如果能够干好了其实上面这些都不是问题,而且也能发现许许多多的乐趣,而且也有不错的前景
干一行爱一行,既然大家选择了这条路,不管大家是出于什么原因,我们能在这里相见就是一场缘分,祝愿大家能够跟笔者一起学习愉快,健康成长
我的目标是,将博客打造成从零基础到骨灰级大佬都能够读的内容
博客推行版本更新,成果积累制度,已经写过的博客还会再次更新,不断地琢磨,高质量高数量都是要追求的,工匠精神是学习必不可少的精神。
因此,大家有何建议欢迎在评论区踊跃发言,你们的支持是我最大的动力,你们敢投,我就敢肝
专业深造
个人总结
首先要感谢我本科的室友,虽然我学校差了一些,但是有幸分到了一个学霸寝室,能够在大学没有堕落也算是高考发挥失常的一点弥补了
我在本科的时候和室友一起研究的项目算不上多,但也有这么几个
我和我室友表面上成绩还算优异,我室友更是连续三学期都是全系专业课第一名,也拿了一些竞赛的奖
结果到了临近毕业的时候我们互相打趣说,快毕业了有没有本事徒手写快排,但发现咱们普遍都没这个本事,嬉笑过后逐渐发现我们心虚不是没道理的
如果想把锅甩给学校教学质量不好的话,其实至少在这个问题上学校是挺冤枉的,因为快排学校并不是没有教过
因此不由得思考到底是哪里出了问题,回过头去总结的时候,发现在准备竞赛的时候就有两个问题
第一个问题:被动学习
我们是被动学习,学校考什么我们学什么,大部分都是考前突击的重点,有些价值重要的课但是老师很水,几百页的书就考几十页的重点
所以看似成绩很好,实际都是虚的,好学校的同学可能还问题不大,但普通院校的同学可能在不知不觉中差距也就拉开了
在临近竞赛上场的时候,我室友提醒我,你先别管能不能获奖,你没发现你学了很多上课的时候没学的东西
那个时候意外的发现自己取得的成果还是不小的,当然最后运气不错,辛苦总算有了结局,大学总算是没空着手毕业
第二个问题:基础不牢
在大学里很多同学一门课结束以后这门课的知识点就束之高阁,再也没去碰了
很多同学都有个错误认知,拼命想挑战高尖端项目,却针对基础技能的练习觉得简单练习并不多
基本功和尖端技术都很重要,就好像黄飞鸿,即便能飞檐走壁,但是仍然每天要苦练几个小时的扎马步
所以大一大二的课同学们到大三千万要学会去回顾
大一学的课往往是基础,但是你三年不碰,大一学的再好,也基础不牢地动山摇了。
不要迷信科班和培训班
科班也好,培训班也罢,想必同学们一定会不停地对比这两者到底谁好谁烂,其实这没有可比性
其实互联网行业看似现在卷成这样,经过笔者的总结发现,和无良培训班冲击互联网行业有很大关系,就拿同学们最喜欢去的地方之一举例:b站
【在此声明,以下内容并不是全部,请不要对号入座】
很多所谓的经验视频,几乎都带一个培训班广告,至少带一些项目广告,这些拿到简历上其实并不上什么大台面,虽然称不上没有用,但是想让面试官跪下叫爸爸恐怕就难了
很多人虽然口口声声劝大家不要简历造假,结果拿了一些项目让大家付费跟着做,然后说写在简历上硬说这是商业项目,实际上充其量只是个商业项目改编的学习项目,美其名曰包装,实际上和造假没什么区别
很多同学可能要和我抬杠了,但是笔者看来如果你做的是商业项目,总得有个公司作为载体吧,不然怎么能叫商业项目呢
那如果你编了一个公司上去不是造假是什么,而且这种东西背调一查就查出来了
其实经过笔者的总结,这两个出身的普遍都只是教怎么拧螺丝【985本科笔者毕竟没有经历过,如果有不同请见谅】,培训班可能在这方面更为明显一点
所以往往同学们混不好跟出身没太大关系,是因为只会拧螺丝,举个最简单的例子,Spring项目只会增删改查,一提到架构,分布式开发,Sql优化这些稍微有点技术含量的就啥也不会了
那如果只是这样,就算有所谓十几二十年工作经验也没用,因为只是重复劳动
这样的程序员甚至说的难听点练技术人员都称不上,只是个坐在办公室里穿着便服的工人,然后随着在公司呆久了难免工资要上涨
这样的人当然岁数大了容易被裁员,其实互联网行业没有大家想的那么卷,要卷也只是卷在拧螺丝阶段,只要能够突破这个壁垒,同学们的收入就会开始上升了
那么同学们一定要问,如何突破所谓的技术壁垒
想必科班的同学有所体会,在做毕业设计的时候往往得把大学所有的书都搬出来重新看
其实毕业设计就是企业项目的雏形,笔者的一位学姐就是直接拿的企业项目做的毕业设计
所以毕业设计是同学们进行进一步深造的桥梁,笔者强烈建议同学们毕业设计一定要认真对待,千万不要浑水摸鱼,因为这是一次彻头彻尾的独立实战
也是同学们作为应届生步入企业的在简历上的一个重要项目筹码
同学们在大学学的这样那样的技术,到最后要一次性在毕业设计中体现出来
所以在笔者看来,同学们大学前七个学期都是在做技术积累,到第八个学期就是在做技术实战
技术积累和技术实战这是两个完全不同维度的东西,有些培训班会告诉你学完我这个课程考个什么证能够让面试官看到了跪下叫爸爸
其实根本不会有什么实质性的改变,充其量只是在你的技术列表上多添加一项而已
然而同学们可能自身并没有意识到,一个应届生在大学里了解的技术至少就有七八种
同学们不信的话笔者就拿自己大学的课堂给你们列列看【JSP,C++,Java,R语言,J2EE,ASP.NET,MySql 】
这还没算上算法与数据结构,计算机网络,数据库,操作系统这些理论课
所以多一项少一项根本改变不了什么,而且计算机很多技术更新换代非常快
有些东西大一学的,到大四就过时了,就是郭德纲说的那个段子,BB机修理专业,人还没毕业,BB机毕业了
那么如果习惯于报培训班的同学势必又要再去报新的班
加上笔者前面提到的计算机技术要有很多种,这一横一竖,一前一后,都报班估计得扔出去几十万
好不容易排除了千难万险这些都熬过来了,但是技术积累够了,没有项目经验还是没用
到最后就只能回到小厂领着3000块工资拧螺丝,不知何时才能回本,还积累不到项目经验
最终形成恶性循环,到30岁被裁员
程序设计重在创意和结果
所以要想突破这个技术壁垒,笔者给大家举一个简单的例子【可能不是很恰当】
我们手里的各种技术其实相当于是积木,突破技术壁垒,就是要学会用简单的几个图形拼出有趣的成果来
计算机是理工科,更是一门工具学科,我们是要用代码解决问题,不管黑猫白猫抓到耗子就是好猫
就拿题目来说,只要最后程序能运行出来就是一个好办法,事实上就我个人参加的第十届蓝桥杯,事实上我没有几道题得满分的,我印象最深的就是倒数第二题,我用了一个贪心算法,尽管不可能AC
但是据我的分析应该能得到不少分数,这也是最后我能挤下第十名,以最后一名加入一等奖的重要原因之一
决赛更是如此,我当时只做出一道填空,一道编程,但我秉持的原则就是尽力AC但不苛求AC,最后反而得了二等奖,不过说实话当时参赛的人得有多菜或者题目有多难,往年六道题做出四道题才国二,那年十道题做两道就是国二
有些同学过于追求AC,这个习惯在ACM是必须的,但是蓝桥杯反而会成为阻碍,因为首先这会加大你得分的难度,并且你只有一个人没人可以商量
有时候一道题目可以暴力也可以动归,敲代码这个东西历来讲究不择手段,只要出结果就行
其实很多情况下缺的不是技术,而是创意。而这些其实无论是机构还是名校都教不了,最多只能给你提供点氛围罢了
刷题也好,项目也罢,核心在于看透本质用创意,我给大家举一个很简单的例子,以下这道题来自LeetCode题库2119题
反转 一个整数意味着倒置它的所有位。
例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。
给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。
我一开始看到这道题也是做老实人按照题目说的老老实实去反转来测试,结果做了半天愣是做不出来
结果看了解答才发现自己的智商被侮辱了,这道题其实只要排除尾缀没有0的非零数字就可以了,三行代码就能解决的事情,我愣是写了半天
我们学的这样那样的算法和技术都是工具,工具是为人服务的,但人不能被工具所局限,否则要大脑干什么呢,直接交给机器办不就完了么
我们是根据结果的需要去选择我们需要的工具,从而将工具的效果最大化,而不是单纯地将工具组合去实现我们想要的结果
有限的工具往往能创造出无限的可能性,但是抱着一大堆工具面对难题时却往往束手无策。
想必同学们经常会感叹,以前条件有限却能拍出好电视剧,现在条件好了净拍烂片,其实是一样的道理
另一方面甲方爸爸99.99%是不懂计算机的,你的BOSS也很可能是不懂计算机的,他除了不断下命令啥也不会
他们只关心他们想要的结果会不会实现,你解释的再头头是道也没意义,他听不懂也不想听
实现不了那再辛苦,也休想叫甲方爸爸掏一分钱,那可能几个月的辛苦就白费了,连身体透支的医药费都没人给
而且做项目毕竟不是考试,是允许查资料的,书背的再熟其实没多大意义
所以大家千万不要被书本上的知识所局限,一定要学会玩工具,而不要被工具玩
而这个技能,任何科班任何机构都教不了,只能靠经验和脑洞
说的俗一点,几乎是可以成为大家收入高低的决定性标准
保持好奇心
笔者在参加法考培训的时候,罗翔老师有一句话说法考是在浅海区游泳
很多问题有很严重的争议,法学博士也解答不出来
某一个问题该不该合法化争论了上百年都没争论出来
有时候两个派别能争论到互相板砖拍出脑浆来
所以罗翔老师说法学求学的时候一定要收拢好奇心
可是计算机不同,因为计算机最大的特点就是愚蠢到一点都不会骗人
是对就是对,是错就是错,不会出现错误的代码对应完全正确的结果
相反,有时候学习计算机的时候要故意去试错,试错的越多,踩的坑越多,你的能力和经验才会慢慢上升
所以笔者在此提醒大家,计算机求学的时候一定不要收拢好奇心,反过来尽可能放任自己的好奇心
极端点就是一句hello world能联想到造飞机坦克
想到了大可去测试一下,或许这就是未来会遇到的结果
不要怕犯错,不要怕出BUG,一个从来不犯错的程序员是没有前景的
理论实践双管齐下
笔者曾经研究了很多学习方法,但目前看下来只有这个方法相对比较可靠
理论实践双管齐下,因为笔者在学校考试的时候发现考试考得很好,但是做不出什么好的程序来
而往往理论不是的同学,尽管概念讲不清楚,背不出来,但做出来的东西却不错
前一类同学过得了面试,过不了上机
后一类同学过得了上机,过不了面试
从比较功利一点的角度来说,都会无形中影响大家的收入
因此,笔者的建议是双管齐下
理论方面最直接的办法就是看书,这里大家其实读了十几年书了,如果实在不知道怎么读书的话大家就把应试教育那套复习方法搬出来,唯一的区别就是没有大纲了而已
实战方面最直接的办法就是上机,这里的话呢大家要多去试错总结经验
总之纯粹的理论和纯粹的实战都难以覆盖比较全的知识体系
举个例子
Java面试题中有一个经典问题就是Spring的生命周期
这个问题笔者在大学里做了四五个Spring项目了也没碰到过需要涉及这个问题的地方
但是如果只是这个问题的答案背的很熟,让你上机做Spring项目根本不知道如何下手
因此过于强调理论或者实践都不合适,要两手抓
全面发展
当然博客内容不局限于计算机内容,肯定很多同学会问我一个敲代码的学这些有什么用,当然原因也是有以下几点
无用乃大用
我在大学上课的时候,老师和我们开了一个玩笑,敲代码的不如做PPT的,其实这个现象是有可能的
我在上一节也提到了,代码只是一个工具,有些工具并不需要代码来完成
计算机专业的同学有时候会认为敲代码是万能的,什么都可以用代码来解决,实际上不是
尤其是美化设计,PS,PR,PPT,甚至有时候找个人手画都行
长期沉迷于有用的东西其实是有害的
唐太宗和隋文帝在社会历史上两个勤政的君主,众所周知唐太宗的历史地位远比隋文帝高得多,然而有趣的是隋文帝在批公文上花的时间远远比唐太宗多得多
隋文帝就是封建时期的996,下朝以后还在不停地批公文,相反唐太宗下朝以后去找十八学士读课外书去了
这恰恰就是问题所在,唐太宗其实一点也不欣赏隋文帝的996
一个人长期沉溺于实用的东西而不超脱出来久而久之眼界就会越来越狭窄,而这恰恰就是996的陷阱,一个眼界狭窄的人就会肯定更容易被上级所操控
而我说的眼界狭窄,再说得狭义一点就是我在上一节中提到的创意,一个没有创意的人一旦精力逐渐跟不上年轻人了,就容易被裁员
所以大家一定要尝试着超脱出来
有更多的选择性
已经能够凭借自身条件实现财富自由的同学首先恭喜,下面的内容不是一棒子打死的
因为我从17岁到24岁七年时间一路坎坷,挫折远远大于成就,身边的同学大多混得都比我好,求我心理阴影面积
但是按照郭德纲的说法,吃亏要趁早,雷霆雨露俱是天恩,所以现在没啥好抱怨的,针对工作做了以下总结
不得不承认眼下国内就业环境对程序员确实不是很友好,光会敲代码只有给别人打工的份,甚至到一定年龄就不得不转型甚至转行
很多单位,没有996的命,犯了996的病,压榨完以后,直接以莫须有的罪名开除或者裁员
无论是985本硕还是三本大专其实都有这个可能性
大家可以去看B站王小七的视频,里面的主人公就是南京大学毕业的,要说出身,全国也没多少比例的同学比她还尊贵了
加班不给钱,老板画大饼是常态,有时候辛苦半天不如老板亲戚一个空降
申诉到劳动部门代价太大了,还不一定能成功
即便有些同学比较幸运,年纪轻轻就做到了管理层,但眼下疫情使得本来就疲软的经济更加雪上加霜,不排除自己所在的厂有倒闭的结局,任何行业都一样
如果有同学不服气,觉得我是因为本科院校,项目经验不足,做不到管理层等自身原因在推卸责任那么请看以下这个例子
48岁,重点大学本硕,外企高管,口语流利,有过硬的管理及业务能力。
想必除了年龄,后面所有的内容都是大多数同学心中的安全区了吧,但结局是什么呢
失业三年,创业失败,太太也面临同样境遇,两个儿子需要抚养,空有一身本事无处施展,靠微薄失业金度日。境况可谓凄惨。
如果同学们还不服气,觉得我自身不行说出来的话没有参照性
那么下面这位学长看到上面这封信同样面临着迷茫【微信公众号:公子龙】,在此可以给大家介绍一下他
毕业于中科院,是名硕士研究生
现在入职一家互联网大厂。
读研期间,我有过多段实习经历,在创业公司、字节跳动、腾讯,都待过不短时间。
秋招时面试过 9 家大厂,拿到了 9 个 offer。
此外,参加过多次数据比赛,主要是自然语言处理方向,获得多次冠亚军。
读研期间,通过实习、比赛获得收入超过五十万。
所以失业距离同学们一点都不远,所以同学们一定要有危机意识
克服职业病
这是笔者曾经踩过的一个坑,也挂在这里自勉,背景是笔者刚有一些小成绩就开始飘了,想去炫耀一下,结果碰了一鼻子灰
会话来自我的王者荣耀战队队长,当时听着其实心里很不舒服,但事后想想的确是如此,这是作为一个外行人对笔者的最朴实的建议,在此也感谢她为人的坦率
下面这些话可能会让大家有点不舒服,但问题就是问题,请大家辩证地看待
笔者在本科的时候和两个专业的同学重点打交道过,一个是笔者自身的专业计算机,另一个是笔者高考的一志愿法学
笔者发现这两类人都有一些职业病
计算机专业的同学重视技能轻视社交,给人一种很素的感觉
法学专业的同学重视社交轻视技能,又给人一种很酸的感觉
其实这两样都不好,但是笔者发现增加社交的重视在难度上比增加专业的重视要低
所以有幸大家属于前者,一定要注意克服这个弊病
我们不能老局限在自己的世界里,我们首先是人,其次才是程序员
那是人就是群居动物,一定要学会社交
笔者曾经看过B站上一个视频,996其实除了前面提到的会限制眼界以外,还有一个弊病就是会限制一个人的社交圈
那么再加上这一行普遍社交能力偏弱,所以也会无形中给大家的职业生涯造成不小的影响
同学们想必很多人都在寝室卧谈会里吹牛过,未来当了BOSS要请室友到自己公司来上班,薪水200万起步,可一个社交能力菜的人怎么可能当BOSS呢对吧
我在大四的时候一个老师跟我们开玩笑,说往往一个公司的开发人员的结婚对象可能都确定了,那就是那个公司的测试人员
现在想想其实作为一个人来说,这样的生活有时候挺无聊的
就笔者个人而言,笔者并不是最喜欢和那些大牛接触,并不是说笔者嫉贤妒能,和他们接触更多的只是涨涨见识,但深入接触了有时候也挺无聊的
论生活笔者其实更喜欢烟火气重和生活气息重的人在一起,说的难听点就是和比较俗的人在一起玩
有点像李云龙和赵刚这样的搭档,要相互调剂嘛
同学们千万不要以为俗是贬义词, 人谷为俗
郭德纲说过,要雅俗共赏,太雅太俗都不行,人吃五谷杂粮没有不俗的时候
高雅从来不是装出来的,孙子才是装出来
为未来做准备
复旦大学的中文系老师梁永安老师说过,我们对人生价值的综合判断的大脑前叶到31岁才发育完整
35岁人生体能充沛,经历丰富,学习能力仍然尚在
我们真正未来想干什么,能干什么,应该干什么,对社会有多少判断其实到35岁才刚刚知道
也就是说,我们真正人生大彻大悟的年龄就是程序员的危机年龄
另外“辩论之神”、”宝岛辩魂“黄执中也说过:30岁之前一个人是富是穷都是假的,能保留到30岁以后才是真的
因此各位同学千万不要因为年龄问题而焦虑
我在评论里也看到一句话:35岁是一个人羽翼丰满的时候,也是你的上级害怕你反抗的年龄,因此必须赶在前面把你一脚踢开
这句话我是比较认可的,35岁是危险年龄某种程度上可能是资本造出来的骗局
所以为了能够缩短那段时间的焦虑感,很多事情我们必须要提早准备,35岁精力再充沛肯定还是不如25岁的时候,所以大家一定要努力学习做好积累