80後碩士老IT從業人員,這一行入門門檻很低,但想脱穎而出談何容易_風聞
likegeng-2021-05-17 07:26
【本文來自《程序員的分化》評論區,標題為小編添加】
作為一個本科電子信息工程、碩士軟件開發方向的80後老IT從業人員,個人認為計算機編程不難,不僅入門不難,在如今網上包括學習視頻都很豐沛的今天進階都不難(我們上學那會資料都是英文的,還有語言門檻,現在輕鬆多了),只要你不碰比如算法之類的非常吃數學底子和天賦的領域,肯學習而且學習能力不錯編程水平達到主程序級別問題不大,所以我同意作者吃這碗飯問題不大的觀點。
問題是培養一個合格的主程序級別的程序員,其課程要求以及設置,從基礎課角度老實講至少要到碩士階段恐怕才夠,但是最坑的是現在軟件領域細分的厲害,有些課程估計會用不上(比如我上過的操作系統課程,工作上就從未用上過)。
問題是現在軟件領域的本科生,其課程設置和學習方向過於偏向工具使用和實踐了,在軟件設計思路以及方法、工具上虧欠太多,換言之你詳細布置具體工作或者説詳細描述具體功能,他們能做,但是做的知其然而不知所以然。
舉個例子,我臨時接手幫人帶過一個基本上沒文檔的軟件項目,我第一件事就是結合用户業務資料和現有系統寫需求文檔;
第二件事,依據需求文檔和現有系統,帶着全項目組的小孩打開系統和數據庫按系統架構和模塊依次過,同時開始補設計文檔,在此過程中最常見的場景是我問當時XXX為何這樣實現後小孩集體一臉懵逼。我發現這些軟件專業的小孩在知識領域上太偏,看需求文檔還好,用例圖、流程圖/跨職域流程圖、數據結構表之類的基本工具還能明白,但是到了對業務模塊進行歸併、劃分時的E—R圖(實體關係法)以及連帶的數據結構設計基本上一臉懵逼,腦子裏也沒有OOA(面向對象分析)及OOD(面向對象設計)兩階段劃分以及每個階段設計內容的概念,對於順序圖、狀態轉換圖等工具也沒掌握,反倒是到了後面對類圖看的很明白——因為現在的開發工具大多支持自動生成類圖,所以他們雖然自己沒畫過但好歹能看懂。所以在此階段我帶着他們重新梳理設計,而且手把手教他們畫圖,起碼讓他們把程序內部構造和邏輯搞清楚。
第三件事,把梳理出來的設計文檔和當前系統做對比,兩者但凡有衝突的都按新整理的設計重做,下一階段工作內容明確了。
綜上,即使僅限純軟件(作者提的工業軟件是更復雜的領域)、不涉及業務需求專業領域的理解,程序員是分等級的,我認為這一行入門門檻很低,主程基本要求不低,上限非常高,算法工程師和架構師都不是一般程序員去考慮的方向(比如我,我碩士階段算法課能考相當於良,但我自知幹不了專職的算法工程師,架構師的問題更復雜、不僅僅是技術問題)。
最後:
“有一個專家認為會matlab編程,因此認為自己也是精通編程的,可以參與工業軟件的深度開發。”——扯淡,懂業務的兼會編程的能把核心業務算法跑通就算不錯了,還是踏實做業務專業指導吧,其他的還是交給專業公司去做。
“但有人認為,不掌握彙編,C/C++等系統編程語言、編譯原理、操作系統、傳感器技術等,就無法深度參與工業軟件的開發。”——別寄望於一個人能掌握這些了,靠團隊分工吧,工業軟件特別是專業工業軟件太複雜。