-
1 # 博業鐳射數碼印劉國平
-
2 # 創業者人生
一個高階程式設計師,對職業的要求比較高,主要分為兩種,一是技能要求,二是軟實力要求。
第一類,技能要求,程式設計師應具備的職業技能:
(1)閱讀程式碼 - 這個技能需要程式設計師能夠具備讀懂已經存在的程式碼的能力,這樣的能力可以讓程式設計師分析程式的行為,瞭解程式,這樣才能和開發團隊一起工作,繼承維護或是改進現有的程式。
(2)編寫程式 - 編寫程式並不包括程式設計。不要以為程式設計是一件很簡單的事情,很多程式設計師都認為程式設計只需要懂得程式語言的語法,並把設計實現就可以了。但是這離編寫程式還遠遠不夠,使用什麼樣的編碼風格成為編寫程式設計師最需要具備的基本技能。能否使用非常良好的程式設計風格直接決寫了程式設計師的級別。
(3)軟體設計 - 這一能力直接決定了需要吏用什麼樣的程式碼技術達到怎麼樣的功能,而系統架構設計直接決定了軟體的質量、效能和可維護性。並不是所有的程式在這一方面都非常優秀,但每個程式設計師都需要或多或少的明白和掌握這一基本技能。
(4)熟悉軟體工程 - 每個程式設計師都應該明白軟體工程是什麼東西,都應該知道,需求分析、設計、編碼、測試、Release和維護這幾個階段。當然,幾乎所有的人都知道這些東西,但並不是每個人都很清楚這些東西。現在很多高階程式設計師都會混淆“需求規格說明書FS”和“概要設計HLD”。另外,程式設計師還需要知道一些軟體開發的方法/論,比如:敏捷開發或瀑布模型。
(5)使用程式庫或框架 - 一個程式設計師需要學會使用已有的程式碼,無論是標論的程式庫,或是第三方的,還是自己公司內部的,都需要學會做。比如:C++中,需要學會使用STL、MFC、ATL、BOOST、AC、CPPUNIT等等。使用這些東西,可以讓你的工作事半功倍。
(6)程式除錯 - 程式除錯是分析BUG和解決問題最直接的能力。沒有人能夠保證程式寫出來不用除錯就可以執行正常,也沒有人可以保證程式永遠不會出BUG。所以,熟練使用偵錯程式是一個程式設計師需要具備的基本技能。
(7)問題排查與解決 - 關於問題排查,這個能力真的是非常非常重要的。發生問題的時候,就是檢驗程式設計師能力的時候。這是最能區分程式設計師的水平的技能了。一個問題往往可能會涉及到很多個方面的知識。
第二類,軟實力要求,軟實力主要是指一個人的學習能力和學習習慣等。
(1)時間管理
對於任何人來說,時間管理都是很重要的,對於程式設計師來說,尤其重要,因為我們可支配的時間並不多。一個程式設計師的一天會有很多事情要忙,在工作上,一天可能排了幾個需求評審、設計評審、互動評審、TC評審等,還要排查問題,還要寫程式碼,有的時候還要充當產品、運營、甚至客服的角色。
(2)快速學習
在這個技術高速發展的時代,每天都有新技術在推出。一個好的開發人員要保證自己永遠不會被淘汰,就需要不斷的去學習。
(3)英語能力
首先,我們的日常開發的程式碼都是基於英文的,目前很多技術也都是外華人發明的。也就是說很多技術剛出來的文件都是英文的。
當然,還有很多的基本技術也是非常重要的,比如,與人的溝通能力,語言的表達能力,寫作能力,團隊協作能力,適應變化的能力,時間管理能力,多工處理能力,自我學習能力,故障處理
(4)理解能力
理解能力不好,就不能很好的理解需求。不能很好的理解需求,就可能浪費很多時間。很多時候,PD給的需求文件並不都是合理的,這種情況下,如果開發的理解能力再差一些,無法在需求評審階段正確的理解需求,那麼這個專案的結果可想而知。
總的來說,對一個高階程式設計師的要求還是蠻高的,只有不斷努力、持續學習,才能不被拋棄。 各位,加油!
-
3 # 珊珊有品有魚
你好,我的身邊認識的朋友和同事,就有一些大齡程式設計師,感覺他們的壓力挺大。其中大部分都是男性為主,女性居少。
我也和他們交流過,很多人都說工作的壓力讓他們不堪重負,不過是否會走向下坡路也是取決於工作學習的積累,積累也就是以後的資本。作為一名合格的程式設計師,不能僅僅只懂得編碼,程式設計師是綜合性素質的人才,只懂得編碼的人與流水作業又有什麼區別呢?只會編碼的人僅僅只是碼農而已,全面發展才是硬道理。我們常常看到招聘資訊中包含以下資訊:精通某某語言、具備某某行業經驗、具有生產環境除錯經驗、熟悉Linux、Windows開發甚至是領導過幾人以上的團隊等等。所以作為一名程式設計師,你不應該僅僅懂得編碼就心滿意足了。
無論程式設計師所需要具備哪些能力,編碼時必不可少的一環,程式設計師是以此為基礎開展工作的,所以,包括但不僅限於編碼能力是重中之重。當然,這裡指的硬能力不僅僅指你的寫程式碼的能力,你還需要具備以下能力:
1. 編碼:基礎能力,無可厚非,coding技能是你必備的能力。
2. 除錯:沒有人寫的程式碼是無懈可擊的,隨著多平臺的部署,多部門的合作,更容易暴露出問題,所以除錯能力顯得尤為重要,能夠迅速定位問題,才能迅速解決問題。
3. 多平臺:你的專案或產品對於不同的客戶可能會被部署在不同的平臺上執行,無論是Windows還是Linux,都應該對其有個基本的瞭解,熟悉常用的命令,甚至瞭解經常出現的問題以及解決辦法。
4. 設計:一個產品或者功能是從需求設計開始的,甚至編碼的時間連30%都佔不到,但是如果設計階段出現問題,那麼它將是災難性的,輕則任務緊迫加班完成,重則程式碼重構工程延期。
5. 版本控制:相信程式設計師對版本控制都是非常熟悉了,沒有版本控制的程式碼將會讓你寸步難行,很多時候我們改了一部分程式碼卻又需要還原,又或者多人合作完成一個功能的時候,版本控制都顯得尤為重要,無論是git還是svn在版本控制方面都做的格外出色,所以熟練運用版本控制軟體也是必不可少的。
6. 平滑升級:有時候我們需要對伺服器進行升級,但是由於種種原因並不能停止伺服器的執行,這時候平滑升級在生產環境中的作用就顯得尤為重要,例如Nginx的版本升級,所以掌握平滑升級的能力也是非常必要的。
與硬能力相對,它指的不是專業技術上的能力,而是你的個人性格、個人品質、自身修養等能力。很多程式設計師認為只要專業技術能力達標就可以高枕無憂,實際上這是很危險的想法,程式設計師更需要全面發展,否則年齡日益增加的你,在編碼效率方面相對於年輕人就會顯得越發的低下,所以除卻技術含量的能力,我們也需要具備高情商的能力。
2. 思維:縝密的思維是程式設計師必備的能力。我們常常在功能設計階段就需要考慮很多問題:功能是否可行、邏輯是否衝突、平臺是否相容、可能衍生的問題等等。在設計階段考慮周全,到編碼階段才能如有神助,思考得越詳細,產品才能做得盡善盡美。
3. 時間觀念:作為一名程式設計師,有著強烈的時間觀念顯得格外重要。專案不可能無休止的延期,而領導也不會容忍你經常性的超期完成任務。所以我們要具備把控時間的能力,每個時間點、每個時間段應該做什麼,我們甚至要有一個計劃,按部就班的工作,才能將任務做的井井有條,分毫不差。
4. 控制情緒:良好的情緒可以提升人的工作效率,使其儘快進入工作狀態,同樣,糟糕的情緒也會給人帶來負面的影響,甚至影響你的工作進度。人生不如意事十之八九,如果負面情緒影響了你的工作,那麼你的後續計劃也可能因此被打亂,雪球越滾越大導致無法收場。所以我們在工作中碰到影響心情的人或事要注意調整,不要讓他/她/它影響到你。
程式設計師行業是個細緻的活,硬能力方面你需要做到設計嚴謹周全,編碼清晰易讀,軟能力方面也應該做到思維細緻縝密,溝通明確詳細。無論是硬能力還是軟能力,作為程式設計師都應該不可缺少的,程式設計師作為一個專業性質很強的職業,我們就應該更加學會全面發展,無論是技術層面還是人際交往都應該達到遊刃有餘的水平。
最後送給你兩個字:加油!
-
4 # 小褚出差
想要做一個合格的程式設計師,清晰的邏輯推理能力必須要有。其次是單詞詞彙量,目前很多程式設計軟體都用,如果沒有詞彙量你就像看天書一樣,它認識你你不認識它,讓你無從下手。然後是程式語言,C+++語言之類的,要精通,不會組態,搭建框架也是白搭。最後是程式設計軟體,裡面有很多執行演算法,浮點運算什麼之類的,這些都精通的話,你算是合格的程式設計師了。哦!還有一點,記得點贊和關注!!!
-
5 # 達達妮婭
紮實的基礎知識
濃厚的新知識獲取興趣
經常把理論知識應用到自己的工作中去
虛心向別人請教
大膽嘗試新技術點
-
6 # IT美女觀察
1. 熟練基本語法
掌握一門程式語言,基礎語法必須熟練。從變數、迴圈、陣列、指標、類等,都需要深入理解。這些知識雖然簡單,但是理解原理也要花費時間。我平時面試別人時,發現很多人雖然知道概念,深入描述時顯得很不專業。
2. 掌握高階特性
除了基本語法以外,語言的高階特性,是你區別其他菜鳥的關鍵。比如:泛型程式設計、設計模式、程式設計技巧等,都是需要進一步掌握的,雖然部分知識很少用到,但是確實解決關鍵問題的利器。
3. 使用第三方庫
學習使用第三方庫,會讓你的程式設計如魚得水。比如Boost、Qt等大型庫,可以讓你開發出企業級的程式碼。當然也有許多小巧精緻的庫,在解決某些問題上讓你如魚得水。所以學會使用第三方庫,讓你可以複用前輩們的優秀程式碼。
4. 瞭解專業知識
除了語言方面,瞭解計算機相關的知識,也是重中之重。無論是:資料結構、作業系統、計算機網路、計算機組成原理等,都是你邁向大神的必經之路。話說這四門課是計算機專業課,科班必學,實屬精品。
5. 能夠傳授他人
自己學會了程式設計固然重要,但是可以很好地傳授給別人,才算是徹底掌握了一門技術。如果你可以把一個小白把教會了,恭喜你,已經算熟練掌握這門語言了。程式設計師的自由的代名詞,不要吝嗇,把自己得技術分享給別人,構建Free的世界。
最後推薦幾本計算機程式設計書籍,程式設計師看過都說好!
-
7 # 一一哥Sun
首先程式設計師也是分很多方向的,比如有做Java的,H5,Android,iOS,PHP,Linux指令碼,Go,Ruby等等,方向不一樣,對技能的要求就不一樣。
那麼我就以Java為例,說一下需要哪些必備的技能吧。
1.Java基礎
Java基礎裡的知識點很多,面向物件,IO流,多執行緒,集合等都必須牢固掌握;
2.Web技能
Servlet,jsp,html/css/js/jquery/ajax/vue/bootstrap及其他前端框架等內容;
3.框架知識
Web方向的SSH,SSM,SpringBoot,SpringSecurity,Shiro,Activity等各種主流框架都應該熟悉;
4.分散式
目前流行的微服務SpringCloud,Dubbo,Zookeeper,MQ,分散式事務,分散式鎖等內容;
5.資料庫
MySQL,Oracle,Redis,MongoDB,ElasticSearch等資料庫肯定要會了;
6.開發工具
Maven,ideal,SVN,Git,GitLab,Docker等各種常用的開發工具;
7.其他能力
文件編寫,團隊協作,交流等各種基本的能力。
以上我只是說一下Java程式設計師所必備的一些技能,當然這些技能也不是完全充足,技術是不斷更新的,也需要程式設計師不停的學習來更新自己的技術,這也是IT行業為什麼壓力大的原因。
-
8 # 蕭雨諸事雜談
對於一個技術人員來說,程式設計技能毋庸置疑是很重要的。
但是,除了基本的程式設計開發能力,其他方面的能力也是體現一個程式設計師的能力的很重要因素。
比如,問題排查能力、線上運維能力、專案管理能力、協調溝通能力等。
類開發技能
第一類,並不是純coding技能,但是也和開發相關,稱之為類開發技能。
Linux系統很多人的開發機器是windows,所以平時也基本都是圖形化開發介面。但是,這並不意味著你就不需要基本的Linux技巧。
因為,你開發出來的應用可能部署在一臺Linux機器上,很多時候你要和這臺線上的Linux伺服器打交道,所以,Linux系統的安裝、開發環境的搭建、Linux常用命令以及Linux環境下專案的部署啟動和除錯等都是必備技能。
否則,一旦線上出點什麼問題,你就會束手無策了。
單元測試單元測試是很重要的,而且,好的單元測試可以幫助我們節省很多開發時間。單元測試是保證軟體可以更好的持續整合和持續交付的一個基本前提。
單元測試也涉及到很多技巧等,比如使用Mock進行單測、使用記憶體資料庫進行單測等。
一個開發人員,要有寫單測的習慣,也要掌握基本的單測寫法技巧。這樣可以儘早的發現問題。
版本管理我相信基本上所有的公司的程式碼都會透過版本管理工具進行託管的,不管是Git還是SVN。
而且,現在很多技術都透過GitHub進行開源和共建的,版本管理工具的使用也是一個Java開發必備的基本技能。
版本管理也有很多學問在的,比如到底什麼時候應該提交、提交的時候 Commit message 應該如何書寫,如何解決程式碼衝突等都需要熟練掌握的。
構建工具和版本管理一樣,企業級開發的依賴管理也不再是那種原始的進行Jar包的匯入匯出。而是藉助於像maven或者gradle等工具。
構建工具的使用同樣重要,而且一個合格的開發人員,要掌握如何進行依賴衝突的檢查、如何進行依賴仲裁等。
程式碼除錯有人調侃程式設計師,一半的時間在寫bug,另外一半的時間在debug。這句話聽起來挺扎心的,但是也恰恰說明了debug的重要性。
雖然說程式設計師花費一半的時間在寫bug是有點過分的,但是,任何程式設計師的程式碼也不可能一氣呵成,越大型的專案bug可能就會越多,線上下開發的時候,debug是最有效的問題發現和解決的手段。
程式碼除錯其實比較簡單,只要設定好端點,跟著程式一步一步的執行看效果就好了。只要學會運用IDE提供的工具就可以了。
問題排查與解決關於問題排查,這個能力真的是非常非常重要的。
發生問題的時候,就是檢驗程式設計師能力的時候。這是最能區分程式設計師的水平的技能了。一個問題往往可能會涉及到很多個方面的知識。
阿里有一個神級人物,花名多隆。在淘寶初期,不管遇到什麼問題,他基本都能解決。他之所以被稱之為神,就是因為他的問題排查和解決能力。如果你能在兩天內解決一個組兩週都沒解決的問題,那麼你也會被稱之為神。
很多時候,解決問題並不難,難的是定位問題。這會涉及到很多知識,知識儲備很重要,但是,在知識儲備還不夠的情況下,至少可以從以下幾個方面來提升自己的能力。
1、日誌的檢視
2、分析Java的堆疊資訊
3、叢集監控指標的檢視
非開發技能
還有一類技能,可能就和開發完全沒有關係的,稱之為非開發技能。這些技能往往決定著一個開發人員到底能夠走多高。
目標導向我把目標導向稱之為一種能力,是一種一個人應該具備的基本能力。而且,也是可以鍛鍊和培養出來的。
目標導向型的人,就是做事之前先明確目標,再尋找實現目標的方法,最後動用一切可以利用的資源透過各種方法來實現目標。
目標導向型的人,目標是明確的。
目標明確的人,做事的時候,不會輕易動搖或者放棄,為了目標能克服困難堅持到最後。
目標明確的人,做事的時候,會去思考、嘗試實現目標的各種方法。
目標明確的人,做事的時候,會去發現、創造、借用一切能夠實現目標的資源。
不斷給自己設定目標,做一個目標導向的程式設計師吧。如果,你非要把目標導向理解為KPI導向也可以。主要是有目標,為之而努力,我覺得就是OK的。
時間管理對於任何人來說,時間管理都是很重要的,對於程式設計師來說,尤其重要,因為我們可支配的時間並不多。
如何正確的管理自己的時間,是一門很深的學問。有些人加班加點,甚至996的工作方式。但是最終還是得不到一個好的結果,這很大程度上是由於時間管理的不夠好,大部分時間都在“瞎忙”。
很多時候,苦勞在功勞面前會略顯滄桑。
一個程式設計師的一天會有很多事情要忙,在工作上,一天可能排了幾個需求評審、設計評審、互動評審、TC評審等,還要排查問題,還要寫程式碼,有的時候還要充當產品、運營、甚至客服的角色。在生活中,還要陪伴家人、充實自己,鍛鍊身體等。如何安排好自己的時間是十分重要的。
關於時間管理,我有個建議,那就是把自己的手上的事情排列好,一段時間只做一件事。
快速學習在這個技術高速發展的時代,每天都有新技術在推出。一個好的開發人員要保證自己永遠不會被淘汰,就需要不斷的去學習。
而學習無疑是要花費很多的時間的。那麼,快速的學習能力對於一個時間本就不多的程式設計師來說也是至關重要的。
英語能力首先,我們的日常開發的程式碼都是基於英文的,目前很多技術也都是外華人發明的。也就是說很多技術剛出來的文件都是英文的。
拿最近最火的區塊鏈舉例,不管中本聰是不是日本人,他釋出的區塊鏈白皮書也是英文的,英語能力好的人可以馬上學習到新的知識,英語能力不好的,可能看到的都是二手翻譯資料了。
英語好的技術人員,靠翻譯書籍也能賺很多錢。而英語不好的程式設計師,給變數命名都費勁。
科學上網這一點我覺得對於開發人員來說是至關重要的。就像前面那條英語能力一樣。很多資料都是釋出在國外的網站上的。
無論是Google、維基百科這些都需要科學上網。而且很多國外的網站,如StackOverflow、GitHub等科學上網也能更快的訪問到。
專案管理每一個程式設計師,都有做PM的那一天,不管負責的是大專案還是小專案。都需要很好的專案管理能力才行。
要知道如何預估風險、如何預估成本、如何保證專案按時上線、如何管理專案團隊,這都是有很多學問在的。
任何一點掌握不好,都有可能導致專案風險甚至專案失敗。
專案管理這種事情,專案如期釋出可能並沒有功勞,但是一旦專案delay,那就有罪過了。
不會專案管理的程式設計師,最多也就是一個高階程式設計師,無法晉升為專家及以上級別。
協調溝通在一個專案中,除了專案經理角色外,開發人員之間也並不是獨立的。很多時候都需要跨團隊、跨部門甚至跨公司之間合作。
在專案中,你和其他參與的同學是同一個角色的,大家之間的關係在層級上可以算是平級,那麼如何很好的橫向管理會很重要了。
為什麼很多人解決一件事情很快,有些人卻要繞很多彎子。因為有些人懂得協調溝通的技巧,說白了就是出去辦事有時候光靠“刷臉”就可以解決問題了。那麼,之所以可以“刷臉”,就是因為平時的協調溝通能力強。
理解能力理解能力不好,就不能很好的理解需求。不能很好的理解需求,就可能浪費很多時間。很多時候,PD給的需求文件並不都是合理的,這種情況下,如果開發的理解能力再差一些,無法在需求評審階段正確的理解需求,那麼這個專案的結果可想而知。
理解能力不好,就沒辦法快速的學習新的知識,同樣也要比別人多花費一些時間。同樣是學習Java 9的Jigsaw,有些人就能很快的理解模組化的原理,有些人就怎麼都想不通。這就是因為理解能力的不同。
表達能力前面說的幾項能力,都或多或少的要依賴表達能力。如果表達能力不好,協調溝通肯定出問題,更別提專案管理了。
除了日常工作需要表達能力和別人溝通外,很多公司要寫日報、週報或者月報等。表達能力好的就可以很清楚的寫明白自己做了什麼,有什麼貢獻,這樣領導看的也舒服。工作成果自然不會很差。
還有,就是很多公司的晉升制度是靠答辯的。那麼如何很好的把自己過去一段時間的工作成果和收穫表達的清楚很大程度上決定著晉升的結果。
還有些時候,開發人員也要參與演講,無論是團隊內部、公司內部還是參與業內會議。表達能力都至關重要。很多時候,別人瞭解一個人,首先就是透過他的表達能力。
-
9 # 星閱漫談
要有產品思維,使用者思維,不要只關注寫程式碼,從使用者的視角來感受產品好不好用,如果只專注技術,建議提升整體架構能力,在有一方面成為專家才是王道,如架構設計,資料庫,伺服器部署,程式碼最佳化等,如果未來想往管理上轉崗,還要提升管理能力,溝通能力
-
10 # 週末幹啥
一般問這個問題的可能都是工作時間不長但渴望成長的新晉程式設計師。其實做什麼事情都有一個一萬小時理論,當調程式碼研究程式碼的時候,每個人都會經歷初期一臉懵逼到後來慢慢有所體會,這是一個過程,需要的是時間和耐心,方法反而不是特別重要,只要找到方向持之以恆就可以,相信自己,相信每一行程式碼都是改變世界的力量,每一個字元都是英雄的見證!
-
11 # 大資料漫路求索
初入此門,覺得語法和演算法很難,搞不懂C++的STL,搞不懂Java的Full GC,搞不懂函式式,搞不懂動態規劃和各種樹、圖……
入行二三年,正常情況下,語法和演算法都不再成為門檻,開始感覺最難是架構:RX還是Vue? Weex還是RN?Django還是Flask?
然而入行五六年,我感覺最難的,還是在“人”。
對於上級,你要說服他們你在做的東西是有意義的,或者使你做的東西至少“看起來”有意義——因為這關係到你的專案能拿到多少資源。
對於下級,你需要解釋清楚你要做的東西,要達到的目標,要接受他們水平有限做出來的東西不如你,要接受他們加班卻寫更多bug,你的責任是帶團隊一起成長,你不能有抱怨。
由於你是一個優秀的(或僅僅是經驗豐富的)程式設計師,你可以看出專案程式碼裡存在著的隱患。你選擇防患於未然,修復這些問題,但由於問題並沒有真的發生,你所做的一切,在不那麼優秀的程式設計師同事的眼中(以及老大眼中),看起來並沒有什麼產出。你為了不出問題作出的努力,所收到的回報,往往不如那些在朋友圈裡曬自己通宵加班處理問題的同事。
如果不被認可,你還能堅持自己的初心麼?會繼續做那些你認為是正確的事,並企圖說服、證明自己做的有意義?
每個人的答案,只能基於自身的眼界。我沒有看過國外的環境是如何的,我自身也僅僅在向著優秀努力而已。以上不過一家之言。
-
12 # 上海千鋒教育
Java的更新迭代無疑是很快的,看到不少來諮詢的程式設計師朋友急於突破瓶頸而不得!千鋒帶你一起看看哪些能力是身為Java程式設計師需要具備的!
1、重構是程式設計師的主力技能。
2、工作日誌能提升腦容量。
3、先用profiler調查,才有臉談最佳化。
4、註釋貴精不貴多。杜絕大姨媽般的“例注”。漫山遍野的碎碎念註釋,實際就是背景噪音。
5、普通程式設計師+google=超級程式設計師。
6、單元測試總是合算的。
7、不要先寫框架再寫實現。建議反過來,從原型中提煉框架。
8、程式碼結構清晰,其它問題都不算事兒。
9、好的專案作風硬派,一鍵測試,一鍵釋出,一鍵部署;爛的專案生性猥瑣,口口相傳,不立文字,神神秘秘。
10、編碼不要畏懼變化,要擁抱變化。
11、常充電。程式設計師只有一種死法:土死的。
12、程式設計之事,隔離是方向,起名是關鍵,測試是主角,除錯是補充,版本控制是後悔藥。
13、一行程式碼一個兵。形成建制才能有戰鬥力。單位規模不宜過大,千人班,萬人排易成萬人坑。
14、重構/最佳化/修復Bug,同時只能做一件。
15、簡單模組注意封裝,複雜模組注意分層。
-
13 # 賀道坤
我從個人的觀點來回答這個問題
1技能
2情商,與人溝通的情商
3就是持續的學習能力
4領導能力
回覆列表
合格的程式設計師當然是精通各種環境下的程式語言,如蒂電子行業的組合語言,如軟體行業的c,java網路等的. net,這只是合格,高階的程式設計師更要優秀的數學思維,對資料結果,資料庫,新技術的學習能力都有很高的要求