Ⅰ 怎麼才能成為一個優秀的程序員
1、迷戀技術,保持對代碼的熱情
興趣是最好的老師,如果不是最初對編程充滿興趣,應該很少有人會選擇程序員這個行業,但同時程序員是一個有點乏味枯燥的工作。如果你不迷戀技術,對代碼充滿熱情,那你只能做一個平淡的程序員。
2、在實踐中成長,磨礪技術
程序員是一個在實踐中成長的職業。你看再多書,聽再多的視頻課,自以為學到很多東西,但正在接觸項目的時候,就兩手發軟,頭腦空白了。最好的提方法,是正在參與到項目中去,最好是能參與從設計到開發到測試到維護一整套的整套流程。
3、加班雖苦但也是提高的過程
虎虎在之前的文章中說過:畢業之後的前三年最為重要,要認認真真鑽研技術,積累經驗,至少能在某一方面成為技術達人。程序員加班是很正常的事情,要加班工作,加班學習,同時在這段時間要注意多總結,注意工作方法,合理安排時間,提高工作效率。你現在的付出是為了以後的成功!
4、不怕失敗,學會尋找成就感
新程序員由於技術水平、經驗的欠缺,寫出的程序bug多,執行效率低,可能被同事嘲笑(我發現這還是普遍現象),然後被上司責怪,內心充滿有挫折感。要學會自我減壓,相信挫折與失敗只是暫時的,發奮圖強。在工作中要學會尋找成就感,哪怕你只是完成一個小功能,優化了一段代碼,都是你辛勤付出的結果,是你能力提高的體現。
5、要學會寫文檔
不要以為程序員只要負責寫代碼,如果是那樣,你永遠不能有上升的空間了。因為不管是走技術路線,還是管理路線,都離不開文檔,方案文檔,技術文檔,產品介紹文檔,管理文檔等等,是你了解開發流程,產品運營的必由之路。
6、學會復制粘貼
現在的開發資料已經非常的充實,遇到難以解決的問題不要過分糾結,為難自己,請打開搜索引擎搜索一下。畢竟,你做的是工作,不是在學校做研究。
7、細節決定成敗
不少程序員都有這樣的習慣,好不容易思考出解決問題的方法,迫不及待的把代碼寫出來,功能也實現了,立馬提交代碼完事。殊不知你的代碼中還有不少細節需要完善,大到內存泄露、資源釋放、代碼是否高效,小到注釋是否規范,都是你必須關注的問題。且不談這些細節問題對你做出來的項目的影響,就是對你編程習慣的影響也是深遠的。
Ⅱ 程序員怎麼升職
1.大公司:打下手---代碼工--- 程序員---項目組長---項目經理
2.小公司:代碼工---程序員---項目組長---項目經理
雖然小公司容易成骨幹,但項目組長拿的錢也行沒有大公司程序員的高
也許很多程序員都碰到過,自己的技術能力已經很棒了,可還是無法升職,其實程序員要晉升到管理層,不僅僅要技術好,溝通、應變力和為人處事也是非常重要的。
1. 大膽的說出自己的想法
大多數程序員都不善言辭,溝通能力不夠。而一個正常軟體項目開發,都是團隊合作模式,同時也是按照用戶的需求進行分析梳理。如何很好的獲取用戶的需求,並與用戶及團隊內部之間溝通,是工作能力突出的重要的一環。平時,多與周邊的同事溝通,周末多參加戶外活動,努力的將自己圈子打開。平時多發表自己的看法,不用擔心會受到批評,說出去才是關鍵。
2.要注重細節
公司團隊里很缺乏一個項目助理,然後不得已選了一個程序員小伙,讓他兼職管管樣機、發發通知,這個小伙絲毫沒有怨言,除了自己的代碼照常寫的非常穩妥之外,這些小事也處理的非常好,每天加班加點也要完成。後來沒多久他就當上了主管。一個有能力把小事做到極致的人,也必定有潛力把大事做好。
3.聽取別人意見,取別人長處
人都會犯錯,一般犯錯的時候領導會直接指出來,有些人每次聽完之後都會去反駁這些理由,而且還覺得這並沒有達到自己想要的,然後他交上來的東西依然沒有任何改變,而有些人都會說:我以後會注意「、我會按照您的要求去執行、這是我的想法不知道您覺得如何。然後接下來就看到他的改進。
一般領導在明確指出你的錯誤,不管是耐心的說教還是嚴厲的批評,你都應該抱著「有則改之無則加勉」的心態,如果你要反駁,就需要准備充分的理由和依據。
面對領導的意見,要弄清楚其准確意圖,然後實施針對性的改進措施。這就是團隊里的游戲規則和生存之道。即使不是領導,是平級和下屬,也應該採用類似的心態和應對方法。
4.不斷提高自己的技術
一般程序員都會有自己的職業規劃,在什麼樣的年齡達成什麼樣的成就或者技術水平的一個整體提升,目前從技術提高的曲線來看,新手的技術提高速度最快,無論從時間還是急迫性兩個方面對新手的壓力挺大的。而到了成熟階段,其編程時間也大大縮短了和學習技術的迫切性也降低了,所以技術提高速度就慢下來許多。所以,你需要時刻看看自己的技術發展之路,哪些走的比較踏實,哪些走的比較急促;哪些是自己的技術特長,哪些是自己的技術薄弱環節。反思後一定要抽出時間抓緊學習,把自己的技術上明顯不足的地方給補上,這樣程序員的技術水平加上豐富經驗和工作能力會使得自己更加具有實力,可以應付各種挑戰,為今後的發展鋪平道路。
Ⅲ 程序員,如何少走彎路,成為一名技術專家或者架構師
#1 專業技能
@首先當然基礎知識要扎實,一些經典的專業書籍一定要看。比如,設計模式,演算法,數據結構,所在領域的編程語言的專業書籍等.關於不同的能力階段,需要讀取什麼類型的書籍,請參考ThoughtWorks(中國)程序員讀書雷達,每年都有更新。
@作為架構師,review別人的代碼並給出合理的建議是基本功,比如變數或者方法命名的規則;所以代碼大全,重構,改善既有代碼的設計,Clean code 等等肯定需要看。
@ 對於某一個技術領域或者業務領域,一定要有一門技術是精通的,因為這樣你才能體會到以後遇到自己不懂的技術的時候,如何能夠快速成為這一方面的行家。
@ 平常有時間一定要多多進行代碼的訓練,也就是Martin Flower常說的Kata練習,這個比喻來自於跆拳道,跆拳道選手一般每天都會找一些基本的招式,進行反復的練習,從而訓練肌肉的條件發射,那麼對於我們程序員來說,一定也要進行持續的編程訓練,比如上面提到的那位同事,給的建議是,雖然把大部分時間花在了溝通和協調上面,沒有機會寫代碼,但是自己一定要利用業余時間,自己找一些例子來聯系,比如,參與開源項目,或者到網上去搜索一些大師的經典Kata聯系的例子;或者看工作裡面是否有一些小工具,是否能夠提升自己的溝通效率,當然已經天天寫代碼的童鞋們除外。請參考我轉發的另外一篇文章和另外一篇介紹能在線練習Kata code的文章.
@ 最好能夠在精通一門語言的基礎之上,學習其他的語言,從而站在一個更高的角度,對於程序語言有一個更高層次的抽象認識,比如,學了java之後,可以學學Ruby,Groovy,C#等等,其實語言之間都是相互借鑒的,比如Lamba表達式,連java也慢慢的向函數式編程方向靠攏。
@ 如果有時間,一定要自己維護一個博客,既然選擇了架構師,就決定了自己以後不僅僅是一個技術專家,同時也要成為一個佈道師,為企業組織或者社會上的其他IT同行們貢獻自己的一些微薄之力。
@ 多參加一些社會上舉辦的軟體專業會議或者活動,了解當前比較流行的技術和框架。
@ 這條不提倡,我以前有一個同事,幾乎每年都要更新簡歷1~2次,目的不是真正的換工作,而是通過面試得到當前市場上大部分公司正在使用什麼技術和框架。對於這條,請慎用!!!!
@如果有結對編程的機會一定要好好珍惜,特別是和高手大拿一起結對的時候。
@如果大家上面都已經做的非常的好了,這個時候可以看看架構設計方面的書籍,比如企業應用架構模式,架構之美等等。
@ 去51Job上搜索架構師這個職位標簽,看看不同行業的企業對於架構師的技術要求和標准,然後結合自己當前所處的行業和你自己的技術特點,比如擅長前段或者後端,有選擇性的學習一些自己感興趣的技術或者方法。
@ 關於常用的網站,沒有定論,筆者主要是根據搜索的結果去發現適合自己的網站,所以需要讀者掌握一定的搜索的技巧,筆者一般喜歡用英文搜索,這樣的話資料比較全也比較新;如果下載電子書的話或者查看博客的話 一般會首選CSDN;如果是解決工作中的問題的話,在StackOverFlow上面被解答的概率是最大的,此外平常自己也需要去積累一些自己感興趣的技術的人氣比較旺的網站列表,比如一般和Window相關的就是MSDN;如果對Java入門比較感興趣,可以看看這個網站。對於一些開源的框架,一般都會有想對應的社區,google一搜索,很快就能找到。另外一個德國人寫的博客的非常的精緻,如果對Eclipse插件開發特別感興趣的朋友們可以去參考它。
@大家如果時間和精煉允許,最好能在Github開源和分享自己平常寫的代碼。這樣一方面可以熟悉git用法,另外一方面也可以把自己平常練手的代碼免費保存,何樂而不為呢?
@如果大家平常遇到什麼問題,可以到StackOverFlow上面去尋找答案;當然,如果你能自己注冊一個StackOverFlow賬號那是最好不過的,這樣不但可以提問,還可以幫助別人,同時上面還有很多工作簽證的工作機會。
#2 軟技能(現代社會,一個合格科學家不僅僅是某一個行業的技術專家同時也是一名專業的社會活動家)
@遇到問題,一定要多想,遇到一個問題,如果解決了,就要反思為什麼能夠解決,如果以後遇到類似的問題,
如何更快速的解決。
@英語的重要性,不言而喻,因為現在很多新技術的框架的中文文檔非常的少,即使翻譯成中文,也是二手的了(國內自己的開發的一些開源框架除外)
@ 有時間的話,看一些溝通方面的書籍,如果有參與溝通的機會的時候,一定要想如何把溝通做的更好更舒暢。
@ 如果有機會的話,可以參加PMP的考試,關於如何備考PMP,請大家參閱另外一篇文章:如何備考PMP,但是如果不想參加的話,也沒有關系,至少要涉獵到項目管理方面的書籍,否則以後如果成為架構師之後,客戶或者管理者給你說一些項目管理上一些專業術語時,到時候就會一頭霧水。
@架構師其實從某種意義上就是一種角色,而不是一種職位。一定要時時刻刻保持空杯心態。
@一定要有一顆保持飢渴學習和耐得住寂寞的赤子之心。
@當前的技術節湊是非常快的,特別是結婚以後又有小孩了。一定要好好的利用自己碎片時間,對於一些技術,當時讀不懂不要緊,但是一定要記住和了解其關鍵詞,這個主要是為了拓寬自己的視野。比如,當前你想自己開發一個系統,結果已經有一個開源框架實現了,而且還很穩定,這個時候,自己就沒有必要重復發明輪子了。
@與不同的技術、編程語言、設計模式和結構等(甚至是它並沒有在日常中給予你直接的幫助)打交道。你永遠都不知道這些知識是否會在未來派上用場,但是對你絕對是有益無害。
@在工作中,能夠幫助到別人解決技術難題,一定要盡量全力以赴,因為這不但可以贏得同事的好感和口碑,同時也能增長你解決問題的經驗和提高你的技術思維能力
@ 一定要掌控好自己的時間,對工作沒有幫助的會議,能不參加盡量不要參加,當然,企業安全,公司規章制度如果是強制性的,該參加還得參加,但是如果沒有工作效率和扯皮的會議,盡量避免參加。
@程序員要耐得住寂寞,要在自己的領域深挖,不能看啥火,就學啥,一定要有自己的想法和判定,如果決定不了,可以向資深的同事或者朋友溝通。
@盡量參與到項目中的編碼,因為架構師不能與項目脫離。
@ 如果有機會可以鍛煉一下自己在大眾環境下的演講和PTT的能力。
@有機會多做知識分享,因為你一旦分享了知識,你就會對這門技術有深刻的印象,同時也能樹立在同事中的良好的技術形象,從而贏得更多的專家影響力而不是職位影響力。
上面只是我當前能想到的,知易行難,知道了上面的一些經驗,並不代表年輕程序員們就能馬上成功,畢竟這需要一個鳳凰涅槃和實踐的過程,但是肯定能幫助有志於於此的年輕程序員們少走一些彎路,限於筆者水平,如有總結不恰當或者不到位的地方,還望批評指正。
Ⅳ 女程序員如何在職場提升自己
首先要樹立一個觀念,那就是成長是一個適應社會的過程。選擇成為一名程序員需要長期的堅持,而非三分鍾的熱度。走彎路或遭遇困難是常有的事,考驗的不僅是自己在學習中積累的技術,還有自己的智慧。
如果是程序員新手,初入職場一般會被安排一些簡單而基礎的工作,按照分配的任務開始寫代碼,和在學校學習的內容基本一致。如果對相應語言的代碼比較熟練,工作效率會很高,也不會出太大的錯誤。在這一階段也是對自己學生時代學習成果的一種檢驗。在參與過幾個項目之後,你會擁有一定的成就感。在剛入職的3年內,可以在業余時間來自學彌補一些知識上的不足,同時對所做的工作熱情而專注,這是今後職業生涯的一筆財富。
在經過3年的職場鍛煉後,可以根據自己的技術特點,揚長避短。當然,這是以後要討論的,這里暫不詳細闡述。
1、初入職場,要有平和的心態
上班不僅僅是工作,也是在與人相處。學編程的朋友或多或少都有一個大牛夢,希望通過一波高端的操作來獲得同事和領導的認可。該表現的一定要表現,這無可厚非,筆者要提示大家的是當我們初來乍到就獲得好的成績,不能沾沾自喜,而要總結成功的經驗,找到自己的位置;如果遭遇挫折,也不用氣餒,人非聖賢孰能無過,但一定要清楚挫折的由來,不要重復昨天的故事。拿得起、放得下是高情商的人共有的特點。
2、學會學習,增強「自身造血」能力
優秀的程序員到底需要幾萬行代碼的積累?其實因人而異。人和人的悟性不一樣,但要記住,在工作中所敲的代碼不應僅僅是為了應付工作,而要從中吸取營養。當自己能夠接觸到工作幾年的同事寫的代碼,要留意幾分,看看有沒有自己值得學習的地方。
及時關注行業內新的趨勢。IT技術更新換代很快,在從事Java開發的同時,不要甘於滿足這一領域,可以了解Python、AI開發方面的技術,在業余時間可以去嘗試一番,如果公司有新的業務需要勇敢地嘗試,不要保守在自己的已知領域。學習和工作並不沖突,若是能夠從工作中理清思路,找到需要彌補的地方,這樣的學習才是可持續的。
3、拳不離手曲不離口
不論是Coder還是Programmer,對代碼的態度絕不應該停留在「知道」和「看懂」的水平上。很多編程的經驗就是從無數次敲代碼中得到的。為什麼新手敲代碼IDE會頻繁地報錯而老程序員不會?原因就在這里。程序員一般都面臨很繁重的工作,如果每敲一段代碼都要用力去回憶自己當初是怎麼學的,而不是信手拈來,那麼,工作將成為一筆沉重的負擔。要讓編程語言和母語一樣熟練,遇到問題就知道調那個函數和變數,不假思索地敲出代碼,這才是大牛應當具備的功力。
4、樹立項目全局觀
項目全局觀有廣度也有深度。一個團隊負責一個項目,每個人都有不同的分工,那麼在熟悉掌握自己的工作范圍之後也要把眼界放寬,看看自己的模塊是如何與別人的模塊銜接的,開發流程是怎樣的,整個項目的架構是怎樣的情況。然後了解一下該項目的應用場景,實施的意義,問問自己目前的架構能否解決客戶的需求,有哪些需要改進的地方,把自己思考的內容記錄到工作日誌中,經過一段時間,你會發現自己成長的很快。除了在廣度上有所突破以外,還要研究的有深度。筆者曾經看過JavaEE框架的源碼,其中涉及到的演算法、數據結構、設計模式等編程思想,當下不一定會理解,但可以記下來結合自己的工作內容慢慢消化,這樣今後遇到一些底層的問題會處理得游刃有餘。