零基礎小白入門IT開發指南


先自我介紹以下,本人是一枚剛畢業不到兩年的某一線城市的程序員,本科階段專業是計算機科學與技術。從大四開始出去實習到現在的編碼經驗也有快2年半了,兩年半的時間包括實習在內任職過有4家公司,包括一家互聯網公司,兩家基金公司,一家區塊鏈公司,多多少少對程序員這個行業有了一些自己的認識,至少不像一開始連什么是框架都不知道。因為本人在大學期間一直忙着拯救世界,所以基本上沒有怎么學過專業方面的內容。自己還記得當初要找工作實習都沒人要的那種苦楚,我相信也有很多和我當時一樣的人吧(大牛除外……)。於是自己想把自己入門這個行業學到的東西和一些技能點寫下來,一方面給自己做個總結,另一方面也希望能夠給一些朋友提供一些入門指引,尤其希望能夠對那些准備入門程序員行業又沒有頭緒的人。(PS: 以下將是滿滿的干貨)

  1. 先弄清楚從事這個行業可以做哪些崗位:

從事IT行業就都是編寫代碼的程序員嗎?其實不是這樣的。IT行業有很多職位可以選擇,包括但不限於研發、測試、運維、產品經理、設計、算法、DBA……平時所說的程序員基本上都是指的研發崗位,這個崗位對技術的要求也是最高,而且加入同樣畢業找工作實力相差不大的情況下研發的工資往往是最高的。不過,這些不同的崗位內部又有很多區分,下面我會挑一些介紹每個崗位的工作內容和內部一些基本的划分。

  • 研發崗

研發崗的工作說白了就是寫負責編寫調試代碼的,天天熬夜寫代碼指的就是這些人。這個崗位大體可以分為前端開發和后端開發,當然也有全棧(fullstack)開發、運維開發、Devops…

一個產品一般來說是分為前端部分和后端兩部分,比如一個網頁,前端部分就是和用戶交互的部分,后端則是整個網頁的后台邏輯和數據的組織方式,后端往往更加體現業務邏輯。(有些公司的一些項目往往把前端做的富麗堂皇后端卻爛的一匹,這樣比較容易騙到投資人的錢)

前端開發:前端開發又可以分好多種類,比如按照產品類型分可以分為web前端開發、app前端開發、桌面端前端開發;按照技術的不同又可以分為React開發,Vue開發……

后端開發:后端按照語言可以分為java開發、c++開發、python開發、node.js開發、Go開發……每種開發類型要求的開發語言不相同,一般做后端開發最好了解至少兩門語言會比較好。其中國內大部分大公司用java的比較多,但Python和Go在最近幾年開始流行起來。論述各個語言的差異不是本篇討論的范圍。當然,后端開發也可以分為ios開發,安卓開發等。

  • 測試崗:

我就不用課本上的專業的話來論述這些崗位的作用了,做測試主要就是利用一些測試工具和框架對研發人員開發的軟件進行測試,比如白盒黑盒測試之類的,說白了就是個研發找bug,也有一些公司會提供測試開發這個崗位。對測試人員的代碼水平要求不高,以前帶我的領導直接和我說你就把測試當成編程傻瓜就可以。測試基本上就是測出程序員的Bug,然后提交給程序員要他們改。這里有一片測試人員用的技術棧文章,貼出來分享給大家:

三年軟件測試技術棧梳理​blog.csdn.net

  • 運維

運維人員和公司技術人員的划分在小公司不是很明顯,在大公司可能就會分的很清晰了。運維一般做的工作就是當軟件測試沒毛病后負責把產品部署到生產環境上去給用戶實際用。這里面就包括了自動化部署、服務器性能、網絡吞吐、服務器壓力監控、數據庫性能、數據管理等一系列的工作,小公司有時候網線啊,網絡啊,服務器啥的都是運維負責,甚至再小的一些公司這些工作會直接攤到研發的身上。不過做為研發人員,運維技術棧中很多還是對於研發來說也是要必須會的,比如Docker、nginx、git、tomcat、k8s……運維不多說,同樣也分享一篇運維的技術棧,提供給對這個方向有興趣的同學:

運維-技術棧 - 清風木 - 博客園​www.cnblogs.com

 

需要一提的是,有些人認為開發測試運維在IT行業三足鼎立,這是最主要的三個職業了。三個職業又相互交叉,形成了包括測試開發、運維開發、運維測試、全棧開發等不同的崗位,每個崗位要求的技能樹不相同。但是,隨着技術的發展和公司業務的需要,對IT從業人員的技能要求也越來越多,fb甚至要求全部開發都是全棧開發。只能說程序員還是學無止境的。

產品經理、算法、實施……嚴格來說已經和IT相隔比較遠,但也是計算機從業人員可以去做的工作,這里簡單介紹以下:

產品經理:主要負責產品的設計和業務需求的對接,完全不需要代碼基礎都可以做,比較適合女生。一般都是給程序員提需求,給程序員安排活干,安排不好容易得罪程序員,哈哈,漂亮小姐姐除外~感覺產品經理還是比較牛逼的,想象張小龍,微信的設計者,哈哈。

算法:算法工程師,對這個職業我了解不多,但是對學歷的要求比較高,很多公司都是要求博士學位去設計改進一些人工智能算法之類的,比如計算機圖像識別,產品推薦算法啥的,工資很高。

實施:實施這個行業,我認識一些學編程學不進的一些同學去做這個職業,說白了就是產品售后,進公司以后教給你一些基本的軟件使用方法和一些安裝方法,技術要求很低很低。

DBA:DBA這個主要是管理數據庫,對數據庫原理和一些數據庫軟件比如Oracle,Mysql,Sqlserver要求比較多,基本不需要變成知識,不過了解一門比如python的腳本語言會比較好。

2. 對前后端開發人員所需要的技術棧有個大概的認識

首先,明確你的方向,你是想做一個后端開發還是前端開發or全棧開發。我現在分別介紹以下從事這幾種開發作為一個小白所需的技術棧和學習路線。

首先介紹作為一個研發人員都建議掌握的一些基本內容

  • 版本控制工具:git --用於協同管理代碼和代碼的歷史記錄
  • 終端使用
  • 基本的數據結構和算法
  • github使用
  • SSH
  • HTTP/HTTPS協議及其接口
  • 設計模式
  • 編碼和常用加密解密原理
  • linux的使用
  • Json,XML等數據結構化工具

web前端開發

從事前端開發需要了解的技術如下:

  • 網頁基礎知識:HTML語言,css,javascript,dom
  • js庫:jquery
  • 包管理工具:npm , yarn
  • css預編譯:Less,SASS
  • css框架:Bootstrap
  • 構建工具:webpack
  • 前端框架:React,Angular,Vue
  • ……

后端開發

從事后端開發所需要的技術如下:

  • 選擇一門語言:C C++ Java Python Node.js Go ……
  • 熟悉一種數據庫使用:Oracle,Mysql,Postgresql ……
  • 選擇對應語言的一個框架:比如Django(python),Node.js(Express.js),Java(SSM)
  • 緩存工具:Redis
  • 接口風格:Restful
  • 通信協議:HTTP/WebSocket
  • 消息隊列:RabbitMQ
  • web server:Nginx,Apache、
  • 容器:Docker
  • 操作系統:進程/線程,多進程/多線程,同步/異步,並發/並行,進程間通信,鎖,內存管理,I/O 相關知識……
  • 其余的包括但不限於網絡,編譯原理,數據庫,微服務架構,分布式存儲等各種知識……
由於自己的經驗有限,以上也就只是列出了一些涉及到前后端開發所需要的基本的知識,其中黑色粗體的內容是入門開發行業所必須的內容,而全棧開發的要求就是至少以上的這些內容都是需要有所了解和掌握的。當從事開發過程中,大家會有更多的內容需要去學習和掌握。

3. 我是一個小白,我該怎么從完全不會到找到一份開發的工作呢?

我想,很多想入門這個行業的新人都面臨一個這樣的問題,甚至是一些本科院校的專業學生,畢竟學校教的東西和工作的內容是不一樣的。下面我就分別從非本專業學生和本專業學生兩個角度來介紹一下入門的步驟:

我不是該專業:

如果你是一個非科班出身的從來沒有接觸過計算機方面知識的人,對於你們來說,轉向計算機這個行業會稍微有點難度。不過要相信,只要功夫深,鐵杵也能磨成針,什么工作只要不笨並且有一根好學的心,然后在一個行業里泡的時間夠久,就總會有收獲的。在學習之前,確保你的有一定的英語基礎。

對於非科班人來說,由於可能沒有科班學生那個時間和機會了解很多基礎的知識,建議先從語言開始入手,選擇一門語言然后跟着教學視頻試着做出一個項目,能夠讓剛開始就產生成就感,有利於日后向外擴展學習。語言的話建議從簡單點易於上手的語言比如python入手,最近幾年python靠着人工智能的發展也風生水起,Python同時也由於它快速開發簡單上手的特點深受一些公司的歡迎。並且市面上已經有了成體系的python教學資料,方便初學者學習和掌握。

這里,建議大家跟着一些學院的教學視頻開始學起,教學視頻不一定要去機構花幾萬塊錢學習,大家完全可以去某寶上面搜相關視頻,幾塊錢就搞定后,后面就下載下來慢慢看,推薦的學習路徑是這樣的(以Python為例):

  • Python在電腦的安裝和對這門語言的基本認識,了解環境變量是怎么一回事
  • Python語言的基本認識和語法介紹嗎,pip包管理工具使用
  • 在IDE pycharm或者visual studio 上使用python寫helloworld程序
  • Html、Css、js一些基本語法的學習,學會寫一些簡單的靜態頁面
  • 數據庫Mysql學習使用,了解數據庫相關概念,知道數據庫的增刪改查
  • Django框架的使用,嘗試跟着教學視頻做出一個購物或者博客之類的網站,在這個過程中對框架有個大概的認識
  • 在項目的開發過程中使用git做代碼管理,學會使用github
  • 學習項目在linux的部署,熟悉使用uwsgi工具,進程管理supervisord或者systemctl,nginx服務器部署

當完成了以上學習后,對於找到一份實習工作不是什么問題,當然,這些也只能算是一些簡單的花拳綉腿罷了,如果想讓面試官對你的技術和能力信服口服,嘗試由一個點引出一個面,向周圍更深的內容學習:

  • 系統的學習操作系統,了解進程/線程,多進程/多線程,同步/異步,並發/並行,進程間通信,鎖,內存管理,I/O 相關知識
  • 系統的學習數據結構,了解隊列(Queue),棧(Stack),數組(Array),數列(List),樹(tree)等相關概念
  • 系統的學習計算機網絡:了解網絡OSI七層參考模型,了解HTTP、TCP、UDP、ftp等相關概念
  • 學習C語言這門高級語言中偏底層地語言可以幫助你了解其他語言的原理,並且了解向java面向對象和其他面向過程序言的區別
  • 理解一些常用語言的內存分配原理
  • 學會Docker的使用,學會使用一門web框架,比如React
  • 學習數據庫的性能優化原理和方法
  • ……

技術的掌握往往是多多益善,只要你掌握的越多,就越能讓面試官對你的技能有所肯定

我是本專業學生

如果你是計算機專業的學生,而且你發現在學校老師教的都是純理論的東西,如果你還對這個行業不太了解,那么請認真看我想要說的話:

對於還在上學的學生來說,一定一定要記住,不要急着上來就搞個大新聞,覺得學校教的理論課沒意思就不學了,或者認為那些東西難學就不學了,如果以后決定要走開發這條路,那么這些基礎知識是必不可少的。學校中的專業課中《數據結構》《計算機操作系統》《計算機網絡》《計算機體系結構》這幾門課對你以后的發展很重要,這也是計算機專業考研要考的知識。一定要老老實實把這幾門課學好,尤其是前三門。另外比較重要的一點是,在大學階段,能早點出去實習就早點出去實習,因為往后你去百度等大廠實習,是一定要有項目的開發經驗的。在平時學習專業課的閑下時間可以花時間去看看我對非專業人學習路線的介紹,可以學會試着去做出一個項目找份實習,這樣學習與實踐相結合,能夠大大讓你對這個行業有更深的認識。以后畢業了找工作,也更加會有主動權。這里再描述一些專業學生要學的路線:

  • 學習C語言等高級語言中偏底層一點的語言(一般院校都是以C開始入門)
  • 學習Java等高級語言和面向對象相關內容
  • 學習《操作系統》、《網絡》、《數據結構》、《組成原理》、《匯編原理》、《數據庫》等相關知識
  • 在以上的三個過程中,盡早地按照上面對非科班人員的路線同步學習,然后找份實習,在實習過程中可以認識一些大佬教你們一些開發領域相關知識,這對你以后是否從事開發工作和人生規划有很大幫助,也至少會拉不去實習不學習項目只是按照老師的規划學習的同學好幾條街。

以上就是我對對這個行業還不太了解同時也想從事這個行業人的建議,以下我再免費分享一套Python的全套學習視頻,想要的可以在評論區評論或者私信我,我把鏈接私信給你們。

另外再分享一套前端開發、后端開發和運維開發所需要的技術棧介紹,方便大家更明確未來的開發之路:

以上,如果覺得這篇文章對大家有幫助,請為我點贊,如果有問題,請大家積極為我指出,也歡迎有問題的同學私信我。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM