Ketsuppi ja muut suuret asiat
Ammatti nimeltään ohjelmoija, osa II

Ammatti nimeltään ohjelmoija

Olen ammatiltani ohjelmoija. Useimmille ihmisille tuo titteli ei tietysti kerro paljoakaan, mikä on ihan OK, koska ohjelmointi ei ole mitenkään erityisen ihmeellinen ammatti. Onhan siinä omat puolensa, mutta turha niistä hössöttää, ammatti mikä ammatti. Mutta ne, jotka haaveilevat ohjelmoijan ammatista, säästyvät paljolta, jos lukevat ensin kirjoituksen Computer Programming—What's it like?.

Ensimmäinen ja pahin harhakuva on että ohjelmoijana pääsee luomaan. Kuten yllä mainitussa kirjoituksessa sanotaan:

Shit rolls downhill and newbies in any industry are the valleys. So new programmers get all the dirt jobs and projects that no one else wants. This means that they don't get to create new things; they inherit and get to fix other people's bad code. Not only that, they usually get to fix the old things that are so bad that the other programmers don't want to get near them.
Ennen kuin haaveilet ohjelmoijan ammatista, opi hyväksymään tuo.
Ei ole tietenkään ihan tavatonta, että ohjelmoijan työssä pääsee toisinaan luomaan jotain tyhjästä, mutta niissäkin tapauksissa ohjelmoijan oma luomus päätyy ennemmin tai myöhemmin —ja nimenomaan ennemmin— ylläpitovaiheeseen ja luova ohjelmoijamme joutuu korjaamaan omia jälkiään. Muiden paskaa koodia korjatessa voi ainakin kiroilla mielessään jollekin muulle, mutta omaa paskaa koodia korjatessa joutuu miettimään onko itsestä loppujen lopuksi mihinkään.

Kirjoitin tietysti noin vain koska haluan kuulostaa viileältä. Lopullisen valaistumisen ohjelmoijan ammatissa voi saavuuttaa vasta kun karistaa harhaluulon omasta (kuvitellusta) erinomaisuudestaan ja hyväksyy sen tosiasian, että kauan käytössä ollut koodi on monessa suhteessa hyvää. Niin kuin kirjoituksessa Things You Should Never Do, Part I sanotaan:

It's important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time. [...] You're just going to make most of the old mistakes again, and introduce some new problems that weren't in the original version.