第2章 入门:技术是成长的根基
本章想要强调:技术是成长的根基。程序员以编程技术安身立命,无可避免地要投身到技术专研中。
相信很多读者不是计算机科班出身,但对这个专业保持兴趣。我们不妨探讨一下一个计算机专业的本科生如何在本科阶段科学、规范地接受系统的计算机教育。
大一时,通常会被要求学习C或C++语言,它们是贯穿大学四年编程知识体系的基础编程语言。有人会说:“我不学C或C++,直接从Java学起,照样不影响就业”。这当然也是可以的。以厨师作为类比,不学基础刀工的厨师照样可以把菜做熟,但他逐渐会发现,在厨艺精进的过程中,还是要返回来学习基础刀工的。在编程中,C/C++就是基础。大一时,对C/C++的掌握能达到实现一些中等难度算法的程度即可。
一些悟性较高的学生,在大一时就想成为计算机精英,会动手“刷”ACM竞赛题库,或者再学习HTML、JavaScript、CSS这3种基础的前端开发语言。学习前端开发语言能让你获得制作网页的技能,然后你就能通过这个技能做一些兼职工作,在提升编程技术的同时,还能带来不错的报酬。
大二时,计算机专业的学生就要展开学习计算机网络、算法、数据结构、数据库等核心课程了。算法在一定程度上可以代表一个程序员的编程能力,没有一个互联网公司会轻视一个算法设计水平很高的计算机人才。数据结构对于一个想要从事后端开发的程序员来说相当重要,因为后端程序员要在数据上花更多心思,很多实战业务场景能通过对数据结构的优化来达到改进效果。数据库知识和数据结构知识关系密切。
掌握计算机网络知识是程序员的一个重要基础素养,有些人在成为程序员多年后甚至都不知道什么是网关、IPv4和IPv6的应用场景和社会意义、数据是如何传输及交互的,以及TCP和UDP的差别与各自的优劣等。在现在的计算机岗位招聘中,几乎所有福利好、待遇高的大公司都会关注计算机基础知识。
大三时,计算机专业的学生开始确定自己编程的主攻方向,比如是选择做后端,还是选择做前端?是在Web端,还是在移动端?在Web端中,应该选哪个流行的技术框架?是Vue,还是React或其他框架?对于移动端,是进行Android开发,还是进行iOS开发?另外,要考虑是否真的适合从事编程工作,若感觉不适合,则可考虑从事与编程相关工作,如测试、运维等。上述这些问题应该在大三期间逐个考虑清楚。
到了大四,即将走向职场,这是一段宝贵的缓冲期,一定不要浪费。凭借应届生的身份找到一份不错的实习工作,可以成为日后进入大公司的“敲门砖”。如果说大学是人生中的一块强有力的“跳板”,那么一份好的实习工作是从学校走向社会的强有力的“跳板”。选择以后留在哪一座城市工作和生活?选择在哪一类公司里发展?今后是想成为技术专家还是想转至管理岗?把这些问题考虑清楚以后,就可以停止向家里要生活费,通过计算机技能来养活自己了。
在第1章重新认识程序员这个职业之后,第2章将关注技术,夯实基础、回归细节。