' j0 H y6 F1 g# Q( t2 Q9 {# P6 }# C继续八卦一下,虽然说不通技术自有其优劣,但是就目前国内形势来看,学习Java绝对是不错的投资,Java后台几乎占据了中国互联网企业后台的半壁江山。而.NET技术确实日薄西山。不过PHP现在依然有很顽强的生命力。6 t) {4 k& h0 W7 K9 D
' w- x1 C: Y3 k5 R& l" X7 y
另外还有一些经典论断:- N U* R6 c# o+ D6 {4 v9 [
+ l3 s- b6 b, G, n6 ]LAMP架构只适合中小企业; 2 i- h, _7 R/ h/ h4 |2 I0 { 9 u0 A# q: V8 f. S" Y Y: QMySQL只能用于中小企业,大企业都用Oracle。等等。0 E& C! J s0 Z7 G
3 M/ \0 ~: l4 |: I
这些论断从技术角度出发,确实无可非议,但却并不客观。见过一些朋友,对MySQL充满鄙夷,觉得MySQL很容易出现瓶颈之类的。其实我想说,阿里、腾讯都大量使用了MySQL。别问我为啥MySQL被这么大体量的公司采用(无外乎开源的好处和历史原因啦),我觉得,只要技术够屌,什么瓶颈都能克服。。 - l2 j# C" c0 o- N/ \) H5 Q! U1 @3 I! l) Y% Z
程序员2 Q: n9 h7 g* r4 p9 r
! P; k5 n: w% l3 G8 B! B6 `5 O8 s
2.学习那点事) b8 J' J9 e8 _# z g6 W
4 W- V8 M, C" n& T: m8 ~
2.1关于逃课 ; C, c/ b3 y/ K2 N6 h) w. `" x, } 5 X3 K' |' N; C) w6 o! r相信每一个大学生都逃过课,我也不例外,而且很多。我在谈逃课,其实也是从某个侧面来谈自学。之前有个网友和我咨询如何面试,如何准备之类的,他已经大三了。学校的课程完成的不错。但我感觉他还欠缺很多。要想找到好工作只靠老师教你那些东西是不够的,跟着学校的进度走,其实只会让你落后。我并非一味的鼓励大学生逃课,我的观点是要选择性的逃课(如果是好课那么即使不开课也要去蹭课的)。哪些课要逃呢? % s6 }) j8 C2 ]7 z 0 \# j8 h7 f; d7 {1.无聊的课程。比如思修、毛概、马原统统要逃。别急着反驳我,就是逃课而已,不要形而上。我不是党员,也没有申请过。数学相关的课程,我只想说量力而行,数学确实对于程序员来说还算重要,但是不同岗位对数学的要求又不尽相同,你能应付就好好听,不能应付就。。 ; [) v) d$ Y9 u/ d( s1 T) z/ `. }- a
2.与你的技术方向无关。这个就要看你是不是计算机专业了,如果你是其他专业学生,但是对计算机感兴趣,相信很多课都是可以逃的了。或者比如你的技术栈是建立在Linux基础上的,但是学校有一门MFC编程的课,你有兴趣又有时间可以听听,没时间就逃,OK的。这个也是有个前提的,就是你能清楚的明白哪些课程是对你有帮助的。你说:“我学C++的,我把数据库的课逃了”。=_=||别说你读了我的文字。。 7 Q! S. o9 p+ [! l2 e2 ^ 9 K$ U5 U- |" p) i `! `1.你已经掌握了的。相信会自学的孩子,都有这种情况,那就是在学校开课前,你就自学过了某门课程。那么等到开课以后你就可以逃了,我就是这样逃了Linux编程的课。当然你要清楚的了解自己到底掌握了多少,不要自己是一知半解,还自以为懂了,就不听课了。其实要逃这种课,你也不需要懂得太多,你只需要保证你比老师讲课的水平高就行了。我们有的老师,水平真心烂,不逃课对不起他。7 k/ V0 b+ v+ L, ^! e7 W# [
0 o( Y; F z1 {9 r: m! g) g2 Q
但是很多学生总是走极端,说到自学就一点课都不上了,看不起学校的课程安排。自己在寝室学个把月就能轻轻松松地做出网站或者APP。但是我想告诉你,你能做到的,别人同样能做到。有一句话说的很好:% K9 h& z9 q/ Y6 @
$ u- a# k+ D# V/ T$ ~# q: w
你的工资不是和你的工作时间成正比,而是和你的不可替代性成正比。3 S c/ [0 f. l% g9 |2 Q, L
1 c0 |2 r3 N, {
你和培训机构几个月量产出来的程序员差别在哪?仅仅是你没有给培训机构交学费吗?但你的技能和他们是差不多的啊。所以说学校教的基础课是很重要的,最直接的好处就是笔试,笔试考的就是基础。然后这对你长期的职业发展也是很有帮助的。你工作几年之后(可能就是一两年),发展肯定会遇到瓶颈。# i0 A; d5 N h
+ u I# d. g0 h
2.2关于读书 1 j4 S8 T# F7 I. p% w- f5 w; T c3 B- d+ |( P: ~8 z* W; X1 z
多读书,读好书 - p8 K" m2 W# g& ` 7 n& P; `# \6 i这是一句老掉牙的话了,但是事实就是如此,阅读经典书籍,你的投资回报率其实远高于阅读低质量的书籍。那么什么是低质量的书籍呢?比如《21天精通XXX》之类的。但是不管读什么书,都不能盲目跟风、囫囵吞枣。在网上,生活中经常看到各种索要书单的网友,借鉴别人的书单是可以得,但是直接照搬照抄则是不明智的。因为每个人已有的知识储备是不一样的,别人阅读的书籍不一定适合你。所以阅读合适的书籍也是一种重要的命题。/ u: M/ {+ S( l( v
% v v, L4 C2 e. t4 Q* f
阅读合适的书籍 6 k2 i- _4 c. U& X+ v 5 O2 w- M/ b" x- I" F; @那什么是不合适的书籍呢?我认为有如下几类:3 T9 s ~( m2 w
, z/ W4 L/ g+ W M( c; o
1.与自己的技术栈毫不相干的。这相关与否是建立在你已经做了清晰的职业规划的基础上,并且通过搜集信息能够自己辨识哪些是和自己的技术栈相关的,哪些是不相关的。当然,我并不是鼓吹大家技能点越单一越好,技术人员当然需要不停扩充知识面,但是对于大学生而言,这要建立在你在主要的技术栈上的积累已经足够多的时候(足以应付面试),不然东一榔头,西一棒槌,最后只能样样稀松。. N: b2 l) ?8 [9 n, k
7 E- h2 j. X$ }/ K* ]0 z1 ? [+ T( ~
1.超出自己能力范围的。虽然我前面说要读好书,要读经典书籍,但是一定要量力而行。很多经典书籍的阅读需要一定的基础,如果你只看到了别人对这本书推崇备至就开始强行阅读,最后通常也不多是走马观花,像读小说一样读完了而已,最后什么都没学到,还浪费了时间。老子说“企者不立,跨者不行”就是这么个道理。 " J, F3 L) ^; `1 R! U# x 2 W5 t( w- K4 F: b3 Y1.知识点与自身已具备知识过度重合的。面对一本经典书籍,可能你已经具备了那本书中所阐述的绝大部分知识,那么还有没有必要读呢?我的建议是:可以查漏补缺,但不要通读。很多经典书籍,单拿出一本来说都是值得阅读的,但是放到一起就不一定了。因为两本书籍可能70%甚至80%的内容类似,这时你读完一本,再通读另一本就没有必要了,比如我读了《C++Primer》就没再去读《C++PrimerPlus》了。当然你可以阅读不重合的部分,这需要你有较强的辨识能力。 6 \! `0 b: f* T: p" D$ I" o* _6 J/ z6 N6 H& l
《C++PrimerPlus》虽然从名字上看起来像是《C++Primer》的加强版,但其实并不是。它们是不同的作者,并且从风评来看《C++PrimerPlus》貌似比《C++Primer》还要基础一些。。) f: E8 [; u0 K5 n; q) R" k) e
1 \1 i# ?$ y B+ y# C
善待图书馆 / p: p, t. u1 [' \ 7 z" c' x) c- A6 V3 ~$ |$ g' k6 r请大家一定一定要善待图书馆。说实话我大学几年对我们学校并没过多好感,但是唯一让我不舍的就是图书馆。相比电子书,我更喜欢那种手指翻阅纸张时那种真实的触感。大学临近尾声,这几个月疯狂的去图书馆借书读书。上个月竟然发现图书馆新购入了好几本好书,可惜的是我实在是没时间读了。哎,突然发现自己一直以来都是不太会读书的人,从大一到大四都借过不少书,但真正能读完的并没有几本。当然了,前面我也提到了,有些书是不适合通读的。但仍旧有很多需要通读的书籍被我丢弃,直到最近几个月才认认真真地读了基本完整的。- T+ T4 n9 \' {9 ?; G1 j' v1 J2 |
* ]" {1 w- H: K3 G! t) ^( m9 ?“书非借不能读”5 Q2 O! o6 x; C$ a
% \) d- F$ @1 g6 _7 z7 b
很朴素的一个真理,借的书因为是时间限制,所以会逼迫你阅读。而如果是你自己买的书,你潜意识就会觉得“啥时候读都一样”。当然这是对自制力不强的同学们说的。 : ?- h2 o1 x& Y2 M- ?( R8 T+ P- P: Y2 G' B
2.3打造自己的技术栈 2 g9 E- V4 h7 H A$ y. m; A3 r' q# w. i1 Z
技术栈,或者叫技术体系、知识体系。首技术栈起于编程语言却又不止于编程语言。你可以多尝试,然后找到自己喜爱的技术方向开发深挖。然而很多学生通常会在起步的时候就陷入迷茫。在网上看到过一个人,想学web开发,各种调研,然后向别人征求意见该学哪门语言比较好,哪个框架更有优势。后面大概过了半年,他还在纠结该选哪一个。。! M% _& C7 ?' l ?& J$ v7 `) ~2 _
# K% k Z9 e# W我只想说:先跑起来。语言很重要但并没有那么重要。无论语言还是框架这些都是工具,在这些工具的使用过程中提炼出的思想、方法、认知才是你的能力。有了能力,即使你换了语言,换了框架照样能快速上手。我觉得大公司一般不会计较你对某一框架的API熟悉不熟悉,他更看重的是你对框架背后的设计哲学和原理是否了解。 / e3 v# l9 u9 z6 e4 g2 \ 4 z: i: ~; D; H* b+ O' X技术栈就像一棵大树,树根可能是操作系统、网络、算法、数据库。再靠上一点是编程语言。接着树干就是你的职业方向,可以是安卓、IOS、前端、后台等等。别忘了还有树枝和树叶。技术没有孤岛。把自己封闭在闭塞的圈子内十分危险。你应该是具备了深度的同时再拥有广度,请注意拥有深度是前提。: H: i m& Z6 m0 h+ S# ]
7 z, ]0 ?+ l( W5 C0 `5 i
没有什么东西绝对该学或者绝对不该学的,切忌盲从,照搬照抄别人的学习经历,强迫自己看别人的书单。谁说你是后台的就不能看前端的东西?在你后台技术成熟之后是可以的,这样也能加深你对整体架构的理解。 ' m" [# ~* Q! k1 S1 n5 t* I3 K: r. l, _- q3 q0 u( i
另外这些树枝和树叶上悬挂着的也可能NoSQL、Git或者Docker等,你不需要在每个方面都是专家,但你应该对新技术抱有好奇心。/ r. t& B" } ]4 T
# t3 l s, g0 D* A8 i
2.4深度思考和提炼/ s* M+ x( S9 H& [/ J# _
4 ?( s* q( F* z3 I5 _
不管是前端还是后台,框架都是层出不穷的。每个都学,谁都会疲于学习。但实际上你并没有必要这么做,对于一个框架,记忆它的API永远是最低的技能,你要从中提炼出一些共性的知识点。比如后台框架,你学了之后你要记住的应该是URL路由、模板、权限控制、MVC的设计等等。那么你换一个框架,即使有不同,你也能快速上手,思维上只是换一套API,接着补一下个别差异,新特征而以。对于编程语言的学习也是如此。 9 X( ]* ~( X! C7 e' q/ g " g* t& k/ b7 n9 y( j9 EC++的STL里面有各种算法,很多时候参数的参数都包含一个函数对象(实际为重载运算符()),这就是函数式编程啊。学了JavaScript,你会感觉到很多时候其实也都是在进行函数式编程,并且比C++更甚,尤其是jQuery这个库的用法。提炼出不同语言之中的相似处及不同点,不仅能帮助你学习新语言,并且能帮助你巩固旧语言,加深你对旧语言的理解。. m3 ^' h$ d( _
5 ?# l- z6 @4 V+ Y另外呢。计算机学科的很多课程其实并不是完全孤立的(虽然可能看起来如此)。你比如说操作系统课,讲链接和装载,这肯定和C语言编译的可执行文件有莫大关联啦。讲内存管理,分段是啥?你不知道C语言里面数据段、代码段、等等吗?内存的分配策略和分配算法,其实C语言里面malloc就在使用这些策略啊。大家一定要学会在不同课程之间建立联系,这是一件很有趣事。) ~6 d- K- R* y8 l3 `# s I- F
3 V) p6 D' T* y M5 J* w
3.求职准备6 J. _. N9 R6 d