㈠ 如何成為一名程序員 6種方法來成為一名程序員
目錄方法1:網路編程1、了解網路編程的含義。2、瀏覽不同的網站,了解它們的外觀。3、學習至少一種頭腦風暴技術/方法,並學習一個用來實現頭腦風暴的軟體。4、熟悉網站結構。5、趕緊學一門圖形設計的課程。6、了解網路下部構造的基本情況。7、學習HTML和CSS語言。8、學習XML及其相關技術,比如XSL和XPath(不是必需,僅作推薦)。9、先建立簡單的靜態網站,直至你熟悉並習慣HTML語言。10、學習客戶端腳本語言。11、熟悉你所學的客戶端腳本語言。12、學習至少一種伺服器端腳本語言。13、學完伺服器端編程語言之後就開始創建一個試驗項目。14、獲得你的網站,開始用你自己的網頁實驗。方法2:桌面軟體編程1、弄清楚桌面軟體編程是怎麼回事。2、了解不同的電腦硬體結構。3、學習一種入門級(小孩子學的那種)編程語言。4、學習程序化、面向對象、函數設序設計規范的入門。5、學習一種程序化程式設計語言的入門課程。6、學習至少一種高級建模技術,比如UML 或ORM。7、開始編寫一些小的主控台應用程式或類似的應用程式。8、學習一門你選擇的編程語言的更高級課程。9、應用你所10、至少再學習一門編程語言規范的入門課程。11、試著比較你所學的兩門編程語言。12、利用你學過的一種語言來學習可視化編程概念。13、開始把你所學的知識運用到你設計的軟體小工程中。14、創建一個虛擬的"畢業工程"。15、通過學習更高級的課程、更加註意細節以及在網上學習搭建架構的技巧,來加深對你學過的可視化架構/庫/包的理解。16、搜索其他含可視化元素的包/庫並學習它們。17、學習圖形學課程(而非圖形設計)。18、成為游戲程序員(不是必須的)。方法3:分布式程序設計1、處理分布式應用編程。2、快速了解通信系統及其硬體。3、熟悉網路硬體結構和設備,比如集線器、接線台和路由器。4、學習網路協議的課程。5、學習XML 語言,並熟悉它。6、開始學習一門shell腳本語言。7、開始時用上你學的腳本知識,只運用程序化程式設計。8、使用你所學的腳本語言,寫出實現機器之間通信的腳本。9、轉移到桌面腳本/編程語言。10、專注於語言的核心部分,尤其hi那些支持網路。11、學習分布式應用設計與結構的課程。12、使用你所學的編程語言來了解服務部分建構和服務。13、學習如下技術中一種或更多。方法4:庫/平台/框架/核心編程1、了解什麼是核心編程。2、學習一門支持創建可重復使用內容/包的編程語言,如果你還沒學過的話。3、學習一門UML 和ORM的高級課程。4、學習軟體工程的課程。5、學習至少一個模塊,基於內容的、面對對象的和 事件驅動編程技術和概念。6、進一步了解不同的操作系統及其支持的編程架構。7、集中學習獨立平台架構、編程語言和技術。8、如果到目前為止你學習的編程語言具有ANSI/ISO/EEE/W3C標准版本,那麼掌握這些標准。9、嘗試模擬簡單的、已經建立的庫,尤其是開源的庫。10、在你的編程領域內尋找開源的包。11、學習不同方法。方法5:系統編程1、了解系統編程的定義。2、跟著"桌面應用程序員"的前三個步驟。3、學習線性代數的入門課程。4、學習微積分課程。5、學習邏輯學和/或離散數學課程。6、了解不同的"准操作系統"。7、學習計算機硬體結構的課程(或者作為替代,看看書)。8、深入理解不同的計算機硬體平台。9、初步熟悉你所選擇的硬體平台/操作系統的匯編語言。10、學習ANSI C 和 C++ 語言,還有程序化程式設計的一些概念。11、在你選擇的平台上理解並實踐C/C++標准庫。12、搜索網路資源、書籍和課程來理解你的平台獨特的C風格。13、用C/C++練習編寫高級代碼。14、學習更高級的Assembly。15、學習操作系統設計的課程。16、尋找並閱讀你所選擇的平台的相關文章。17、練習你已經掌握的知識。18、以最有益的順序學習語言。方法6:編程科學1、了解編程科學家是做什麼的。2、累積和四年制計算機科學學歷同等多的科學知識。3、選擇特定的領域。4、考慮獲取更高級的學歷。5、了解你選擇的編程領域的相關技術和編程語言。成為程序員是一個日積月累的過程,需要日復一日年復一年的技能增長。編程本身是有趣的,並且有回報(腦力層面、精神層面、經濟層面)。這份指南不能保證你輕松當上程序員。不要神化下面這些步驟,從中你大概能了解在現今編程界如何成為一名程序員。
方法1:網路編程
1、了解網路編程的含義。網路應用是指設計在網路結構頂層的軟體部分。這就意味著這些應用是通過諸如火狐或IE之類的瀏覽器來處理的。架構於網路結構的頂層並不一定要連接到網路。這就是說網路應用建立在如下標准網路技術的頂層:HTTP
FTP
POP3
SMTP
TCP
IP協議
HTML
XML
Coldfusion
ASP
JSP
PHP
ASP.NET
2、瀏覽不同的網站,了解它們的外觀。(右擊,選擇"查看源"或按F12。)尋找網站類型/內容的多樣性,而非數量。通常你需要訪問以下網站類型中至少一種: 團體網站(商業公司,非營利機構/組織,政府組織)
網路索引引擎(搜索引擎,meta搜索網站,專業化搜索引擎,目錄)
數據挖掘網站
個人網站
信息/網路全書式網頁(維基,數據單,技術規格,人工列表目錄,博客和日誌,新聞和新聞機構網站,黃頁,等等。)
社交網站(社交門戶,書簽網站,記錄筆記網站)
合作網站(這包含了上面提及的目錄,比如維基和博客)
3、學習至少一種頭腦風暴技術/方法,並學習一個用來實現頭腦風暴的軟體。例如:頭腦風暴圖和微軟Visio。
4、熟悉網站結構。指的是創建概念化網路範式、網路地圖和導航結構。
5、趕緊學一門圖形設計的課程。盡量學習至少一個圖形編輯/操作軟體包(不是必須的,但強烈推薦)
6、了解網路下部構造的基本情況。包括了解以下: 基本網路服務協議(HTTP,FTP, SMTP和POP3或IMAP4)
網路伺服器軟體(最好其中一個就是你以後主要工作的平台)
網路瀏覽軟體
郵件伺服器和客戶端軟體
7、學習HTML和CSS語言。或許你還想要"所見即所得"軟體包來編輯HTML。
8、學習XML及其相關技術,比如XSL和XPath(不是必需,僅作推薦)。
9、先建立簡單的靜態網站,直至你熟悉並習慣HTML語言。
10、學習客戶端腳本語言。多數人要麼學java,要麼學VB,但也有一些人學習Perl和DHTML。
11、熟悉你所學的客戶端腳本語言。潛意識里提醒自己只用你學的那個語言。只有在你熟悉你的客戶端腳本語言之後才能進入下個步驟。
12、學習至少一種伺服器端腳本語言。如果你只用一種伺服器軟體,那就學其中一種編程語言。否則,你得每個伺服器軟體都學至少一種編程語言。
13、學完伺服器端編程語言之後就開始創建一個試驗項目。
14、獲得你的網站,開始用你自己的網頁實驗。
方法2:桌面軟體編程
1、弄清楚桌面軟體編程是怎麼回事。多數桌面軟體程序員都是編寫商務需要的代碼,所以好好了解一下商業及其組織和經濟結構將對節省時間、提高效率大有裨益。
2、了解不同的電腦硬體結構。看看數字電路設計和電腦結構的入門級課程,但是也有人認為這對於剛起步來說太超前了,所以看兩三篇說明的文章(比如 這一篇 和 這一篇)就夠了。學完第一種編程語言後你可以再返回這個步驟。
3、學習一種入門級(小孩子學的那種)編程語言。不要因為你不是個小孩子就不好意思去學。這些入門級語言能大大減輕你正式學習第一門編程語言時的痛苦和壓力。然而這一步也不是必須的。你也可以在上一步之前完成。
4、學習程序化、面向對象、函數設序設計規范的入門。
5、學習一種程序化程式設計語言的入門課程。無論你以後選擇何種編程語言,在某種程度上它都要求程序化程式設計。此外,據多數程序員反映,程序化程式設計總的來說是了解編程的一個很好的切入點。
6、學習至少一種高級建模技術,比如UML 或ORM。
7、開始編寫一些小的主控台應用程式或類似的應用程式。你可以利用編程書中的常見小練習。選擇一個工具,用你所學的編程語言編寫程序。
8、學習一門你選擇的編程語言的更高級課程。確保進展之前先理解下列概念,並能熟練運用。對程序用戶輸入輸出信息。
程式化設計語言寫成的程序中的邏輯流程和執行流程。
聲明、分配和比較變數
編程結構分支,比如if..then..else 和 select/switch..case.
循環結構,比如while..do, do..while/until, for..next.
創建、調用程序與函數的編程句法
數據類型及如何操控
用戶定義數據類型(records/structs/units)及其使用
如果你的語言支持超載函數,理解它。
你選擇的語言的內存處理方式(指針,變數窺視,等等。)
如果你的語言支持運營商超載,理解它。
如果你的語言支持delegates/函數指針,理解它。
9、應用你所學的高級技能 面向對象的規范
10、至少再學習一門編程語言規范的入門課程。推薦學習每種範式的編程語言,多數高級程序員確實是這么做的,然而,通常你開始時只學一種,應用所學知識訓練了一段時間,獲得了編程的鮮活經驗,然後接著學習另一種。試試下面的語言: 邏輯編程範式
函數編程範式
面向對象的範式
11、試著比較你所學的兩門編程語言。評估各自利弊。通常可按以下方法完成拿出你在學習第一門編程語言時編寫的簡單範例,現在用第二門語言重新編寫。
創建一個工程,盡量用上兩種語言完成它。有時取決於你選擇的工程和語言,你可能僅用一門語言還無法完成這個工程呢!
寫一份兩種語言之間相似結構和獨特之處對比的速查表或一覽表。
盡量使用另一門語言找到模仿這兩門語言中獨特之處的辦法。
12、利用你學過的一種語言來學習可視化編程概念。幾乎所有的編程語言都具有支持可視化編程和其他支持控制台或類似控制台編程的版本/庫。同時進行的包括: 初步了解事件驅動編程。在某種程度上,多數可視化編程依賴事件及事件處理(用上你選擇的語言)。
盡可能多的嘗試桌面軟體,理解軟體是做什麼的。多數軟體開發公司會提供產品的測試版,你可以拿來測試軟體。在完善用戶界面方面保持更新。
閱讀關於圖形用戶界面的文章或教程。
13、開始把你所學的知識運用到你設計的軟體小工程中。盡量把你的編程專業知識運用到你日常生活中的問題上。比如,編寫程序,批量重命名文件,視覺上比較文本文件,復制目錄里的文件名到內存/文本文件之類的東西。剛開始簡單一點。
14、創建一個虛擬的"畢業工程"。把這個放到最後完成,用上你到目前為止學到的可視化編程技術。
15、通過學習更高級的課程、更加註意細節以及在網上學習搭建架構的技巧,來加深對你學過的可視化架構/庫/包的理解。
16、搜索其他含可視化元素的包/庫並學習它們。
17、學習圖形學課程(而非圖形設計)。對於想要寫出吸引人的用戶界面元素的程序員來說,這將大有裨益。
18、成為游戲程序員(不是必須的)。很大程度上游戲編程是被當作桌面編程的。如果你想成為游戲程序員,完成這些步驟後你需要進一步學習游戲編程。對於游戲程序員而言,圖形學課程是必須的,後續步驟中第二門語言應該選擇邏輯/函數編程語言(最好是Prolog或Lisp)。
方法3:分布式程序設計
1、處理分布式應用編程。分布式應用編程被許多人認為是最難學的一種,它要求計算機和通信技術中的不同知識。
2、快速了解通信系統及其硬體。這個步驟不是必須的,但是對於理解網路拓撲結構很有用。
3、熟悉網路硬體結構和設備,比如集線器、接線台和路由器。
4、學習網路協議的課程。在你開始分布式應用編程之前,你需要好好理解"開放系統互聯 (OSI) "模型、以太、IP、TCP、UDP和HTTP 。
5、學習XML 語言,並熟悉它。
6、開始學習一門shell腳本語言。對基於Windows的編程,可以是任何能與Windows腳本宿主兼容的腳本。對基於Linux的編程,Bash腳本和 Perl就夠了。對這兩個平台都強烈推薦Java,原因如下: 幾乎所有操作系統的都支持腳本宿主(Windows 腳本宿主默認支持java ,大多數Linux發行版都有支持java腳本控制的包)。
許多開發者認為它很容易學。
當你需要學第二門編程語言(C,C++,C#,Java和J#都有ALGOL開源句法)時,它擁有的ALGLO開源句法就能使你熟悉更多編程語言
通過學習java,你會熟悉網頁的客戶端腳本,這可謂一大福利!
7、開始時用上你學的腳本知識,只運用程序化程式設計。之後,根據你的腳本語言和它所支持的,你可以用上更高級的編程技巧和範式。所有的腳本語言在某種程度上都有程序化程式設計的一些方面。
8、使用你所學的腳本語言,寫出實現機器之間通信的腳本。學習完成這個所必需的東西。簡單的通信就足夠了。
9、轉移到桌面腳本/編程語言。一個比較好的是多範式語言,比如Python。簡單了解第二門語言。有許多理由讓多數程序員選擇java。然而,在這個領域內C#正在獲得多數優勢。Java和C#被青睞的原因如下:它們是面向對象的編程語言,使大量程序員免遭實現細節之苦,因為它們都支持組成部分(代碼單元、預編譯,它們可以執行特定任務,並被用到其他程序中)。
它們支持事件驅動編程,在某種程度上還支持OO和程式化程序設計。
建立語言的架構按屬性分布(比如Java)。
有許多現成的包來處理。社交網路同時作為開源代碼和架構內置包,這使得程序員繼續其他人工作更加容易。
10、專注於語言的核心部分,尤其hi那些支持網路。少注意用戶界面元素,比如輸出,窗口設計和技術等。
11、學習分布式應用設計與結構的課程。可以通過書本、網上教程或學術課程來完成。然而,十分有必要理解分布式應用的結構及其概念。
12、使用你所學的編程語言來了解服務部分建構和服務。
13、學習如下技術中一種或更多。推薦你每一種都了解以下。多數分布式應用程序員不會止於一兩門編程語言,他們會每個操作系統各學至少一種語言。這是因為如果你希望你的應用"分布式",你應該至少為每個主要的操作系統各提供一個版本。公共對象訪問代理體系結構(CORBA)
簡單對象訪問協議(SOAP)
非同步JavaScript和XML(AJAX)
分布式組建對象模型(DCOM)
.NET遠程處理
XML 網路服務
方法4:庫/平台/框架/核心編程
1、了解什麼是核心編程。核心程序員幾乎都是高級程序員,已經從編寫應用轉變為給其他程序員編寫代碼匯編。
2、學習一門支持創建可重復使用內容/包的編程語言,如果你還沒學過的話。
3、學習一門UML 和ORM的高級課程。多數庫開發者使用其中一種,或兩種都用。
4、學習軟體工程的課程。
5、學習至少一個模塊,基於內容的、面對對象的和 事件驅動編程技術和概念。你所學覆蓋越多編程範式和語言,你就能成為越成功的庫/包程序員。
6、進一步了解不同的操作系統及其支持的編程架構。
7、集中學習獨立平台架構、編程語言和技術。
8、如果到目前為止你學習的編程語言具有ANSI/ISO/EEE/W3C標准版本,那麼掌握這些標准。無論何時盡可能使用標准代碼。
9、嘗試模擬簡單的、已經建立的庫,尤其是開源的庫。這在成為庫/包程序員的早期階段十分有用。從簡單的包開始,比如單位轉換和中間科學計算包。如果你是大學生,利用你的非編程課程,嘗試把這些課程的方程式與核心科學用作庫。
10、在你的編程領域內尋找開源的包。首先下載包的二進制/可執行文件。盡量去用,並發現它的利弊。之後,下載源,盡量弄明白它是怎麼完成的。嘗試再創造這些庫或其部分。剛開始,看完代碼再做;之後,先做再看代碼。後期階段,嘗試完善那些庫。
11、學習不同方法。給程序員分發、配送內容。通常,庫/包程序員傾向於以遞歸和/或迭代的思想來思考他們面臨的所有問題 。盡量把每個問題當作一個小問題的匯編(一系列更小的任務)或一個重復的不斷縮小問題范圍直至把這些更小的范圍彼此堆到一起的處理過程去思考。
庫/包程序員傾向於概括化。也就是說,當面臨一個特定的簡單的問題時,他們通常會想到一個更為概括的問題,並努力解決這個更概括的問題,如此,小問題便不攻自破。
方法5:系統編程
1、了解系統編程的定義。系統編程處理的是編程的"科學",而不是具體的編程實現。不要把你自己栓到特定平台上。
2、跟著"桌面應用程序員"的前三個步驟。
3、學習線性代數的入門課程。
4、學習微積分課程。
5、學習邏輯學和/或離散數學課程。
6、了解不同的"准操作系統"。這可以通過以下途徑完成:了解操作系統是如何安裝的。
了解在一台PC上如何安裝不同的操作系統(不是必須的,但作為推薦)
安裝不止一種操作系統。不要在系統中安裝任何輔助包,相反,僅利用操作系統本身提供的函數。
7、學習計算機硬體結構的課程(或者作為替代,看看書)。
8、深入理解不同的計算機硬體平台。
9、初步熟悉你所選擇的硬體平台/操作系統的匯編語言。稍後你會學習其他平台/系統的匯編。
10、學習ANSI C 和 C++ 語言,還有程序化程式設計的一些概念。
11、在你選擇的平台上理解並實踐C/C++標准庫。尤其注意標准模板庫(STL)和活動模板庫(ATL)。
12、搜索網路資源、書籍和課程來理解你的平台獨特的C風格。
13、用C/C++練習編寫高級代碼。
14、學習更高級的Assembly。
15、學習操作系統設計的課程。
16、尋找並閱讀你所選擇的平台的相關文章。如果你選的是基於Unix的操作系統就會容易得多。充分理解你今後將要用來工作的系統。
17、練習你已經掌握的知識。首先創建小的系統軟體。如下通常很有用: 試著重創你系統中已有的小工具。
試著把其他系統中的應用移植到你的系統里。
18、以最有益的順序學習語言。此處是唯一強調第一門編程語言的地方。首先學習ANSI C 而不是 C++、C#、Java 、D。然後學習 C++。限制你第一門語言僅為C是因為系統編程要求程序員熟悉如下概念:源代碼真實、完全的編譯
低級對象輸出文件
鏈接二進制
低級機器語言/匯編編程。C語言被某些人認為是偽飾過的/更容易學習的匯編語言。只要你願意,它還支持插入匯編語言代碼,並且它只是程序化的(像匯編)。
方法6:編程科學
1、了解編程科學家是做什麼的。編程科學家是十分高級的程序員,他們不開發程序,但他們研究計算科學,比如密碼學、編程語言和數據挖掘演算法。沒有深入的學術研究是很難達到這個水準的。
2、累積和四年制計算機科學學歷同等多的科學知識。可通過如下其中一種完成: 獲得真實的學術學歷(這也是通常情況)。
從現代大學中獲得該學歷要求的課程大綱,自學課程或 分開一門門學。理論上這樣做也可以,但還是推薦第一種做法。
3、選擇特定的領域。越具體越好。這取決於你的偏好。但是這里給出計算機編程領域中一些主要的課題:演算法設計(例如搜索、分類、密碼、解碼、錯誤檢測 等)
編程語言/編譯器設計/最優化
人工智慧領域(模式識別,語音識別,自然語言處理,神經網路)
機器人技術
科學編程
超級計算
計算機輔助設計/模式(CAD/CAM)
虛擬現實
計算機圖形學(計算機圖形學通常和圖形設計或圖形用戶界面設計混淆,計算機圖形學是研究如何表示和操控計算機系統中的圖形的領域)
4、考慮獲取更高級的學歷。或許你想追求碩士學歷或博士學歷。
5、了解你選擇的編程領域的相關技術和編程語言。
小提示不管你想嘗試哪種編程,不管你想達到何種水平,考慮去學校或本地社區大學上課。不要被諸如「計算機科學」一類的術語嚇到。你參加的任何不需要預備課程的課程都應該集中教一些編程的基礎知識。在上課之前先咨詢一下老師或客服,確保這門課是你想要的,像「計算機文化」這樣的課很有可能更多地集中在教你更熟悉辦公應用之類。
㈡ 中國的程序員數量是否已經飽和或者過剩
程序員的數量是否已經飽和或者過剩?
任何一個行業,基本都是呈現金字塔結構。處於低端的人很多,越往上人才越少,很多大廠還不是喊著招不到人。
1、未來IT行業會持續發展,C端近幾年內用人需求會縮減,B端和高級產品端會加強,對人才技術會有更高的要求,高端技術人才的春天來了。
2、初級人員的確會更內卷。
3、35歲現象短期內不會得到改變或者緩解,會變成各行業普遍現象。35歲會變成一個分割線,變成貧富分化線。
4、油條崗位會變少,低端業務碼農,未來堪憂。
㈢ IT程序員有沒有年齡限制,年紀大了是不是就做不了了
都說35歲是人生的一道坎,立在「三十而立」和「四十不惑」之間。在國內,過了35歲,對編程還有熱情的程序員真心不多了。編程就像登山一樣,越往上爬人越少。35歲之後,除了轉管理,仍堅持寫代碼的都是這個行業的中堅力量,必將大有可為。
因為,編程不是青春飯,技術才是硬通貨。
編程絕對是一門技術活,程序員是一門「手藝人」。甚至可以說,「對於大多數人來說,如果你沒有編程到30歲,你還不能成為一個「合格」的程序員。所以,並不是編程編到30歲就玩完了,而是編程編到30歲才剛剛入門。」不合格的程序才會喜歡速成、好大喜功。(酷殼-陳皓:編程能力與編程年齡)
首先,數據說話:來看看編程水平和年齡關系的兩張圖。
美國學者對 Stack http://Overflow.com上的用戶進行了數據挖掘,製作了這樣兩張圖:
(Patrick Morrison & Emerson Murphy-Hill | Is Programming Knowledge Related to Age?)
1、年齡分布圖
可見,程序員年紀呈正態分布,高點在25歲左右,但是中點在29歲左右。
2、能力和年齡分布圖
程序員的能力=總聲望 / 活躍時間
令人驚訝的是,程序員的能力在從25歲左右開始上升,一直到50歲後才會開始下降。所以說,程序員吃的不是青春飯。只有靠蠻力,用體力而不是用腦力的「碼農」,才是吃青春飯的人。然後,再舉個栗子,看看這個酷酷的矽谷
Frank Jernigan
2001年,我加入了Google的工程師隊伍,那一年,我55歲。沒錯,在Google的四年時光,我一直都是那裡年齡最大的程序員。
我做了什麼?我不是團隊領導,也不是經理,我只是一個單純的程序員——和一群平均年齡小我25歲的同事一起工作。我的年齡貌似從來都不是問題,我感覺自己只是團隊的一員,同時我也是這樣被對待的。
其實,上了年紀並不意味著落後,除非你脫節。為了不和潮流脫節,我從不曾停止學習。1975年我剛開始工作的時候,我用的是打孔卡片和大型伺服器,用Fortran 和 PL/1 語言編程。20世紀80年代,我對OOP(面向對象編程)產生了興趣。我學習了所有和它相關的東西,並且撰寫了題為《使用面向對象編程的設計方法論》的碩士論文——現在應該被埋在波士頓大學的協議棧裡面吧。
在用Lisp語言編程十年之後,1990年我開始學習使用新的面向對象編程語言C++。僅僅幾年之後,網路大爆炸出現,我又進入了網路開發領域,開始使用HTML/JavaScript等新技術。學習,不斷的是學習,是我在這么多年職業生涯中實現轉變的關鍵。
我觀察到很多和我年紀一樣的程序員轉入了管理崗位,或者爬上領導崗位,或者完全轉行到和編程無關的新領域。在我早期的大多數工作中,我的經理都會注意到我是一個有天賦的編程員,然後不怎怎的就得出這樣的結論:我應該成為一名經理。如果沒有更好的機會,我可能會接受這樣的提升,但是很快我就發現我討厭當經理。我喜歡軟體開發——這就是我想從事的事情。當我的經理走到我的辦公室,看見我在專注編程的時候對我說:「你為什麼在編程?你現在是一名經理了!」一切都很清楚了
㈣ 中國有多少個程序員
中國有185萬程序員。
程序員是從事程序開發、程序維護的基層工作人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚。
2007年火熱的SOA和動態語言各佔13%和12%。其實這幾大塊技術分布他們之間都是有一定的聯系的,互聯網的發展近兩年呈爆炸式的增長態勢,中國的網民總數已經超過了1.4億這樣一個巨大的數字。
薪資待遇:
從經濟學的層面上來看,軟體人才也是勞動力商品中的一種,是由價值規律決定的,有需求才會有市場,才會有人願意為他們支付工資。當前,包括中國在內,全球都在爭奪IT人才,當IT人才的社會總需求大於總供給時,不可避免就會出現人才升值的現象。
㈤ 程序員在35歲之後絕大多數是否都會被淘汰
程序員在35歲之後,絕大多數都是會被淘汰的。程序員要想自己不被淘汰,在年輕的時候就要精進自己的技術,成為技術上的大佬。在35歲的時候就將程序員淘汰,這種做法其實是非常不人道的,希望程序員的職場環境能夠得到改善。很多的程序員在35歲之後就會被公司淘汰,被公司淘汰之後的程序員就會陷入一種兩難的境地。關於程序員在35歲之後絕大多數是否會被淘汰?以下是我的看法:
三、希望程序員的職場環境能夠得到改善
程序員的職場環境其實也是非常惡劣的,他們在年輕的時候拚命加班為公司工作,在年紀稍微大了一點之後之後可能就會被公司淘汰。所以希望程序員的職場環境能夠得到改善。
你覺得程序員在35歲之後,絕大多數會被淘汰嗎?歡迎評論區下方留言!
㈥ 為什麼很少有女性去當程序員
因為程序員這個職業的難度很大,並且也需要經常加班熬夜,這對於女生來說,選擇程序員就相當於放棄了青春、放棄了美貌,放棄了大多數和女孩相關的興趣愛好,所以才會有很少的人選擇程序員。
再來說一說職業問題,有人戲稱程序員是最容易猝死的職業,因為要一直熬夜,雖然收入高,但是卻與自己的付出成正比,作為女性,我是很不喜歡熬夜的,因為熬夜會導致內分泌失調,還會讓整個人心情都不好,相信大部分女性都想要有自己的時間看電視、追劇,而不是為了一個程序一直熬夜,女性想要成為程序員需要付出的實在很多,而且就算是成為任何一個普通職業的人,未來的生活也能過的相應輕松,女性並不需要太多的錢去維持自己的生活。
㈦ 中國的程序員數量是否已經飽和或者過剩
總結一下:
1. 碼農確實很多,干這行的確實很多,但肯動腦的人不多。
2. 不僅動腦的人少,連動手的人都少,很多人基本上就是伸手黨,有些東西連網路一下就能知道的東西自己不肯解決。
3. 基本的工具不會用,找API不會找,給源碼不知道怎麼看。
我心目中程序員的分級:
1.首席科學家:Tim Berners-Lee WWW的發明人、James Gosling Java之父、Gordon 孫國政 OCR技術發明人
2.BAT這類大型互聯網企業的CTO: 億級在線架構,管理過1000人以上的研發團隊。
3.技術專家、大公司技術總監: 整個中國互聯網界,需要用到千萬級級用戶在線的相關技術的不會超過100家,他們當中不少人有著100-1000人技術團隊的管理經驗。
4.技術骨幹、小公司CTO:關注與功能和產品的快速實現,有十萬-百萬級用戶同時在線的系統的研發經驗,10-100人的技術團隊管理
5.合格程序員,能夠快速實現產品研發和功能,編寫技術框架、debug,能進行資料庫調優。
6.小白程序員,能搬磚實現業務邏輯,缺少實際項目經驗,部分能夠調用成熟技術框架,但不了解底層技術細節。
很多程序員根本不具備基本素質,屬於濫竽充數,僅能做最低端的開發。真正水平高的程序員,比起一般程序員來說更為稀缺。只要你的技術足夠硬,學習之心足夠堅定那你就是被需要的!
㈧ 為什麼有些人心理認為女生做不了程序員
做程序員基本上整天與電腦為伍,對身體損害大
愛美之心人皆有之,特別對於女生來說,整體對著電腦,皮膚肯定好不到哪裡去。曾經有個同事說女孩子整天盯著電腦看,掙得這點錢夠買化妝品的不?青春去了,多少錢的化妝品也是買不回來的。而且對女人來說特別在生孩子這個事情上,還做著軟體的話真是難。
有個在某某團購網工作的前同事,年齡也不小了,好不容易懷上了,結果擠地鐵的時候,弄流產了。修養了好長時間才敢要,之後來回打車上下班,而且國家規定的3,4個月的產假對於女人生孩子來說,時間真的不夠用,背負著房貸的壓力又不敢輕易的辭職。當然這些都不只是在軟體行業存在,在一線城市都有類似的問題。
加班加點太多,男人乾的活,作為女人你是干還是不幹
一般做軟體開發,項目緊了,加班加點熬夜都是正常的現象,作為項目團隊的一員肯定也要跟著一起干,本來這些讓男人來做也算說的過去,工資還可以,起碼可以養家糊口。女孩子證明自己地方很多,一定非要陪著這些男人們加班加點熬夜工作。
女孩子可以做一些與軟體相關,但不是直接參與代碼開發的工作,比如美工或者測試之類的,這些都不是像研發那樣加班的厲害。說到這做產品的妹子還是挺多的,好多公司做產品部,妹子比研發還多,但是做產品也輕松不哪裡去,整天被老闆訓斥,然後弄大量需要改動的需求,然後拿來難為程序員。
一般女孩子晉級相比男生,相對偏難
在研發部門特別是作為最底層的技術管理者,起碼的要求除了技術能力強之外還要有極強的抗壓能力。基本上表層的含義就是能帶頭加班加點,能夠禁得住項目的考驗,這點女生天生不佔優勢,在技術能力差不多的情況下,基本不是第一考慮要素,這點還是很吃虧的。
一般妹子也沒有這么大的追求,一旦成為管理承擔的責任也會變大。所以這點理論上不算是不做程序員的理由。
㈨ 敲了 10000 小時代碼,我也沒能成為一名高級程序員
【CSDN 編者按】 Malcolm Gladwell在《離群索居》( Outliers)一書中曾言 ,要真正掌握某件事情,需要10000小時的練習。 而本文作者Greg Bulmash擁有40多年的編程經驗 ,寫了10000個小時的代碼,卻沒能成為一名高級程序員。 為何一萬小時定律會失敗呢?他分享了自己的一些看法 。 或許他的經驗能夠對你有所幫助,一起來看看吧。
原文鏈接:
本文由CSDN翻譯,轉載需註明來源出處。
譯者 | 章雨銘 責編 | 屠敏
出品 | CSDN(ID:CSDNnews)
Malcolm Gladwell在《離群索居》( Outliers )一書中說,要真正掌握某件事情,需要10000小時的練習。其實,10000隻是一個粗略的數字,而且這句話的含義也被過度簡化了。我已經斷斷續續進行了40多年的編程。可能已經寫了10000個小時的代碼,但我甚至還未能成為一個優秀的程序員,更別提成為大師級的程序員了。
我認為有以下幾個原因。首先,在這10000小時中,我主要學習了4種不同的編程語言,以及其他一些輔助語言。我從一種語言換到另一種語言時,發現它們有的概念可以互通,有的完全不同。而有趣的是,在這種語言中沒有意義的概念可能用來構建它。
例如,JavaScript沒有本地鏈接列表實現,但如果在V8 GitHub庫的src目錄下搜索 "鏈表",會發現有76個commit提到了它。即使它們在語言本身中沒有用C的鏈接列表,但會在引擎下使用C的鏈接列表。
每種語言都有自己的語法和特殊的實現方式,這些是必須要學習的,而不僅僅只是學習其概念。一種語言的最佳實踐方式對於另一種語言來說可能不是最好的。在編譯語言上我從來沒有花過很多時間,幾乎總是使用解釋型語言,如BASIC、PHP、JavaScript、Python。我學習過C#和Java,用Rust做過Hello World,但在Linux中從源碼編譯對我來說十分困難,所以我通常只是下載源碼,按照教程中的指示操作,然後祈禱代碼能夠運行。
除了學習這些語言,我還學習了伺服器技術和系統架構的基本概念,不是從編程的角度,而是從網路管理員或者說系統管理員的角度。而且無論是建立一個大型網站,在Flash中創建矢量圖並將其渲染成點陣圖,還是學習通過AWS解決方案架構師助理認證,我都已經做了很多次。但是很多東西我已經忘記了。我已經學會了這些語言的框架和庫,如JavaScript的React和JQuery以及PHP的Laravel......然後也忘記了許多,因為我為完成一個項目學習了它們,然後就沒有再使用它們。
即使寫了10000小時的代碼,也不意味著你能夠輕易地在不同語言之間轉換。當你真的進行轉換的時候,你會發現10000小時沒有那樣神奇的魔力,因為另一個不可避免的原因:記憶衰退。正如我所說的,如果我停止使用一種語言,甚至只是停止使用它的一個功能一段時間,我就會像忘記 "高中西班牙語 "一樣忘記它。我在高中時讀完了西班牙語3級,在大學時考過了西班牙語4級,並獲得了A。而現在,我可能只記得不到10%的內容。
例如,我幾乎完全忘記了怎樣使用常規動詞連接過去式,更不用說不規則動詞了。但是因為我以前練習的足夠多,我知道自己的不足之處,所以我可能比剛開始學習的人更快地恢復以前的知識。但可能需要幾個月的強化練習才能全部恢復。
十年前,我精通PHP,在一個定製的MVC框架中工作(由其他人創建),使用Doxygen來映射類的繼承層次,並使用JQuery來構建前端的交互性。但我在7年前沒用過PHP了,轉而使用Node。現在,我需要花5分鍾並且改正了一些語法錯誤,才在剛才提到的PHP副本中正確地寫出一個Hello World。
去年12月時,我為freeCodeCamp的前端庫認證建立了五個React項目,但在那之後,我就沒有再編碼React項目了。過去了兩個月,當我開始准備面試的時候,我覺得我就像是React新手。如果我看到自己寫的代碼,能夠很快理解。但是因為很多東西都只是我准備的輔助工具,很多我都忘光了,所以我需要回到文檔中去開始一個新的React項目再開始工作。和新手相比,我只是走得更快。
這就是新手和已經入門了的區別。一萬個小時可以讓你成為一個小提琴大師。但是如果你每隔500小時就換一次樂器,並想要成為整個交響樂團的主角,那你不一定能夠更勝一籌。所以為了強化和拓展你的技能,練習不僅要廣泛,而且要持續。
10000小時是什麼樣的概念?是5年每周工作40小時,兩年休息1周(假期、病假和休假都在這2周內)。你會發現有的工作招聘時要求在一個3年的框架內有5年的經驗。5年似乎是成為專家所需的標准時間。因為對框架的無知和這種簡化的標准,就會產生邏輯上的矛盾,一言以蔽之。
一個專業的開發人員,有多少的工作時間是花在電子郵件和會議上的?又有多少時間在真正編碼和思考編碼問題?當我在微軟寫文檔的時候,我的經理說,不管怎麼算,你一天中大概只有一半的時間花在實際的生產工作上。其餘的時間會花在一些瑣事上,比如回復電子郵件、開會、進度/狀態報告、在IM上回答隨機問題或者和別人閑聊......
所以我只有20%的時間是在寫代碼,因為其他80%的時間是在寫文檔和教程,這意味著我平均每天只寫了一個小時的代碼。在使用瀏覽器中的開發工具進行調試方面,我曾經是個天才,因為我在這方面經驗豐富,還經常為新版本進行更新。但是,雖然當時所有的開發控制台的快捷鍵,我都爛熟於心,但在我離開微軟的7年後,我基本上已經把它們忘得一干二凈了。
事實上,自從我進入開發人員關系部後,我每天花了10-20%的時間寫代碼,其餘的時間寫教程,為會議講座和網路研討會製作文件,制定建立和培養開發人員社區的戰略,制定展示新功能的最佳方法,以及處理各種人——產品經理、內部工程師、外部開發人員、產品營銷經理、需求生成和社交媒體經理、律師、公關和公司政策執行者的問題。
最後要記住的是,你不會花整整一萬個小時學習新東西。如果你在學習小提琴,你可能會花上幾百個小時來學習一些初級的作品。在你學習新東西之前,你已經掌握了一些初級的東西,並且在反復練習直至完美的過程中,
學到很多,並且將你學到的這些用於學習新事物。所以這一萬個小時中的大部分時間都是強化的。
在編程中,這就像多次編寫相同的To Do單頁應用程序。前幾次你可以參考教程,但最終你必須能夠在沒有任何參考的情況下寫出它。這就像一邊看著樂譜一邊慢慢演奏《歡樂頌》,然後記住如何演奏,然後准備在演奏會上演奏。
但是,當你需要在截止日期前交付一個項目時,你有多長時間來進行強化練習?在許多公司,不會給你提供擴展技能和強化編碼的時間,需要你利用額外的時間來完成。一些公司會給你10%的時間或20%的時間來做獨立的項目,但很少有公司希望你把這些時間花在單純的練習上。
新的框架、新的最佳實踐方法、新的語言、新的模式產生的速度不斷加快,在這種情況下,僅僅是在新的方面取得合格的成績,都會像和職業選手一樣演奏《歡樂頌》的困難。
你需要平衡強化和 探索 的時間,特別是當你每天編碼的時間少於50%的時候。你必須不斷地通過練習來進行強化,建立心理肌肉記憶,直到你能在睡夢中解決它們。小提琴幾百年來都沒有實質性的變化,但編程卻在不斷變化。成為一個特定語言的大師級程序員意味著要堅持更長的時間。你不得不在非工作時間進行強化練習,完成任務,努力成為一個優秀的程序員,或者跳槽到另一個能夠給你充足時間練習的公司。
哪怕你5年或者10年後都沒有成為大師級的程序員,也沒有關系,因為好好地做一萬個小時比看起來更難完成。