Ⅰ 一個程序員需要什麼技術,素質才是好的程序員/
作一個真正合格的程序員,應該具有的素質。
1:團隊精神和協作能力
團隊精神和寫作能力是作為一個程序員應具備的最基本的素質。軟體工程已經提了將近三十年了,當今的軟體開發已經不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發財,但是進入研發團隊,從事商業化和產品化的開發任務,就必須具備這種素質。可以毫不誇張的說這種素質是一個程序員乃至一個團隊的安身立命之本。
2:文檔習慣
文檔是一個軟體系統的生命力。一個公司的產品再好、技術含量再高,如果沒有缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟體作坊。作為代碼程序員,必須將30%的工作時間寫用於技術文檔。沒有文檔的程序員勢必會被淘汰。
3:規范化的代碼編寫習慣
知名軟體公司的代碼的變數命名、注釋格式,甚至嵌套中行縮進的長度和函數間的空行數字都有明確規定,良好的編寫習慣,不但有助於代碼的移植和糾錯,也有助於不同技術人員之間的協作。 一些所謂的高手甚至叫囂高手寫的代碼一般人看不懂,我只能說他不是一名合格的程序員。
4:需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
5:模塊化思維能力
作為一個優秀的程序員,他的思想不能在局限當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。這樣做可以使代碼能重復利用,減少重復的勞動,也能是系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
6:測試習慣
測試是軟體工程質量保證的重要環節,但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
7:學習和總結的能力
程序員是很容易被淘汰的職業,所以要善於學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,我們只能說他是一名熟練的代碼民工,他永遠都不會有質的提高。一個善於學習的程序員會經常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級為軟體設計師、系統分析員、項目經理。
作為高級程序員,乃至於設計師而言,除了應該具備上述全部素質之外,還需要具備以下素質:
1、 需求分析能力
2、 整體框架能力
3、 流程處理能力
4、 模塊分解能力
5、 整體項目評估能力
6、 團隊組織管理能力
Ⅱ 普通的程序員和大神級的程序員有什麼區別
Ⅲ 程序員提升開發技術需要注意哪些
一、不提升非技術技能
我們認為非技術技能是項目成功的主要因素。這些非技術技能也可以稱之為「軟技能」,總體上來說,它已經被公司證明為能夠駕馭企業和客戶之間的長期商業關系,因此也能決定公司的成長發展路徑。一些關鍵的軟技能指標包括:
a.紀律——這是最重要的特徵之一,缺乏紀律,最終會讓這個開發團隊在開發能力上「缺乏自信」。解決這一問題的矯正方法就是每天制定詳細的to-do清單:兌現你的承諾、完成你開始做的事情、避免多重任務,因為這些往往會讓你的生活產生混亂。
b.顧客的聲音——不把客戶置於決策的核心地位只會跟你們業務的原始目的相沖突。如果客戶不高興,即使你擁有世界上一流的專業知識和資源也不會起什麼作用。保持符合客戶期望的解決方案、及時交付才能體現出項目的真正價值。
c.溝通——尤其是當客戶和供應商並不在同一地點的時候,明確而及時的溝通是填補服務空白的極好措施。主要集中在這三個方面你就能克服問題——進行主題討論、清晰表達、乾脆簡潔。
d.了解需求——在整個開發生命周期過程中,決定成功和失敗的之間的一個至關重要的區別將會給人留下深刻的印象。通過最初的頭腦風暴法了解問題狀態,以及後續的交貨程序,這其中都要和客戶完美配合。只有這樣,客戶才會贊賞你的工作,給你好評。
二、對編碼不理智
古人雲:善泅者溺,善騎者墮。但估計絕大多數 的程序員都認為自己的編程技術絕對的牛。而同樣真實的是,每一個代碼,讓不同的程序員去實現的話都會不可避免地發現它所存在的缺陷。所以說,只有通過在一 個項目上的合作,程序員之間必然有的摩擦才能證明誰是最好的。健康的競爭是好事,但它不應該成為一個本來可以成功的項目的負擔。
另一個創意阻礙是無法將預定義的模板使用在對你有利的開發項目里。幾乎所有的編程語言有一個很好的在線 /內置的代碼片段存儲庫,可以修補代碼,防止重新編程。然而,如果因為不理解需求或缺乏接觸各種可用庫/模板的話,這就意味著程序員最終會無意間將一開始 就創建的代碼付之東流。這不僅增加了開發時間,也提高了總體成本。另外一點就是,發布了的代碼已經經過了質量檢測,所以只有將它用作模板才能發揮它更大的 價值。
三、不一定什麼都要被理解
如果你是剛調到這個團隊來的編程人員,對於手頭的工作並不是很熟悉,那該怎麼辦?肯定是先看一些前任留下來的工作計劃,要是他寫的詳細倒也沒什麼,如果寫的不詳細,估計會讓你更加的撓頭。
因此,推己及人,在需要交代的工作上,最好是把任務寫的盡可能的詳細。這么做也是非常現實的原因:能夠把編程問題解決掉,最好是保證使用解釋性的語言和英語發音來表示變數。一些基本的指針可以讓你的程序更容易被理解,包括:
a.把所有參數、引用、方法和變數名稱盡可能接近英語表達。保持文件名簡短但有助於理解的功能。
b.使用++包裝文字是一個好辦法,能讓代碼和注釋更加清晰。
c.將編寫的程序保持在一個連續的流程上,尤其是在使用OOP基礎上的語言:C#、C 和 C++。
d.對於不同的代碼塊使用不同的描述名稱。
四、不使用經過驗證的工具和技術
程序員的好壞從他使用的編程工具和調試工具上就能看出。在異常情況的跟蹤上,下面就是程序員經常會出現的常見錯誤。
對一些可能會對其它代碼有影響的常見案例進行捕捉,處理這些比較常見的異常情況(而不是特殊的異常)意味著無意中除除掉了會抑制整個程序的殘留部分,因此並不會影響他人的代碼。
也許程序員可能帶有惡意的意圖來捕捉所有的異常情況,但即使是捕捉到了也不實施採取措施,這就是常說的「虛假安全閥」,這種異常處理手段是對整個軟體的穩定和安全的一種妥協方式。
五、較差的控製版本
在任何涉及多個團隊的項目里,當談到版本控制的時候不去介紹使用最佳實踐都是一個十足的罪過。版本控制的目的是確保由一個人執行的編輯或修訂不去影響另一個人的工作。
版本控制不僅有助於將由兩個或兩個以上的程序員的編輯工作合並到一起,還有助於跟蹤程序的更改歷史。所以說,任何開發團隊都應該做一些好的改進措施以確保強大的版本控制,這其中就包括:
為每個解決方案創建一個「邏輯單元」
給解決方案制定描述性的名稱
確保你所使用的都是最先進的文件
頻繁的向團隊分享你所做的各種改變
六、擁有最新信息的個人代表不了團隊
這是相對有趣的一點,所有的商業產品都想要以自身的敏捷技術和產品文化來給客戶留下深刻的印象,但是現 實中很少有廠商會花時間去磨練他們員工在介紹產品特點上的技能。許多公司只是簡單地提供了一些基本的培訓,並且抱希望與員工在真實的日常項目里學到更多的 技能。所以部門經理和項目的直接領導可以通過以下兩個辦法來提高員工的業績:
一旦有新員工加入,就立刻強制安排他參加專業培訓,讓他知道他的角色是用來干什麼的,盡早產生創造力。例如一個測試人與加入之後,就應該向他介紹編程的理念,之後將培訓重點放到測試實踐上,而不是繼續闡述編程的重要性。
現階段的技術的進化程度比以往任何時候都要快,,所以要記住,定期培訓是必不可少的,這是在給團隊創造價值。例如一個Web 設計師需要知道響應式設計,提供給設計師大量的用戶日常使用的移動設備的不斷擴張的樣品,希望他們能獲得靈感。
七、不恰當的測試
測試作為整個系統開發生命周期(Systems Development Life Cycle,簡稱SDLC)的重要一個要素,通常不需要開發團隊給出太驚人的結果。但是如果在測試環節沒有付出恰當的、相應的努力的話,這是說不過去的。 下面的一些方法或許對你的測試團隊有用,至少在你們交付產品的時候能夠給用戶一個好的交代。
單元測試
實物模型
綜合測試
八、注意安全漏洞
有的時候在軟體開發過程中,就會遇見如下這樣的安全漏洞:
A、不同組件之間意想不到的交互作用:a、輸入不正確的驗證信息;b、SQL資料隱碼攻擊;c、跨網站指令碼;d、命令植入攻擊;e、跨站請求偽造(CSRF);
B、難以實施的資源管理,包括:a、不尊重可用內存緩沖區;b、對外控制;c、使用有潛在危險的功能;
九、和客戶交流
最初的合同簽訂後,開發公司通常會忘記每天與客戶進行產品上的信息交互,以至於在交貨的時候還需要進行升級。兩大關鍵的交流點可以讓你和客戶保持更好的、更長的關系:
在客戶開問之前,開發方應該和客戶進行交流溝通。
和客戶保持周期性的交流。
十、避免標准實踐面臨的迫在眉睫的最後期限
通 常情況下項目都會遇到進度延誤的現象。然而,這不是說你有理由去偷工減料或者是在開發或測試階段耍花招,未經測試的模塊絕對是一個隱患,會讓你的開發團隊 名譽受損的。一個更好的方法來管理延遲是提前告知客戶並且積極執行延遲計劃。只要延期的理由是有效的,客戶應該會理解,也會給你額外的時間來解決這個問 題。
Ⅳ 如何看出一個程序員的技術能力和水平
其實,評論一個程序員技術的高低,不是看他會多少技術,又懂多少技術。參加過什麼大型的項目,也不是看他有沒有自己的博客,github有多少star。
而是看他解決問題,定位問題的能力。這個很重要,真的很重要。
技術可以很快上手使用,但是解決問題定位問題的能力不是輕易就行的。特別是在高壓下解決問題的能力。
下面是師姐為大家整理的一些建議:
解決問題
1.代碼的命名要規范。
代碼是寫給人看的好嘛!代碼是寫給人看的好嘛!代碼是寫給人看的好嘛!
headImg是什麼鬼?我能以為是banner么,頭部的圖片,請原諒我蹩腳的中式英語!avatar這個呢、portrait這個呢?會不會更好些?英語不好就不能用好有道、google翻譯么?還有用中文拼音命名的,親,我們用的是英文做為腳本好么?你要用這樣的,用易語言可好?!
瘋了!
為什麼要用框架?一個很重要的原因是命名規范,目錄規范,結構規范,分層規范,有利於團隊協作,不要本末倒置!
2.架構和規劃能力很重要,模塊分層,解耦設計什麼的,文件目錄嵌幾層?
這其中又跟命名的能力能搭上點關系。命名都命不好,目錄結構怎麼建?
url不要做的漂亮些嗎?不考慮seo了?
你喜歡addGoods還是喜歡goodsAdd?
請你尊重點我的那些初高中英語語法好么?
3.協助能力、可持續能力。
最好的程序代碼是脫離其產生者的。
為自己程序處處救火的程序汪並不是一條好汪。
我記得一句話就是:別想著你的代碼以後還有機會重構!
每次說,額,這里我後面會改的,會改的,但是可惜,現實情況是根本不會給你這個時間的。
代碼寫出來,一是要爽了自己,二是也要爽了別人。
4.debug的能力、總結能力、學習能力真的很重要,代碼寫出來真的花的時間不長,但擦屁股的時間比寫代碼的時間多多了!
出了問題不記錄,寫個博文都好啊,我可沒那麼強大的記憶力,所以最討厭考記憶力。
5.不要一貫的使用各種演算法,秀演算法的你們夠了,要寫去寫底層,應用的場景比較多。
應用層面的程序,演算法的應用不是特別多,大部分都是業務代碼。以這個作為評價標準的,真心然並卵。
Ⅳ 程序員的十種級別
第一級:神人,天資過人而又是技術狂熱者同時還擁有過人的商業頭腦,高瞻遠矚,技術過人,大器也。如丁磊,
求伯君。
第二級:高人,有天賦,技術過人但沒有過人的商業頭腦,通常此類人不是頂尖黑客就是技術總監之流。
第三級:牛人,技術精湛,熟悉行業知識,敢於創新,有自己的公司和軟體產品。
第四級:工頭,技術精湛,有領導團隊的能力,此類人大公司項目經理居多。
第五級:技術工人,技術精湛,熟悉行業知識但領導能力欠加,此類人大多為系分人員或資深程序員,基本
上桀驁不遜,自視清高,不願於一般技術人員為伍,在論壇上基本以高手面目出現。
第六級:熟練工人,技術有廣度無深度,喜歡鑽研但淺嘗輒止。此類人大多為老程序員,其中一部分喜歡利用工
具去查找網上有漏洞的伺服器,干點壞事以獲取成績感。如果心情好,在論壇上他們會回答菜鳥的大部
分問題。此級別為軟體業苦力的重要組成部分。
第七級:工人,某些技術較熟練但缺乏深度和廣度,此類人大多為程序員級別,經常在論壇上提問偶爾也回答菜
鳥的問題。為軟體產業苦力的主要組成部分。
第八級:菜鳥,入門時間不長,在論壇上會反復提問很初級的問題,有一種唐僧的精神。雖然招人煩但基本很可
愛。只要認真鑽研,一兩年後就能升級到上一層。
第九級:大忽悠,利用中國教育的弊病,頂著一頂高學歷的帽子,在小公司里混個軟體部經理,設計不行,代碼
不行,只會胡亂支配下屬,拍領導馬屁,在領導面前胡吹海侃,把自己打扮成技術高手的模樣。把勾心
斗角的辦公室文化引入技術部門,實在齷齪!
第十級:驢或傻X,會寫SELECT語句就說自己精通ORALCE,連寄存器有幾種都不知道就說自己懂匯編,建議全部
送到日本當IT產業工人,掙了日本人的錢還嚴重打擊日本的軟體業!
Ⅵ 怎樣成為一名優秀的程序員
你好,我是大二的學生,我曾經也想你那樣迷茫過,覺得學這些東西沒用,做不了實際開發。不過現在我已經找到方向了。首先必須先說明,想學東西,有用的而不是只是理論層面的話,千萬千萬,12個千萬不要只靠學校。自己一定自主的學自己想學的東西。
我覺得首先你要確定你想從哪方面學起,例如學完c++可以學MFC,也可以學學C#,做軟體很方便。你可以上網了解一下他們的用途之類的。
然後是要找到相關的書或教材,學MFC我推薦你看王艷平的《windows程序設計》或者孫鑫的MFC視頻教程。入門很合適。
你學了c++的話我建議你學MFC,MFC程序是用c++寫的,非常強大,做出的程序運行效率是最高的,不過開發難度也比其他方式開發都要難。
如果你按我說的做了,例如MFC入了門,你就可以自己開發一些實用程序用了。我說的這些希望對你有用!
Ⅶ 有哪些頂級水平的中國程序員
一、尤雨溪
江湖流傳一個小故事:一款名叫Clear的軟體,在正式推出的第一天,就登場了Apple Store付費榜和總榜第二。而身在美國的中國留學生尤雨溪,僅僅花了兩天的時間,就出了一個html5版的Clear,並且放出了源代碼。
2014年2月,開發了一個前端開發庫Vue.js。沒錯,現在就是前端在廣泛使用的Vue框架!Vue.js一經發布,就受到了很多人的追捧,可以說Vue.js就是人們苦苦尋找的那個好用的前端框架。
後來的尤雨溪在patreon進行了眾籌,因為他希望自己可以全職去開發Vue.js。眾籌的效果是非常滿意的,每個月他幾乎可以收到1萬美元的贊助。
職業要求
一般的程序員都有在專業領域的學習,還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。
盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。
一個程序員雖然沒有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要盡量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。
Ⅷ 為什麼中國的程序員總被稱為碼農
最後,如果你身邊有這樣的程序員朋友,請你好好珍惜他,因為他們不像口中所說的那樣老土和死板,相反,他們的腦海中有一個大世界。
Ⅸ 阿里巴巴的程序員技術是不是都很牛
你好,在例如阿里巴巴這樣的bat互聯網大廠的程序員,做到架構師的職級一般都可以到年薪百萬,具體如下。
1、阿里工程師崗位職級
阿里巴巴集團採用雙序列職業發展體系:
一套體系是專家路線【P序列=技術崗】,程序員、工程師,某一個專業領域的人才,一共分為14級,從P1到P14,目前校招最低從P4開始。
一套體系是M路線,即管理者路線【M序列=管理崗】,從M1到M10。
阿里P8架構師作為阿里的「IT架構靈魂人物」的角色,他們不僅做著架構師的本職工作,還同時做程序開發,寫核心代碼的工作。另外,架構師依舊是技術高手,編程能力依然是一流的。
但根據當前的市場需求,互聯網大廠們對於普通java開發人才需求逐年銳減,而對互聯網架構師人才的需求招聘量已經上升到50%,因此薪資更是不可同日而語。
對於想學習互聯網架構師的同學來說,北大青鳥、課工場等優秀品牌都是不錯的選擇。課程根據招聘需求制定,包含全部分布式微服務技術,對標阿里P8級別架構師。
希望我的回答對你有所幫助!
Ⅹ Java程序員,最常用的20%技術有哪些
兩個月,這讓我想到了我當年第一份工作,也是兩個月從零學JAVA。當時就買了3本書,強啃了6周。
記住一點,你要抓重點,你只要讓人家知道,你足夠初級開發就可以了,學了長長一個列表,個個不精,被面試官隨便問起來,就糟了。倒不如抓住最基本的,反正你就是初級人員,只懂最基本的,是最正常的情況。
首先,學會一個J2EE伺服器,tomcat (Nginx或者httpd等web服務),學會的標準是,會下載,能啟動,知道什麼文件部署在什麼地方,能看到啟動畫面,能知道最直接,最關鍵的配置文件名字和位置。你要了解下其他的伺服器的名字,就足夠了。有人叫你去學weblogic?那是坑你,2個月weblogic,你最多也只能懂十分之一。太重。
其次,學一個框架,以前SSH,現在SSM,這些都多餘,你就只看spring MVC,因為所有的mvc框架都類似,你只要堅持你了解MVC,其他的我覺得是容易借鑒類推的,H和M,你就直接說,我沒有項目經驗,我是沒有實際接觸過的,我只了解一點點原理,這個不要花時間,最後去看幾眼文檔就可以了。spring MVC,就這么簡單,一個就行。
然後是資料庫,別趕時髦搞nosql,老老實實關系型,mysql就很好,坑淺應用多,最近連集群支持的都很好了,你只要強調一點,資料庫,你不是DBA,你還不懂如何調優,如何調執行計劃,你只懂增刪改查,所以你要學的就是T-SQL,標準是你能手寫帶條件的增刪改查,會復雜語句更好,稍微了解下sql效率方面的問題,為了面試也是可以。MSSQL在國內被鄙視的不行,如果有人叫你弄oracle,那又是太裝逼,我手下一票的5年程序員,其中有超過一半連oracle的AWR都不會讀,有的連數據字典都不知道。
IDE不多談,你總逃不過eclipse和幾個大廠的東西。要用簡單易用的,別花太多時間在這個上面。
設計模式你要稍微看一下,了解什麼是設計模式,你大可以老實說,你根本剛入行,只是粗通工廠模式和單粒,其他的需要在工作中學習,這樣既不會顯得完全不懂,也不會出什麼紕漏。
程序方面,jdbc需要了解下,相關的有連接字的寫法,如何准備和獲取結果,什麼是resultset這類東西,當然,資料庫連接的關閉和釋放也是需要的。
類和抽象類和介面的關系搞清楚,繼承和實現搞清楚,重載重寫搞清楚這些都是基本概念。
EJB現在不太用了,稍微了解下,你可以用spring所以不用手寫EJB了。spring除了MVC以外,還有很多項目,DAO可以看一下,比較初級。
由於java主要是B/S結構,無論是集成還是自己的前後端,你都要看一下http,整個http的生命周期是什麼?存在哪些步驟和不同的application負責哪個階段,相關的有幾個request和response實體,包含什麼是session了解下。
業務邏輯的話,上手仔細寫幾個例子就好了
前段你不需要了解太多,JSP JS就足夠了,你是程序員,不是前端的美工,不用去了解太多。jsp上有個容易忽視的基礎點:tag到底是什麼如何處理。jsp的生命周期這些也最好看一下。
基礎的devops稍微了解下, git的代表,github可以注冊一個賬號,搞清楚本地repo和遠程repo之間的關系即可。SVN更為簡單一點。
Maven也要學習一下,主要是pom文件的幾個主要的部分,尤其是depedency。
code smells方面手寫萬把行代碼。自己有個感覺,不用去刻意背javadoc。
去面試吧,祝你好運!