Final vs Open

2 min

Kratka mentalna vežba: kada pišete kod koji se koristi od strane drugih ljudi (biblioteka, modul…), da li vodite računa da je fool-proof? Da li ograničavate da bi zaštitili od budalastog korišćenja, ili otvarate da bi pružili više?

Izdvajam ovde odluku dizajnera Kotlina da sve klase po default-u budu final. Daleko smo od trivijalnosti, reč je o dizajnu (tada novog) programskog jezika. Zastanite za trenutak, stavite se u njihove cipele: šta bi odlučili?

Sažetak njihovih odluka vredi pročitati. Postoje valjani razlozi za i protiv te odluke. Postavljena je i javna anketa, a rezultat je zanimljiv:

Nit’ vamo, nit’ tamo. Negde u diskusijama mi je zapalo za oko sledeće rezonovanje, kritika odluke Kotlinovih tvoraca:

Again, you’re speaking from the point of view of, “we need to stop idiots.” I am speaking from the point of view, “we need to help people.”

Ovo je probudilo izvesnu emociju kroz podsećanje na to kako i sam dizajniram open-source biblioteke: vodeći računa o tome da korisnik ima više izbora i bude omogućen da uradi što više na način koji njemu odgovara. To ponekad gotovo neminovno vodi do slučajeva budalaste upotrebe koda - često i od mene samog.

Međutim, odlazeći tako dalje u razmišljanjima, dosta kasnije, počeo sam da se pitam jesu ili ova dva odgovora zaista ortogonalna?

Sada mislim da nisu - pripadaju različitim kontekstima.

Kod za poneti

Ne postoji deterministički način merenja odluka kada je u pitanju razvoj softvera. Na kraju presuđuje intuicija, zasnovana na iskustvu. To je u redu, jer razvoj softvera nije nauka.

Ništa više, ništa manje.

Zato: ne postoji dobar kod. Ali postoji bolji kod. I kao kod svake veštine, na njemu se mora neprestano raditi. To je ono što nosim iz ove mentalne vežbe.

🧧
Nisam definisan svojim stavovima. Stavove usvajamo, menjamo, nadograđujemo, ali oni ne čine nas same. Manje je važno da li se slažemo, koliko da se razumemo.