❶ 現在的公司需要的程序員要具備什麼能力啊
最佳答案
作一個真正合格的程序員,應該具有的素質。
1:團隊精神和協作能力
團隊精神和寫作能力是作為一個程序員應具備的最基本的素質。軟體工程已經提了將近三十年了,當今的軟體開發已經不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發財,但是進入研發團隊,從事商業化和產品化的開發任務,就必須具備這種素質。可以毫不誇張的說這種素質是一個程序員乃至一個團隊的安身立命之本。
2:文檔習慣
文檔是一個軟體系統的生命力。一個公司的產品再好、技術含量再高,如果沒有缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟體作坊。作為代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。
3:規范化的代碼編寫習慣
知名軟體公司的代碼的變數命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。 一些所謂的高手甚至叫囂高手寫的代碼一般人看不懂,我只能說他不是一名合格的程序員。
4:需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
5:模塊化思維能力
作為一個優秀的程序員,他的思想不能在局限當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。這樣做可以使代碼能重復利用,減少重復的勞動,也能是系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
6:測試習慣
測試是軟體工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
7:學習和總結的能力
程序員是很容易被淘汰的職業,所以要善於學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,我們只能說他是一名熟練的代碼民工,他永遠都不會有質的提高。一個善於學習的程序員會經常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級為軟體設計師、系統分析員、項目經理。
作為高級程序員,乃至於設計師而言,除了應該具備上述全部素質之外,還需要具備以下素質:
1、 需求分析能力
2、 整體框架能力
3、 流程處理能力
4、 模塊分解能力
5、 整體項目評估能力
6、 團隊組織管理能力
❷ 程序員需要具備的基本技能,你都知道嗎
下面是程序員所應該具備的基本職業技能:
基本技能 技能描述
閱讀代碼 這個技能需要程序員能夠具備讀懂已經存在的代碼的能力,這樣的能力可以讓程序員分析程序的行為,了解程序,這樣才能和開發團隊一起工作,繼承維護或是改進現有的程序。
編寫程序 編寫程序並不包括程序設計。不要以為編程是一件很簡單的事情,很多程序員都認為編程只需要懂得程序語言的語法,並把設計實現就可以了。但是這離編寫程序還遠遠不夠,使用什麼樣的編碼風格成為編寫程序員最需要具備的基本技能。能否使用非常良好的編程風格直接決寫了程序員的級別。
軟體設計 這一能力直接決定了需要吏用什麼樣的代碼技術達到怎麼樣的功能,而系統架構設計直接決定了軟體的質量、性能和可維護性。並不是所有的程序在這一方面都非常優秀,但每個程序員都需要或多或少的明白和掌握這一基本技能。
熟悉軟體工程 每個程序員都應該明白軟體工程是什麼東西,都應該知道,需求分析 設計,編碼測試,Release和維護這幾個階段。當然,幾乎所有的人都知道這些東西,但並不是每個人都很清楚這些東西。現在很多高級程序員都會混淆「需求規格說明書FS」和「概要設計HLD」。另外,程序員還需要知道一些軟體開發的方法論,比如:敏捷開發或瀑布模型。
使用程序庫或框架 一個程序員需要學會使用已有的代碼,無論是標論的程序庫,或是第三方的,還是自己公司內部的,都需要學會做。比如:C++中,需要學會使用STL,MFC,ATL,BOOST,ACE,CPPUNIT等等。使用這些東西,可以讓你的工作事半功倍。
程序調試 程序調試是分析BUG和解決問題最直接的能力。沒有人能夠保證程序寫出來不用調試就可以運行正常 也沒有人可以保證程序永遠不會出BUG。所以,熟練使用調試器是一個程序員需要具備的基本技能
使用IDE 學會使用IDE工具也會讓你的工作事半功倍。比如,VC++,Emacs Eclipse等等,並要知道這些IDE的長處和短處。
使用版本控制 一定要學會使用版本控制工具,什麼叫mainline/trunk,什麼叫tag,什麼叫branch,怎麼做patch,怎麼merge代碼,怎麼reverse,怎麼利用版本控制工具維護不同版本的軟體。這是程序員需要明的的軟體配置管理中最重要的一塊。
單元測試 單元測試是每個程序都需要做的。很多單元測試也是需要編碼的。一定要學會在xUnit框架下進行單元測試。比如JUnit, NUnit, CppUnit等等。
重構代碼 每個程序員都需要有最基本的能力去重構目前已有的代碼,使代碼達到最優但卻不能影響任何的已有的功能。有一本書叫《軟體的重構》 每個程序員都應該讀一下
自動化編譯 程序員需要使用一個腳本,其能自動化編程所有的工程和代碼,這樣整個開發團隊可以不停地集成代碼 自動化測試,自動化部署,以及使用一些工具進行靜態代碼分析或是自動化測試。
當然,還有很多的基本技術也是非常重要的,比如,與人的溝通能力,語言的表達能力,寫作能力,團隊協作能力,適應變化的能力,時間管理能力,多任務處理能力,自我學習能力,故障處理能力,等等,等等,這里只是列舉了和技術相關的能力,這些是程序最最最基本的能力,只要是程序員就必需要有的能力。
❸ 除了編程語言,程序員還需要具備哪些能力
抽像思維能力
作者認為這是程序員最重要的能力。我們在編程時,用到的都是一些抽像的概念。作者認為應該把培養抽像思維能力作為平時練習最重要的事情長期做下去。
問題分解能力
現實編程時,我們要解決的問題往往都比較大,比較復雜。怎麼樣把復雜的大問題分解成一個個小問題,再逐個去解決這些小問題。這個就是問題分解能力。缺少問題分解能力的人,拿到問題時總會沒有思路,因為他們不懂地把問題分解成一個個簡單地可解決的問題。
模式識別
作者舉了個笑話:在一個程序員的面試過程中,面試官問被試者,微波爐著火了怎麼辦?被試者說把微波爐扔到窗外。面試官繼續問如果咖啡機著火了怎麼辦?被試者說把咖啡機裝在微波爐里,然後扔到窗外。
這里作者想提的其實是一種問題轉換的思路。把遇到的一個問題分解後,把子問題使用已經有成熟解決方案的方法來解決。其實模式識別就是抽像思維的一種。我在教女兒算數時,就用了這個方法,我先問她你有三個蘋果,媽媽吃掉一個還剩下幾個。等她理解後,再問她你有三個桃子,媽媽吃掉一個還剩下幾個。所以,實際上我是在教我女兒抽像思維的能力,問題的重點不是蘋果或桃子,而是三和一。
判斷代碼質量的能力
這里作者講的是不要過早,過度去優化代碼,不要片面去追求完美解決方案。代碼的性能和質量要和問題的復雜度相當。
怎麼樣去判斷代碼的質量和效率剛剛好呢?作者沒有提,我覺得這個需要有一些 benchmark 工具來測量以及實際使用來衡量。在這一點上,其實我比較少看到程序員犯這方面的毛病,看到更多的是完全沒有優化或沒去思考性能問題的低級錯誤。
練習
練習,練習,練習。沒有捷徑。10000 小時理論在編程這件事情上一定是真理。可能有天才,但只要你不是特別笨,在一個細分領域持續練習,投入時間,一定會成為專家。當然,這里有些人是工作一年,學了三年的經驗,有些人是工作了五年,只學了一年的經驗。
基本原理
這條是我加的。當學會用 Java 讀寫文件後, 不管是 Swift 還是 Python ,他們的讀寫文件的方法都類似。當熟練使用 Java 的多線程編程,並且理解線程的運作方式之後,要用其他語言實現多線程編程,只需要查看 API DOC 很快就可以寫出多線程代碼。類似的概念還有網路編程,內存管理,進程間通信,設計模式等等。新技術層出不窮,但基本原理卻發展異常緩慢,而且基本保持不變。
作者:kamidox
鏈接:https://www.jianshu.com/p/9d5366dd157f
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
❹ 做一個程序員需要達到什麼樣的水平
辨別一個程序員的水平唯一的辦法就是看 產出質量。
演算法和數據結構都是錦上添花,並非是雪中送炭。而一個程序員的水準大致上是可以通過之前的代碼質量估算出來的。【如果你可以獲得此程序員的真實編寫的代碼,比如原創的Github】。
舉個栗子:下面是我最近在單位一個同事寫的代碼,Java語言
private boolean checkProportions(String str, Integer grades) {
String proportion = str;
for (int i = 1; i < grades; i++) {
String st = proportion.substring(proportion.lastIndexOf(",") + 1);
if (st.equals(""))
return false;
proportion = proportion.substring(0, proportion.lastIndexOf(","));
}
if (proportion.equals(""))
return false;
str = str.replace(".", "");
str = str.replace(",", "");
for (int i = str.length(); --i >= 0; ) {
int chr = str.charAt(i);
if (chr < 48 || chr > 57)
return false;
}
return true;
}
大致上的功能就是將 1,2,6.2,4,1 的字元串判斷每一 『,』內是數字,而且長度符合規定
這樣的代碼看上第一眼就覺得非常的醜陋。所以在我的要求之下,進行了一次重構。
private static boolean checkProportions(String str, int grades) {
String[] proportions = str.split(",");
if (proportions.length != grades) {
return false;
}
for (String s : proportions) {
if (!NumberUtils.isNumber(s)) {
return false;
}
}
return true;
}
這里看上去差不多就Ok。這樣的代碼其實也並沒有用到什麼數據結構和演算法,就是很簡單的字元串處理。
實際情況:在我們寫的絕大多數的代碼裡面,大部分屬於業務邏輯,極少部分的代碼需要使用到演算法和數據結構,在這樣的情況下,我們能使用的到的技能最為關鍵的是讓代碼如何更加合理。而讓代碼更加優秀的方式是通過千錘百煉的重構,而重構是極大的考驗一個程序員耐心和能力的東西。
質量的范圍廣泛,我從下面幾個小方面聊聊。
出貨能力:如果一個程序,演算法再精妙,不能出貨都是扯淡,我看過某某大神,演算法溜得很,但是一個人完全做不到按照工程需要把事情給做完。
優化能力:並沒有一個程序是一步到位的,一個工程的交出去可運行了,那才是第一步,很多時候隨著業務的增大,對性能的要求越來越高,有一定對於代碼優化的能力也是比較重要的。
調錯能力:項目越大,遇見的Bug也就是越離奇,這個時候需要強大的Debug能力,找出那個最為關鍵的錯誤點,甚至於追溯底層框架的源碼。
技術掌控:你項目能用Spring,Hibernate等等框架,但是有沒有想過,這些技術你真的可以掌控么,如果有一天你的框架版本需要升級,真的做得到么?甚至於從Hibernate轉為MyBatis。
演算法和數據結構是影響到一些核心區的問題,但是其他的一些技能,比如面向對象的架構設計,代碼的低耦合,那都是對整個項目有著直觀改善的技能。並非是貶低演算法,而在實際工作中,有太多比演算法更重要的問題了。
❺ 什麼是有獨立開發能力的程序員
1、為了做出的東西符合用戶要求,需要和用戶溝通,並寫出大概的項目計劃讓用戶確認;
2、需要根據項目計劃和功能結構設計資料庫表結構;
3、採用最熟悉的技術迅速的搭建程序框架;
4、開發的每一個階段都需要和用戶溝通,聽取改進意見,並針對意見做有效的修改,修改的工作量要控制在有限時間內的同時還需要符合用戶要求;
5、整個程序開發完成需要給用戶演示整個程序的使用方法,並可以給用戶其他相關人員培訓。
(5)程序員能力擴展閱讀:
職業要求
一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。
❻ 高級程序員應該具備什麼能力
不是老司機,不管斷言高級程序員到底應該劇本什麼能力,不過作為一個不斷進階的程序員來說。從初級道中級,再到高級。他的工作性質會慢慢的從實際開發工作不斷的轉型到帶團隊這個方面。高級工程師並不一定編程能力就絕對的比中級程序員,甚至初級程序員厲害多少。只是因為他們在工作中不斷的學習,接觸到更多的技術只是,並能將自己接觸到的知識實際運用到工作需要中。別人用100行代碼寫的文檔,也許高級程序員只需要三行。這就是區別。
❼ 想成為程序員需要哪些能力
程序員也是一個崗位而已,通常各個崗位都需要的通用素質,程序員也需要具備,例如責任心、吃苦耐勞的精神等。
至於程序員特有的能力,一般來說至少應該包含以下幾方面:
較好的邏輯思維能力;
良好的學習能力(IT技術發展特別快,要緊跟最新技術);
較好的英文技術文檔閱讀能力(除非在外企,一般的企業並不需要四六級考高分,但能夠快速閱讀理解英文技術文檔是十分必要的);
良好的體力(IT行業經常加班,要有好的身體作保障)