在我看来,你在大学前两年多方的试探,这是很不错的一种节奏(见“《逆袭大学》文摘——9.4 基础和应用的平衡中找到大学的节奏”),你可以继续按照自己的想法开展学习。
算法在计算机科学当中是一个重要的部分,对于学习计算机类专业的学生而言,自然也是非常重要的基础。就软件开发而言,有些工作是算法密集型的,离了好算法不能做,深入学习算法是一名大学生专业能力训练的必要部分。
然而,也有不少人将之扩大化和范化的现象。如果你已经有了自己的方向,且发现自己对算法并不算感兴趣时,算法方面的学习,做到了解,也就可以了。在应用软件的层面,有更多的工作,是业务密集型(实现应用特有的业务逻辑)和体验密集型(注重用户界面和交互功能)。这里有大量的工作要做。而软件开发不仅是写代码,包括项目管理、架构设计等很重要的事情,并非算法能力培养能解决。在这样一个大行业中,即使我们就盯技术,完全可以和有必要有一大批的人,在算法之外形成自己的核心竞争力,这是特色的体现。
所以,你可以将之前学习由于阶段性使然没有深入的部分做完,再选择一项将来值得追求的方向,更深入地学习下去。现实当中,有人死学理论,不顾应用,还往往将做应用这样一件事情看得很低,完全是忽略了软件项目的复杂性的表现。如果在毕业前就能深入某一项技术,做这一方面的专家,我觉得是一件可以做的事情。
如果从专业设置的角度,重算法还是重工程,或许就是计算机科学与技术专业同软件工程专业的区别。而就学生个体而言,选择可以由兴趣而定。作为软件工程专业的学生,你的选择是可以的。接下来的学习中,计算机科学、计算机组成和体系结构等方面的基础,还是要学,而自己的学习投入,在具体的技术之外,项目管理、软件工程,以及人文方面知识的学习和体验,可以更多一些。
http://music.douban.com/doulist/3993751/http://music.douban.com/doulist/3993779/
http://book.douban.com/doulist/3993850/
http://book.douban.com/doulist/3993886/