在大学时代,我一度有个想法,读一个垃圾大学还不如读技校!!!而且差点退学,去读技校……幸亏我爸骂了我一顿……
因为到了大三,除了背会了些基本概念,学校什么都没教会。教点java、C++也都是基本语法。
选修的网页设计课,报的人趋之若鹜,守着时间点抢名额。到最后,也就是做一个简单的html页面,连jquery都没教会。
这样的大学真的有用吗???
耶鲁大学校长:如果一名耶鲁毕业生拥有某种很专业的技能,那就是我们教育的失败……
我甚是不能理解。
毕业了,什么都没学会,怎么找工作???准备喝西北风吗???
随着年龄的增长以及经验的增加,慢慢能理解这种教育的高深之处。
现在的大学教育其实是通识教育。所谓通识教育,就是让你具有往各个方向发展的潜能。而不是带着你向那个方向发展。
所以,在这个基础上,大学会让你具有自学JAVA的能力,而不会带着你从java入门到精通。
而大学的愿景更为宏大,他培养的是根据你自己的爱好,能够自学成才的精英,而不是像短期培训一样,单纯学会工具的使用。
而这个愿景是建立在每位大学生都能够好好学习基础知识,并且业余自学某项技能的基础上的。
“再加把劲,等你上了大学就轻松了”
这是高中老师最大的谎言。如果你真的在大学里,吃喝玩乐,泡妞把妹,爽的不亦乐乎。那毕业时,大概率是要走培训班路线的。
大学不是技校!这就导致,你不自学就学不到实战本领,而实战本领却是公司招人的评价标准,这也是培训班能长期活着的根本原因。
任何的理论知识,都是很难短期内看到价值,尤其是在你刚入行的时候。
对于刚入门编程的同学,学的只是诸如语法怎么写,IDE怎么用,诸如此类的基本工具的使用。
这时候的你,根本不可能用到任何的理论知识。
就像扎风筝。初期,你在跟着别人把一个风筝做出来的时候,根本不会考虑扎风筝的基本原理此类的刻板知识。你只知道,我只要跟着别人做,就能做出来。
但是,等你熟练了以后,需要自己设计风筝了,没办法仿了。这时候,这些基本原理就用得上了,你就需要知道扎风筝需要遵循怎样的设计原理,必须遵循怎样的架构,这个风筝才能飞起来、飞得更高。
代码也是一样的,初期学习的时候,都只是仿的过程,用到的网络请求,也只是人家写的一句代码而已,记住就能实现网络通信。
但是等你成为熟练工了以后, 你就需要理解它的内部原理,这时候就需要了解网络请求的机制,TCP UDP的区别,计算机网络的五层协议。
操作系统、编译原理有用吗?
你编程的时候,根本用不到。因为操作系统都是现成的,你根本不可能再修改操作系统,编程原理也一样,98%的人不可能会接触到编译器。
但它的价值在哪呢?
基础知识对程序员最大的价值是软件思维能力的培养和软件架构意识的潜移默化。
很明显的区别就是,两个人同时学一套新框架,基础扎实的同学,对网络协议、操作系统网络部分处理机制熟悉,可以学得比对些部分没有任何了解或了解很少的同学,学的快很多,也透彻很多。
一般的框架设计,都是围绕性能、复用性、高扩展性开发的。
要做到这些,就必须对底层依赖深入了解,而这些都是中高级程序员必备的技能。
武侠小说中练武讲究内外兼修。徒有招式的功夫,没有任何杀伤力。
而只有内功的例子,就像无崖子传授虚竹70年内力,却没有传授虚竹招式。导致虚竹空有一身内力,却不知如何运用。
有了内功以后的练武,就像张无忌练乾坤大挪移,人家练了几十年不成,而他只轻而易举成练到第七层。
如果说基础知识是内功心法,而具体编程技能就是招式秘籍。只记得代码怎么写,不懂原理,甚难成为高手。而只懂基础知识,不懂编程,就像虚竹空有内力而不知如何运用。
唯有内外兼修,才能成为绝世高手。
所以,基础知识的学习,在你初级阶段是看不到成效的,如果你想要靠学习基础知识快速的找工作、升职加薪,是不现实的。
如果你还在上学,建议老师上的课尽量好好上,不要上了四年,逃了四年。然后,业余自学某个方向的开发课程,自我提升。到校招时,将会非常有竞争力。
这些是在校期间老师所不会教的,刚好做为补充。在公众号里回复资源下载即可。
对于已经工作的同学,就没必要拿着厚厚的书死啃了,我建议,用到哪块补哪块的逻辑来学习。比如你在看网络通信的代码,那你可以看看大学里的计算机网络的书,从宏观层面了解网络各个层级的功能,以及各种通信协议的区别。
基础知识不是包治百病的良药,但如果你有耐心去学习,可能坚持两三年后,在你已有的水平上,提升一两个档次毫不为过,升职加薪便是自然而然的事了。
当然,坚持是最难的事,而且还是两三年,谈何容易。这也是为什么开发岗那么多,专家岗那么少的原因了。
我是启舰,vivo研发专家、项目主管、前阿里人、出过书、创过业、八年工作经验的大厂程序员。
听我唠,少走弯路,程序人生更简单。
如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个鼓励,将不胜感激。