首先,你要学好英语,至少研究生入学考试的6000多词汇量。因为你以后要看大量的英文资料。(了解技术的前端)
其次,你要学好基础课,汇编、C语言、数据结构、算法分析、离散数学、数据库、网络工程等,目标是不断逼近100分。因为你以后工作中遇到的所有故障和缺陷都和这些有关系。
然后,你要认真完成老师课题,最好从大一开始就定一个自己的课题,比如我要在大学四年完成一款在线手机游戏、在线聊天APP。做的过程中你要去参考开源项目、设计模式、软件工程、团队协作等等。当你完成了一个课题后,你就知道自己要不要吃这碗饭了。
通过查阅资料作为软件工程学生大致需要掌握以下一些技能点:
1.面向对象程序设计(OOP),并会通过具体的编程语言(建议Java和C#二选一)实现。如果要入门,推荐网易云课堂北京大学唐大仕老师的《C#程序设计(上)》。《C#程序设计(下)》10月12日开始。不过这个课程比较基础,需要进阶的,可以学习北京理工大学 @金旭亮 老师的《面向对象软件开发实践之基本技能训练》和《面向对象软件开发实践之专业技能训练》。不过真的有难度。Java的话可以考虑浙江大学 @翁恺 老师的《程序设计入门—Java语言》与《Java语言程序设计进阶》。当然,顺带掌握语言相对应的 IDE,如 Visual Studio 或者 MyEclipse。
2.基本的数据结构与算法。可以看网易云课堂上浙江大学陈越老师和何钦铭老师的《数据结构》。也可以看学堂在线上清华大学邓俊辉老师的《数据结构》。
3.数据库,至少掌握SQL以及一个主流的DBMS(MySQL,SQL Server,Oracle等)的使用,具体种类取决于你打算主要发展的技术路线,如你选择C#,那么可以考虑SQL Server。如果需要更进一步的提高,如如何设计较好的数据库,可以学习王珊《数据库系统概论(第5版)》中关于数据库设计规范(主要是范式)方面的章节。当然需要大量范例做补充。可以看看 http://toutiao.io 或者博客园上的文章。
4.设计模式。学了这个你才能很大程度上加深对于OOP的理解。可以《Head First设计模式》或者中南大学刘伟老师的几本设计模式书入门。
5.软件工程。推荐@邹欣老师的《构建之法(第2版)》。也可以关注他的微博。还可以看爱课程上清华大学软件学院@刘强老师的《软件工程》课程。
6.软件测试技术。基本概念可以看同济大学软件学院朱少民老师的《软件测试方法和技术(第3版)》,他在网易云课堂也有相应的课程。也可以上Coursera 学习南京大学软件学院陈振宇老师的课程《软件测试》,不过有难度。现在也有不少公司开始注重单元测试,各种单元测试框架(如xUnit)学习起来都很简单,难点在于用例的设计,而用例的设计是建立在各种软件测试方法(等价类、边界值、判定表等)基础之上的。
7.一些软件工程方面的辅助工具,如版本管理工具 Git (经常和 GitHub 一起出现),推荐廖雪峰的教程,如果英语水平好也可以看这个:http://campus.codeschool.com/courses/mastering-github,JIRA 等缺陷追踪系统等。
8.最好掌握UML。可以学习Coursera上北京大学的《面向对象技术高级课程》,非常好。
9.最好掌握一门Web编程语言(http://ASP.NET/PHP),JavaScript和一个前端框架。这个资料就很多了。也可以看 金旭亮 老师的课。
10.Office三件套——Word、Excel和PowerPoint。看过不少准毕业生甚至工作了几年的毕业生做的文档和幻灯片,无论从低劣的审美上还是粗糙的格式上简直都让人无法直视。