Ⅰ 一個程序員所要經歷的步驟
程序員應具備的12種能力
畢業四年來,感覺自己也是從一名不合格的程序員一步步走過來的。回頭反思一下,合格的程序員有很多標准和要求,下面是我總結的一個合格程序員應該具備的12種能力。中國軟體行業的崛起,靠的是合格的程序員。任何華麗的管理制度都不能保證軟體項目的成功交付,合格的程序員就是有力的保證,是項目成功的基礎。寫下這些,是為了給剛剛進入程序員這個職業的新同學們一點參考。我一直以為,當程序員是很辛苦的,如果不是真正的喜歡,很難堅持下去。如果真的不喜歡這個職業,也該尊重這個職業,尊重自己,趕緊改行。
1. 編程語言能力
不用多說,作為合格的程序員,精通一門語言是必須的。這種精通,不是說看了一本《24小時精通XXX》,抄了幾個程序就能說精通的,要靠長時間的積累和浸淫。
2.編碼能力
我曾經看多很多程序員寫的代碼,在同一個jsp或者java源文件里,出現了三種以上的對方法的命名方式,有下劃線間隔的,有全大寫的,有拼音首字母的。就像一個菜市場,雜亂無比,估計10天後,他自己都無法看的懂。遵守編碼規范,是一個程序員最基本的要求,可悲的是,很多程序員根本沒有意識到這個問題的嚴重性。隨意堆砌網上搜來的代碼,根本不管可讀性和可維護性,只要能實現功能就行了,心想做完這個項目,就拍拍屁股走人了,缺少最基本的職責素養。我經常把代碼必須成程序員的孩子,你就是是孩子他爹,孩子他媽,是有感情的。對你自己的孩子,你能不仔細呵護嗎?你是稱職的父母嗎?這是我編寫的一個Java編碼規范,供大家參考,這里可以下載http://gurudk.javaeye.com/blog/111734
另外一個就是注釋,要注意不是為了注釋而注釋。對類,以說明職責為主;對方法,以說明意圖為主;對方法體,以說明實現思路為主。對於大段大段的代碼,要分段,使用空行隔開,並使用行內注釋進行說明。
思維的條理性,寫代碼之前,先簡單計劃一下,用自然語言把流程寫下來,用於整理實現思路。不要看了需求或設計之後,馬上就敲代碼了,敲完代碼馬上就debug。花點時間思考,敲代碼只是最後一個很簡單的工作,不要把自己變成一個代碼打字員,編寫邊想,寫了刪,刪了寫。安安靜靜把實現過程想清楚,在腦子里先實現一遍。再去敲代碼,水到渠成。
3.面向對象思維能力
如今,多數編程語言都是面向對象的編程語言。而這些面向對象的編程語言的共同的精髓就是面向對象的思想。掌握這些比面向對象語言本身更重要,比如對繼承,多態,重載的理解。對面向對象基本原則的理解,比如開閉原則,介面隔離原則,單一職責原則等。在此基礎上,應該掌握常用的設計模式,比如工廠模式,策略模式,觀察者模式,模板方法模式,命令模式等等。我面試過很多程序員,沒有一個能說得上幾句的。
4.利用工具能力
工欲善其事,必先利其器。有了趁手的傢伙,工作效率可以提升數倍。你編程序,有沒有選擇一個很好的IDE,以前聽說編程高手都用記事本寫程序,我覺得那是一種自虐。就像以前看到的一篇文章,說一幫戶外旅行愛好者,出去旅遊,背了重重的旅行包,裡面裝著什麼壓縮餅乾等快速食品。他們寧可就著礦泉水啃壓縮餅干,也不肯去1里路都不到的快餐店,農家菜館吃飯。工具是為目的服務的,好用,提高效率就行,形式無所謂。
另外一個常用的工具就是日記本,好聽點可以稱為知識管理工具,我用的是myBase,感覺非常好用,在之前,我的所有的片段內容都是記錄的單獨的文本文件里的,非常不好找,管理也很混亂。
經常上互聯網,看到好多好的資料想保存下來,作為日後查看之用.一開始,我用的是firefox自帶的書簽,但是自己分類太累,多了之後不便於查找,很麻煩。後來用了得樂書簽(del.icio.us)的firefox插件,非常方便,現在成為了我必備的一個工具。
還有一個最重要的工具就是搜索引擎了,我裝了google forfirefox插件,感覺不錯,還有英文翻譯功能。按照我同事的說法,內事用,外事用google。很多技術資料都是英文的,用google搜索效率高一些。搜索引擎用好了,就等於打開了一扇通向知識寶庫的門,使用搜索引擎,關鍵字選擇很重要。
經常去瀏覽大牛的blog,逐個網站訪問很麻煩,去看了又可能沒有更新,可以藉助於RSS訂閱工具,我是用iGoogle桌面工具,每天早上花半個小時掃一下,大牛的最新文章盡收眼底了。
5. 英語能力
新的技術資料都是英文的,英語國家的IT技術走在我們前面至少10年(這是我自己估計的數字,可能正在縮小)。就連印度,一個連基礎設施建設都不太完善的國家,因為其英語基礎較好,其在軟體外包領域的發展也非常迅猛,遠遠超過了我們。學英語,首先是有信心,其次就是花時間。多閱讀英文資料,使用金山詞霸,google的firefox插件等工具配合,貴在堅持。
6.學習能力
在IT也混飯吃不容易,整個環境進化的太快,你不學習,就等於落後了。學習要有針對性,別今天學ruby,明天學python,後天php的。首先要認清自己的目標,自己短期目標是什麼,1年後,3年後,5年後的目標是什麼。結合這些目標,確定自己的學習計劃,人的精力畢竟是有限的。當然,多掌握幾門編程語言也是好的,可以擴充自己的知識面,重要的是為自己的目標服務。
要想系統的學習一門技術或工具,看書是最好的方法。看完後,然後上網找相關資料,進行深入學習。學習要抓緊一切可以利用的時間,比如電腦啟動要花1分多鍾,旁邊放一本書,可以看上幾頁了。公交車上,地鐵上也可以看。
當然,不能只學習技術,要經常聯系自己的軟技能,比如溝通能力,表達能力。你可以把自己學到的東西,解釋給自己的同事聽,既加深了理解,又增進了同事之間的交流。學習的最高境界就是你能夠把學到的東西解釋給別人聽,這才說明你理解了。在學習心理學上,稱之為構成主義。
我學一樣東西,總是先上網了解有沒有相關書籍,如果想學,就買一本或者去圖書館找相關的書來讀。我買的書,家裡快放不下了(到目前位置,我買了1萬多塊的書)。我多半是把目錄看完,了解這本書講解的主要內容,然後需要的時候,我就可以立即補充它進入到我的知識結構。每個人可能都有自己的學習方法,意識到學習的重要,並能夠根據需要補充自己的知識,這種能力更重要。
7.創造能力
普遍認為,東方人模仿能力很強,但創造能力差。我見過很多這樣的程序員,經常說,「這個只能這么解決了,我想不出有什麼別的方法。」可能他根本都沒想過別的方法,或者懶得去想。對任何一個問題,找出兩種以上的解決辦法都是非常容易的,簡單的google一下,可能就是數十種。悲哀的是,有些程序員經常止步於自己構建的狹小領地之內。對待客戶也是這種態度,不是積極的幫助客戶解決問題,而是推脫這只是唯一解決方案。
打破這一思維定勢的首先的一個辦法就是在面臨一個問題時,首先想到的是「沒有不可能」,或是「一切皆有可能」,前面那個是阿迪的廣告語,後面是李寧的。只有這樣去想,才能尋找解決問題的別的出路,即使最後我們試了很多種辦法,還是只有著一種解決方案,但我們在這種尋找解決方案的過程中,常常會產生很多好的想法,這樣才會使我們真正深刻思考一個問題。建議大家看一看《水平思考》這本書,他提供了一些進行創造性思考的方法和工具。
但我認為,堅持認為存在另一種解決方案的信念是第一位的,方法和工具都是其次。
8.文檔能力
也許有人會質疑,程序員跟寫文檔有什麼關系。大家開源軟體也用過不少,看看Spring,hibernate,Struts等最流行的開源軟體的文檔就知道,他么的tutorial,他們的getstarted,他們的reference文檔寫的多麼的易懂。其實寫代碼也相當於寫文檔,只不過用的是編程語言。同樣,寫文檔,用自然語言,也相當於寫程序,簡單明了,清晰易懂,這樣的「程序」誰看誰舒服。同樣,對於想進階到設計師或者需求分析員角色的程序員,文檔能力更是非常重要。
word是一個最實用的工具,很多程序員,多級編號都不會用,索引目錄也不知道如何生成,更別靈活應用樣式了。很多排版都是所謂的dirty work。垃圾樣式一大堆。其實,靜下心來,稍微學習一下,就能寫出一篇格式漂亮的文檔。
9.抽象能力
抽象能力是認識事物從現象到本質的能力。如果你只是停留在「見山是山,見水是水」的層次,客戶說什麼,你就做什麼,設計怎麼做,你就怎麼實現,從來不過問為什麼,也不去想他是滿足了用戶哪些方面的需求呢。這樣可能只解決了表面的問題,可能會引起返工。認識到本質,才能讓你的程序具備更大的靈活性和可擴展性。在做企業應用軟體開發中,抽象能力體現為對問題域的理解能力,對領域模型的抽象。合理的抽象也是代碼重構的前提,每一次重構,都是向更好的抽象邁進了一步。
10.代碼評審能力
代碼評審和單元測試是保證代碼質量的兩種常用手段之一。代碼評審能力,說明了你的審美標准,知道什麼是好的,什麼是不好的,什麼是優雅的代碼,什麼是糟糕的代碼,你才能讓自己做的更好。
11.單元測試能力
沒有單元測試的代碼,只能說是半成品。因為沒有什麼能證明你的代碼是可以運行的。測試驅動開發是一個非常好的敏捷過程的最佳實踐。單元測試還可以作為回歸測試,在修改代碼時,起到警戒線標志的作用。是否具有單元測試的意識是區分程序員是否合格的重要標准。寫不寫單元測試是區分平庸程序員和優秀程序員的重要標桿。
12.DRY
DRY是一種原則,就是Don't RepeatYourself.出自《程序員修煉之道-從小工到專家》。這條原則可以用到很多地方,比如你經常要編譯,打包,部署應用程序,供集成測試用。每次你都在重復你自己,寫一個自動化腳本(比如用ant,批處理命令)來將這些工作自動化,以提高效率。
還有一個就是我們經常在不同的地方切換IP,如果每次手工做,也非常浪費時間,寫一個bat命令可以解決,找一個小工具也可以解決。
編碼時,對代碼的復用也是在重復你自己,雖然拷貝過程很爽,但是維護一致性就要付出巨大的工作量,特別是將來維護的人不是你的時候,使用代碼生成工具可以解決這個問題。類似的例子太多了,如果你發現你經常做一些重復的工作,就要警惕了,是否違背了這個原則,想一些辦法將他們自動化。
Ⅱ 嫁給程序員是一種怎樣的體驗
我老公就是一個程序員,我經常管他叫屌絲男。不光是程序員是屌絲男,我想說的是,學計算機的不管男生還是女生都是非常屌絲的。我老公平時的穿衣標配就是牛仔褲加白襯衫,平時背個大書包,里邊裝著個筆記本。平時不上班的時候,上哪都是穿一雙大拖鞋。牛仔褲我不讓洗的時候,從來不洗。
但是程序員屌絲省錢啊,因為他們平時不買衣服,所以省錢。還有程序員老公非常專一,因為在他們的世界裡只有代碼,所以他們是沒有時間搞三搞四的,有一個媳婦對他們來說就已經伺候不過來了,有時候他們在家裡也寫代碼,我看著都累聽,而且像我這種人,從來不喜歡加班,但是程序員要是有什麼項目沒做完,他們是自己喜歡加班的,在家裡也加班,只要一寫上代碼,你跟他說話,他都聽不到的。
還有程序員老公都比較疼老婆的,你要是不愛洗衣服幹家務什麼的,你就像程序員老公撒個嬌啊,一般他們都抵擋不住撒嬌這個利器的,所以在我家總是我在床上玩手機,老公在拖地幹家務活。還有就是程序員老公賺錢多啊,相比其他職業,當然不要跟銷售和自己做買賣的人比,這個肯定是比不過的,但是一般的職業相比,程序員還是掙得比較多的。所以你不用擔心你和老公的生活問題。程序員一般鬧到也比較好使,所以他們在現實生活中還是很有用的。總之選擇程序員老公是不會錯的。
Ⅲ 為什麼越來越多的人不想做程序員了
作為一個在帝都混日子的程序員,經常能看到不少同事轉行。
最開始是一位年紀比較大了(快40歲,在這個行業算老了)的,回家開個小店去了。後面聊了聊,非常慶幸自己做出了辭職的決定,現在日子過得是滋潤得很。
再之後,有回老家小縣城干別的去了的。要准備好回縣城,恐怕就很難找到IT行業的工作,除非是自己干。但小縣城能幹起來的活不多,加上那裡這方面的人才也難找,也就基本認為是已經換行了。
最近,甚至身邊有剛在17年畢業後加入來的成員,都不想幹了,想要考公務員。現在究竟是一些什麼原因,導致這樣了了?
7.要創業了
不能光是說一些不好的,不想幹了的人中,肯定有不少是想要自己出來單乾的。創業也基本分為兩種,一種是自己出來接單,成立公司開始為別的企業做項目。另一種是自己做產品。這兩種其實都比較好起步,特別是第一種,有活就會盈利。而且成本基本只有人力和應酬,機器大部分也都是用戶負責的。第二種則是比較賭的,要麼很成功,要麼很快燒錢結束。不管怎樣,這都是不少程序員不再願意為別人碼代碼的原因。
Ⅳ 為什麼說互聯網行業都是在「拿命換錢」
我之前還聽說過「廣告行業是拿命換錢」「金融行業是拿命換錢」「培訓行業是拿命換錢」...所以很多行業都有「拿命換錢」這個梗,聽聽就好。因為人總是有自憐情緒,覺得自己最苦逼。
我自己互聯網公司工作好幾年了,待過經常要加班的公司,也待過比較寬松的公司,總體上來講沒有拿命換錢的感覺。簡單說下我對互聯網公司工作強度的看法吧:
據我所知像阿里這樣的知名互聯網公司會比較忙,因為他們的kpi要求會高一些,畢竟工資很高嘛,可能網上會爆出一些知名互聯網公司員工加班多甚至猝死的案例,才會給人造成互聯網行業是「拿命換錢」的印象。
4.忙不忙看個人。有的人對事業比較有追求,總想超額完成老闆交代的任務,想快一點升職加薪,那麼對事業的投入就會比一般人多一些。這種工作強度肯定是很大的,但是這是他自己的選擇。
不管怎麼說,自己的身體狀況自己心裡多少是有數的,當感覺不舒服的時候一定要去看醫生,如果覺得工作強度太大,可以跟領導反映,也可以換一份輕松點的工作休息兩年,並不是所有的公司工作都是高強度。
最後提醒一句,一定要選擇五險一金齊全的公司,有條件的也盡早買商業保險,以免萬一生病或身故,好有一些經濟補償。
-------鄭喜月(ID:xiyue1612)--------
Ⅳ 程序員加班如此瘋狂,都有哪些原因
程序員加班是程序員,工作中很常見的一個情況。為什麼要加班呢?顧名思義就是工作沒完成,或者是工作任務量太大,他沒有辦法在規定的時間裡面做完,所以他就只能瘋狂地加班來完成自己的任務,這樣才能不被上司批評。
第三個原因就是因為程序員的日常比較繁瑣。因為我們都知道程序員這個工作對於工作人員本身的要求是非常高的,不管是她知識領域的專業性,還是她實際操作的技巧性,都是有著嚴格要求的。所以說這個崗位上面的人才還是比較稀缺的,工作的人數比較少,分配到每個人身上的任務也比較重。
Ⅵ 你見過最厲害的程序員是怎麼樣的
以前曾經做過十餘年的編程,見識過不少程序員,其中有兩位是比較厲害的。
第一位,J同學,非科班出身,糧食專業畢業的,之後在一個食品廠工作,因為比較清閑,於是他突發奇想,想考某個211的計算機研究生,就去買了書來看,但是要實踐啊,他又沒有計算機,就有空總去公司的電腦室蹭機器用,電腦室的人,就讓他幫忙開發一個工資管理系統,不知道是不是想為難他,結果他研究生是沒考上了,但是經過一個月的摸索之後,居然把工資系統給做出來了。讓電腦室那些科班畢業的人臉上掛不住啊!
之後他就斗膽去了一個國內知名的企業應聘程序員,居然還給應聘上了,慢慢做到了華南區的技術總監,再後來他幾個同事出來創業,高新挖走他。
他這個人就是傳說中的怪俠,非常低調,樸素,不按時上班,不按時下班,工作效率非常高,愛抽煙,請教他什麼問題,他一時想不出來的話,就去外面抽根煙,煙抽完了,回來就會有答案,反正非常神奇。
第二位,B同學,科班出身,211大學計算機研究生,當時是他的導師跟我們單位有來往,推薦過來的,我面試的他,惜話如金,聽說他C語言非常厲害,但是當時我們做項目需要PB,他說他不會,我就說,那給你一個星期的時候,你回去學習一下,再來面試。一個星期後,再過來,給他一個小模塊,很快就做出來,非常棒,之後,項目的技術難題,大部分都是他解決的。平時,他也不怎麼跟我們來往,但是有事就做,也不打 游戲 ,按時上班,按時下班,非常討厭加班。
遇到技術問題,下班後打電話給他,他不接的。有一次,我們第二天系統要上線,大家都在忙著測試,加班,他到點就走了,領導追到電梯門口,問他,XX哥,你走了,他說了一個字,是,就進電梯了。後來也是被高薪挖走,聽說到現在40歲也還沒結婚。
我們公司有一位非常厲害的程序員,基本上一個人當做一個排兵力使用。也就是說一個人寫代碼的效率基本上抵得上10+人的能力,一年隨隨便便寫個幾十萬高質量的代碼。這種人對編程語言的理解已經到了登峰造極的地步,且能夠靈活自如地使用。
在自己編碼能力強的同時,對架構的理解能力也是超強,一個大的系統能夠很快地進行模塊拆分,快速的定義不同模塊間的交互介面,可以快速的安排任務下去。
另外代碼的質量基本上沒地說,導致跟著他的測試人員幾乎發現不了Bug,這哥們在寫代碼的同時基本上順手就把單元測試寫好了,代碼質量高的簡直出奇。
當然了,至於學習什麼新的開源框架或者新的技術架構,基本上就是2-3天的功夫,就可以全面掌握。
目前為止,公司一直當做寶一樣供著。
我見過最厲害的程序員,是在2001年入職的一間香港電路板公司的電腦部經理,他也是最值得我尊重的程序員,那他最厲害的地方在哪裡呢?
編程語言只懂Foxpro DOS版本,但所有的ERP流程,英文、管理方法說得滴水不漏,有一次和財務的同事聊天,才知道他的月薪達8萬多。
很多程序員最怕大老闆提問題,但在他的眼裡,大老闆提問題就是一個商機,多多少少都要老闆加工資加設備。 高情商的表現就是無論下屬或老闆通通管理得服服帖帖,包括我自己,甚至老闆還沒有說話就己經知道老闆的心思了。
老闆分配的編程任務應期三天完成,絕對不過4天。軟體開發效率的提高,自然要依賴下屬心甘情願的加班付出才行,做到這一點,真的是難能可貴。
最厲害也是我最佩的一點就是,40多歲了頭發還沒有一點白的跡象,每天高效率的工作,下班後就拋開工作的煩惱,盡情桑拿按摩享受。
我認為最厲害的程序員不是編程技術,而是如何利用編程技術,不知道你認不認同?
應該是讀研時的學長,精通Java和Python,畢業後進去微軟研究院工作。
當時和他在一個項目組,他獨立完成了教學平台語言分析模塊,NLP 模塊。我們團隊任何問題都能很快給出解決方法,前端後端都擅長。
當時我剛接觸linux,他就已經把Linux作為工作學習唯一的選擇。經常用terminal 操作,敲起代碼太帥了
誠邀,本人在杭州華為研究所工作,之前在一家創業公司工作過,公司里一個工作10年的大神,撐著整個創業公司,老闆總能拿到某些項目源代碼,不同語言的,c c++ .net java總之很多,給他,一禮拜就可以全懂了,所有語言基本都是1禮拜搞定(玩代碼的都知道精通一門語言後學其他的特別容易,不外乎面向對象的,面向過程的,然後就是各種API )上手做項目,之前很多不懂的問題問他都可以從本質上分析得很明白,主要是基本上看幾眼就可以知道哪裡錯了。或者大概方向,我後來去華為,都是他建議的,現在還在那公司的他聽說是技術總監了,應該不怎麼敲代碼了。
核心的代碼總是有那一兩個程序員來實現的。比方說現在微信的一開始的核心代碼。
比方說Linux的核心代碼, 都是由林納斯·托瓦茲編寫的, 並且為了能夠讓開源社區的人一起進行開發, 又編寫了Git版本控制。當你不滿意某個軟體或者系統的時候, 能夠自己實現並製作出更好的也許就是厲害的程序員吧。一直到現在很多的系統分支都是來源於Linux的內核。
最後如何成為最厲害的程序員, 還是要學習基礎核心的知識, 操作系統, 數據結構, 演算法, 編譯原理, 計算機網路, 在這個基礎上學習編程都是為了更好地實現自己的心中所想。為什麼這樣寫, 這樣寫會產生什麼效果。 為什麼Golang最近這么熱, 為什麼鴻蒙會被看好, 它又和其他的有什麼區別, 就可以自我判斷, 而不是見風就是雨。
最後希望自己也成為那個最厲害的程序員。
很久以前,我用win98的時候有次我系統崩潰了,因為我是電腦白痴,我朋友給我介紹了一個高手來幫我修電腦。
他看了一下電腦,問我有沒有98的盤,我說沒有。
他想了一下,叫我把固定電話拿給他,我想修電腦要電話干什麼,但人家是高手,我也不好說什麼,就把電話拔下來給他了。
他把電話線空著的一頭接在電腦的一個插孔內,然後進入dos,就開始在電話上不停的按著鍵,他按鍵的速度異常快,但是只按0,1兩個鍵,我搞不懂這有什麼用,但也不敢問,看了半個多小時,他還是不停的按這兩個鍵,我徐徐的有些困,我問他這東西要搞多久,他說要幾個小時,我給他倒了杯茶,就一個人去隔壁睡覺了。
醒來的時候,一看已經過了4個多小時,我起身到隔壁,看見他正在98裡面調試,過了一會兒,他說,你試試,我坐上椅子用了一下,真的好了,我當時也不懂電腦,謝過人家就走了。 後來我慢慢對電腦有了了解,終於了解,原來當時那位高手是用機器語言編了一個98系統,我後來問我朋友那位高手的下落,我朋友說前幾年去了美國之後,杳無音訊....
五年前有幸在一家軟體公司做產品經理。小的軟體公司。坐標西安。招人還挺不好招的。雖然給的薪水還不錯。但是真心不好招人。這種小軟體公司沒有名氣。真正牛逼的人都不來。
百試幾百人,包括做產品和前端的也算在裡面。光程序員這塊。有百分之六十的投簡歷的都是從某培訓機構出來的。所以的項目經歷。和待過的公司都是一模一樣,有明顯的人為的痕跡。
但是後來實在沒有人手。招了一兩個,差。差。差。真是差到極點
後來又經人推薦,招了一個,說是做安卓開發的。結果連個軟體的心跳包都調不好。軟體的升級這塊都搞不定。最後還是我這個外行,逼著他。一點一點卡,才把軟體升級這塊稍微搞上路了。
說出來真是讓大家笑話,華為的外包中軟國際。有個孩子實在忍受不了裡面的虐待,在裡面工作了一年半。然後跳到我們公司。這個孩子,才是稍微讓人可以用一下。就是起碼。你給他的工作。他能完成。其他的人都是在摸魚。因為這個公司的老闆以前也不是做手機軟體這塊。沒有資源,不認識人。
他是做電腦PC軟體,到後面做BS系統多一點。其實這種沒有技術含量,找的別人的框架。去修改。
普通人見不到最牛逼的程序員,最牛逼的程序員,一定是在最牛逼的軟體或者互聯網公司的深宮後院裡面。還沒出世的。就像當初的張小龍,史玉柱,裘伯君一樣。
你現在能看的牛逼的,感覺牛逼的。都是因為你不懂這個。你才覺得牛逼。包括前幾年比較活躍的黑客們,製造一些病毒。這都不是牛逼。包括熊貓燒香的李俊,普通人覺得他可牛逼了。但是真正的他出來後,去金山 360這種公司,提鞋別人都不要。
因為搞破壞不是牛逼。也不是自己水平有多牛逼。
我來講一個我見過最厲害的程序員。
這個程序員是我第一份工作碰到的大牛,我的第一份工作在中興通訊成都研究所,當時是做操作系統研發的。
我們當時經常會做一些培訓和技術分享,那時候我才入職3個月,我發現公司里有個人每次技術分享時候,就很多人去聽,並且會議室爆滿,連站的地方都沒有,然後我有次也去聽了一下, 第一每次目睹大牛的風采,因此操作系統是最底層的研發工作,會涉及到內核這塊知識,而linux內核知識特別抽象,看書根本很難看懂,但是這個大牛能把很難的東西講的很容易理解,並且在會上面對大家的提問總是能對答如流,實在是厲害。
而後我通過公司里的老員工才了解到,這位大牛是自學成才的,他的文化程度才初中,破格錄取到中興通訊,當時是操作系統部門的技術專家,他都能自己編寫操作系統,對各硬體都非常了解,也出了很多書。可見興趣是最好的老師,讓他能夠在程序員中發光。
必須是ACM大神,樓天成,樓教主。不了解他的可以網路之。是個天才一般的存在。
幾年前清華大學找同學玩,他那時是清華軟體學院的學生,突然說要帶我去見他的偶像,還說是最後的機會了,我們跑去計算機學院,當時博士正在答辯,通過在場的同學找到了他,他很靦腆的千呼萬喚始出來。他們兩在那裡交流了半個多小時,最後互留了EMail,我跟他聊了些我專業的內容,他還蠻好說話。 後面還通過這位同學認識另一位ACM屆大神,上海交大的戴文淵。我對編程略有了解,主要還是崇拜天才。
Ⅶ 美歐的程序員不常加班嗎為什麼
現在國內程序員幾乎成為了加班的代名詞,但歐美的程序員瘋狂加班的相對比較少,對於這一點倒是有這種感受,之前曾經外企工作過一段時間對這種有類似的感受,講一個真實發生的事情,曾經和美國總部的程序員一起合作做一個項目,由於項目的周期趕得很緊,周末去加班,結果需要配合的美國程序員的加班申請沒有被批准下來,只好在自家院子里修柵欄種菜,這種情況在國內幾乎是不可能發生的,項目趕得緊加班加點是常有的事情,而且默認是不存在什麼加班費之類 ,項目緊急狀態下也會默認自動加班。
由於當時入行不到兩年,非常不理解,還去找項目負責人說到這個事情,最後這個事情也就不了了之,其實這也反映了中國和美國上的差異,在國內做程序員拿的工資比普通的工種還是要多很多,但在美國這種差異不是很大,主要是各行業整體來講已經比較成熟,即使環衛工作也算正式的工作,各種保險也是正常給上著,整體來講不同職業的收入差異不像國內的那麼大,在歐美正式的工作加班就需要支付加班費,一般情況下不提倡通過加班來完成任務。
就本質而言中國的軟體行業相比歐美還是存在較大的差距,在迎頭趕上的階段加班加點也算是正常事件,再加上國內互聯網進行的如火如荼,這也是難得在互聯網領域趕超歐美的一個好機會,又把程序員加班的氣氛帶動了一番。
為什麼歐美程序員加班比國內程序員少一些?
1.相比來講歐美的產業更加成熟一些,加班基本上都會配套加班費,在這中國幾乎是不可想像的事情,技術工種和別的工種的工資差異也不是那麼大,所以在歐美找一個正式的工作難度要遠高於國內,所以從公司角度效率主要在上班時間提升,加班基本意味著加班費,需要領導審批,不提倡加班。
2.國外程序員的比例不像國內這么失衡,需求量不是那麼迫切,供需關系沒有那麼緊張,而且大部分公司不提倡加班,加班支出費用比正常上班的工資要高,即使加班風氣很濃的日本,都開始對加班說不了。國內軟體行業相比發達國家在積累方面差距還很大,正是需要迎頭趕上的時期,加班加點也屬於正常現象。
行業成熟了,供需關系平衡了,有底子了加班現象自然就會減少。
去年上半年,一位同事去了德國,仍然是從事程序員的工作,然後給我們講述了他的親身經歷,讓我們羨慕不已。
他們一家三口過去的,孩子已經上小學三四年級,去了德國一個不是很有名的城市,據說華人非常的少。工資在5千歐的樣子(估計也是剛過去的原因),不過還要交各類保險,稅後多少我也記得不是很清楚。
讓我印象最為深刻的是,這位同事去了沒多久,媳婦兒就懷了二胎了,於是震撼的消息來了,他現在可以一周只去單位兩天,而且工資不變,其餘時間可以照顧媳婦兒,直到孩子出生或到一定的年齡(有點兒像我們的陪產假,不過人家的陪產假非常長)。大兒子上學自己只需要繳納一點點錢,據他說等老二出生之後,不僅沒什麼開銷,而且每月還有幾百歐的補助。
那麼歐美程序員真的不用加班么?且聽我下面的分析:
最近新東方年會的一個節目火了,歌詞用到程序員身上,也是恰到好處。
「幹活的累死累活,有成果那又如何,到頭來干不過寫PPT的」
「只會為老闆的朋友圈高歌,領導隨口一說,立刻討好跟著,項目馬上啟動不計後果」
說的太好了,我都不禁起立鼓掌了。
我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。
相比於國內動則 996,227 的超強度工作,歐美的程序員是沒有這么誇張的。但不代表歐美程序員就不加班。
本人工作隸屬一世界五百強外企,剛剛帶隊完成了一個大型的IT系統上線項目。涉及到近百人的項目團隊,其中大部分程序員、業務分析師都是老外,有幾個外部關聯的系統是從美國購買的,所有的程序員都是美國人。
我在中國,所以和美國東部有十二小時的時差,這時候無論中國或者美國的項目團隊,都得加班,否則時間上湊不到一塊兒。
要麼美國人早上5-6點就到公司上班,要麼中國人晚上6-7點繼續加班,或者反過來。當然,美國人是不怕起得早的,很多人為了早下班,寧可早上5-6點就到公司上班了,這樣可以下午4點多就下班回家接孩子或者happy,這點跟中國人相反,中國人很少願意早上5-6點就來公司上班。
就算是這樣,我們在項目非常緊張的時候,也給美國的供應商下了死命令,就是中國人在做系統切換的期間(一周),美國人方面的程序員必須按照 中國的工作時間 同步,也就是他們晚上9點到早上9點之間必須隨時待命,這對他們來說是不折不扣的加班。
美國人也沒說啥啊,錢給到位了,還是乖乖的加班了啊。
歐美的程序員,能吃苦的還是很能吃苦的,但是混子也多,一個電話就能分辨出來,對於那些一上來就推三阻四各種繞的程序員,我通常做法就是 一次容忍、二次警告、三次請你走人 。
畢竟上百人的大項目,我沒這個時間和義務來教育你如何做好你的工作。
當然,歐美畢竟還是要輕松一些,很多人給你加班一周之後把任務完成了,是說什麼都要去休假的,只是這時候如果你還非要在他休假的時候去騷擾他,他也會毫不客氣的拒絕甚至立刻投訴的。
只能說,歐美人相對守規則一些,把私人時間看得更重要一些,但不代表他們完全拒絕加班,或者說不願意加班。
希望我們國內的公司,也能多一些這樣的契約精神,不要天天搞什麼「狼性文化」,把員工都榨幹了,最後也不過是涸澤而漁罷了!
國內It最大的問題是許多公司的it從業者素質不高:領導自己對問題都沒徹底清楚。提需求的人沒有成本,無止境地提不靠譜的需求。碼農自己開發時也圖快,代碼極粗糙,連自己都覺得寫的是shi,同時也提高了系統的風險(不少跨專業報名培訓學校,培訓幾個月直接上崗,別指望他們懂更多)總之就是,leader很忙,產品很忙,碼農很忙,測試很忙,就是這樣的惡性循環。
我在美國做程序員第二個年頭了。在剛畢業那會,我會說,放屁!誰說美國程序員不加班,有deadline或出bug的時候都一樣都會加班。
但是後來…好吧,我發現我錯了。在我了解了996之後,好吧,我覺得美國那不叫加班
推薦你看浪潮之巔這本書,就講了上世界美國it行業的發展。
怎麼說呢,歐美的程序員肯定還是會加班的,只不過不像中國企業這么嚴重,這么普遍。
首先明確一點,歐美IT企業加班少,並不是不需要加班。歐美IT企業加班的需求也是非常高的。
但是為啥程序員還是加班少呢。
第一個 原因就是工會
其實中國和美國法律都一樣,都是規定每天8小時工作制。加班需要付加班工資。
但是美國之所以企業不敢越雷池,主要是有一個逆天的工會存在。美國工會強大到誰都敢懟,美國就發生過警察工會發動警察罷工的事情。警察的僱主是政府,工會政府都敢對著干,還怕你個小小的IT企業?
所以,如果一旦加班弄到員工都不滿意,工會真心能讓你吃不了兜著走。讓你再也招不到人都不是問題。
第二 就是美國程序員工資高
如果企業實在忙,要求員工加班,那就必須付高額的加班費。這個實在是肉疼啊,一般來說企業是承受不了的。
那企業不給行不行?恐怕法院會讓你長記性,美國加州某個企業曾經就因為加班,被法院判賠償了1.7億美元。這么一來,誰敢不給加班費。
有的人問了,你不是前面說美國IT企業加班需求也是很大的,那怎麼辦。
是的,任何一個IT企業都有大量的加班需求,但歐美企業又不能強迫員工加班,於是他們想出了幾個辦法。
一 勾引員工自願加班
別笑,這是真的,你現在如果去美國矽谷,一定能看到很多程序員在加班,但是基本上都是自願。
我不是在胡說八道,歐美IT企業勾引程序員加班有很多詔
彈性上班時間
早上不要求你按時到,你自己自由安排上班時間,不知不覺就加了幾個小時班。這是很有效的勾引程序員加班的手段。
用辦公環境來勾引
我們來看一下:
微軟的辦公環境
谷歌的辦公環境
休息倉
你們以為企業給程序員弄這么好的辦公環境是為啥?谷歌甚至還給提供免費理發!這個不是企業錢多燒的,只有一個目的,勾引你加班。
我覺得在這種環境下,員工不自覺的就自願加了好多班。
第二 外包
如果勾引來勾引去,程序員還是不來加班呢?或者小企業,根本沒有谷歌微軟這么好的環境,怎麼辦呢?
這種情況下,美國IT企業會把做不完的活外包給程序員工資相對低的地區,那就是中國和印度了。
中國和印度,法律對加班管的不嚴,程序員工資低,於是美國很多公司都喜歡把活交給中國和印度來干。
我們中國企業就比較慘了,沒辦法再外包了,非洲,中東這些地區根本就沒有多少IT人才。只能自己幹了,反正象徵性的給點加班費就行了,成本也不高。
美歐的程序員不常加班嗎?為什麼?個人認為這是環境決定的,現今國內各行各業都是這樣加班加點幹事情,看看有多少民營私營企業有周六的,每天能夠准時下班的就明白了。良心點兒的企業還給你算加班,有些企業就明確說一周只休息一天,想干就干不想干雙方不再見。
而國內程序員這個職業加班更甚。絕大部分的軟體、互聯網公司基本都是民營私營公司,而且又得趕工期、節約成本,那就只有逼著程序員加班了。雖然看起來名為高工資,可實際上算下來單位時間的工資並不一定比早九晚五的企業高多少。每天10幾個小時,有時周六周日都在加班,這種還是常有的事不稀奇。甚至有些公司明確說明,我們給的工資較高,沒有加班費甚至也沒有換休,干就干不幹拉倒。
而這一切也源於我們的工作生活環境造成,還有相關的法律規定是否執行到位,是否有人來監督,是否有地方去申訴。另外整體收入較低的情況下,大部分程序員為了那份收入與那個職位,也就默認被壓榨而不出聲。你出聲可以,那就另謀高就吧。特別是現在程序員供過於求,更是很多企業毫無顧忌這樣搞。企業為了追逐利益最大化,加班是一種很常用的手段,而且還不用付出什麼成本。
在歐美,市場及管理相對較成熟,程序員與其它行業一樣就是個普通的職位。在整體大環境下不提倡加班,有人監督有投訴地方,自己不願意加班那就不能被逼加班,否則可能被投訴被訴訟,企業會吃虧。所以在做項目計劃時,一般會按照正常工作時間進行詳細預算計劃工作量,如果真正完不成還有可能進行協商,重新預算工作量。不像我們很多企業,有時連周六周日都有可能給你計劃上工作量,完不成?要麼說你能力不行走人,要麼自己往死里加班都要完成工作量,美其名曰為了達到客戶期望一定要保證交貨期。
企業說,不願加班?那就到歐美去吧。
更多分享及互動,歡迎點擊右上角關注【東風高揚】。
這個問題是多方面的,如果了解國內一線外企的工作狀態,可能就很好理解了。
一方面,外企的工作是以效率為導向的,形式化的東西非常少,硬性的規定非常少,從教育上,歐美國家就主張創造性和自主性,更加主張思維獨立和創造性思維。所以在一些矽谷的大企業中,一個普通員工也可以提出一個想法,而一旦被採納,這個項目就可以推進執行。你會發現他們的溝通效率很高,工作效率很高,信息流通性很好,而且員工所在的環境十分自由,可以以自己最舒適的狀態工作。這其實就是 以做事為目的,以效率為導向。
而中國的本土企業習慣了所謂的「管理」,從教育上培養的是應試教育,從小教導要聽大人話,要聽老師話,要聽領導話。卻很少鼓勵學生提出自己的問題和質疑,限制了孩子的創造性思維。等進入了企業以後,官僚氣息嚴重,形式主義嚴重,基層員工完全沒有話語權,埋頭苦幹受累背鍋,領導一句話沒活兒也得加班。
然後就是找一群留學海外,有想法的人,帶著一群本土畢業沒想法的人做事,其實大家都很難受。
第二方面,即便有些時候工作真的做不完,你想加班,在外企也不一定加的成。加班需要申請,因為超過上班時間公司需要嚴格按照加班標准支付薪酬,而一般在國外,加班要支付的加班費非常高。
所以除非十萬火急,國外大部分企業是不可能讓員工加班的,各種法律條文保護勞動者不是開玩笑的,不遵守分分鍾告到你哭。
第三方面,有很多西方人,即便你給他高額的加班費他也不想加班。很多人說中國是最勤勞的民族不是開玩笑的,我們接受著勤勞致富的教育,也確實做著勤勞致富的事情。國內互聯網行業所謂的高工資都是以瘋狂加班為代價的,就這還有多少人削尖了腦袋想進入這個行業,估計在西方人眼中很難理解。
外國人大部分沒那麼勤勞,喜歡享受時光,這跟發達國家本身富裕是分不開的,他們的生存壓力沒那麼大,不太用擔心沒飯吃,所以窮人很多都不願意為了錢而賣命,更別提有知識有學歷的高級人才了。
動輒好幾周去海島度個假的國家人民,怎麼能理解我過有年假都沒法放的痛苦。
美歐不光程序員不經常加班,從管理到基層員工也都不經常加班,因為第一,人工昂貴;第二,勞動法嚴格,加班要付昂貴的加班工資,不付被舉報的話企業要被巨額罰款,所以企業方方面面都高效做事。一個產品,從設計方案開始就講究個環節的完善,實際開始製作的時候各部門要高度同步與協調。各項工作的計劃都是提前一年來安排時間表(這也是生產環節外發海外逼出來的傳統),很少有像我們這里8月開的大會7月才開始各類訂制與協調,各項制度不完善,高管大會摔話筒的事發生。領導也不會今天臨時腦袋一拍在產品里加個功能,明天再取消另一個功能,然後讓員工日趕夜趕。西方的工作看起來節奏很慢,但是實際效率很高;我們的生活工作看起來節奏快,從領導到員工都很勤奮,但是實際效率很低,一個環節可能重復做五六次。其實西方各大公司的操作才是「計劃經濟」,我們的是「野蠻的橫沖直撞經濟」。這跟整個民族的文化氣氛與勞動力訓練方式有關,也就是教育有關。東西方教育的差距,不僅僅是 科技 成果的差距,還是教育的另一個成果,勞動力素質的差距。
Ⅷ 為什麼很多公司不要從IT培訓機構出來的程序員
一方面是,現在的培訓機構參差不齊,作假現象嚴重;
現在所謂的IT培訓機構大量充斥著市場,很多更是沒有底線的鼓吹培訓幾個月,月薪多少錢,吸引了大量的小白湧入培訓機構。某些培訓機構的出發點只是怎麼快速的聚攏錢財,而所謂的來學習IT的人,更多的是因為,被這些機構鼓吹,錢多好就業,而進入機構學習的。實際的學習過程,更是只是注重怎麼應付面試,並沒有將技能落到實地。
更何況,程序員更是吃技術飯的,小白,菜鳥和大神的差別是在太大,工作效率,成果更是不可相提並論。這也是為什麼有時候,公司寧可付出雙倍的薪資招聘富有經驗程序員,而不願意要培訓機構出來的程序員的原因。