『壹』 程序員怎麼提高工作效率
程序員提高效率的一些建議
我是一個程序員、設計師和企業家,也是 Asana 的聯合創始人。許多知名公司(如:Uber,Pinterest,Dropbox)都在使用這款提升團隊生產力的軟體。我在 Facebook 做開發經理時,設計過一個用於提升團隊生產力的工具,Facebook 至今仍在使用該工具。
改善環境
避開所有打擾
「多任務處理」使人感到更有效率,但研究表明,它使我們變得更加低效。我們經常去查看郵件,這種頻繁的打斷使我們思維變得遲緩 ,我們需要花費比預期更多的時間回到原來事情上。所以當你需要集中注意力時:
將手機設置為勿擾模式。在 iPhone 上:從屏幕的底部向上滑動,然後點擊月亮圖標。
關掉所有與當前任務不相關的網頁。
如果你的工作需要寫郵件,寫郵件時不要看到新郵件。在 Gmail 中的 Gmail 書簽(過濾掉所有內容)可以實現這一點。
關掉計算機上的新郵件提醒。
退出聊天軟體。
發現你的時間流
如果一天中你不斷地被會議打斷,你很難進入時間流、處理復雜任務的狀態。
在日程表上標注自己有一個三個小時的「會議」,你是會議的唯一參與人員。這樣同事們在安排會議時會避開這段時間,你可以在這段時間里不間斷地將工作完成。
如果可以話,每周選擇一天作為全公司的無會議日。在 Asana,我們設有「無會星期三」。
跟蹤了解你一天中不同的活動的高效時間。在你的高效時間完成工作最難的部分。下圖是我用來確定我的高效時間的方法,我的高效時間是上午 10 點到中午。相關閱讀:尋找你的超人時間。
精通你使用的工具
如果你一整天都在使用電腦,每次你伸手去拿滑鼠的時候,都會降低一點速度,阻礙你的時間流。你操作計算機的速度應該跟上你思維的速度。這樣做你需要學習常用軟體的快捷鍵。
每次需要使用滑鼠時候,看看是否可以使用快捷鍵代替。通常你可以在菜單項中找到對應快捷鍵,或當你把你的滑鼠游標放到按鈕上會顯示出快捷鍵提示。在 Mac 上:⌘ 是 Command,⌥ 是 Option,⇧ 是 Shift, ^ 是 Ctrl。
使用軟體 SizeUp,可以迅速重新排列軟體窗口,不需要使用滑鼠。
優化思維
這方面我最喜歡的書籍之一是托尼·施瓦茨的《全心投入的威力:管理精力而非時間》。 僅僅是這本的書名就有很大啟發性。
定時休息
通常我們以為,在工作上花費的時間越多,完成的任務也就越多。事實並非如此,人類不是機器,我們的大腦需要時間恢復。人類不是機器人。我們的頭腦需要時間來充電。研究表明,工作 90 分鍾,休息 15 分鍾,有助於在更少的時間里完成更多的工作 。
冥想
照顧好自己的.身體
多喝水。 每天早上,我都會在辦公桌上放 5 大杯水。我每天下班時,都已經把水喝完了。看到桌上放的這些水,會提醒我喝了多少水。
改善飲食。 碳水化合物過高的午餐會使你下午精力不足。
運動: 每周兩次有氧運動可以幫助提高效率。
總之,使用的工作外的時間來修養身心,工作時會更加精力充沛。
直面困難、克服拖延
我們拖延,不是因為懶惰,而是因為任務的重要性會使我們感到焦慮。發生這種情況時,你應該做以下的事:
誠實面對你焦慮的原因。把導致焦慮的事情寫下來,或者告訴你朋友。你為什麼感到如此害怕?
尋找一個容易執行的下一步。
關於這方面,我寫過一篇文章:《如何通過面對焦慮克服拖延》。
如果你現在沒有精力去面對恐懼,那麼至少做你的清單上的第二優先的事情,而不是去查看 Facebook。多產的斯坦福大學教授約翰·佩里把這種做法稱為「結構化的拖延症」。在網站 StructuredProcrastination.com 上,他把自己的成功歸結於這種做法。
優化流程
設定清晰的計劃。許多低效源於沒有分清事情的輕重緩急。你沒有搞清楚哪些事情有助於實現你的目標、什麼是最高優先順序的事情。
在下一步計劃沒有完全明確,並且整個團隊達成一致之前,不要開始行動。
先思考這些事情:我們的目標是什麼?我們為什麼想要達成該目標?達成該目標需要哪些步驟?每一個步的負責人是誰?這些步驟的順序是怎樣的?什麼是所有去實現它所需的步驟?每一步驟由誰負責?這些步驟將按照什麼順序執行?
團隊合作
有些人喜歡獨自工作,但是,處理復雜任務時,我一般覺得困難、容易分心。
找一個願意合作的隊友。有時候,花費我兩天的任務可以在 2 小時內與合適的夥伴完成。 「結對編程」是軟體行業很常見,但它其實適用於任何領域。
或者,你可以進行自我對話,問問自己那些問題是重要的,然後把問題和答案寫到文本編輯器或者筆記本里。我在電腦上以隨意的形式寫過一些長篇的對話,這些對話都是富有策略性的,有成效的。
公開聲明最後期限
將同伴的壓力轉化為你的優勢。如果一項重要任務沒有固定的最後期限,我會自信地告訴別人:「我會在周五下班時送給你一份作業副本」。我不想在同事面前表現得很可笑,所以我會努力確保事情在周五完成。
使用軟體來跟蹤你的工作
毫無疑問,我認為 Asana 在這方面是最好的。它不僅為維護你的待辦事項清單;它同時還管理整個團隊的工作流程,所以你們不需要無休止的會議來保持同步。Asana 讓大家在工作的地點面對面的交流,這樣你就不需要一直通過電子郵件去獲取信息。
花點時間反省
每一天結束用幾分鍾考慮一下:什麼地方做的好,什麼地方做的不好。你的整個工作流程是否有可以改進的地方?如果你每天都可以提升 1% 的效率,一年後你的效率將有 15 倍提升。
『貳』 為什麼有些程序員是三、四台電腦一起用的
計科專業畢業在軟體行業混了幾年,加上現在這份工作已經前前後後經歷了四家公司,程序員基本的標配是一個台式機一個筆記本電腦,當然還有很多在桌子上多放幾個顯示器,程序員用多個電腦一起工作主要原因還是同事處理多個事情,乾脆一個屏幕一件事情,這樣大腦就可以根據的屏幕的信息進行切換。一般來講編寫代碼的放在一個屏幕上,其餘的事情放在一個屏幕上。就是為了減少思維模式的切換,減少干擾,至於說三四台電一起用的程序員倒不是很多見。
1.選擇一個合適的鍵盤。從自身出發這點比較在意,有個合適的鍵盤使用起來明顯的感覺不一樣, 其實本身不追求什麼機械鍵盤,就是喜歡自己已經使用習慣的,不在於貴賤主要是已經習慣了,其實這也是程序員很大的一個特性,用的順手的東西很難去改變,如同現在編寫代碼無論是不是需要依賴linux環境,都要在linux下面編寫代碼,已經是多年養成的習慣。
畢竟已經在linux上面研究了好多年的編程習慣,裡面的快捷鍵或者編程工具太熟悉了,通常來講在上面寫代碼或者調試都變得十分自然,真要突然的改變會變得十分的不適應。
2.逛技術網站。幾乎每天都會抽出一個小時時間來看看技術論壇,看看有什麼新鮮的技術更新出來了,唯恐拉下什麼新技術了,主要原因是近些年技術的更新速度太快了,稍不留神就拉下了,更加重要的是通過看技術網站能學到很多新的編程思維,畢竟技術性的東西,只靠閉門造車肯定很容易遇到瓶頸,通常更加喜歡技術交流。
現在開源社區發展迅猛,每隔一段時間就出現一個新的框架,能夠解決當前很多棘手的問題,其實看技術文章最大的一個好處是可能某些你正在迫切需要解決的一些問題,高手已經通過框架的方式給解決掉了,你只需要拿出來去學習如何使用就可以了。
3.在網路上技術交流。程序員平時可能說話不多,但並不代表著沒有交流的訴求,很多程序員都有自己的技術圈子,當然這種圈子多數是以網路性的技術交流多一些,探討一些技術問題,或者討論下技術生涯的各種不如意的地方,最主要探討一些技術愛好方面的東西,更加喜歡虛擬世界的技術交流,所以很多人講程序員比較悶騷,內心其實挺狂熱,其實網路上的交流也算是釋放的一種。
在剛畢業那會公司有個技術高手,平時標準的沉默寡言,有一次一起出差聊到如何開始做技術,經歷了幾家公司倒是勾起了他的一些往事和記憶,然後拉著我聊了半宿,我都快睡著了他還在滔滔不絕的講,程序員並不是不喜歡講話聊天,主要沒有撬動開內心的世界,一旦打開一樣也會滔滔不絕。
使用多個屏幕編程也算是程序員的一個嗜好吧,主要方便思維的切換,總體來講還是為了提升工作效率,其實也算是一個特別的愛好,每個程序員更加講求實際的效果,更加務實而已。
希望能幫到你。
同時用兩三個顯示器的我見過,同時使用三四台電腦的倒是真的很少見。
現在也不需要天天背著電腦上下班了,家裡常用兩台電腦:
兩台電腦在單位,兩台電腦在家,雖然看起來也是有著四台電腦,但是「一起使用」的時候幾乎沒有的。
主要是為了便捷,高效。
其實一般是兩台電腦,三台的實際上很少人用,第一沒必要第二太張揚,兩台倒是很多,尤其是經常會一台顯示器一台筆記本。
你想想如果你的辦公位有三台電腦,而自己只是普通程序員,連小領導都不是,這樣會不會怪怪的。所以我就見過的配三台的,他是技術總監。
現在很少用3.4個電腦做事了,那是以前很多工作室或者個人做復雜的工作用的方法,比如一個電腦做伺服器和文檔資料,一個電腦做大內存的工作( 游戲 ,渲染,繪圖,大文件處理等),一個電腦做調試(寫程序,上位機,串口,外接設備調試驗證等),現在電腦配置很高了,可以一個電腦做N個系統,連接多個顯示器和滑鼠鍵盤,(類似網吧裝的無盤系統),外置介面也可以是無限擴張根據不同的需求用不同系統。程序員三、四台電腦一起用主要是為了調試軟體和硬體的兼容性,比如說你用VB或者易語言寫了一個Windows程序,你都需要在95,2000,W7,W8,W10的系統中運行,測試運行的結果是否一致,有的系統可能因為兼容性問題根本就運行不了
游戲 行業是常事,我申請了4台電腦,平時主要用的是i9 64G內存,1080ti的顯卡的台式,一台15存i9的macpro,需要用來開會和移動,家裡放一台13寸的MacPro,臨時有事在家解決的時候用。正版的Maya和unity,adobe套裝很貴,公司一般不願意員工裝在自己私人電腦上,所以需要家用處理問題一般會提供額外電腦。最近因為需要出差,需要有獨顯的筆記本,又申請到一台17寸的1080的外星人
掐指一算家裡合共6台電腦3台筆記本,最常用的只有兩台,一台客廳PC一台卧室iMAC,客廳擼完代碼checkin後,到卧室checkout繼續擼,這樣老婆就不會嘮叨你不陪他了!
平時做項目時侯基本上一台顯示器一台主機,如果跟著視頻學習項目時侯是一台電腦配2台顯示器,做過圖片渲染時候會單獨備一台電腦用,如果是搞 游戲 代練的估計會一個人用好多台電腦,對於一些股票經紀人可能會一台電腦配4,5台顯示器,或者一些網路入侵的人也會同時用幾台電腦!
我公司新開發多合一計算機終端,正是為了把多台電腦的功能集成到一台主機內,通常用於多網辦公,或需要多台電腦進行開發測試等場景
作為多年的程序員,我負責任的說,這絕對不是為了裝13,一台顯示器大的電腦通常用來編寫代碼,一台電腦通常用來查看設備輸出的log以及文檔圖紙之類的,還有一台電腦用來實時查看股票和回復郵件微信的,:-)
因為可以顯得牛逼?
『叄』 程序員所有代碼都是一個一個自己敲出來的嗎
顯然並不是,有的框架是原來就有的,他們只要往裡面填充當時沒有的代碼和他們所需要的代碼就可以了,可以有效的提高他們的工作效率。
安卓開發也是如此,就好比畫畫調用畫圖板的各種命令集一樣。比如我想做一個音樂播放器。剛開始進入的是歡迎界面,我調用系統的UI界面庫,把圖片顯示在界面上。然後進入登錄界面,我調用網路請求庫,把用戶名、密碼發送到伺服器上面進行驗證。最後進入播放頁面,點擊播放歌曲,我調用系統的多媒體庫,把音樂播放出來。整個過程跟畫畫是十分類似的,只不過你是用滑鼠觸發然後調用畫圖板指令,而我是藉助代碼調用各種庫函數。