㈠ 菜鳥心態綜合症
人的一生會遇到很多挫折,尤其是對於剛剛參加工作初期的年輕人。這個人生階段往往會出現各種各樣的處世心態,而這些心態會影響一個人對事情的判斷,碰明從而影響其橋吵橡前進的步伐。下面來和大家聊聊幾種典型的初級程序員「菜鳥心態綜合症」以及正確的處世原則。
症狀1:指望著公司里有一個老師
對於入職前的程序員們,總覺得自己工作經驗少,希望入職以後能有一個老師,循序漸進地給自己講解教學,並不斷地從技術上給予自己指導。然而,這個是沒有任何指望的。
臨床表現
過高地估計了工作後實踐的作用,因此在學習階段並不是認真地鍛煉自己。
入職後總圍著主管問這問那,讓項目主管煩得不行。
在簡歷中盡力地渲染自己渴望學習的心情。
治療1:弄明白她為什麼辭職
一個剛剛畢業不久的程序員女生在向我描述她第一份工作的辭職經歷時是這樣說的。
我不能在那個公司繼續待下去了,原因就是,我遇到了一個很難解決的問題,我想了很久也解決不了,而且那個公司里也沒有人告訴我這個問題該如何解決。我問了我的主管,問他這個問題應該如何解決,可是他卻不跟我說敏旁如何解決這個問題,而是讓我自己到網上去搜,讓我自己去想解決方案。
沒辦法,我只能選擇辭職,因為我真的沒有辦法解決這個問題了……
她說完她的這個經歷以後,臉上帶著委屈,我們聽聽似乎好像也挺有道理的。
但我想反問她一句的是:為什麼因為一個問題搞不清楚而辭職,難道你的主管讓你自己去找答案是錯的?
之所以她的第一次職業經歷是失敗的,其原因就是她沒有很好地具備一個合格程序員所應該具有的心理准備,就是「公司里沒有你的老師」。
治療2:理解公司的本質是什麼
公司是一個以「盈利」作為「唯一」目的的社會組織。
既然是以盈利作為唯一的目的,那麼公司的最大希望是,招聘一個來了就可以勝任該職位要求的員工,只有當這個員工某些技能需要針對公司情況進行調整的時候才會進行再培訓,但是絕對不要指望在公司裡面有一個老師隨時等待你的召喚。
治療3:要搞清楚你的主管是你的老闆,他絕對不是你的老師
有時候剛剛入職的程序員會自覺與不自覺地認為你的上級主管是你的「師傅」,其實,他們確實可以被理解為「師傅」,但絕對不是「老師」,因為他們是你的「老闆」。
你的上級有如下權利與責任。
給你安排任務的權利。
給你制定開發計劃的權利。
考核你工作質量的職責。
評價你是否符合該職位要求的職責。
對公司開發成本負責。
辭退你的權利。
需要注意,以上幾項職責中沒有負責教導新人的責任,有的僅僅是對公司開發成本負責,需要找到合適的人選參與開發,如果能力接近才會進行適當的培訓,以使其完全滿足項目開發要求。最重要的是,他有評價你的任職能力和辭退你的權利。
好了,說到這里,我想我不需要多說什麼你也會知道你的主管是不是你的老師了。
症狀2:不知道怎麼讓自己前進
程序員工作一段時間後,仍然認為知識不夠用、工作有點吃力,感覺始終在原地踏步,甚至有時覺得自己在退步。關鍵的問題是不知道怎麼讓自己向前進。
臨床表現
相信有「軟體藍領」這個概念。
遇到自己不會的任務就推掉。
在出現一個有挑戰的任務時,不願意主動請纓。
總是用自己現有經驗去套用所有的問題。
治療1:你只管低著頭上山,暫時不要向山上看
公司裡面沒有你的老師,要想進步,只有一句話「路在腳下」。只有自己一步一個腳印地向上攀登,才能到達成功的彼岸。
然而,登山的關鍵有以下兩個方面。
關鍵1:只管登山
程序員的成長就像爬山,你一步一步地走在台階上,每次向上攀登的時候看到的永遠是腳下的那一兩節台階,你現在只有一門心思即「向上攀登」。你就在一直不斷地向上走,走著走著你停下來,回頭向下看一下,發現「哇,已經這么高了」。
每一個難題就是你的每一個台階,如果做開發程序工作的時候從來沒有遇到過任何難題,這個情況是難以想像的,那意味著你也許在原地踏步。然而,這種原地踏步在現實的開發工作中是不可能遇到的,除非你每天都像打字員一樣編寫程序,否則一定是一個困難接著一個困難的。
關鍵2:不要向上看
在向上前行的時候,不要抬頭向上看,如果抬頭看你會發現上面有無數的台階,無形中給自己造成了巨大的心理壓力。你只管低著頭一步一步地向上邁台階,不用管也不用想上面到底還有多少台階需要走。
也就是說,在程序員的成長過程中,你只管一步一步地將每一個困難逐個解決和攻克,不用過分地關注未來還有多少困難,過後才能到達勝利的彼岸。
只有這樣,你終有一天才會知道「會當凌絕頂,一覽眾山小」的感覺是什麼樣的。
治療2:明知山有虎,偏向虎山行
不僅僅是困難有時會找到你,甚至你在沒有遇到任何問題的時候,也要自己去尋找困難。說這句話並不是說讓你故意把那些非常簡單的程序搞得很復雜,而是讓你在開發程序的時候能夠不斷地總結和挑戰。要勇於「明知山有虎卻偏向虎山行」的精神,不斷去挑戰困難,而這些精神可以使你在眾多程序員中脫穎而出。
為什麼這個精神可以讓你脫穎而出?
原因很簡單,你會那些別人不會的技術!
這一點足以讓你脫穎而出。
他為什麼得到提拔:
公司要開發運營平台系統,公司開發主管要求各個Team各自開發項目,每一個項目的開發都是為了最終組合成一個完整的運營平台系統。起初各個項目都被部署在公司內部,並且是運行在Windows系統之上的。然而,由於人事變動和運營平台新的移植要求,需要向Linux平台移植,並需要任命一個新的Team Leader來負責這個移植事件。
小王在公司工作了2年,對運營系統的開發非常熟悉,和其他人的區別是,他對未知事物非常敏感,而且自己非常願意鑽研一些新的技能。其中,Linux的使用就是他鑽研的重點。幾個開發人員中只有他一個人對Linux操作系統熟悉,那麼,他理所當然成為了這個任務的主要負責人。
這一事件使小王在公司的技術地位得到承認,為他下一步的發展提供了基礎。
藝不壓身,多會一門技術沒有虧吃,越是困難越得知難而上,只有這樣,才能使你在眾多人中脫穎而出。
治療3:沒有過不去的火焰山
如果在工作中真的出現了解決不了的任務怎麼辦?只要堅定地想一句話「沒有過不去的火焰山」。
1.遇到困難不能退縮
困難是你進步的樓梯,只有不斷地遇到困難,你才能不斷地向上攀登。當然這裡面所說的困難都是程序開發過程中遇到的困難。每遇到一個程序難題那都是你的一次鍛煉的機會,將這個難題調試通過後,你會發現你的戰斗等級就上升了一步。
為什麼說有些公司的開發主管在面試的時候喜歡選擇有開發經驗的人才呢?
原因是這些開發經驗就是解決難題的經驗。你解決的難題越多,說明你的開發經驗就豐富,最終達到沒有什麼難題可以難倒你的程度為止。
2.過不去的困難是沒有的
現在再回過頭來看看剛才講的那個女生,她在說明她辭職原因的時候說到。
「我不能在那個公司繼續待下去了,原因就是,我遇到了一個很難解決的問題,我想了很久也解決不了,而且那個公司里也沒有人告訴我這個問題我該如何解決。」
顯然在她眼裡,這個困難是過不去了,於是選擇了辭職。
過不去的困難是不存在的,為什麼這么說呢?原因就是,如果某項任務無法完成,則一定是如下原因。
(1)職責范圍外的技術,你的這個職位本身對這個技術的開發沒有職責的要求。
解決辦法:可以藉助外部力量進行解決。
(2)職責范圍內的技術,然而由於學藝不精,諸多問題沒有搞清楚。
解決辦法:需要認真地看書,把那些知識補充上來。
真正的困難是不存在的,都有解決方法。
3.相信主管對你的困難非常清楚
另外,應相信主管對你的困難非常清楚,原因如下。
(1)你負責的開發項目的主要負責人是你的主管,他對這個項目總負責。
(2)你是你的主管招聘來的,你技術水平的深淺他一定是瞭然於胸的。
一般情況下,你遇到了困難而你的主管不管你的原因,無外乎是希望你能從該問題的解決中找到你技術成長的路。因此,要了解到主管希望你成長的苦心。
治療4:虛心使人進步,驕傲自滿要不得
雖然前面說你的主管不是你的老師,但在公司里每一個人又都是你的老師,即使他或她比你入職晚幾個月,虛心地看到別人的技術優勢,不斷地提高自己在某些方面的不足。只有這樣,才能不斷地讓你進步。
耐心地傾聽和虛心地請教,這些都是讓你進步的一個捷徑。
驕傲自滿就是浮躁,驕傲自滿是要不得的,這種驕傲的情緒會讓你盲目自信,不思進取。
一個小兵的故事:
小孟很聰明,可以很快將主管交給的任務完成。在他剛剛畢業入職半年多的時候主管讓他獨立負責一個項目的開發。
主管的意圖是:小孟是一個可以培養的人才,身上還有些不足,希望通過給他一個項目讓他鍛煉,而且近期人員比較緊張,分派不出新的項目負責人,硬著頭皮也要讓小孟頂上去。然而,這時的小孟卻不是這樣理解的。他的想法是:「我的前期工作非常出色、業績突出、技術過硬,在這次公司人員不足的情況下正好一個機會使我成為了一個項目的負責人,我的地位越來越重要了。」
那麼,他接下來採取的策略是,不斷地找他的主管「談心」,其目的是要求漲1倍的工資,他的籌碼是,如果不能滿足他的要求他將辭職。開始他的主管認為他年齡小經驗不足,耐心地給他擺事實講道理。但小孟仍然認為這是公司對他越來越重用的表現。可想而知,這時候他的主管面臨人員困難和資金困難的情況下,做出這個決定是不可能的。於是小孟使出了最後一招即「辭職」。
當然,小孟希望通過這個舉動來達到他的目的,而不是真的想辭職,但是他的主管同意了他的申請……
從中可以發現這個故事有幾個明顯的問題,小孟沒有注意到。第一個,他剛剛畢業入職不到1年,需要積累的東西還很多;第二個,所在部門人員緊張並且項目進度要求緊。明眼人都可以發現這時候他要求漲工資屬於無稽之談,顯然是過高地估計了自己的各個方面。使他沒有看到這兩點的原因,就是他的驕傲自滿,最終自己吃下了自釀的苦果。
一個技術總監的故事:
這個公司有一個技術總監,他的最高學歷是博士,他的工作經歷都是IT的大公司。之所以他能夠勝任這個職位,正是由於他的學歷和大公司工作的背景。他的驕傲可想而之,不僅驕傲而且有點自滿。
一次接到一個項目,是針對一個網路設備的監控。由於這個網路設備不是傳統類型的設備,無法獲得他的IP地址,因此,這個總監武斷地宣布,這個項目我們接不了。這個項目的斷然拒絕將使公司因此每月至少損失40萬元的營業收入。
他判斷這個技術無法完成的論據是:第一,他是博士學歷,在大公司做過,沒有見過什麼東西能解決這個問題的;第二,他解決不了的話,神仙也解決不了。這時候,一家很小的公司利用了非常簡單的一個小技巧解決了這個問題,而這個收入將落入那個小公司的口袋。
他作為技術總監的失敗將會直接導致整個公司的失敗,當有一天成為了技術的總負責人的時候,驕傲自滿的情緒就更加危險了。他沒有做出正確判斷的原因正是他自己的資質,太過於自滿了,蒙蔽了自己的雙眼。為什麼他就不能去廣泛地徵求團隊裡面其他人的意見呢?這就是他這個項目失敗的原因啊!
不管你是一個小兵,還是一個領導,不管你有多少資歷,也不管你有多強的技術背景,你要知道你仍然有好多不懂的事情,一定要把心態放平,放下你的驕傲。
老子有言:「知不知,上;不知知,病。聖人不病,以其病病。夫唯病病,是以不病。」
意思是說,能知道自己所不知道是高明的,不知道卻以為自己知道是有問題的,所以高尚的人之所以沒有這個問題,就是因為他們討厭這個缺點,因此沒有這個缺點啊!
症狀3:想做圈養的羊,不想做野生的狼
總想找一個安逸並且清閑的程序開發工作,不願意奮斗,想做一隻羊。而實際的情況很現實,不管你願不願意,你就是一隻野生的狼,都需要獨立生活在一個曠野中。
在近乎於殘酷的自然界中,沒有人告訴你應該做什麼,也沒有人告訴你不應該做什麼,你行動的全部理由就是「活著」。為了生存,你需要發揮你的全部技巧,用你的能力去贏取你的食物,同時也要警惕不要被別的動物吃掉。
臨床表現
領導給任務就做,沒任務了就玩。
自己的工作只要求做到合格即可。
工作昏昏欲睡提不起精神來。
治療1:理解「叢林法則」生存的法則
野生的動物都要遵循一個法則——「叢林法則」,「叢林法則」是一個近乎殘酷的動物世界弱肉強食的法則。叢林中沒有小時候所認為的「獅子—兔子—昆蟲—草」食物鏈條。真實的情況是,任何動物可以吃掉任何動物,是真正的弱肉強食。
獵狗有時候可以吃掉獅子,豹子有時候可以吃掉獵狗,猴子有時候也可以吃掉豹子,根本沒有慣性認為的供應鏈關系。
即使是獅子,如果是病弱的獅子,一樣會被別的動物吃掉。
一個叢林里上演的真實故事:
一隻狸貓,為了吃掉小蛇與它進行搏鬥。小蛇縱然使出渾身解數也無法逃出狸貓的厲爪,結果還是被狸貓吃了。在狸貓津津有味地吞咽並咀嚼這條小蛇的時候,突然來了一條巨型蟒蛇。還沒有等狸貓反應過來,蟒蛇已經把狸貓纏繞起來了。
狸貓縱有百般本領也無能為力了。眼看著狸貓一點點地被蟒蛇收緊它的脖子,狸貓已經進入了彌留之際。然而,顯然狸貓的頭腦仍然很清醒,它的眼睛中透出了對「生」的渴望。它多麼想有人在這時候幫助他解脫危機啊!
然而,戲劇性的一幕發生了。就在這個時候,一隻黃蜂飛來,看到這只狸貓被禁錮住,並且眼睛睜得很大,於是,它落到狸貓的眼睛上,開始吸食狸貓眼睛……
大自然中沒有「可憐」這個詞,所謂「叢林法則」其實就是「生存法則」。
人類的社會又何嘗不是這樣「弱肉強食」的呢?
經常可以聽到一些老闆的口頭禪「我們公司不養閑人」這句話,這充分體現了一個現實。
如果你對公司沒用了,將很快被辭退。沒有人會因為你的失業而可憐你,相反會認為你是一個「無能之輩」。
……
㈡ 程序員菜鳥的日常
1. 軟體工程
軟體工程是為軟體開發的良葯,為什麼這么說呢?軟體工程本來就是為解決軟體開發中的各種問題出現的。曾經自己僅僅簡單的認為:不同的文檔面對不同人群,不同的人看不同的文檔。其實這僅是文檔的第一步,人不同,文檔的內容的側重點不同。第二步就是文檔是否充實,給不同的人看文檔時,他們是否能看懂文檔:項目經理能否看到他想要的信息?程序員能否對著文檔設計出用戶需要的系統?用戶能否看完文檔之後使用系統?
2. UML:
UML圖不只是簡單的畫畫用例圖、時序圖啊等等,將所有的圖畫完不是目的,目的是相互合作的開發人員傳遞合適的參數,將系統拼到一起時能否運行。在畫UML圖時,不是圖畫的好就好,是對圖中類,參數等備注是否詳細。開發人員看到能否成功開發系統。
3. 設計模式:
在系統中添加設計模式,目的為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設計模式更多是解耦合,減弱模塊之間聯系,關系不再緊密。事物之間是相互聯系的,在系統中不斷的降低聯系,系統才能更加可靠,可維護。
4. 三層架構
我現在對架構的認識還很淺,架構設計的目標和軟體本身、設計模式要現實的目標是一樣的,無非就是增加系統的可靠性、安全性、可擴展性和可維護性等等。
三、 對未來的憧憬
最近半個月的時間,在學習B/S,B/S中最主要的內容就是網頁製作和前台處理。這部分的內容主要是看視頻學習,跟著視頻做工程。往後的博客會不斷給家送上我對B/S的學習成果。
下半年還有很多的學習內容,計劃在兩個月的時間完成B/S的學習,並在期間准備兩科自考,一個三級考試,考試對於中國的學生來說是非常的簡單的。回頭看看,啰嗦了這么多,文章就先告一段落吧,學習才剛剛開始。
㈢ 菜鳥程序員需要學習哪些基礎知識
java學習是由簡入難的學習過程,不要一開始就學習太過於復雜的,也不要好高騖遠,java的基礎很重要,所以一定要由最基礎的學起,抓實基礎。下面是昌平北大青鳥java培訓小編結合大部分情況為大家總結下:菜鳥程序員需要學習哪些基礎知識。
首先要學習java的基礎知識。
不要被新技術迷惑,所謂萬變不離其宗,新技術都是基於java的基礎之上,如果基礎不扎世碼知實,對於這些新技術的理解也是一知半解,學不到根源。
1、web開發
全面的JEE的web開發知識:Servlet+JSP+javaBean+TagLib,到這里做一個完整的web應用項目開發。
2、J2EE基礎
j2ee說白了就是做網頁,這時候你要從先從java里脫身出來,學些跟網頁有關的東西:
html:很簡單的東西不是太笨的話半天左右即可搞定
js:易學難精,想速度找工作不必花太多時間,隨便買本javascript書略讀並備查推薦:JavaScript高級程序設計;JavaScript權威指南
資料庫:如果沒有基礎的話,建議多花時間,至少一個月,開始建議用mysql,然後是oracle,然後是搜消sqlserver,這段時間最關鍵的就是sql語言的編寫。
xml就是一種封裝數據的格式,沒啥好學的,練習一下怎麼用dom4j或者jdom讀寫xml即可。
jsp,servlet,tomcat:這段時間說白了就是用jsp來做個網站。
3、EJB開發
包含全面的EJB知識:1)EJB入門和無狀態會話Bean;2)有狀態會話Bean;3)BMP和CMP是實體Bean;4)jms和MessageDrivenBean;5)事物和安全(JTA、JTS和JAAS);6)WebService的開發和應用;
要會使用主流框架
框架其實就是一些公共的工具和方法,被封裝到一個盒子中供您隨時調用,框架也是別人用java編寫的,相當於你調用別人寫好的公共模塊,可以節省時間和效率。
主要是3大框架:
mvc框架:struts,struts2,jsf
or映射框架:hibernate,ibatis
業務框架:spring
重量級框架:ejb
這些都是java技術的學習知識點,和學習流程,先簡單後復雜,由一個點展開,開模純始更廣更深入的學習。這些都掌握了以後,你就學會了java,具備了基本編程的能力,但不代表你就能做出優良的產品,所以接下來,你就需要學習軟體工程和演算法,進一步的提升自己。想更快更扎實的學習java知識嗎?趕緊到昌平北大青鳥java培訓機構報名吧,選擇昌平北大青鳥,你絕不後悔!
㈣ 90後二流大學程序員自述:從「菜鳥」到「辣雞」,我到底經歷了什麼
程序員高手和菜鳥,不僅僅是技術上的差距,還體現在習慣、經驗、看問題的角度等各個方面。
1.代碼規范:代碼寫得不好,其實一眼就能看出來;比如代碼裡面的各種命名(包、類、方法、變數等等)。在最初寫程序的時候,很多人都會起沒有含義的變數命名,比如 String str;其實我們完全可以把變數名稱起成帶業務含義的,比如在運用中慢慢發現用String username我們會越來越熟練,寫的也越來越好。
㈤ 如何渡過小白期,不再當菜鳥程序員
相信習慣的力量
菜鳥和大牛的區別除了寫代碼、debug的核心能力差距之外,另外一個很大的差別就是在習慣上。大牛經過摸爬滾打練出了一系列優良的習慣,而菜鳥好習慣還沒養成,壞習慣有了一堆。所以身為菜鳥的時候一定要有規范和習慣意識,養成好習慣,去掉壞習慣讓自己越來越習慣寫出優質的代碼。
關於習慣仁者見仁,每個人也都有自己的習慣。
一個函數只做一件事
如果有一天你接手了另外一個同事的代碼,發現他有一個函數裡面裝了三千行代碼,你會是什麼感受?
有一些人會不知不覺地停止學習,因為他已經足夠應付工作了。在工作當中他會有一種在這個領域我當下會的技能已經足夠了的錯覺,有些人甚至會因此覺得其他資歷更深的同事也不過如此,似乎並沒有比自己多會多少東西。
我當初就是這樣,因為我發現我工作當中用到的東西玩的非常溜,用起來得心應手。我一度有些膨脹,覺得自己已經算是一個經驗豐富的程序員了。直到後來有一次面試,被問到了一個常用的工具的技術細節,我張口結舌一句話也說不上來,我才發現,自己知道的只是皮毛而已,甚至連皮毛都算不上。
當然我們工作當中對很多技術的要求都只是會用,你會用就夠了,這並沒有問題。我也並不覺得每一門我們用到的技術都需要去刨根究底,但我們需要對我們的實力有清醒的認識,哪些是勉強會用的?哪些是真正了解掌握的?哪些是需要掌握但是只是勉強會用的?
能夠想明白這些問題可以讓我們保持一個清醒的頭腦,對自己的當下的處境以及長遠的發展目標都會有一個清楚的認識。
積累知識而不僅是經驗
新手或者是小白有一個特點就是往往更加依賴經驗而不是知識,舉個例子吧。比如新手後端經常遇到的問題之一就是maven package失敗,很多人解沖突的辦法就是mvn clean & mvn install。也就是清空重新建立,因為大部分情況下這個命令可以解決問題。所以很多新手就記住了這個命令,每次遇到maven失敗就這么來一次。
如果這個命令解決不了呢?這些人可能會換個命令試試。如果常用的解決問題的命令都試過了還是不行呢?這些人可能就僵住了,覺得這個問題解決不了了,得請大牛來看了。
這里的核心問題是新手積累的是經驗而不是知識,他們只是簡單機械地把出現的問題和解決方法做映射而已,並不是從原理和核心層面理解問題出現以及解決方案生效的原因。那麼帶來的結果就是,積累到的只是經驗,下次能解決問題不是因為學會了問題的解決方法,也不是理解了這一塊技術內容,只是單純地記住了而已。這顯然也是一種偽成長。
其實我之前也遇到過這樣的問題,雖然我每次都有意識遇到問題記錄下解決的辦法,這樣下次就可以不用請教別人了。然而雖然我記錄的問題越來越多,但是每次遇到新的問題還是解決不了,需要請教別人。直到有一天,被我問的大牛露出了不耐煩的神情,才讓我下定決心自己學會解決問題。
於是我不再是頭痛醫頭腳痛醫腳地解決問題,而是去學習了一下問題背後的原理和機制,再從報錯日誌上分析錯誤產生的原因,思考解決方案,最終徹底學會了解決這一類問題的方法。之後不但能夠自己獨立解決問題,而且還可以去幫助別人了。我後來回過頭來想想,如果我第一次遇到問題的時候就自己嘗試去學習其中的機制,而不只是記住解決方法,應該可以做得更好。
少說廢話,多些代碼
著名的Linux之父Linus有一句名言:talk is cheap show me the code。翻譯過來就是廢話少說,代碼拿來。我覺得這句話非常符合這一行的精髓,我們不是靠嘴皮子吃飯的,而是靠實實在在的產出,這個產出最終是要落實到代碼上的。作為一個新人,可能我們會有這樣的問題,那樣的困惑。然而這許多的問題和困惑我們光想是沒用的,只能用硬實力來解決。
著名的C語言作者譚浩強也有一句名言:新手學編程最應該做的事情就是寫滿一萬行可以運行的代碼,之後你就自然入門了。道理其實也是一樣的,少說廢話,多做實事。多做多練,實力自然不會差。空想吹逼是成不了大牛的。所以如果你猶豫想要學習一門新的領域,但是不知道從何做起的時候,不妨想想這句話,別管它三七二十一,先搞起來寫起代碼來再說。搞著搞著,你自然就明白後面應該怎麼做了。
以上就是我自己積累的一些思考和想法,如果你是一個小白的話,希望它能夠幫助你順利度過新手期,向著大牛的目標進發。