如何提高程序員生產力?

比如是設備,增加一個大屏幕,或好耳機;比如制度,彈性工作制………………


ssd,大屏幕,機械鍵盤,合理的進度安排。

最重要的,不打擾,少開會,是我們想要的溫柔。


一個程序員要發揮他全部的戰鬥力來為你服務,肯定是有所圖的,有可能是你說做好了給他一百萬獎金,有可能是這個程序他就很喜歡寫,etc


但是你要是想讓一個已經發揮到了極限的程序員,再提高他的戰鬥力的話,你就得允許他利用工作時間來學習了。千萬不要催進度,不然還怎麼放心學習。


彈性工作時間是最重要的基礎沒有之一。不同死程每天能夠高效產出代碼的4個小時時間段可能是不同的,要求大家都按一套作息時間上班會干擾到很多人黃金產能區,至於逼迫死程在疲勞狀態下加班寫代碼是自己給項目找bug,這裡就不說了。

在尊重每個人每天都不能被打擾的4小時基礎上,留出溝通的時間、幫助他人解決問題的時間、學習研究技術的時間、刷知乎看twitter了解新技術動態的時間。為了盡量不影響他人,最好多用非同步式的溝通代替開會,在團隊聊天室里發信息,at到相關人員,別人有空了自然會看。實在遇到不得不馬上處理的急事,或者比較複雜需要反覆解釋和確認的內容再用人肉實體交流。

最後,工作的挑戰性和與個人目標的契合程度也很重要,挑戰性過高或過低都會降低生產力(挑戰過低降低的是員工的發展速度,也就是未來的生產力),而對於每一個死程,管理者不時常確認其技術興趣取向和個人長期目標就無腦分配任務也是比較不負責任的。

總結一下,我心目中理想的研發團隊管理模式是

  • 沒有固定工作時間,但是團隊每個成員每天都有穩定有效的工作產出,按照工作產出評價績效,而不是考勤
  • 支持辦公室和遠程兩種工作模式,讓員工選擇在自己喜歡的城市生活,或者有足夠時間來處理生活中的瑣事,可以有效提高心理健康程度和工作時的效率
  • 主要依靠非同步溝通來完成協作,比如 github 上的 issue + commit + pull request 三駕馬車,每一層都提供了有完整上下文的溝通環境,配合一個可靠的通知系統,大部分問題都能在一個工作日內解決,犧牲一點問題響應速度,換來了另一個同事連續編程的狀態不被打斷實在超值。
  • 學會給自己估值,然後公司按照每個人對自己的估值發薪水。在一個學習型的環境下,看清楚自己能力的位置並作出靠譜的估值其實不是難事。

我們團隊大概實現了50%到60%了吧,順便打個廣告,我們的產品是Html5遊戲引擎,招遊戲引擎設計開發,前端界面工具研發,nodejs generalist。對 github 使用能力要求比較高,支持異地遠程辦公。有興趣的可以私信聯繫~


40 小時 周工作時,
還允許 20% 的自主時間。

當然需要有合理的任務量安排。


實際上,都叫程序員,人和人的差別是很大的
一種是偽程序員。不管會多少語言、開發環境,有多少年的經驗,驗證一個人是否真程序員的途徑只有一個,就是看此人是否具備邏輯思維,簡單的說能否把世界給大卸八塊----------------把紛繁複雜的問題,一個一個的分解掉,簡化成一個個可以被分析和解決的個別問題。不具備這種能力的程序員,需要的是訓練、指導、規章制度等等。個人的生產力,如果不能轉化為集體生產力,則此類程序員的貢獻是相對有限的。
另一種是真程序員,世界在他們眼中是庖丁解牛般的存在。對於這些人來說,最討厭的就是思路被打斷,所有的email、電話、報告、會議等等,都是毀滅產能的。什麼事都可以,就是不要打斷其思路,所以沉浸式的工作環境是很重要的--------------看看Google是怎麼做的。對於這樣的人,不需要指揮和鞭策,只要給他講清楚問題和目標是什麼,以及有多難就好了(笑),剩下的就是不要打擾,等他自己去解決吧。
真正可怕的問題是,大多數程序員屬於第一種,但是往往卻認為自己是第二種。


上代碼生成器。

把常用代碼封裝成庫。

用json api給網頁,APP,PC等提供統一標準的數據結口。

不要去爭論語言的好壞,熟悉多種編程語言,用易於解決問題的語言的編程。

熟悉常用數據存儲引擎。

熟悉常用數學演算法。

會搜索引擎。

鍛煉好身體。

不打或少打遊戲。

休息時間好好休息,去公園綠地散步,去旅遊,不要宅。

喝茶,不要喝飲料。

盡量別吸煙。

平時聽音樂,不上黃網。

吃蔬菜別吃肉。

沒事時和不同行業的人交流交流。

不工作時,把網線拔掉,有計划上網。

用定時休息提醒軟體。

多騎自行車少開車。

買本詞典,多記英語單詞。

看看數學手冊,演算法大全。

別看網易評論,別參加各派政治網站。

把身邊的東西精簡。

學習管理學。

注重信念,以實用主義,科學文明,工商思想,營銷理念,現代管理為核心。


對個體來說,缺啥盡量給啥。
比如:

有理想的給雞湯
差錢的畫餅


1.一台好電腦,機械鍵盤,顯示器
2.舒適的座椅
3.安靜的環境,或是一副好耳機
4.絕對不要有人來打擾,即使看到程序員去上廁所或是泡咖啡也不要打擾,因為這時也可能在思考!
5.不要逼迫,告訴目標,程序員會自己找到方法解決。

PS:魅族的程序員鼓勵師是認真的嗎?確定不會降低生產力?!


真正願意做技術的程序員,通常都有自己想做的程序。
他們希望得到認可,他們希望自己的努力能有回報,他們希望自己能夠在一次次與代碼和系統的交鋒中得到提高!
這就跟古時的武將,只要能得到人們的認可,只要能不斷提高武藝,哪怕人頭落地,也願意成為第一個沖入沙場的勇士。

對這樣的人,要提高生產率,就要讓他們做自己喜歡做的程序。如果你想讓他們做的不是他們喜歡的,那就說服他們,讓他們喜歡上你拿出來的任務。
另外,一定不要把他們當苦力,讓他們去思考,讓他們的大腦保持100%的使用率。讓任務對他們來說有些挑戰性(但也不要太挑戰了,做不出來,損失是你的)。如果你讓他們做的任務,他們可以一邊跟身邊的人聊天一邊不影響精確度地完成,那十有八九這效率高不了。
既然,你讓他們滿負荷運行了,那就一定要讓他們得到充足的休息。不要讓他們沒有自由。
最後,他們希望得到應得的回報。對生活窘迫者,金錢是決不能少的;對不差錢的人,榮譽、名譽、自尊都是他們想要的回報。

至於不是真正願意做技術的程序員……
如果不能把他們變成真正願意做技術的人,那就只有
用錢養苦力了。
沒有激情,大幅度提高生產率是不太可能的了。


錢多事少離家近


首先必須承認一點:人和人之間有巨大的差異,所以橫向的比較是沒有意義的。那麼提高生產力就是一個相對的概念了。

兩個方面:態度和能力。態度的問題是多方面的,但簡單粗暴的來說就是積極性。如何調動積極性,我想是一個管理者能力的體現了。

而能力的問題,是個槽點滿滿的話題。簡單的說:誰有資格去評價一個程序員的能力?就我接觸的圈子而言,一般很少有人去評價,因為大部分人都抱著you can you up的心態。如果你的能力無法替代你評價的程序員,那你的評價如同廢話,而你有能力替代,大可以把你看著不爽的程序員給Fire 掉,也不用唧唧歪歪。

所以說,在目前程序員的很多地位是因為不能被很容易的替代造成的,能問出如何提高程序員的生產力,你一定不是程序員,甚至你絲毫不會寫代碼。如果換一個一直在產的資深程序來解決這個問題:態度消極的幹掉,能力不行的幹掉,反正不如自己干。留幾個省心或者潛力好或者夠聽話的來解決自己精力有限無法顧及方方面面的問題。


首先感覺題注題目提法有點不太好。生產力,意味著是把程序工作當生產工作,把程序員當工人或者機器看。要提高生產力,就是所謂的「挖潛力」。

如果題目是:「如何提高程序員創造的價值」,從我自身的程序員經歷,設計工作經歷,需求工作經歷,管理人員經歷說下個人看法:
1,領域知識問題。深刻理解你所從事的領域的業務知識、背景知識大有幫助。
2,計算機知識問題。深刻理解計算機歷史,基礎知識,編程知識,設計知識百利而無一害。
3,抽象能力。把你業務問題轉換抽象成計算機語言實現思考的能力。
4,質量意識,責任心意識。如果沒有質量意識、責任心意識;生產力是高了,估計是把測試、實施、客戶的生產力給大大降低了。
5,工具、環境、方法。提供程序員必備的工具,如果是設計師工作,更舒服的環境更利於編程。如同安靜的環境,舒適的工作環境等。
5,體制激勵問題。對能創造高價值的程序員,有非常好的激勵措施,比如榮譽,比如物質獎勵等。
6,交流溝通問題。提供程序員定期交流的機會和形式。

總的來說,程序設計不只是一個「工廠的生產工作」,而是一門「手藝活」。
最後祝每個程序員都熱愛自己的工作,能創造更多價值,而不僅僅是「提高生產力」。


謝 @椎名喵 邀請

私認為需要有足夠強力的環境, 例如合理的需求, 符合程序員興趣的方向和優秀的團隊合作模式
當然不可能都如意, 那麼 PM 能不能在程序員加班的時候貼心地給你的手下買瓶可樂呢? 要無糖的

還有一個就是得有女朋友


樓上說的好多都是腦力工作所應該有的基礎條件……不是提高生產力的辦法吖!(還有那些個說用美女鼓勵的我都不想吐槽了……這種既侮辱程序員的魅力又侮辱萌妹子智商的黑法只有外行才受用吧…)

我覺得像 彈性制度、好的工作環境和福利(吃喝用玩)、尊重、高薪、放權、認可、弱化deadline、讓他們自主管理時間……等等這些,都是科技公司留住人才的手段,不見得是提高效率的辦法。假使一個人進公司時能力和效率都很高,這些人性化的寬鬆制度會讓他們工作的很爽,不見得多餘的時間和精力他們會願意都投入到提高生產率上。我認識不少滿足上述待遇的程序員,每天用三四個小時幹完活,剩下的時間自己做自己的side project或者start up,於公司雖無害也無利,跟這個問題中想要尋找的答案無關。

想要提高程序員的生產力,我覺得前提還是得是:1.他對所做的工作有興趣;2.他對於所做的工作有掌控力和自豪感。3. 他的外界干擾很少


提高程序員對工作的興趣——

1. 關注他喜歡的技術、產品、語言,多給他在工作中學習有興趣的新知識的機會。比如,鼓勵他去參加training或者上相關的課,或者多組織公司內部的keynote tech talk,互相交流。程序員這撥善於創造的生物,如果不是喜歡create things build things,那麼也在這行干不長久。學到新技能都會躍躍欲試,自然生產力上會有所反射。

2. 激發他對產品的熱情和主動性。如果能夠在最大程度上採用buttom-up的模式,讓程序員參與到產品從出生到設計到成型的過程中,讓他的想法能得到實現,他們就會產生巨大的動力去完成它。如果你們做不到buttom-up,那麼至少"循循善誘」,引導程序員們思考出你想要的解決方式和功能,讓他們感同身受,而不是直接給要求,這樣他們更能夠把產品看成自己的東西,從而更願意去完善提高它。


提高程序員對工作的掌控力和自豪感——

1. 錯誤要大家一同分擔,功勞要明確出處。做好了一個feature要公開化的讓團隊甚至客戶知道誰是這個feature的負責人和主要工作者,明確credibility。一旦出問題了要表明團隊的每個人都有職責監控和保證產品的質量,共同討論解決方案。如此一來,多完成,完成的好的話會建立好的名聲;發現問題及時提出,不用擔心得罪人,還會得到鼓勵和贊同。

2. 給程序員的時間安排留出空間去做技術提高(engineering improvement)。為什麼這個會提高程序員對工作的掌控力和自豪感呢?因為是個程序員都有自己寫程序想要遵循的原則和風格,有些從engineering的角度上來說是對的事,在工作中往往會被忽略掉或者來不及做,因為從產品的角度出發,公司總希望用最小的成本做出最多實際的成果。這會使程序員產生總是在趕活,沒有辦法按照自己的方式做好一個東西的感覺……給程序員適量的空間和時間專門用來完成他們認為必要的technical debt, 比如把code寫的更標準更好用,增加一些debug的功能,完善closely coupled components,優化產品結構……等等,能夠完成這些工作不僅提高團隊整體開發效率,奠定一個好基礎,也會讓程序員有種「項目盡在掌控中」的自豪感。


減少外界干擾——

1. 盡量保證程序員的工作不被打亂或者打斷。開發團隊為什麼要有PM和各種經理?不就是為了保護程序員的工作不被randomize嘛?當然能做到這樣的團隊並不多,因為確實很多問題只有程序員能回答,有些事情也確實很緊急,只有程序員能立刻解決。但是PM和經理們可以盡量減少這樣的干擾。比如在程序員遇到blocker或者dependency時及時溝通處理解決路障;過濾掉優先順序不高的臨時要求(用你們的交流技巧去拖延推遲協商啊),了解產品和項目的技術結構和每個功能的原理及做法、以便於節省程序員的時間不用去做很多重複的討論和解釋。 程序員鮮少有喜歡天天去各種會議上和人吵架的,你能助他騰出時間讓他專心寫程序,他自然會以優質的code和產出來報答你。

2. 在生活上增加程序員的便利。前面說的很多公司提供的各種福利和基礎設施都是基於這個目的,當然作為PM或者經理,可以私下和程序員搞好關係能幫忙時多幫忙,能交流時多交流,很多時候會換來一定程度的「友情回報」,至少不會因為理所當然的要求導致程序員心理抵觸而降低工作效率。


錢多給點就好


尊重。對人才的尊重。
尊重到項目開發計劃是程序員一起參與制訂的。
那些把程序員當狗的公司,往往收到的是狗屎一樣的代碼,反而要花更多的錢和精力


漲工資


制度大都是減低生產力的。


黃章真是業界良心,中國的喬布斯



推薦閱讀:

動卧的體驗如何?
現在陳冠希通過vice說出自己很多想法,事情過去那麼久,不知道各位對這件事情的看法有沒有改變?
同升湖、明德達材、長橋、華鑫、芙蓉、麓山國際實驗學校。這些學校都怎麼樣?
哪些話你一開始不信 後來卻深信不疑?
哪個瞬間你驚訝地發現「自己居然是這樣的人」?

TAG:高效工作 | 程序員 | 生活方式 | 效率 | 工作 |