Professional Documents
Culture Documents
lso stop me if you need examples )uestions or disagreements at end More detail on e,eryt%ing at my *log: %ttp:--www"codesimplicity"com-
Some of t%ese t%ings you may already &now+ w%at matters is pointing t%em out as important"
.%o am I/
ssistant Project 0ead for #ug1illa .riter of Code Simplicity 0ong-time programmer and system administrator 2xperience programming and designing
#ug1illa 3experiment4
I spea& ,ery definitely+ *ut please ma&e up your own mind a*out t%e t%ings I am saying"
dministrati,e Decisions
Science re'uires:
$%ere are similar ideas out t%ere+ *ut t%ey are not t%e same as w%at I am going to tal& a*out
Se,en Principles:
%ttp:--c7"com-cgi-wi&i/Se,enPrinciplesOfSoftwareDe,elopment
$%ey tell you what to do+ I only %elp you ma&e decisions for yourself and try to tell you why" I did not deri,e from any of t%ese met%odologies+ *ut t%e *its of t%em t%at wor& could *e deri,ed from w%at I am going to tell you"
8elp Ma&e $ec%nical Decisions Why do some t%ings 3wor&4 and ot%ers don(t/
5esults
#roug%t no,ices to understand why 2xplained difficulties and 3war stories4 of experienced programmers
6ot going to tell you w%at decisions to ma&e+ just going to gi,e you information t%at will %elp you ma&e t%em
#u11word-free
Purpose Of Software
To help people
6e,er 3to %elp t%e computer4 Specific software is 3$o %elp people :*la%;4 S%ort Simple Specific 6eeded 9ollowed 2xactly
#e as %elpful as possi*le Continue to *e as %elpful as possi*le Ma&e decisions t%at ma&e it easy to *e :and continue *eing; as %elpful as possi*le
$%e future is more important t%an t%e present 2ffort spent on design s%ould *e proportional to %ow muc% future time t%ere is in w%ic% you expect t%e software to exist
0aw Of C%ange
$%e longer your software exists+ t%e more pro*a*le it is t%at any piece of it will %a,e to c%ange
$%e c%ance of introducing a defect into your program is directly proportional to t%e si1e of t%e c%anges you ma&e
Perfection is impossi*le
.rite as little code as possi*le Don(t fix w%at isn(t *ro&en 2xplains re-use
0aw Of Simplicity
$%e ease of maintenance of any piece of software is directly proportional to t%e simplicity of t%e indi,idual pieces
Stated differently+ is in,erse to t%e complexity" Simplicity is relati,e+ largely to ,iewpoint 8ow simple do you %a,e to *e/
#e consistent
.%at Is a #ug/
Programmer(s Intentions
Comments Spec 35easona*le programmer4 ssume %e-s%e meant to do w%at is *est for t%e user
=ser 2xpectations
Specs t%at ,iolate user expectations are spec *ugs If t%ere(s a conflict+ it(s 3majority rules4
Complexity
$%e *ox wit% a million unla*eled *uttons Particularly of language words+ sym*ols+ functions+ etc"
Misunderstandings
30aw4 of $esting
pplication in 9OSS
8ere(s w%ere I tell you some t%ings to do+ *ut you s%ould still ma&e up your own mind"
5e,iews C%ec&in Procedures 0ac& of Some*ody to $al& $o :I5C %elps; Designer(s $ime
Implementer(s $ime
8a,e to type to communicate design 6o w%ite*oard+ etc" <roup pro*a*ly won(t all *e t%ere at once 2it%er to de,elopment in general or just your project"
6o,ices
Desire for consistency ,s" desire for de,elopment speed Disconnection wit% users =ser re'uirements ? My re'uirements/
May not want to conform to design May not want to wor& on refactoring
Solutions
2xtreme consistency
If you can(t communicate a design+ it %elps if t%e existing code already wor&s t%e rig%t way
#rief communications Code re,iews 2xtensi,e de,eloper documentation 0ots of attention to new*ies
#e nice
$%e 2nd: ) @
%ttp:--www"codesimplicity"commax!codesimplicity"com