Incerc sa bag o explicatie:
technical analyst - nu stiu exact
software architect - un om ce are viziune asupra unor proiecte mari, si a modului cum interactioneaza componentele lor, poate sa dea sfaturi la inceputul unui proiect pentru ca vede problemele ce pot aparea mai bine.
software developer - palmasul care scrie codul, are responsabilitate pe o bucata mica a lui care si-o stie bine, poate sa faca treaba si mai cere ajutor din cand in cand, de obicei poate invata orice tehnologie sau limbaj si se poate adapta.
team leader - sef peste cativa oameni 5 - 15, sef peste un proiect mai mic sau un feature, poate sa isi faca treaba singur si sa ii ajute pe altii, e responsabil pe intreaga echipa.
programator web - un software developer specializat pe tehnologii web, astia nu sunt asa flexibili ca un software developer in general da pe web isi fac treaba bine
database developer - din nou un developer specializat pe baze de date, la noi se cer mult pentru ca majoritatea proiectelor de outsourcing sunt orientate puternic pe baze de date, dar nu v-as sugera sa incercati sa deveniti asa ceva, pentru ca acolo ramaneti

tester - testeaza aplicatiile facute de developeri, de mana sau folosind unele scripturi sau programele scrise de ei, de obicei la angajare trebuie doar sa stie ce e ala un calculator, nu trebuie sa fi urmat cursuri de profil neaparat.
quality assurance manager - sefu astora de mai sus, probabil stie si mai multa programare si cum sa ii puna la treaba
project manager - seful peste toti oamenii din proiect, are grija ca team leaderii sa isi faca treaba si proiectul sa se termine la timp, interactioneaza cu oamenii si probabil ia decizii de mariri de salariu si mai stiu eu ce
software developer manager - probabil un sef peste project manageri, are responsabilitate peste modul cum merg mai multe proiecte.