第2章 入門:技術是成長的根基
本章想要強調(diào):技術是成長的根基。程序員以編程技術安身立命,無可避免地要投身到技術專研中。
相信很多讀者不是計算機科班出身,但對這個專業(yè)保持興趣。我們不妨探討一下一個計算機專業(yè)的本科生如何在本科階段科學、規(guī)范地接受系統(tǒng)的計算機教育。
大一時,通常會被要求學習C或C++語言,它們是貫穿大學四年編程知識體系的基礎編程語言。有人會說:“我不學C或C++,直接從Java學起,照樣不影響就業(yè)”。這當然也是可以的。以廚師作為類比,不學基礎刀工的廚師照樣可以把菜做熟,但他逐漸會發(fā)現(xiàn),在廚藝精進的過程中,還是要返回來學習基礎刀工的。在編程中,C/C++就是基礎。大一時,對C/C++的掌握能達到實現(xiàn)一些中等難度算法的程度即可。
一些悟性較高的學生,在大一時就想成為計算機精英,會動手“刷”ACM競賽題庫,或者再學習HTML、JavaScript、CSS這3種基礎的前端開發(fā)語言。學習前端開發(fā)語言能讓你獲得制作網(wǎng)頁的技能,然后你就能通過這個技能做一些兼職工作,在提升編程技術的同時,還能帶來不錯的報酬。
大二時,計算機專業(yè)的學生就要展開學習計算機網(wǎng)絡、算法、數(shù)據(jù)結構、數(shù)據(jù)庫等核心課程了。算法在一定程度上可以代表一個程序員的編程能力,沒有一個互聯(lián)網(wǎng)公司會輕視一個算法設計水平很高的計算機人才。數(shù)據(jù)結構對于一個想要從事后端開發(fā)的程序員來說相當重要,因為后端程序員要在數(shù)據(jù)上花更多心思,很多實戰(zhàn)業(yè)務場景能通過對數(shù)據(jù)結構的優(yōu)化來達到改進效果。數(shù)據(jù)庫知識和數(shù)據(jù)結構知識關系密切。
掌握計算機網(wǎng)絡知識是程序員的一個重要基礎素養(yǎng),有些人在成為程序員多年后甚至都不知道什么是網(wǎng)關、IPv4和IPv6的應用場景和社會意義、數(shù)據(jù)是如何傳輸及交互的,以及TCP和UDP的差別與各自的優(yōu)劣等。在現(xiàn)在的計算機崗位招聘中,幾乎所有福利好、待遇高的大公司都會關注計算機基礎知識。
大三時,計算機專業(yè)的學生開始確定自己編程的主攻方向,比如是選擇做后端,還是選擇做前端?是在Web端,還是在移動端?在Web端中,應該選哪個流行的技術框架?是Vue,還是React或其他框架?對于移動端,是進行Android開發(fā),還是進行iOS開發(fā)?另外,要考慮是否真的適合從事編程工作,若感覺不適合,則可考慮從事與編程相關工作,如測試、運維等。上述這些問題應該在大三期間逐個考慮清楚。
到了大四,即將走向職場,這是一段寶貴的緩沖期,一定不要浪費。憑借應屆生的身份找到一份不錯的實習工作,可以成為日后進入大公司的“敲門磚”。如果說大學是人生中的一塊強有力的“跳板”,那么一份好的實習工作是從學校走向社會的強有力的“跳板”。選擇以后留在哪一座城市工作和生活?選擇在哪一類公司里發(fā)展?今后是想成為技術專家還是想轉至管理崗?把這些問題考慮清楚以后,就可以停止向家里要生活費,通過計算機技能來養(yǎng)活自己了。
在第1章重新認識程序員這個職業(yè)之后,第2章將關注技術,夯實基礎、回歸細節(jié)。
