Oblac

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).