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.
Loe veel sarnastel teemadel:
- Kõike, mida sa omad, ei ole sul vaja, 2. aprill
- Tarkvara on valesti tõlgitud, 18. jaanuar
- Tarkvara meistrite manifest, 14. aprill
- Kuidas kaob tarkvara kvaliteet?, 26. märts
- KoopiaKoopiaKoopia ei ole ilus, 20. veebruar
KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (23)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
