Paljud kasutavad sõnu “programmeerija” ja “tarkvara arendaja” suhteliselt suva järgi. Mõnede arust on need sünonüümid. Arvan, et kass ja koer pole üks ja sama, seega ei usu, et needki sünonüümid on.

Milles seisneb nende erinevus? Programmeerija on roll meeskonnas. Selle all võib mõista, et sellel rollikandjal on teadmised koodi kirjutamisest ja mingist platvormist. Heaks programmeerijaks võiks nimetada isikut, kes teab platvormi ja keelt küllaltki põhjalikult. Vaadates töökuulutusi, kus soovitakse saada programmeerijaid tööle, siis on ära märgitud küllaltki väike valdkond mille oskusi vajatakse (näiteks vajalikud oskused: C++, Java, C#, PHP vms). Programmeerijat võiks isegi võrrelda DBA-ga – kumbki neist ei pea teada vajalikust valdkonnast laiemalt.

Vaadates tarkvara arendajat rollina, siis ei saa öelda, et see on meeskonna sisene roll. Näiteks väledates metoodikates ongi meeskonna liige tarkvara arendaja ning spetsiifilisemaid rolle tavaliselt ei omistata. Tarkvara arendaja oskused on tunduvalt laiemad, kuid need ei pruugi olla väga põhjalikud. Tarkvara arendaja oskused võiksid olla: teadmised arendusmetoodikatest, testimine, programmeerimine, andmebaaside haldamine, analüüsimine, build skriptide tegemine, dokumentatsiooni kirjutamine jne. See ei tähenda, et te paeks neid kõike viimse pulgani teadma, kuid tal ei tohiks olla raskusi nende teemadega tegeleda.

Siit võib näha, et programmeerija kuulub tarkvara arendaja sisse. Samas ei tähenda hea tarkvara arendaja head programmeerijat. Selle sõna vahe saab tegelikult üle viia ka teemale asjatundja (generalist) vs spetsialist.

Asjatundja vs spetsialist

Kumbasid inimesi sa ootaksid enda meeskonda, kas asjatundjaid (see on tobe tõlge, kui keegi oskab seda paremini nimetada, siis andke teada), kes teavad kuidas tarkvara ehitada (nii protsessiliselt kui ka printsiipidelt ja mustritelt), või spetsialiste, kes tunnevad mingit kindlat ala (üldjoontes väikest) väga hästi? Tegelik küsimus on see, et mis arendus protsessi kasutatakse, vastavalt sellele on ka vaja inimesi.

Rollipõhised metoodikad (paljude rollidega) vajavad spetsialiste ning üritatakse panna igaüks tegema just seda mida ta kõige paremini oskab. See tähendab ka tihtipeale seda, et projekti meeskond on suur (paljud on vähe seotud projektiga).

Seevastu väledad metoodikad vajavad asjatundjaid. Neil on vaja, et igaüks on võimeline tegelema mistahes ülesandega. Seepärast on neil ka kasutusel paarisprogrammeerimine, et teadmised kanduksid üksteiselt üle. Projektiga on seotud hulk inimesi, kes võtavad uue ette alles siis kui vana on lõpetatud (muidugi võib inimesi vahetuda, kuid inimesi hoitakse täiskohaga ühe projekti peal korraga).

Ise eelistan veidi rohkem arendajaid, sest nendega leiab puutepunkte rohkem, kuid programmeerijategagi on hea juttu ajada, sest neilt saab platvormi kohta sügavamat infot. Kõige parem variant on asjatundja, kellel on kirg mingi kindla valdkonna vastu. See teeb tast spetsialisti ja asjatundja korraga.

Kokkuvõtvalt võib öelda, et nende sõnade vahe seisneb teadmise laiuses ja sügavuses.

  • Share/Bookmark

KATEGOORIAD » Arendus

SILDID »

2 kommentaari

1

Nutta või naerda. Kaua ma seda olen rääkinud, et Programmeerija != tarkvara arendaja. Kahjuks tihtipeale ei õnnestu seda juhtfiguuridele selgitada.

kris
09:52, 29. august

2

[...] Programmeerija ei ole tarkvara arendaja [...]

IT platvormi spetsialist
15:38, 15. detsember

Lisa kommentaar

  • * Kuvatakse kommentaari juures
  • * Ei publitseerita