( ~3 T6 p" ~% E+ c8 plifeisbinary,生活就是二进制,一个个0101组成的。每一次抉择,选了就是1,不选就是0。另外也有一句话说:“人一生要面临很多选择,但是真正能决定你命运的只有几个”。没错其实就是这样。1 b6 \8 n6 B8 d
+ n% ] x, P+ t9 @! U. o' p( F
如果你是计算机专业的学生,那么到底是考研还是就业就是首先要面临的问题。本文是面向确定了毕业要工作的大学生的,所以关于这个抉择,不再赘述。 / h, r) W* F6 @8 }& t $ G4 T5 b# \ N- C就业的话,本文标题是码农,实际是指所有计算机相关的技术工种。包括开发、测试、运维等。 9 v" l6 T: G5 W$ q - u4 [' `$ q7 @* l u, F' j% x9 U很多选择本身并没有对错或优劣,只有适合不适合。 : q; ?6 T- E; }3 X: V6 |; ^6 Z7 B6 @. K6 p9 g' q# W4 x) R3 L
不要滥用勤能补拙,这个词语一度被很多人奉为圭臬,但同时成了枷锁。我相信这个词,但是要考虑现状,要考虑投资回报率。你在自己并不擅长或不感兴趣的领域深耕了四年,最后不一定能获得多少成绩。当然如果你能在毕业后继续深耕几年或许是可以的,但是我希望每一位大学生在毕业的时候都能有一份好的工作,并且如果你并不喜欢某一领域的话,那么我相信你一定不会坚持下去。所以我们一定要找到适合自己的方向! , o! r8 Y; z9 n: f$ y) v 7 \8 t5 n0 t J% N5 I那么如何发现自己对什么感兴趣呢?我也不知道很好的办法,我只知道一个朴素的方法——尝试。趁着年轻,就要多尝试。千万不要大三了都还不知道自己兴趣在哪,想做什么,适合什么。所以大一大二努力去碰钉子吧。 w% R4 u2 |) Z( N+ U; i( [' {& k& z# ?' L( u1 M- Z H
1.2算法还是开发 0 L6 S# u6 M1 G. q" f, B# L9 _% P3 |. d; Y( _
数据结构和算法很重要,无论是面试还是工作,无论你从事哪方面的技术。不过算法虽然重要,但并不适合每个人都花费大学全部的精力去钻研。 5 B) Z9 X' j! a' Y- U$ d E5 C4 M5 i: C6 ~
相信很多学校都有ACM竞赛相关的社团或组织。很不幸,我们学校没有,我大一的时候也花了很多精力刷题,但是硬件条件不太允许,氛围太缺乏。如果你觉得自己能够在ACM比赛中游刃有余,那么恭喜你,你可以一心一意搞算法。如果你觉得自己在这个过程中十分吃力,挫败感频生,那么也不要气馁,或许有另一条路是属于你的。选择开发,有算法功底深厚是很棒的事,但是仅仅只有算法同样是不够的,计算机海洋还有很多未知等着你探索。 , K( X/ Z* k0 E 3 E$ T4 _1 d/ S. Q算法岗包括数据挖掘、机器学习之类的(怎么样,高大上吧,反正我不懂)。要说明的是想做算法的同学最好选择读研继续深造,因为大企业在算法岗的招聘上对本科生是很不友好的。还是要申明一句,你做开发也不能忽视算法和数据结构,起码面试还是经常考的!记住一句:. V3 r& `0 ~! u* w0 a& |
8 k' F4 X+ D. [% T& _算法功底好的人,运气都不会差。) C9 h/ u; i& @3 [; d
+ b7 f% n+ J0 V/ g3 i对于本科生而言做开发还是相对容易的一条道路,不过开发的技术路线也是不胜枚举:前端、后台(PHP后台、java后台等等)、移动端(安卓和iOS)、游戏开发、数据库(比如做DBA)……。这里我肯定不会去推荐你去学哪一种,我没有能力也不适合。只有你自己才能发现自己的兴趣以及好奇心之所在。 / L; J* w# E1 P, g3 x1 c0 j- b; E# \( y6 Z3 l- L2 ?7 I
我能做的只是在浩如烟海的技术观点中,帮一个个本科生排疑解惑。 $ e) l! H' z3 E; Y" C1 ^% ]5 T. O+ K# C* t* W0 B
1.3认识技术# F% y. d7 z" B" s& s& K
% [6 t" v' Z9 D" y! C
关于技术,很多本科生都存在诸多误区。初学者总喜欢追随牛逼的技术,实在过于盲目,找准自己的定位最重要。 ! V. j; ~6 ?5 \8 v( c ( ^) v: ]7 [3 m& N误区1:图形化的东西比非图形化东西更牛逼 e, j$ u* ]. Z ~% D* f6 _ ?2 V( j) |9 P- x多见于初学者,尤其是计算机专业新生(我大一的时候就是)。当时学校教了点C语言,一直都是控制台程序,面对黑窗口,我就各种百度看看怎么弄出图形化的东西,那时候才知道GUI这个缩写是啥意思(当初知道这个缩写的全称还小激动了一下下,果然我还是太年轻了),然后知道了WIN32、MFC这些名词。。确实只能说是知道名词。当时对着视频教程做了计算器,就是用VC++拖拖控件,视频里的人敲一句代码,我就敲一句。后面虽然弄出来了,但是感觉自己什么都不懂,只是依样画葫芦。这时我才意识到,还有很多基础没有打劳。3 G. O! N7 J# m5 R# I% I
) r6 E9 ?* n, l, I2 L4 Y7 _0 v八卦一下,现在桌面客户端的开发工作并不多,所以大家谨慎选择这一技术方向。桌面端GUI技术一度火爆(MFC、Qt、WinForm、WPF、Swing……),但如今早已是互联网及移动互联网时代。所以大家真的要慎重选择。不过还是可以学习一下的,至少能加深你对编程语言以及设计模式的理解。/ w" s& p% h' @$ j8 C
* m2 I5 x! f0 N' }6 F3 s9 v# {
误区2:非图形化的东西比图形化的东西更牛逼5 z* g7 s/ B3 E' I! @( z
4 d8 ?) ?& C7 P具体而言就比如说:后台技术比前端技术、客户端(Android、IOS)更牛逼。多见于有Linux背景的人(没错,说的就是我=_=|||)。8 S; z4 j* V4 b- ?( W K4 Y" v
" t& ?- R0 }) g- p我也一度这样认为,其实不然。这里和上一个误区一起澄清一下:技术本身没有高低优劣之分,但程序员对其有好恶之别。 : y, a) m& O& q0 }& U6 y % Q5 C7 P9 k0 d6 S另外要说明一下,不能说前端就简单,后台就更难,同样反过来说也不对。我只能说这完全是不同层面的东西,不能量化的去比较。前后端都自有其难点以及G点。你不能说你能处理后端复杂的并发、同步、高可用,那么你就能轻松地完成美观的网页及特效、处理麻烦的浏览器兼容、极尽所能地降低页面的加载速度。就好比同样是一双按在键盘上的手,那么钢琴家演奏优美的乐曲和程序员开发高性能的软件,哪个更困难?(比喻不一定贴切,但希望大家能明白这个意思)) h, U; A& l& X \* M, ?$ k7 Q, g* e
) \, y( T( i' S# g( b误区3:XXX是最美的语言/框架/平台/…… 6 z& `. H5 }) @/ P7 p8 W' F - |, Z! c6 q& W& N+ ~2 r多见于PHP程序员。哈哈,开个玩笑。这里不是在谈论谁是最好的语言,而是告诉大学生朋友们不要迷信论断。3 w! R V. N& N* N% S
8 s1 @) l( b- y7 S% R/ k g# m
我大一的时候去图书馆看书,看到有JavaWeb的书,前言写的很清楚,痛陈了PHP和ASP.NET的缺点,阐述Java是多么优秀,OK。你可能也和我一样,在入门的时候经历过类似的事。我要告诉你的事,多翻几本书,你会看到ASP.NET和PHP书籍的前言写的同样精彩,你绝不会在ASP.NET的书里看到夸耀Java的句子。不同的技术自有其优劣,千万不要成为前言驱动的学习者。。. P# _7 j4 n/ y3 [- r
# U. A4 H4 r$ x7 _1 q8 E! T继续八卦一下,虽然说不通技术自有其优劣,但是就目前国内形势来看,学习Java绝对是不错的投资,Java后台几乎占据了中国互联网企业后台的半壁江山。而.NET技术确实日薄西山。不过PHP现在依然有很顽强的生命力。4 w/ J" t' t9 d8 j7 b
: ]6 t* Y) k8 _9 L9 a- [( Q
另外还有一些经典论断:/ f% y8 a! ` w7 L' I5 y
& @; p, ?; d/ n7 |LAMP架构只适合中小企业; 5 I5 H2 Y" k3 V P$ c, l+ [ ; e8 a4 L7 B2 E* d% Y0 S! hMySQL只能用于中小企业,大企业都用Oracle。等等。3 g9 s4 S. J3 m* m- X m* |9 w6 q8 N
- |1 Q; b4 W0 N/ n这些论断从技术角度出发,确实无可非议,但却并不客观。见过一些朋友,对MySQL充满鄙夷,觉得MySQL很容易出现瓶颈之类的。其实我想说,阿里、腾讯都大量使用了MySQL。别问我为啥MySQL被这么大体量的公司采用(无外乎开源的好处和历史原因啦),我觉得,只要技术够屌,什么瓶颈都能克服。。- B E$ I2 x: |" j/ k9 i
" p' _' r$ [$ [- }+ z5 k程序员 3 J" ^2 a4 V5 Q8 R: I. C4 W' ] 3 {- C: ^: o" L8 p2.学习那点事 " z6 a* j& v. l& I0 M' @5 h8 W6 M & l; H5 U% V* c. t+ O1 e9 S# u5 ?2.1关于逃课7 R' I1 t& @0 |+ x" Y
# d' p' X3 n% t" l7 u
相信每一个大学生都逃过课,我也不例外,而且很多。我在谈逃课,其实也是从某个侧面来谈自学。之前有个网友和我咨询如何面试,如何准备之类的,他已经大三了。学校的课程完成的不错。但我感觉他还欠缺很多。要想找到好工作只靠老师教你那些东西是不够的,跟着学校的进度走,其实只会让你落后。我并非一味的鼓励大学生逃课,我的观点是要选择性的逃课(如果是好课那么即使不开课也要去蹭课的)。哪些课要逃呢? " r+ ?+ i. d0 o. J9 I, W # u" a) |% B. F$ E+ d1.无聊的课程。比如思修、毛概、马原统统要逃。别急着反驳我,就是逃课而已,不要形而上。我不是党员,也没有申请过。数学相关的课程,我只想说量力而行,数学确实对于程序员来说还算重要,但是不同岗位对数学的要求又不尽相同,你能应付就好好听,不能应付就。。 3 i% S+ R% M" I1 x % E2 D5 g* D9 B$ c0 m; K2.与你的技术方向无关。这个就要看你是不是计算机专业了,如果你是其他专业学生,但是对计算机感兴趣,相信很多课都是可以逃的了。或者比如你的技术栈是建立在Linux基础上的,但是学校有一门MFC编程的课,你有兴趣又有时间可以听听,没时间就逃,OK的。这个也是有个前提的,就是你能清楚的明白哪些课程是对你有帮助的。你说:“我学C++的,我把数据库的课逃了”。=_=||别说你读了我的文字。。 " Z' d& n5 v2 R! R2 X q9 l4 k: j& v m6 t9 U) m/ i' z
1.你已经掌握了的。相信会自学的孩子,都有这种情况,那就是在学校开课前,你就自学过了某门课程。那么等到开课以后你就可以逃了,我就是这样逃了Linux编程的课。当然你要清楚的了解自己到底掌握了多少,不要自己是一知半解,还自以为懂了,就不听课了。其实要逃这种课,你也不需要懂得太多,你只需要保证你比老师讲课的水平高就行了。我们有的老师,水平真心烂,不逃课对不起他。9 A4 Y4 L3 l; D3 W8 @5 S) N
- ~# @4 X: c8 v9 W' i) q3 W: e
但是很多学生总是走极端,说到自学就一点课都不上了,看不起学校的课程安排。自己在寝室学个把月就能轻轻松松地做出网站或者APP。但是我想告诉你,你能做到的,别人同样能做到。有一句话说的很好:0 ^( v( ~: Z1 @& Z& D, F2 y
' e: ^3 b/ T1 d" z# e( H
你的工资不是和你的工作时间成正比,而是和你的不可替代性成正比。( }& O/ ^3 A# D! N% z
# ~) f1 h2 n; g, d
你和培训机构几个月量产出来的程序员差别在哪?仅仅是你没有给培训机构交学费吗?但你的技能和他们是差不多的啊。所以说学校教的基础课是很重要的,最直接的好处就是笔试,笔试考的就是基础。然后这对你长期的职业发展也是很有帮助的。你工作几年之后(可能就是一两年),发展肯定会遇到瓶颈。2 @3 s+ i5 R/ }6 `! T
8 z% K8 j4 ^6 l- ?! _. }) T- A所有互联网大厂都是不会来我们学校所在城市(南昌)招聘的,我们要想面试这些企业都要去省外城市(比如武汉)。异地面试也是给很多人心中造成了无形的压力,觉得跑这么远,要是面试失败咋办,觉得不仅丢了钱还会丢面子。其实很幼稚,每个人都应该尽自己所能找到最好的工作,没必要想这么多,你丢掉的钱,迟早会得到更丰厚的回报。你丢掉的面子,迟早也会获得欣羡的目光,最差的情况你也能告诉自己“努力过了,争取过了,失败了也不后悔”。 : `; c" g5 i6 p' F' b3 @, a. D1 J7 t$ X0 r6 h8 |6 l p
想我当初可是在武汉面试蘑菇街一面就挂掉了,然后三天之后又收到了腾讯武汉面试的短信。你说我去不去? % O4 I5 B+ v# z* x* B/ X& \# f9 E( ?, g2 ^0 B* d- Y6 V, j
“蘑菇街你都挂了,你还要面腾讯?”9 [& P; n A: g8 D0 n# c: O. R
9 A f9 `9 U; w! A我去,我一定要去。$ X8 H3 E3 }* X) p
6 B! d# l6 F( Y Z e8 C! E还有一点就是不要害怕自己学校差(普通一本甚至二本),不要嫌弃自己学历低(本科)。首先研究生们在算法岗方面确实你本科生有优势,但是在开发岗上并没什么差别。然后大公司招聘虽然喜欢招聘名校的毕业生,这只是因为仅仅通过半个小时或一个小时的面试,面试官真的很难了解到你的全貌。而如果你是名校的学生,那么无形之中就在证明自己的能力,首先你能考上这个学校就说明了你的学习能力,然后这个学校师资力量,办学条件十分优厚,确实能助力学生的成长。如果你学校一般,那么面试官可能觉得你学习能力有欠缺,或者觉得这样一个学校并没有好的条件去培养你。5 Y- D9 ^. @; d4 j* A' J/ O0 k
* L" }% C* w D# z1 M$ L
但是这绝对不是全部。你是普通学校的学生,并不代表你没有足够的学习能力,没有掌握足够的职业技能。你需要做的仅仅是努力向面试官展示出你的学习能力,你所掌握的技能就好了。我有一个老乡,二本学校,但是去年收割了BAT的offer,其中霸面百度拿了specialoffer。他大学期间就做了很多事,做了很多项目,还开办工作室等等。这些大学经历以及项目经验写到简历上,和面试官一聊,那么面试官真的不会在乎你是什么学校什么学历的(网易除外)。 $ i. z9 P5 W. @) R ) E6 D# p* B3 s4 L ]) g同学们,鼓起勇气,干巴爹。6 {) `: c" L8 o. R( I