高效程序員應該養成的七個習慣

對于軟件工程師來說,工作也許意味著許多東西 -- 穩定的收入、做自己感興趣的項目、找一份更好工作的跳板,或者你只是喜歡與其他程序員共事。但說到“效率”,強調的是在一定時間內按質完成項目的能力。Phil Chu根據自己的經驗提出了高效程序員應該養成的七個習慣。

1.理解你的需求 成為一個有效率的程序員首先要知道如何正確的支配自己的時間。對時間最大的浪費莫過于去做那些沒有用處或者永遠不會上線的項目。而導致這種結果的根源往往是對需求理解的偏差。

要最大程度避免這種情況的發生,最好的辦法是快速建模,盡可能讓演示系統早點出來。對于客戶來說,只有看得到摸得著的產品擺在面前,他們才會有興趣去試用觀察,才會在實際的操作中發現供需雙方在需求理解上的偏差。否則即使你寫上幾百頁的需求分析文檔也只能是自己的一面之詞,客戶可沒耐心去檢查這些文檔寫的是否準確。

另一方面,你應該讓每一個階段的開發成果都能夠盡早的提交給客戶。讓他們以完全不考慮操作合理性和業務邏輯性的傻瓜級操作來發現程序員編程中的固有思維局限。尤其必須讓QA盡早的介入到項目開發中來。如果能夠每天提交一份測試版本給QA自然是最理想的了,但大多數項目開發做不到這樣的粒度,那么就爭取每周提交一份可測試版本。重要的是應該讓QA和開發能夠保持交錯并行狀態。只有這樣,才能讓QA盡早發現bug,降低每個bug的修復成本,同時縮減獨立測試周期的跨度。

程序員往往不愿意把半成品代碼交付給測試人員,相反他們更喜歡在所有代碼都完工,達到自己滿意的程度之后再讓別人來測試。因為在這之前的代碼往往存在很多程序員自己知道需要修改(或者故意留待后續補全)的流程缺失和Bug,測試人員并不知道哪些是真正的Bug,哪些只是臨時性的運行錯誤,每次都會一股腦兒作為Bug反饋給程序員。這往往讓程序員們心煩。同時測試人員有時候也不喜歡測試這種很多分支都走不通的中間版本。

但不管喜不喜歡,測試并發現問題是測試人員的工作;程序員則應該認識到,Bug反饋得越早就越是件好事情。QA和開發之間的關系往往很敵對,可實際上雙方的目標是一致的。“忠言逆耳”古訓有之,對于程序員來說就應該“有則改之,無則加勉”。總好過項目完成之后才發現一堆的問題,到那時候再要做修改,基本上都會牽一發而動全身,痛苦的還是程序員自己。

2.保持真實性
盡可能讓你的系統運行在最接近真實環境配置下面,使用有實際意義的數據和真實的編譯版本,并經常性進行模塊整合。如果你的測試環境使用的數據都是些胡亂添加的東西,那么將來和測試數據大相徑庭的真實數據這塊大冰山早晚會撞沉你的程序。另一方面如果你只在開發環境來編譯運行測試,會發現正式發布之后有各種各樣莫名其妙的問題產生,到最后原來都是因為環境配置與開發環境有些不起眼的差異所導致。把所有模塊整合進行編譯聯調,看上去應該是最后作的一項附加工作,但實際上這是一項需要在開發過程中經常性進行的工作。只有這樣QA才能有最完整的東西拿來測試,得到更多的Bug反饋,同時降低模塊整合的難度。

3.理解你的代碼
書寫規范的代碼,并保持代碼的整潔。Coding是一門藝術。正如寫作一樣,同樣的文字在文豪的筆下就能夠熠熠生輝,讀起來賞心悅目;在普通人的筆下大概就只是詞能達意的效果了;在某些人的筆下或許就需要研究半天才能猜出個大概來。當然不可能人人都成為藝術家,但至少你可以學會欣賞藝術、學習藝術。書寫漂亮的代碼是對自己工作的尊重,也是對其他程序員的尊重。如果你的代碼中間充斥著大段過時的注釋、可讀性差的變量/函數,怎么去要求別人或者自己以后能夠理解它們?

4.最優編程
把你的時間花在代碼的功能上, 而不是去把現有的代碼改得對自己胃口(尤其對于那些copy/paste過來的代碼);要找到系統的瓶頸進行優化,而不是對那些無益于系統整體性提高的地方做無用功。

5.管理好你自己

也許有人會說計劃和進度控制是PM的事情,但一個好的程序員應該比PM更了解自己目前工作的進度。不論上頭給的進度計劃是否合理,你都應該有自己的原則和概念,清楚知道每天該做什么怎么去做。

6.持續教育

只有不斷的學習、實踐、犯錯誤,你才會真正有所提高。在我看來,對于程序員來說最好的老師不在學校,而在書本、網絡、社區。學會自我學習才能保持與時俱進。

7. R-E-S-P-E-C-T
互相尊重是一切的基礎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454913.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454913.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454913.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

概率論與數理統計思維導圖知識框架_考研概率論與數理統計 綜合題型秘籍思維導圖① 隨機變量1~3章 [21考研上岸之旅]...

Hello World,我的朋友,這里是一顆小白蛋,大千世界,很高興以這樣的方式與你相遇前言在復習過程中發現概率論知識點很少且集中 所以沒有分開章節去整理王安式概率論輔導講義張宇概率論9講方浩強化班1800題 綜合題型秘籍在學習過程中…

關于軟件的架構設計

好的開始相當于成功一半 開始之初的架構設計決定著軟件產品的生死存亡。“好的開始相當于成功一半”。 開始的架構設計也是最難的,需要調研同類產品的情況以及技術特征,了解當前世界上對這種產品所能提供的理論支持和技術平臺支持。再結合自己項目的特…

[Oracle]快速構造大量數據的方法

[Oracle]快速構造大量數據的方法:create table tab001(id integer primary key, val varchar2(100));insert into tab001 select ij,rpad(to_char(ij),100,A) from ( with DATA2(j) as ( select 0 j from DUAL …

mysql用supervisor管理_Supervisor使用詳解

一、supervisor簡介Supervisor是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變為后臺daemon,并監控進程狀態,異常退出時能自動重啟。它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動&#xff0c…

Handle/Body pattern(Wrapper pattern)

Handle Body Pattern 一些設計模式,通過一系列非直接的間接的方式(這種間接的方式,可稱其為 handle(把手)),完成接口與實現(實現可稱為 body(主體)&#xff0…

架構設計貴在務實

(本文是我給溫昱先生新書寫的讀后感節選。) 我最早聽說“軟件架構”這個概念以及UML的名字,是在1999年的水木清華BBS上。當時有一篇文章介紹了軟件架構作為一個相對獨立的領域的發展情況,順便提到在此前一年被接納為OMG標準的UML。該文作者…

php mysql刪除失敗_php+MySQL實戰案例【七】數據編輯、刪除

?本節內容中講解用戶管理模塊中的修改用戶信息和刪除用戶。修改用戶信息:可對選擇的用戶記錄進行編輯,可修改用戶名、密碼、性別、手機、郵箱和地址信息。刪除用戶信息:將列表中指定的用戶進行刪除操作。二、編輯用戶信息編輯用戶信息&#…

前端每周清單第 34 期:Vue 現狀盤點與 3.0 展望,React 代碼遷移與優化,圖片優化詳論...

作者:王下邀月熊 編輯:徐川 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公…

1.three.js世界的4大要素

一、三大組件 在Three.js中,要渲染物體到網頁中,我們需要3個組建:場景(scene)、相機(camera)和渲染器(renderer)。有了這三樣東西,才能將物體渲染到網頁中去。…

架構設計 例子和實踐

系統設計說明書(架構、概要、詳細)目錄結構 雖然這些文檔一般來說公司都是有模板的,但我寫這些文檔以來基本上是每寫一次就把目錄結構給改一次,應該說這是因為自己對這些文檔的理解開始加深,慢慢的越來越明白這些文檔的作用和其中需要闡述的東…

activiti 批量 mysql_Activiti6系列(3)- 快速體驗

一、部署啟動activiti####1、部署,將兩個war包拷貝到Tomcat下即可。![](https://img2018.cnblogs.com/blog/1755845/201908/1755845-20190802010532367-2002399291.png)2、啟動tomcat,訪問http://127.0.0.1:8080/activiti-app默認賬號密碼:ad…

【啟動】Windows上啟動圖形化軟件,報錯: 無法啟動此程序,因為計算機中丟失api-ms-win-crt-runtime-1-1-0.dll...

今天在安裝了jetbrains官網上的ToolBox軟件后,沒有辦法啟動起來,報錯如下: 無法啟動此程序,因為計算機中丟失api-ms-win-crt-runtime-1-1-0.dll 嘗試重新安裝了并沒有什么用,現在來解決方法: 直接找到官方的…

論文: YOLO9000-Better,Faster,Stronger

論文閱讀: YOLO9000-Better,Faster,Stronger YOLOv2 是經過改造之后的YOLO Batch Normalization:在所有的conv layer后加了BN之后提高了2% mAP,BN可以幫助regularize模型,這樣的話就可以放棄 dropout。 High Resolution Classifi…

怎么ie取消要打開或保存來自_取消認證后,發票抵扣就這么簡單!

點擊標題下「中財訊集團」可快速關注3月1日起,取消增值稅發票認證的納稅人范圍擴大至全部一般納稅人。一般納稅人可以自愿使用增值稅發票選擇確認平臺查詢、選擇用于申報抵扣、出口退稅或者代辦退稅的增值稅發票信息。具體如何操作呢?掌握以下步驟&#…

Google發布文檔數據庫Firestore

Google發布了Cloud Firestore,它是用于移動、網絡和服務器應用程序的文檔數據庫。\\去年我們曾報道過Google Firebase,它是一種用于移動和網絡開發的數據庫,提供實時的和離線的數據訪問,與許多Google服務相集成。他們現在推出了一…

好的軟件架構設計

什么是架構 前言:軟體設計師中有一些技術水平較高、經驗較為豐富的人,他們需要承擔軟件系統的架構設計,也就是需要設計系統的元件如何劃分、元件之間如何發生相互作用,以及系統中邏輯的、物理的、系統的重要決定的作出。在很多公…

HihoCoder 1323 回文字符串

回文字符串 思路 動態規劃&#xff1a; 可以有三種修改決策 將開頭和結尾字符改成一樣在開頭加一個和末尾相同的字符在末尾加一個和開頭形同的字符代碼&#xff1a; #include <stdio.h> #include <iostream> #include <string.h> using namespace std; char …

python線程狀態_Python線程

1. 線程基礎1.1. 線程狀態線程有5種狀態&#xff0c;狀態轉換的過程如下圖所示&#xff1a;1.2. 線程同步(鎖)多線程的優勢在于可以同時運行多個任務(至少感覺起來是這樣)。但是當線程需要共享數據時&#xff0c;可能存在數據不同步的問題。考慮這樣一種情況&#xff1a;一個列…

JavaScript中錯誤正確處理方式,你用對了嗎?

JavaScript的事件驅動范式增添了豐富的語言&#xff0c;也是讓使用JavaScript編程變得更加多樣化。如果將瀏覽器設想為JavaScript的事件驅動工具&#xff0c;那么當錯誤發生時&#xff0c;某個事件就會被拋出。理論上可以認為這些發生的錯誤只是JavaScript中的簡單事件。 本文將…

文件分割機

文件分割與合并 要求&#xff1a;實現對大文件的分割與合并。 按指定個數切&#xff08;如把一個文件切成10份&#xff09;或按指定大小切&#xff08;如每份最大不超過10M&#xff09;&#xff0c;這兩種方式都能夠。 程序說明&#xff1a; 文件分割&#xff1a;把一個文件分割…