如下這些文字,是我離開學校進入軟件公司,從事軟件開發工做1.5年後,來自公司領導的教誨,和同事閒聊時的感悟,在網絡上讀到的行業思考,亦或是在路上聽到的話。這裏記錄下來,權當是做爲一種人生經歷,或許對那些還未進入職場的弟弟妹妹們是一種忠告吧。程序員
這些語錄我採用關鍵詞、描述和評論的形式,展示在這裏。web
Q:你看每一年有那麼多軟件和計算機專業的畢業生,我以爲公司招聘一個程序員仍是挺容易的吧?面試
A:招聘很難,並且是很是的難。你想那麼短的時間裏,你要去認識和了解他,簡歷又不可徹底相信。並且即便筆試和麪試都表現很是優秀,你知道來了公司之後到底能不能勝任真正的工做任務呢。因此,招聘是一件很是困難的事情。這年頭,畢業的學生以爲找工做難,而公司又感嘆找到一個合適的求職者是多麼的困難。數據庫
【評論】:招聘難嗎?難,難於上青天;找工做難嗎,難,衣帶漸寬終不悔,爲伊消得人憔悴。如何可以找到適合本身的工做?面試前,對公司的業務要了解,對本身的知識和技能要了解,實話實說,把真實的本身交給面試官。讓面試官去衡量你和崗位的匹配度。編程
這種員工,通常都面臨着贍養父母和教育孩子的任務,所以他們須要一份穩定而有保障的工做來做爲支撐。他們也纔有可能更安定地完成工做任務。網絡
【評論】:員工穩定是一個公司可以長期發展的重要因素。除去加強員工的工做歸屬感,適當的外界刺激因素也是很重要的。編程語言
Q:華爲、百度等公司,人員流動極其頻繁,不少員工都是幹2~3年後就跳槽走人,難道這些公司沒有什麼補救措施嗎?俗話都說,人員穩定是一個公司可以長期發展的基礎。工具
A:像華爲、百度這種技術類公司,領導層的主要任務是留住處於公司核心技術層的精英,至於底層的那些技術員工,即便人員流動再頻繁,對於公司的戰略發展影響不是特別大。學習
【評論】:多麼殘酷的現實啊。努力的方向,固然是將來可以進入公司的核心技術層。測試
Boss:公司招聘你來,就是但願你可以給公司帶來價值的。不要在工做時間看書和學習,把學習的時間留在工做之外。
【評論】:業餘時間纔是拉開兩我的差距的關鍵。事實上,天下沒有「幸運」這回事。所謂的「幸運」,實際上是機會來臨的時候,決不讓它溜走,而是緊緊抓住。爲了抓住每個機會,就必須作好充足的準備。如何作好準備?爲什麼畢業2年後就出現分水嶺?答案就在天天下班回家後8~10點這兩個小時裏。看看別人在作什麼就明白了。
場景:經理給安排了一個小任務,在web端截取字符串的長度,若是超過限定值則用省略號顯示。就是這樣一個小任務,我花了幾個小時的時間在網絡上都沒有找到一個合適的解決方案。結果,經理僅用了5分鐘就在網上找了3~4個可行的解決方案。
Boss:遇到問題就要從網絡上去找解決方案,不要重複造輪子。若是給你安排的任務在網上找不到類似的解決方案,說明你作的這個事情是世界上歷來沒有人作過的。你以爲這個可能嗎?
【評論】:網絡資源是無限的,關鍵看你會不會去利用它了。絕對不要去重複造輪子。
Boss:若是一個任務,須要你去重複地作一些操做時,你就應該想辦法用工具去優化它,節省寶貴的時間。程序員要想提升,就應該想辦法從繁重的「體力勞動」中抽身出來,去幹有意義的事情。
Me:我有時候不太信任那些工具,以爲仍是本身去作比較放心。
Boss:你去試過這些工具了嗎?
Me:沒有。
Boss:一件/一個工具,不必定須要幫你完成100%的工做。它只要可以幫助你完成80%的工做,剩下的20%由你本身去完成,就能夠節省你很大的工做量了。
【評論】:俗話說,磨刀不誤砍柴工。要想提升工做效率,仍是要分析制約本身效率的因素,而後去作一些針對性地改進。要善於利用合適的工具去節省時間。軟件畢竟是一項系統工程,不能蠻幹。不少程序員,雖然他們工做辛辛苦苦,不辭辛苦,可是工做效率卻不高。就是由於他們太勤奮了,而不去動腦筋思考如何更高效地完成工做任務。
Q:爲何像GitHub,Stackoverflow,itk,vtk,dcmtk和各類開源項目,絕大部分都是由國外的人完成的呢,他們怎麼那麼有奉獻精神呢?
A:國外的人們工做真的是比較閒的,他們的業餘時間很是多。若是他們喜歡編程的話,作點開源項目,讓有共同興趣愛好的人一塊兒維護這個項目,也是一種樂趣哦。興趣是最好的老師。
Q:我工做勤勞,而且下班後還自願加班。領導看到我這樣子,會不會主動給我加薪呢?
A:答案是否認的。你常常加班,只能說明你的能力還不能徹底勝任給你分配的工做任務。那樣領導之後再給你分配工做的時候,可能就不會再分配更難和更重大的任務了。你以爲這是好事嗎?
【評論】:不少人都以爲本身加班是好事。但可能領導並非這樣想的。換位思考,是一種解決途徑。同時,努力提升本身工做時間的效率也是很重要的。
Q:都說編程是一項技術密集型工做,科技含量很高。各類編程語言,如彙編,C,C++,Java,C#,Python,JavaScript,PHP等等,還要掌握操做系統,數據庫等知識。那麼編程真的是一項很難的工做哦?
A:編程其實並不難。首先計算機是由人發明的,計算機再怎麼發達也仍是達不到人的思惟方式。問題的關鍵是人和計算機的思惟方式是不相同的,所以編程的關鍵是,你須要把業務邏輯用計算機能理解的語言告訴它,計算機只會作加法和重複性的工做。
Q:若是真的這麼簡單的話,那麼爲何仍是有不少人認爲編程是一項很難的工做呢?
A:那是由於他們沒有學過。人們老是對本身不瞭解的事情充滿好奇。其實,只要學習過,每個人均可以成爲程序員的。就像醫生,你接受過醫學專業的學習和技能的培訓,也是能夠當醫生的。
Boss:像閱讀編程技術類的書籍,就要強迫本身在必定時間內讀完。不期望第一遍閱讀就能徹底讀懂,關鍵是要了解這個語言全部的特性。在之後工做中,再遇到相關特性的時候,再進行深刻理解就能夠了。
【評論】:制定一項讀書計劃時,必定要加入時間限制,不要拖延。沒有時間的計劃,是永遠都完不成的。
Boss:任何一個分配給你的工做任務都要爭取在限定的時間內,保質保量地完成。「保質保量」是說你完成的代碼要在可以實現需求的狀況下儘可能減小bug的發生;「規定時間」是作在完成任務時必定要注意對時間的把控,若是雖完成了任務可是超出了限定時間,那也是應該受到責備的。就像醫生給病人作一臺要緊的手術,即便你刀口切得再細,縫合得再細緻,若是沒能在規定時間內把病人救過來,這臺手術也是失敗的。
【評論】:工做就是一場博弈,你須要時刻在質量和效率上平衡。工做中經過向有經驗的人請教是很重要的,二十歲跟對人,三十歲作對事。
Boss:你應該對本身要求更嚴格一些。當接到一個工做任務時,不能只是想着簡單完成任務就能夠了,而是應該盡本身最大的努力把它作到完美。一樣是寫代碼,爲何人們之間的差距會愈來愈大呢。
【評論】:工做態度是決定一我的能不能很好地完成工做任務的最重要因素。
http://zhang.hu/hire-a-smart-developer/
編程語言只是一種工具,對一個聰明的程序員來講,用沒用過什麼工具主要是由他原來的工做須要決定,並不能表明他所有的技能。一我的的聰明程序、對新知識的好奇心、自我驅動意識、爲問題找到最佳解決方案的決心,纔是他能不能成爲一個好程序員的關鍵。
不要把本身定位爲某種語言的程序員,說本身是 Java 程序員,C 程序員,Python 程序員等等。一方面會限制本身的發展,一方面對團隊總體的能力提高也不利。幾乎全部的語言都有它本身的適用場景,在合適的地方用合適的語言,才能極大的提高生產效率。
正確的作法是,首先要有良好的基礎知識,深入的掌握2~3門語言,而後適用於不一樣場景的語言要了解概念。基礎知識包括各類計算機原理、數據方面的知識,在學校沒認真學的,如今有時間也要補充。語言方面好比掌握了 C/Java,那 C++/Python/Bash/Javascript/CSS等均可以瞭解下概念,至少要理解在一個完整的產品鏈裏,它們分別適用於哪一個環節。
【評論】:軟件行業是一個很是強調人的價值的行業,價值就體如今有效地推進產品前進,而語言只是實現這個價值的工具。
Boss:不少程序員老是不肯意把改bug的時間計入本身的工做時間,但實際上,修改bug是程序員一項很是重要的工做。修改bug所花費的時間也是區分一個程序員好壞的重要指標。
【評論】:一個程序員完成功能編碼時引發的bug數量,bug的修復數量,修改bug引發新bug的數量,bug修改後又被測試reopened的,對引起bug的緣由分析,對bug優先級的劃分等等,都是衡量一個程序員是否優秀的考查點。其實,寫程序不難,難的是知道怎樣去寫;修改bug不困難,難的是要找到bug在哪裏。
Boss:在公司工做的時候,若是遇到本身不會的事情必定要及時去問,千萬不要不懂裝懂,既耽誤你的時間,又會對整個項目的進展形成不利影響。分配的工做任務,若是花了2~3個小時,仍然沒有找到頭緒,要及時找人討論;任務完成到30%的時候而依然進展不順時,也要及時找人討論。此外,當你去問別人問題的時候,問題必定要很是具體和具備針對性,而不要問太寬泛的問題。問問題時,必定要去問比本身水平高的人,而不要去問和本身水平差很少的。
【評論】:要想獲得具體的答案,首先你問的問題就必須很是具體。問問題必定要問比本身水平高的人。