有了大的学习目标后我突然间没有了选择恐惧症。患得患失的心态突然间从我心里消失了。
1、操作系统、数据结构、算法、网络等基础技术应该在大学时代深入学习,如果毕业了你还没有掌握这些内容,那就随用随学好了。学习这些基础理论极为枯燥,只有实际工作中的需求才能给你最大的学习动力去掌握这些艰深的内容。
2、至少要掌握一门静态语言,比如 C、C++、Java、C#、Objective-C 等。至少掌握一门动态语言,比如 Python、Ruby、PHP 等。
3、推荐学习一些同时具备动态语言和静态语言的特性语言,比如 Go、Swift、Scala 等。这样你会对面向对象编程、面向过程编程、编译型、解释型语言有更深入的了解。
4、系统的构建自己的知识体系,而不是局限在某个点上。经常有读者问我,我前几年一直在写 VBA/ActionScript/Delphi/SQL ……现在项目组突然不再采用这些语言了,怎么办?很多人难以预料未来技术的走向,但是你至少要构建自己的技术壁垒和平台。学习 Java,就应该构建你自己的 JavaEE 平台;Objective-C 对应 iOS/OS X 开发平台;C#,对应 .Net 平台,SQL,对应数据库平台。如果你在用 ActionScript,那你不应该局限在 Flex 上,你对应的是整个前端平台。
立足平台,你会站得很稳。立足一个点,你可能摔的很惨,就是这样。
5、主动选择技术方向比被动等待好。根据自己的兴趣和技术的发展主动选择,就像小明一样,有时候放弃也意味着得到。
6、不要过于追新,不要每出一门「颠覆性」的语言或技术都投入精力物力。追新的后果很可能是该学的没学会,不该学的学完也忘了。我有一哥们,我们都在写 JavaScript 的时候,他认为 Java 新推出的 JavaFX 才是前端的未来……然后就没有然后了。我们都用 Java 的时候,他认为 ERlang 是才是编程语言的未来……然后就没有然后了,可谓一步早,步步早,让人扼腕叹息。
7、也不要过于保守,比如 Go、Swift、Docker 等技术,我个人以为是值得投入时间和精力的技术。