97 T hing s E ve ry Prog ra mme r Should Know http:/ / pr o gr amme r .97things.o r e illy.c o m @97T E PSK Ke vlin He nne y ke vlin@c ur br alan.c o m @Ke vlinHe nne y
Gudny Hauknes Paul W Homer Adria n Wible Pete Goodliffe He inz Ka butz Ala n Griffiths Pe te r Somme rla d Ale x Mille r Ja n Christia a n "JC" va n Winke l Alla n Ke lly Ja ne t Gre g ory Ra jith Atta pa ttu Ande rs Norå s Ja son P Sa g e Ra ndy Sta fford Ann Ka trin Ga g na t Joha nne s Brodwa ll Ric ha rd Monson- Ha e fe l Jon Ja g g e r Robe rt C Ma rtin (Unc le Bob) Asla m Kha n Rod Be g bie Burk Hufna g e l Jø rn Ølmhe im Ca l E va ns Ka ri Rø ssla nd Russe l Winde r Ca rroll Robinson Ka ria nne Be rg Rya n Brush Ca y Horstma nn Ke ith Bra ithwa ite Sa m Sa a riste Ke vlin He nne y Sa ra h Mount Chuc k Allison Sc ott Me ye rs Clint Sha nk Kirk Pe ppe rdine Da n Be rg h Johnsson Kla us Ma rqua rdt Se b Rose Da n North L inda Rising Ste ve Be rc zuk Da nie l L indne r Ma rc us Ba ke r Ste ve F re e ma n Ma tt Doa r Ste ve Smith Diomidis Spine llis T homa s Gue st E dwa rd Ga rson Ma ttia s Ka rlsson E ina r L a ndre Mic ha e l F e a the rs Udi Da ha n F ilip va n L a e ne n Mic ha e l Hung e r Ve rity Stob Ge ra rd Me sza ros Mike L e wis Wa lte r Brig ht Gile s Colborne Na te Ja c kson Ye c hie l Kimc hi Ne a l F ord Yuriy Zuba re v Giova nni Asproni Gre g Colvin Nic la s Nilsson Gre g or Hohpe Olve Ma uda l
Ac t with Prude nc e L e a rn to E stima te Apply F unc tiona l Prog ra mming Princ iple s L e a rn to Sa y "He llo, World" Ask "Wha t Would the Use r Do?" (You Are Not the Use r) L e t Your Proje c t Spe a k for Itse lf Automa te Your Coding Sta nda rd T he L inke r Is Not a Ma g ic a l Prog ra m Be a uty Is in Simplic ity T he L ong e vity of Inte rim Solutions Be fore You Re fa c tor Ma ke Inte rfa c e s E a sy to Use Corre c tly a nd Ha rd to Use Inc orre c tly Be wa re the Sha re Ma ke the Invisible More Visible T he Boy Sc out Rule Me ssa g e Pa ssing L e a ds to Be tte r Sc a la bility in Pa ra lle l Syste ms Che c k Your Code F irst Be fore L ooking to Bla me Othe rs A Me ssa g e to the F uture Choose Your T ools with Ca re Missing Opportunitie s for Polymorphism Code in the L a ng ua g e of the Doma in Ne ws of the We ird: T e ste rs Are Your F rie nds Code Is De sig n One Bina ry Code L a yout Ma tte rs Only the Code T e lls the T ruth Code Re vie ws Own (a nd Re fa c tor) the Build Coding with Re a son Pa ir Prog ra m a nd F e e l the F low A Comme nt on Comme nts Pre fe r Doma in- Spe c ific T ype s to Primitive T ype s Comme nt Only Wha t the Code Ca nnot Sa y Pre ve nt E rrors Continuous L e a rning T he Profe ssiona l Prog ra mme r Conve nie nc e Is Not a n –ility Put E ve rything Unde r Ve rsion Control De ploy E a rly a nd Ofte n Put the Mouse Down a nd Ste p Awa y from the Ke yboa rd Disting uish Busine ss E xc e ptions from T e c hnic a l Re a d Code Do L ots of De libe ra te Pra c tic e Re a d the Huma nitie s Doma in- Spe c ific L a ng ua g e s Re inve nt the Whe e l Ofte n Don't Be Afra id to Bre a k T hing s Re sist the T e mpta tion of the Sing le ton Pa tte rn Don't Be Cute with Your T e st Da ta T he Roa d to Pe rforma nc e Is L itte re d with Dirty Code Bombs Don't Ig nore T ha t E rror! Simplic ity Come s from Re duc tion Don't Just L e a rn the L a ng ua g e , Unde rsta nd its Culture T he Sing le Re sponsibility Princ iple Don't Na il Your Prog ra m into the Uprig ht Position Sta rt from Ye s Don't Re ly on "Ma g ic Ha ppe ns He re " Ste p Ba c k a nd Automa te , Automa te , Automa te Don't Re pe a t Yourse lf T a ke Adva nta g e of Code Ana lysis T ools Don't T ouc h T ha t Code ! T e st for Re quire d Be ha vior, Not Inc ide nta l Be ha vior E nc a psula te Be ha vior, Not Just Sta te T e st Pre c ise ly a nd Conc re te ly F loa ting - Point Numbe rs Are n't Re a l T e st While You Sle e p (a nd ove r We e ke nds) F ulfill Your Ambitions with Ope n Sourc e T e sting Is the E ng ine e ring Rig or of Softwa re De ve lopme nt T he Golde n Rule of API De sig n T hinking in Sta te s T he Guru Myth T wo He a ds Are Ofte n Be tte r tha n One Ha rd Work Doe s Not Pa y Off T wo Wrong s Ca n Ma ke a Rig ht (a nd Are Diffic ult to F ix) How to Use a Bug T ra c ke r Ubuntu Coding for Your F rie nds Improve Code by Re moving It T he Unix T ools Are Your F rie nds Insta ll Me Use the Rig ht Alg orithm a nd Da ta Struc ture Inte r- Proc e ss Communic a tion Affe c ts Applic a tion Re sponse T ime Ve rbose L og g ing Will Disturb Your Sle e p Ke e p the Build Cle a n WE T Dilute s Pe rforma nc e Bottle ne c ks Know How to Use Comma nd- line T ools Whe n Prog ra mme rs a nd T e ste rs Colla bora te Know We ll More tha n T wo Prog ra mming L a ng ua g e s Write Code a s If You Ha d to Support It for the Re st of Your L ife Know Your IDE Write Sma ll F unc tions Using E xa mple s Know Your L imits Write T e sts for Pe ople Know Your Ne xt Commit You Gotta Ca re About the Code L a rg e Inte rc onne c te d Da ta Be long s to a Da ta ba se Your Custome rs Do Not Me a n Wha t T he y Sa y Learn Foreign Languages
Ac t with Prude nc e L e a rn to E stima te Apply F unc tiona l Prog ra mming Princ iple s L e a rn to Sa y "He llo, World" Ask "Wha t Would the Use r Do?" (You Are Not the Use r) L e t Your Proje c t Spe a k for Itse lf Automa te Your Coding Sta nda rd T he L inke r Is Not a Ma g ic a l Prog ra m Be a uty Is in Simplic ity T he L ong e vity of Inte rim Solutions Be fore You Re fa c tor Ma ke Inte rfa c e s E a sy to Use Corre c tly a nd Ha rd to Use Inc orre c tly Be wa re the Sha re Ma ke the Invisible More Visible T he Boy Sc out Rule Me ssa g e Pa ssing L e a ds to Be tte r Sc a la bility in Pa ra lle l Syste ms Che c k Your Code F irst Be fore L ooking to Bla me Othe rs A Me ssa g e to the F uture Choose Your T ools with Ca re Missing Opportunitie s for Polymorphism Code in the L a ng ua g e of the Doma in Ne ws of the We ird: T e ste rs Are Your F rie nds Code Is De sig n One Bina ry Code L a yout Ma tte rs Only the Code T e lls the T ruth Code Re vie ws Own (a nd Re fa c tor) the Build Coding with Re a son Pa ir Prog ra m a nd F e e l the F low A Comme nt on Comme nts Pre fe r Doma in- Spe c ific T ype s to Primitive T ype s Comme nt Only Wha t the Code Ca nnot Sa y Pre ve nt E rrors Continuous L e a rning T he Profe ssiona l Prog ra mme r Conve nie nc e Is Not a n –ility Put E ve rything Unde r Ve rsion Control De ploy E a rly a nd Ofte n Put the Mouse Down a nd Ste p Awa y from the Ke yboa rd Disting uish Busine ss E xc e ptions from T e c hnic a l Re a d Code Do L ots of De libe ra te Pra c tic e Re a d the Huma nitie s Doma in- Spe c ific L a ng ua g e s Re inve nt the Whe e l Ofte n Don't Be Afra id to Bre a k T hing s Re sist the T e mpta tion of the Sing le ton Pa tte rn Don't Be Cute with Your T e st Da ta T he Roa d to Pe rforma nc e Is L itte re d with Dirty Code Bombs Don't Ig nore T ha t E rror! Simplic ity Come s from Re duc tion Don't Just L e a rn the L a ng ua g e , Unde rsta nd its Culture T he Sing le Re sponsibility Princ iple Don't Na il Your Prog ra m into the Uprig ht Position Sta rt from Ye s Don't Re ly on "Ma g ic Ha ppe ns He re " Ste p Ba c k a nd Automa te , Automa te , Automa te Don't Re pe a t Yourse lf T a ke Adva nta g e of Code Ana lysis T ools Don't T ouc h T ha t Code ! T e st for Re quire d Be ha vior, Not Inc ide nta l Be ha vior E nc a psula te Be ha vior, Not Just Sta te T e st Pre c ise ly a nd Conc re te ly F loa ting - Point Numbe rs Are n't Re a l T e st While You Sle e p (a nd ove r We e ke nds) F ulfill Your Ambitions with Ope n Sourc e T e sting Is the E ng ine e ring Rig or of Softwa re De ve lopme nt T he Golde n Rule of API De sig n T hinking in Sta te s T he Guru Myth T wo He a ds Are Ofte n Be tte r tha n One Ha rd Work Doe s Not Pa y Off T wo Wrong s Ca n Ma ke a Rig ht (a nd Are Diffic ult to F ix) How to Use a Bug T ra c ke r Ubuntu Coding for Your F rie nds Improve Code by Re moving It T he Unix T ools Are Your F rie nds Insta ll Me Use the Rig ht Alg orithm a nd Da ta Struc ture Inte r- Proc e ss Communic a tion Affe c ts Applic a tion Re sponse T ime Ve rbose L og g ing Will Disturb Your Sle e p Ke e p the Build Cle a n WE T Dilute s Pe rforma nc e Bottle ne c ks Know How to Use Comma nd- line T ools Whe n Prog ra mme rs a nd T e ste rs Colla bora te Know We ll More tha n T wo Prog ra mming L a ng ua g e s Write Code a s If You Ha d to Support It for the Re st of Your L ife Know Your IDE Write Sma ll F unc tions Using E xa mple s Know Your L imits Write T e sts for Pe ople Know Your Ne xt Commit You Gotta Ca re About the Code L a rg e Inte rc onne c te d Da ta Be long s to a Da ta ba se Your Custome rs Do Not Me a n Wha t T he y Sa y Learn Foreign Languages
Recommend
More recommend