Pisanje programa: umetnost ili nauka?
Guy Kawasaki započinje predgovor knjige “Beyond Software Architecture” sledećim rečima:
…I think writing software is more art than science.
Postoji mišljenje da je pisanje programa nauka: cilj je dobiti optimalan kod za dati problem; programiranje je nauka koja proučava kako se dolazi do ovog optimalnog rešenja.
S druge strane, ima onih koji se slažu s Guy-om (zaista izuzetnim gospodinom) i smatraju da je pisanje programa umetnost: postoji više načina kako se dolazi do optimalnog koda; ovaj proces je subjektivan, a zavisi od znanja i iskustva.
(dramska pauza)
Ne slažem se.
Pisanje programa nije ni umetnost, a ni nauka.
Umetnost?
Pisanje programa nije umetnost. Proizvod umetnosti dobija smisao ako stvara ideju ili daje smisao lepote. Umetnost se doživljava i u njoj se uživa zbog nje same. Slika se ne koristi za nešto drugo osim da se u njoj uživa.
Nauka?
Pisanje programa nije nauka. Proizvodi nauke se mogu ponavljati bezbroj puta od strane drugih timova, a rezultat uvek mora biti isti. Razvoj programa ne podleže ovom principu; bliži je konceptu eksperimenta: rezultati se ne moraju potpuno poklapati ukoliko se ponovi na drugim lokacijama i u drugom vremenskom okviru.
Šta je onda?
Ako razvoj softvera nije ni umetnost, ni nauka, šta je onda?
Razvoj softvera je rukotvorina (engl: handicrafts) i zanatstvo (engl: craftsmanship).