关于你们最近的提问
最近比较奇怪,收到不少在微信问我怎么学习语言,看什么书才好的,还有问我是不是要换专业、转行做IT应该怎么学习的?
我一时还比较费解,我的号的受众不都是有几年工作经验的吗?怎么会这么多这种问题?
好家伙,我打开用户分析一看。为什么还有60岁以上的?小朋友。。你是否有很多问号。。。
18-25和26-35的居然55开了,我记得之前是28开啊。
好吧,既然如此,根据兄弟们的提问,我看下来,问题其实就基本围绕以下两个问题来展开。
非科班现在转行做IT怎么样?应该学习什么语言? 怎么入门,怎么学习语言?
1.非科班现在转行做IT怎么样?
首先,现在一大堆人想往IT行业转,首要因素我想应该还是薪资高吧。
但是,其实IT行业很枯燥,非常枯燥,学计算机首先得耐得住寂寞,有些人就天生好动,搞计算机的话天天和电脑打交道,一坐就是一天,其实对于很多外向的人来说可能非常折磨。当然了,我就不一样,我不出门可以坐一年,所以,我这种人就比较适合做IT。
其次,我希望你还是考虑清楚自己的爱好和兴趣,不要为了单纯的薪资高进入这个行业,你对计算机是否热爱,虽然说兴趣变成工作再也不是兴趣了。但是不可否认的是,兴趣是入门最好的老师,如果你对计算机都完全不感兴趣,我建议你遵从自己内心的选择。
当然最重要的问题就是现在IT行业严重的加班风气,你基本上很难找到一个完全不加班的公司,特别对于女生来说,可能每天十几个小时面对着电脑的辐射完全就是折磨。不过话又说回来,好像也没多少写代码的女生。
加班的问题得想清楚,做这行的上了年纪不锻炼的身体毛病一大堆,比如我就是,我天生就懒,能坐着坚决就不站着,能躺着就不坐着,最后你还得健身续命。
说了这一大堆好像都是缺点,但是好处我开始就说了啊,来钱快啊,你去拼西西是不是,应届生给你40万香不香?
2. 应该学习什么语言?
语言这块我就认为都行,你想搞Java现在阿里、美团这些大厂都是,Python也有,但是从从业人数来说比Java少多了,搞C、C++、Go这些现在字节、腾讯这些也都是,我有不少朋友进了腾讯、字节就转Go了。
我认为第一门语言都可以,如果想受众更广我建议你选择Java,找工作好找。毕竟也不是每个人都能进大厂。
其实,我想说不太建议你选择PHP,啊,PHP是世界上最好的语言,算了吧,玩PHP的也转Go了。
如果单纯玩票,想增加点技能,PHP或者Python学习起来都很快,是个不错的选择。
其实对于非科班的同学来说,还有一个更简单的选择,前端工程师。你会发现计算机的那些基础完全不学,直接上手HTML+CSS,JavaScript、VUE、Jquery那些一学,马上就能找到工作,工资还不低。
我不骗你,真的,如果你啥基础都没有,就想面向工资编程,赚两年快钱,前端是不错的选择。
但是,想在行业里扎根,向上发展,还是认认真真,一步步扎实地好好学。
语言这种东西,都是触类旁通,学会一门,再学其他的其实就很简单了。
3. 怎么入门,怎么学习语言?
这个问题,我就当做是书籍推荐了,一切从基础开始,任何东西学习都这样,万丈高楼平地起,那什么什么来着对吧。
我把书籍简单归纳为两类:
计算机基础,这些都是你的基础,要打扎实了 语言类,涉及到工作中,找工作你应该会的东西,比如数据库、中间件这些东西。由于我一直做Java,其他语言我避免产生误导性,我还是以Java为基础来说。
计算机基础
操作系统
《现代操作系统》 《操作系统—精髓与设计原理》 《深入理解计算机系统》
关于操作系统,都很难看,也很难懂,可以网上找找视频看。
Linux
《Linux内核设计与实现》 《深入Linux内核架构》 《鸟哥的Linux私房菜》 《Unix环境高级编程》
从基础使用到进阶,编程都有了。
计算机网络
《计算机网络:自顶向下方法》 《TCP/IP详解 卷1:协议》 《图解HTTP》 《网络是怎么连接的》
前面两本是经典书,难懂,后面两本比较容易点。
数据结构和算法
《算法导论》 《大话数据结构》 《剑指offer》
第一本是硬书,初学者太难了,可以看看网络上现在比较火的几个课程。不做推荐,避免广告。
语言
基础
《Java编程思想》 《Effective Java》 《深入Java虚拟机》 《码出高效》
第一本是基础,但是可能有些人看不懂,那就去网上看视频课程吧,我还是可以推荐马士兵老师的Java基础,是个人都能看明白系列。阿里出的《码出高效》也可以一读,通俗易懂。
并发编程
《Java并发编程的艺术》 《Java并发编程之美》
设计模式
《Head First 设计模式》 《设计模式之禅》
框架
现在主流的框架就是SpringBoot\Spring\Mybatis这些对吧,我觉得好像没什么书可看的,建议自己项目实战+辅助读源码吧,网络上也有很多源码解读,可以缩短你的学习时间。
如果你很不幸,进入一家古老的用Strust2和Hibernate写的代码。。那只能祝你好运了。
数据库
《MySQL必知必会》 《高性能Mysql》 《MySQL技术内幕 : InnoDB存储引擎》
第一本是入门书,进阶看后面两本就足够了。
Redis
《Redis 设计与实现》
就这一本,差不多了。
RocketMQ
其实没什么书,只有丁威丁总的一本《RocketMQ技术内幕》
Kafka
《Kafka技术内幕》
这个就够了
Dubbo
这个别买书了,看官方文档就行
其他
工具
IntelliJ IDEA Eclipse Visual Stduio Code Sublime Text Atom
初学者,不建议一上手就使用IDE,可以先用记事本或者sublime这种,熟练之后再用工具软件来开发。目前来说,Java主流是IDEA,我当初从Eclipse转到Idea也各种不爽,后面还是。。。真香。哈哈。
前端开发、Go这种目前应该主流是VS Code,插件,功能强大。
版本控制
Git SVN
当然选择是Git了,别说你还用SVN,趁早换了,做开发呢就要紧跟潮流,太死板,不愿意挪窝,死守着面前那点东西不愿意接受新事物都是很多普遍开发人员的通病。
最后
我想,看完这里,你应该还有一些疑惑,让我猜猜?
这些我都要一点点学完吗?
大可不必,如果直接就想简单找个工作,直接网上找个视频,报个培训班什么的都行,但是,我希望你还是先打基础,再言其他。关于学习路线的问题,我觉得渣本和985、211这种可能不太一样哈,学霸和学渣也不太一样。像我这种,我其实大学都在玩,直接上手学的语言实战,基础回头补的,当然,我不建议你也这样。
太难了,有些书就把我劝退了,发现自己怎么学都学不会,怎么办?
我觉得一点问题都没有,只要你智商正常,肯吃苦,肯定是能学会的。你看不懂,学不会,只是没有掌握方法,如果你上来对着一本经典900页的大头书一通啃。。。
看计算机的书,不用和学文科一样,一个字一个字的看,先通读,大致看完,心里有概念,再细看,有针对性的看。
我应该做项目,还是怎么搞?
我问过不少人,他们有的大学的时候就埋头去做项目,项目倒是做了一大堆,回头一看,代码写成了一坨,基础被秒成渣。面试一问,直接GG。
还是看基础、基础、基础,再说3遍,当然,光看书也没用,学以致用,学习和实践结合才是最好的办法。
我觉得还有一点很重要的就是,学计算机你一定一定学会Google、baidu,一定得有自己思考解决问题的能力。碰到问题没法解决,搜索永远都是你第一个老师,学会善用网络。
而且,现在可不是当年了,网上的各种课程、视频一大堆,不像我那个时候学个东西只能靠自己撸啊。网上不用付费,免费的课程也一大堆,都能帮助你快速入门,没必要非逮着一本看不懂的书往死里怼,学会利用这个时代的优势,帮你快速入门。
这,可能也是程序员越来越卷的原因。
- END -