一路走来,我是看着学姐的背影成长的,希望有一天我也能成为别人的背影~
虽然我成绩差,智商低,又丑又懒,但我踩过的坑多啊。所以把踩过的坑分享给下一届学弟学妹
文章结构:
[注意事项] 1.儿童必须在成人监护下使用。
2.如同时看到其他相似文章,使用本文前请咨询导生。
3.服用后若产生不适,或刺激症状或病情加重,且持续时间超过72小时,请停止使用或向导生咨询。
序
首先欢迎各位报考电子科技大学!
如果你在高中获得NOIP的金牌或者其他学科竞赛是省队水平,或者你很小的时候就在小霸王上写程序,又或者你已经为Google写了很多年的程序,本文的信息量以及作者自身的格局都入不了你的法眼,请尽早找到你的导生/辅导员/副院长/院长,和他们一起探讨。同时也希望,你不要用自己的优势去影响同学们,说一些诸如“
心比天高,命比纸薄”的话。
如果你对本专业并不带感,但还想保持学霸的品质不动摇。你已经确定了你的大学生活由刷题,绩点,高分,保/考研,出国这些关键词组成,那么本文仅仅作为你的参考。
很多人建议我谈谈互联网行业的
钱景,可以“挑逗”起大家的兴趣,虽然我一口答应下来了,但写出来却是下面的样子:
不要替未来的你做决定,未来的你已经不是现在的你,不要把你现在的感受强加给未来的你。
人对未来的预测是不准确的,总是会高估或低估某些情绪,以及某些事件在未来发生的概率。
不管想做什么,去试一试,去开个头,不要害怕这件事投入大或者你能力不够。不要瞎预测,以为你做之前和做之后都是同一个感受,不是的,
大多数事情都是做着就有了感觉,就喜欢上了。
所以,先别想什么国内年薪至少12W RMB、美帝6W $起步之类的,编程试试看吧~
说给出国党听
【小广告:大信软正在筹办精英出国班,有兴趣的同学可以了解下~这是比较官方的途径啦】
先要确定到底
想申请Master还是PhD?两者的要求有很大的不同呢。大部分Master的主要目的是培养职业技能,因此一般对科研能力没有太多要求,主要看你是否达到了入校的最低要求。
满足这个要求的申请者其实很多,此时就看看GPA,TG之类的硬指标了。而PhD的话,就更要看你不同于别人的技能了,GPA就不是你的核心竞争力了~
Master大家都知道,比如最近美帝的Master就在风口上,成功的话一年留学花的钱,在美国工作两三年基本就回本了~(切记,虽然在风口上,虽然门槛低,但有过硬的技术总比没有好)
这里主要想强调一下PhD,不要想着PhD就真真是搞科研了,按照现在工业界的需求,很多PhD也去工业界了啊。当然,从Mentor的角度讲,如果不是真心搞科研,何必读PhD呢~我只是提供不一样的视角。
如果是申PhD的话,出国前你
可以花一年时间
去MSRA实习一年(大五?),这一年的实习经历可比你本科四年那些水奖和GPA要耀眼多了,如果你的目标是TOP10 CS名校这样的,总得有个这经历吧~(但我也没说申请MSRA的实习很简单);当然,你本科期间发了篇顶级paper也是可以的。
不过话说回来,你要是只把出国当跳板,当我啥都没说。
但是呢,家里条件如果负担不起的话,不要太任性。(这里的“负担不起”是指砸锅卖铁那样的负担不起)如果
不为国外工作、定居的话,保研肯定比砸锅卖铁出国来得划算。当然,并不是说条件不好就一定出不去,很多项目、路子都能走。同样的,我只提供不同的观点,自己多了解吧。这里推荐
一亩三分地论坛,干货很多,用了都说好~还有我们成电
清水河畔的出国留学版面。
多说最后一句,分数最好通过正考就考好,不要寄希望于到时候刷分。万一你的申请全都被拒了呢?那时候想保研都搞不定了…你说你考研?( ̄▽ ̄)” 你看本专业清北复交的考研名额加起来有80人没~
(学术界的不同阶段)
说给学霸们听
条条大路通罗马,罗马城里多学霸。这条路的确代表主流的分配方式,而且机会成本低,几乎是高中的无缝切换。坚持走下去一定没问题。
关于考研/保研的问题,我没有评估过,所以大家请教导生咯~
(个人觉得靠抱大腿,水论文等方式竞争保研资格的人,到底还是没有 正儿八经考研 或者一直很优秀的人踏实。)
噢,对了,
学霸可以,学婊不要,也不要见不得别人好,等你长大了你会发现,有个比你优秀的朋友,其实是一件很省心的事。
最后,
恋爱要趁早,学习要搞好。
不对,还有一件事(你们这些学霸就是让人操心),现在的年轻人,特别容易出现如下症状,
看了一本比较经典的书以后,就觉得自己了不得了,一定不要这样!
最最最适合本文的读者~
本文最适合那些对专业有点迷茫,对大学有憧憬,想折腾出一点东西,但不太想走学霸路线的同学。这里有很多你可能遇到的坑,以及各种不同“技术流”对你的诱惑~绝对干货满满!
Computer Science 与 Software Engineering的关系?、
显而易见,软件工程是计算机科学的一个二级学科,而单拎出来招生的二级学科学费都比一级学科贵(逃
但这只是概念上的划分,实际的授课中,我们可不是只研究“需求分析、软件设计……”这些,毕竟没人会让一个应届生去直接带一个项目,我们又不是工商管理/财务管理/XX管理
所以说,我们信软学院学的是 计算机科学与技术 专业课程的一个子集,为什么是子集嘞?因为所选方向不同,可能会少几条内容,比如:有的方向不学计算机网络,有的方向不学计算机图形学,具体内容等培养方案发下来了你自己去看咯…
不过不同于 计算机科学与技术 专业的同学,除了正常的教学,
我们的大学生活有很大一部分是实习,这一点蛮实用哒,具体细节问导生咯
知道这些你心里是不是开心点啦 ? 百度知道和百度贴吧只能告诉你“
计算机科学偏理论,软件工程偏应用”! 然而这句话并没有什么卵用,我当时看的时候仍然分不清这俩有啥区别,而现在泥萌好歹能分得清内容上和形式上的差异了。
当然,关于本专业中更具体的方向(嵌入,软技),我的观点是“
小孩子才看方向,大人只看年薪”,毕竟学校的授课内容不能直接变现,工作中用到的东西,还是得到企业里去学。(我们信软安排的实习就显得特别给力,相信我,根据我获取的信息,
实习方面我们做的比复旦软院还要好)
但话虽这么说,我觉得泥萌自己心里肯定有自己的评价标准,比如认为我电的强项偏弱电,所以跟着嵌入走比较有前途;信工有点通信工程的 {MOD}彩也是我电的王牌,巴拉巴拉这些的…那就是你们自己的事了。
关于软件工程这一学科,
习而学的软件工程教育 这篇文章写得还是很中肯的,大家可以作为补充。
(习而学版 所有专业必修课的安排)
什么是本科生该习得的专业能力?
我们今后是要
就业的,但只要是软件/互联网 这个类别(领域内HR、PM请走开…),不管是学术界还是工业界,本科阶段干的事都差不太多,因此这里从行业的角度谈谈专业能力的问题,到这里就暂且忘掉与CS的差异吧。
我们这个行业呢,大概有两类问题,
能解决其中任何一个问题的,其实都算数。
一类是理论:算法,数据结构,复杂度,机器学习,模式识别,巴拉巴拉~。另一类是系统:操作系统,网络系统,分布式系统,存储系统,游戏引擎,巴拉巴拉~。
理论走的是深度,是在追问在给定的计算能力约束下如何把一个问题解决得更快更好。而系统走的是广度,是在追问对于一个现实的需求如何在众多的技术中设计出最多快好省的技术组合。
对应这俩能力,本科生该怎样提高?
你看,这就开始又有差别了,有差别就会产生分歧啦啦啦。
为什么嘞?因为我们这行知识多噻,大家总是不愿意去学新东西,为了给自己的懒惰找借口,他们就发起了不同程度的“圣战”——Surface ,MacBook ,ThinkPad的设备之争, Linux 与 Windows的平台之争,函数式与命令式的编程范式之争,IDE 与文本编辑器的 开发工具之争,Vim 与Emacs的最好编辑器之争,PHP是不是世界上最好的语言?人生苦短,是不是要用Python ? C++好还是Java好?开发Web是不是真的迫于生计?
(一下看到这么多名词是不是很开心?喜欢的话就一个一个去
维基百科搜一下呗~
打不开?请学会
科学上网——Chrome+红杏出墙;VPN; ShadowSocks)
面对这些圣战,
千万不要无聊地加入其中。保持一个开放的心态是很重要的,我们可是互联网领域哎!
(程序员的鄙视链)
当然啦,在你学了C++,而另一个同学却在搞Java的时候,你可能会不自觉地有排斥心理,然后你的关注点都会变成: “C++这也好,那也好;Java这也不行,那也不行”,“我学的东西是有用的,有前途的;他学的技术是过气的,要被淘汰的”。
千万不要这样!
这种念头偶尔可以想一想,但别让它在你的内心发芽,否则直接否定另一个领域是很吃亏的一件事,
你可才只是本科生啊!
反正将来,语言你都要会,平台的差异你都要知道,为什么要断送自己学习这些东西的机会呢?你真的以为不知道垃圾收集的原理,和一些底层的、可以通过C++的练习而得到的操作,你真的可以在某些关键时刻操纵好Java吗?当然有些人会觉得,我估计一辈子不会遇到这些问题的,所以我们还是不管他了~
(纠结选哪种语言?)
但是,但是,但是,即便你再有开放的心态,有一道坎是不能用心态解决的,因为它会有更根深蒂固的“阵营心态”——这就是前面说到的
理论
和
系统/工程 这样大方向之间的差异。比起用C++还是Java,这方面的纠结才是让人恼火哒。因为编程语言和工具的转换成本还是比较低的,虽然也要花些功夫。但理论 or 系统 ? 这样的决定,让人感觉影响就比较大了!
本着
先问是不是,再问为什么的原则,我先给大家摆事实:
搞理论的话,本科期间显然就是
参加ACM-ICPC了。这是一个江湖,既然是江湖,就有武林高手,有定期的英雄大会(regional,finals),有各大门派(学校,如国内7大门派——THU,PKU,SJTU,FDU,ZJU,SYSU,
UESTC),有武林盟主(国内的ACRush,国外的Petr和tourist),有武功派别
(数据结构流,几何流,等等),甚至还有各种秘笈(各大学校内部题表和模版),江湖上经常流传各种谣言和八卦,各大高手和江湖小虾们躲在宿舍黑暗的小黑屋里,修炼自己的绝世武功。
搞好的话保研加分哦 ! 不过它的初衷是让有
兴趣研究算法的大学生锻炼思维能力。而且光想着保研加分的话,它的性价比是最低的…
当然啦,如果你天赋异禀,本科期间就
发paper也不是不可以。(你看清华就没太把ACM-ICPC放在心上,大牛们直接去搞科研的居多)话说回来,ACM这玩意可看智商,看天赋,拼数学。所以这项比赛是我电 数学学院 引领潮流而不是 计算机学院 或 信软学院,你要做好长期被打压的准备。
搞系统的话,就是造轮子,拆轮子。自己做点小东西(iOS,Android,Web),模仿别人的设计做个东西,看看大牛们的代码。你可以自己搞,也可以加入创新工坊的一个工作室,如果你水平高的话,还能搞点零花钱。但这玩意就没有量化的标准了(其实有,就是上
Github上为开源项目共享代码的行数,但初学者贸然接触开源的玩意,没啥意思),也没有保研加分的政策了,所以如果不是真爱的话,一些人兴趣磨灭以后也就放弃了。所以比尔盖茨说,看到现在学编程的人经常都把编程看作解各种脑筋急转弯的问题,他觉得很遗憾。
再详细说说这俩部分
这俩兄弟之间依然是有鄙视链的…我们行业不是一个和谐的行业~同行之间都是赤果果的鄙视
一般人都会认为ACM很牛~学霸这么想的,学校也是这么想的,因为考智商,能拿奖,可量化。
先给他们一闷棍 ——
ACM的局限性!
对于学术界,这玩意只是奇淫技巧,入门级的游戏。我并没有看到过神经网络,机器学习的算法出现在ACM的题目中~
对于工业界,工作中大部分复杂的算法都有现成的库了, 不需要自己实现。会用到的基本都只是一些很低级别的算法, 比如二分, 简单hash, 或者用map建立一个索引。这一点也常常作为北大青鸟之流或者普通院校的老师的论据~
再给做工程的同学一颗糖(or 闷棍?) ——
被误读的工程
说到工程, 很多人就觉得是查文档, 调接口, 以为就是体力活,所以有了“码农”这个说法,还有一句名言“
我们不生成代码,我们只是Github的搬运工”。
写工程代码确实不少时候就是查文档, 调接口, 但是其精髓应该是隐藏在这些接口后的
设计哲学, 这种东西光看文档和接口是看不出来的, 得真正自己去挖掘, 去动手写自己的代码, 去认真读别人的源码。
不要把工程这个坑看得太浅噢,工程的魅力在于对项目的不断提炼,对代码的不断重构,它的设计哲学是最美的。一听到“设计”、“哲学”的组合词,这个坑就不会浅~ 一定要多写。
注意!!这可不是写完一个俄罗斯方块以后,又完成了贪吃蛇这么简单的转化。如果只是
这种程度上的“开发”,我觉得你
写一个项目和写100个项目没啥区别,无非是这些游戏的逻辑知道多了一点,API熟悉一点,还是处于入
门的程度,低端码农的程度,廉价劳动力的程度,依然会被人瞧不起的…
当然,你做完基本的俄罗斯方块,加了华丽的效果,代码量很足了,这已经值得肯定啦。但你想想,做个俄罗斯方块的AI,是不是更厉害呢~当然,这玩意就涉及算法了。所以你也可以开始想模块化的问题。怎么做一个游戏用的GUI库?怎么做一个游戏用的脚本引擎?怎么给他们制作工具?怎么写一个游戏引擎?怎么写一个RPG Maker?
造轮子,量要足,难度要够。
多造轮子,但不要重复造相似的东西,要造有含量的东西!不然你也觉得无聊不是?等你熟悉以后,那种一折腾需要大半年的那种轮子,是最好哒~比如自己写个图形库,自己搞个IDE~
还有一句话要注意“
不要重新发明轮子”,这句话不是“不要重新造轮子”。原文的目的是要你多看书,多见识,不是让你眼高手低的!!。
无论如何,请你务必要相信:
当你轮子造的多了,你就拥有了整个世界!
再给ACM的同学一颗糖吃~
ACM中的一些基础算法技巧(比如二分, 单调栈, 单调队列, 线段树, 强连通等), 能让你更加抽象和理解你做的东西的本质。而且ACM上手以后,
至少不会走上邪路,也属于康庄大道(当然,你
只练ACM的话,写出的代码会有点丑),不像上面的工程同学,如果你一直被当作廉价劳动力,自己却还乐在其中,就只能成低端码农了…
举个栗子~有一堆地图数据, 由点和边表示, 边是有向的, 本来这张地图上的点是应该是相互能够走通的, 但是数据出了问题, 需要把不能走到的点给报错出来。(简化了一下下)
学过图论话,稍微思考一下, 问题就是“一个有向图, 求连通性及报出孤岛和断边”。一个
tarjan算法就搞定了。
再来一个栗子:
在一个大型项目中, 有一些小模块。 模块间相互依赖, 现在这些模块出现了死锁, 需要你安全地解除死锁, 这里安全的定义是如果模块A依赖模块B的资源, 那么一定要先关闭A再关闭B,就酱紫。(同样化简了一丢丢)
也是看似复杂的任务, 其实稍微提炼一下就会发现模型是一个
拓扑排序。
在一些小问题上, ACM能让你把问题考虑的更加抽象, 你能学到更多, 而不是单纯的停留在需求本身。
现在你对这俩兄弟有个大概的印象了吧?
对于路线问题,先
不要急于给自己下定义,分类别。每个领域都可以去试一试,管他理论工程,前端后台,C/S还是B/S,尝试一下你不上当,尝试一下你不吃亏~毕竟我们还年轻,有时间去试错,去找到自己喜欢的方向。铺垫那么多学科知识,就是为了让你对编程有一个正确的了解,没有宏观的把握,很容易迷失哒!
第三个选项?
但凡有点国际视野的童鞋,就会去看看美国那些CS名校是咋教的。对照一下它们的课程体系和本学校的专业课程体系,会发现基本上差不多,所以至少这些专业课的设置是没有问题的。但是!但是!我们学习的深度根本就跟国外不能比啊!我们一个学期七八门课啊,国外是一个学期顶多选三门课啊!
所以这里给一个建议,就是按
美国的标准学好专业课(可以去
Coursera或网易云课堂,网易公开课跟几门MOOC)——
(计算机专业体系)
学《计算机组成原理》,就自己设计一个CPU,至少做一个单周期的,有余力就做多周期和流水线的;
学《编译原理》,就搞个LINQ编译器+运行时库;
学《操作系统》,就自己写一个操作系统Kernel;
学《数据库原理》,就自己写一个小型的数据库管理系统;
学《数据结构》,就去ACM 的
OJ上做几道题。
确实,这样的话相当于
每门核心专业课的大作业都是项目级的了(大一上用C语言实现的学生信息管理系统不叫项目…),
但你在985院校啊!你在985院校啊!你在985院校啊!你不能按那些普通院校的标准要求自己啊,
有些课程所在方向未设置的话, 请自行补全。
确实,这些领域每一个都自成体系,每个领域都足以花费一生去研究。
但你只是本科生啊!但你只是本科生啊!但你只是本科生啊!本科阶段夯实这些领域的基础,以后不管是选择研究方向,还是做工程时遇到的底层问题,有个了解总比啥都不知道强啊。
哪个领域热门?有前途?你个小本科生操什么学术大牛的心啊。
我用一个简单的例子回答你:
毕业后去阿里好还是腾讯好?
这俩公司哪个不都是多少年的企业了?在哪学不到东西?
你是去当小兵,又不是去当高管。所以说,不能浮躁,
不能事事都想找出个最优选项,你才大一,确实没必要~打牢基础,学好数学、英语才是正道。
(你可能需要点的技能树)
如何入门编程?
上一小结把本科中大致走向介绍了一下,不过…喂喂,学弟学妹还不会编程哎!
我可没打算用一篇文章把大家的编程带入门了…
先普及概念啦啦啦,这时候再忘掉本科的路线之争吧~忘掉刷题的学霸,忘掉工作室的大神,忘掉保研,出国巴拉巴拉,我们谈编程!
优秀的程序员应该具备两方面能力:
- 良好的程序设计能力:
- 掌握常用的数据结构和算法(例如链表,栈,堆,队列,排序和散列);
- 理解计算机科学的核心概念(例如计算机系统结构、操作系统、编译原理和计算机网络);
- 熟悉至少两门以上编程语言(例如C++,Java,C#,和Python);
- 专业的软件开发素养:
- 具备良好的编程实践,能够编写可测试(Testable),可扩展(Extensible),可维护(Maintainable)的代码;
- 把握客户需求,按时交付客户所需要的软件产品;
- 理解现代软件开发过程中的核心概念(例如面向对象程序设计,测试驱动开发,持续集成,和持续交付等等)
嗯,我只是先介绍一下名词,好歹以后看到知道怎么回事,不然多丢人,啊哈哈哈…
我并不觉得高考后的暑假可以让你一跃成为大神,所以这里只谈
启蒙阶段。
启蒙
深呼吸,我们要开始啦!
先看段视频呗:
What MostSchools Don't Teach
下面我来给你洗洗脑~
编程很酷
You can code. They cannot. That is prettydamn cool.
– LearnPython The Hard Way
不要浮躁
Bad programming is easy. Even Dummies can learn it in 21 days. Goodprogramming requires thought, but everyone can do it and everyone canexperience the extreme satisfaction that comes with it.
保持兴趣
Most good programmers do programming not because they expect to get paidor get adulation by the public, but because it is fun to program.
– Linus Torvalds
再来点具体的~
我们信软没有
计算机导论 这门课,和编程有关的直接就是C语言了,我觉得不好,暑假补一门公开课吧:
MIT 计算机导论课(如果你英语不过关:
麻省理工学院公开课:计算机科学及编程导论)
Harvard CS50 (如果你英语不过关:
哈佛大学公开课:计算机科学
cs50 )这门课与MIT的导论课互补。教学语言涉及 C, PHP, JavaScript + SQL,HTML + CSS,可以很好激发学习计算机的兴趣。
看这两门课的时候,可以用
Codecademy 把 Python的操作熟悉一下;
学C语言的时候呢,不要看谭浩强的书~
C语言编程 或者
C和指针 都不错,要看书噢,要敲代码,具体细节问导生咯。
编码的奥秘 这本书也可以放进待读书目啦,这样你对整个计算机架构就有个了解啦啦啦
Computer Science: An Overview 这本书是清华第一学期要看的书,对计算机科学有了系统的介绍~
结束启蒙阶段后,我们积累了一定的代码量,对编程也有了一定的了解。这时你可能想去学一门具体的技术,诸如Web,Android,iOS什么的,尝试做一些尽可能简单的东西吧,给自己一些正反馈,补充自己的推动力。
但你肯定会问Web开发这些怎么学…学校有选修课,网上也有那种入门级的视频,也可以看书自学~
技术怎么搞?边实践边学习!
以做网站为例,首先你可以看看《Head First HTML5》和《Head First PHP & MySQL》,或者用Codecademy,学会基本操作。然后找一些作品,比如WordPress,和它的一些经典模板,去看别人是怎么做的。然后,你 就可以自己设计一个小网站,尝试把它做出来。
不用等什么都学会了再开始做。做的过程中,你遇到什么障碍,再有针对性地去学习和解决。
做完了是吧?
但别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习
计算机科学核心基础知识的时候,抄近路是不对的~
你搞搞技术可以,但你一定要把通用基础知识搞明白 ! 特别喜欢这些玩意?
我不管,我不管,我不管,反正你要把基础打好。
方法
嘴上说只讲启蒙,身体却很诚实嘛…
两条路线~
1. 特别喜欢编程的,打心眼里喜欢的,比如
@vczh ——
先写再看书
轮子哥说过:“
像设计模式这种需要大量经验才可以领悟到的知识,如果你从来没独立写过一个上万行的程序,你觉得你能理解设计模式在讲什么吗?你不能!我觉得这种时候能做的也就是背下来,理解什么的都是扯淡。
但当你把项目做得越大、越复杂、算法越扭曲、界面越华丽、尺寸已经大到你觉得不学习新的方法论就肯定会让代码失控的时候,这个时候你来看设计模式的书,保证是每看到一个模式都觉得人家说到你心坎里去了。那你不仅可以迅速理解,而且以后还可以不由自主的想起来使用它。”
但是嘞,这期间会有太多的事让你中断这一行为了,如果不是真爱,一定坚持不下去~
2. 普通用户 ——先看书再编程
这个就容易理解啦~符合我们的认知规律,不再赘述。
一个根本途径——刻意练习
我有这个必要告诉你们一点,人生的经验~
知识分为舒适区,学习区和恐慌区。舒适区——轻松搞定;学习区——大量投入;恐慌区——无从下手。所以我们练习的时候,要尽量把题目都安排在学习区这里,这样才能让你进步快的同时,还不会被问题打倒。
豆瓣上有个叫
心智工具箱的系列~
还有刘未鹏的《
暗时间》,都是讲认知科学的,有兴趣可以看一下~
参考资源:
@萧井陌、
@Badger 编程入门指南v1.4
@左耳朵耗子
程序员技术练级攻略
@vczh
如何成为牛逼的程序员
这是几篇比较有质量的入门攻略了,可以参考一下,具体细节问泥萌导生哈。泥萌导生可是身经百战了,见得多了。
其他的各种资源,自己搜罗咯,智商能低,情商能低,搜商不能低!
资源分享
知乎上,有哪些计算机科学与软件工程方面值得一看的问答?
知乎上,前端开发领域有哪些值得推荐的问答?
看不看先存下来,万一无聊的时候想看了呢!
对了,关于是下载电子书或者自己买书的问题,
不要道德帝,不要玻璃心!要懂法律:
中华人民共和国著作权法释义 (第22条)
第二十二条 在下列情况下使用作品,可以不经著作权人许可,不向其支付报酬,但应当指明作者姓名、作品名称,并且不得侵犯著作权人依照本法享有的其他权利:
(一) 为个人学习、研究或者欣赏,使用他人已经发表的作品;
(六) 为学校课堂教学或者科学研究,翻译或者少量复制已经发表的作品,供教学或者科研人员使用,但不得出版发行;
关于书籍的选择
其实仅仅从入门的角度讲,你能学到的那点知识,网上随便那种博客都能满足你。但为啥我们总喜欢黑谭浩强呢?(这一次,谭浩强重新发明了C语言)因为即便知识有了,内功不扎实,对算法或者工程都没有益处,所以国人写的那些书,还是尽量不要看了~看看经典的吧 !
而且你想,你让我跟你推荐本书,我肯定也会说比较经典的啊,你一查,发现这书牛哎,是不是对我的信任度也就高了呢? 面试的时候,如果面试官问起来看过啥书,你说出来那几本经典书的时候,这也是加分项。不信你看
怎样花两年时间去面试一个人
关于书单,有一份比较好的总结,请参看
程序员必读书单
跋
这里就是一些老生常谈,老调重弹了~ 如果你有耐心看到这里的话,坚持看完吧~
不积跬步,无以至千里;_______________。(请填空)
本科生找工作和研究生不一样,基础是最重要的,竞赛成绩和项目经验乃锦上添花。
本科生找工作和研究生不一样,基础是最重要的,竞赛成绩和项目经验乃锦上添花。
本科生找工作和研究生不一样,基础是最重要的,竞赛成绩和项目经验乃锦上添花。
什么样的年纪做什么样的事,就是最好的安排。
这句话对应想表达的意思就是:在该打基础的时候要好好打基础,不要追求一些浮夸的东西。你现在走的捷径,以后会有多达十倍的弯路等着你绕。
互联网行业最大的包容性在于它可以接纳各式各样背景千态、水平不一的入行从业者。对于CS/SF专业学子来说,是好的也是不好的现象。
你看人家通信工程啊,微固啊,这种科目属于
门槛高,没人教你学不会 的那种。EE的东西,光靠上课那点东西连门都入不了。只上过学校模数电课的人,做出来的板子压根就不能用,你以为按照书上的连线电路就能正常跑么?有时候跑着跑着就会自激震荡,这个时候又要具体情况具体分析。不同品牌的元器件即使参数相同也会在不同频率上有不一样的性能,怎么选择也是一门学问,这就已经不是电路图可以描述的了。
深入到微弱信号、高频那块更是一堆深坑。布线、电磁兼容、信号完整性分等等要注意的点都不是自己随便看看书,就能学会的,大多数人还是靠前面的人带着走的(当然,我电的通信工程是有这个实力带着走的)。而且,EE动手实践的条件更高,至少要有示波器吧。再加上实验过程中的随机性,它的门槛你懂了吧?
而我们就不一样了。从学科上讲,CS具有完备性的学科体系,是熵为零的,各种知识和模型都是自洽的,是为实际应用服务的,你写出来的代码是什么,运行出来就是什么。学习工具只要一台电脑也就足够了。从实际运用上讲,网上不管是电子书 还是技术博客也多得是。连大专学历的人也能码出很多代码,而且人家写SQL语句,调API说不定比你还熟。
所以
如果你不掌握核心科技,就会被无缝替换掉~
说真的,现在才开始搞编程,已经晚了一大半了 …极少数人能在本科四年完成超越,大多数人还需要研究生的积淀才能成为一名优秀的程序员,所以,要拿出高三的劲学编程噢 !
好吧…我是故意渲染了就业压力的 {MOD}彩,其实按照我们的择业标准,我们的意向公司是压根不会招那种培训学校出来的学生的,因为那帮人根本不能用,啊哈哈哈哈…
但我们专业的学生是不是搞好编程就真的成功了?不见得。所以我还是建议大家,除了计算机科学以外,
多接触一些经济金融方面的东西,往大了说可以 提高个人素质,往小了说,可以为转硕士金融或者CS PhD之后的Quant之路做铺垫。
《
计量经济学导论》、《
微观经济学》、《
期权、期货和其他衍生品》是三本很经典的书,当然啦,你也可以问你相关专业的同学~之所以写在跋里,是避免与主题造成冲突,但我个人觉得还是蛮重要的哈。当然,还有写作之类的
来个彩蛋!
根据 我电校友 ——目前是鹅厂的安卓开发主程 ——的介绍,校招要看如下内容!~
· 实习经历
· 专业成绩排名
· 专业竞赛成绩
· 高水平科研成果
· 校内技术团队/互联网企业俱乐部核心成员
· 国家级重点实验室核心项目成员
其实还有一个彩蛋!——送给出国党
你要出国,好歹得想清楚下面几个问题吧?
国内外CS教育的异同?
如果你想读研,你自身的兴趣点在哪个领域?
如果本科想搞科研的话如何起步?
保研vs 出国:
a)是否应该在国内先读研再申请出国?
b)应该选择保研还是出国?
c)导师的承诺是否可信 ?
如果铁了心想出国,
MasterOr Phd?
你好歹得知道一下
自费读 Master的费用开支
全奖PhD的就业问题
以及
美国博士要读多久才能毕业这样基本的问题吧?
想好了以后,那么
Master的话怎么准备?
PhD的话怎么准备?
不管怎么说,基础是最重要的!如果你核心专业课没有掌握,只是分数高,绩点高,那你叫
高分低能;如果你核心专业课没有掌握,只是鼓捣Web开发,Andriod开发,即便是参加ACM,也是
点歪技能树 ;如果你核心专业课没有掌握,只是这主席,那部长的,那你叫
不务正业!
有的知识可能你学完以后的很长一段时间里不会在实际工程中接触到,但请不要质疑这些知识的存在和意义,那只是因为你做的工程还不够牛逼。它们是一种烙印式的知识储备,否则当你真正需要用到它们的时候,会有一种技术盲从感。
虽然互联网行业是一个需要不断迭代知识体系的行业,但万变不离其宗,天才也是少数,最好还是一步一步来。共勉!