To je to što me zanima!

Isplati li se programere plaćati po liniji napisanog koda?

Onima koji nisu programeri jako je teško ocijeniti i izmjeriti njihov rad. Nepoznavanje te problematike dovodi do loših rješenja poput mjerenja koda.
Vidi originalni članak

U prošloj kolumni pisao sam o milijunima linija izvornog koda u vozilima, letjelicama, operacijskim sustavima. Upotrebljavati takvu metriku za mjerenje učinka programera je pogrešno, ali kad se usporedi broj linija koda onda se može dobiti dojam o tome koliko je uloženo posla da bi pojedini posao završio. Nije isto ako projekt ima 500, 50.000 ili 5.000.000 linija koda.

Programiranje je posao gdje svaki zadatak možete napraviti na nekoliko različitih načina. Ako za njega angažirate nekoliko programera velika je vjerojatnost da će svaki od njih to napraviti drugačije i u različitom vremenskom rasponu. Broj linija koda će se sigurno razlikovati. Neki će najboljima smatrati one koji to naprave u najkraćem vremenu i s najmanjim brojem linija koda, ali takvi će sasvim sigurno zaboraviti neku iznimku ili obraditi ulazne podatke na potreban način.

Ovaj tjedan sam bio produktivan -2000 linija koda

Oni koji šefuju programerima, a sami nisu nikada bili programeri (ne računamo one koji su napravili program koji crta krug na zaslonu) često se nađu u situaciji da vrednuju njihov rad i za to traže konkretnu metriku.

Appleov tim koji je 1982. radio na razvoju programa za Lisu bio je u gužvi jer je isporuka slijedila za 6 mjeseci. Neki šefovi su se dosjetili da bi mogli mjeriti učinkovitost programera po količini koda koju tjedno napišu pa su zatražili od njih da svaki petak prijave koliko su linija koda napisali. Jedan od najvažnijih ljudi na projektu, Bill Atkinson, smatrao je da se tako ne može mjeriti produktivnost programera jer mu je cilj bio da piše što brže i što manje programe.

Kako je baš taj tjedan radio na optimizaciji koda kojom je uštedio 2000 linija koda Bill je taj jedan prijavio da je napisao -2000 linija. Nije poznato kako su šefovi reagirali, ali za par tjedana su prestali tražiti od Billa da ispunjava taj formular.

Što bi napravili konformisti?

Bill je pokazao kako je takva metrika besmislena, nemam podatak kako su reagirali drugi u tom Apple timu, ali sasvim sigurno znam kakva bi bila reakcija konformista programera. Oni bi najprije pisali jako puno nepotrebnog koda dok se ne bi dosjetili da bi mogli napisati i generator koda koji bi sam pisao kod koji ne bi radio ništa korisno, ali bi povećao broj linija koda. Šefovi bi sigurno bili iznenađeni kako se produktivnost iznenadno povećala, možda bi si isplatili i pokoji bonus zbog toga. Sve dok im stvarnost ne bi lupila u glavu kad bi vidjeli da se povećana produktivnost nije očitovala i u samoj aplikaciji koja bi postala sve lošija i lošija.

Koje je rješenje problema?

Nema rješenja. Kod se ne može ocjenjivati niti plaćati po broju redova. To vam može biti indikator, ali ne i konačna metrika. Kod bi mogli usporediti s periodnim sustavom elemenata. Par stotina redova nekog algoritma koji rješava određeni problem može biti teže (i skuplje i za njihovo pisanje treba puno više vremena) od aplikacije koja rješava uobičajene probleme i čiji se broj linija koda mjeri u tisućama. Problem je u tome što takav periodni sustav ne postoji i teško da će ikada postojati za programiranje.

Jedno je sigurno, mjerenje linija koda nije rješenje.

Idi na 24sata

Komentari 15

  • eulenspiegel 13.09.2012.

    ..to je isto kao i slikare plaćati po broju slika koje "nacrtaju" u tjednu... (na pr. tri veduta, 2 portreta, jedan pejsaž, 4 mrtve prirode... = jako dobar slikar !!!! A ne onaj smutnjivac koji je napravio samo nešto skica i niti jednu sliku nije uramio...)

  • Slavonka52 12.09.2012.

    EU sve zivo normira i ako je to u pravilu nemogoce. Recimo za jedan pregled ultrazvukom se ne uzima u obzir koliko kilograma je teska osoba,moze li sama hodati i leci na stol itd. Za svaki pregled ultrazvukom dobijes toliko eurica i amen.I sve ostale med.usluge lijecnika su normirane,zato lijecnicima ostaje vrlo malo vremena za pravu opskrbu pacijenta,jedino ako ce to uradit djabe. Normiranje poslova nije u redu.

  • Horse_1 12.09.2012.

    Poanta programiranja nije napisati što više linija coda već napisati code da je što manji, a učinkovit, pregledan i jasan kako bi se što lakše mogle napraviti eventualne izmjene.

Komentiraj...
Vidi sve komentare