Να μπω κι εγώ στη συζήτηση ...
Θεσμοθετημένη ιεραρχία δεν υπάρχει. Η μόνη de facto διαφοροποίηση που υπάρχει είναι αυτή του junior/senior developer, αν και σε εταιρείες που βάζουν ένα προγραμματιστή να κάνει 2-3 projects (κατά κανόνα επιδοτούμενα) ακόμα και αυτό ατονεί κάπως. Δεν αναφέρομαι σε management θέσεις, γιατί θεωρώ ότι είναι στην ουσία άλλο επάγγελμα, σα να συγκρίνεις χειρούργους και οδοντίατρους.
Η ονομασία "Software Engineer" υπάρχει σαν όρος αλλά όχι σαν βαθμίδα. Γενικά, αναφέρεται σε όσους έχουν μεγάλο εύρος γνώσης σε όλους σχεδόν τους τομείς της ανάπτυξης ενός προϊόντος, και οπωσδήποτε καλύπτει το requirements engineering, design, configuration management (όχι απλά πως δουλεύει το sourcesafe, αλλά και πότε κάνουμε τί) και μεθοδολογίες. Όπως όμως είπε και ο papadi, όταν στις αγγελίες λένε software engineer, μάλλον δεν εννοούν αυτό. Συνήθως θα δείς και ένα "3-5 έτη προϋπηρεσίας", που σημαίνει ότι ζητάνε senior developers.
Τα πράγματα είναι πολύ πιο μπερδεμένα με τον όρο Architect. Και πάλι, ο όρος υπάρχει, αλλά διαστρεβλώνεται. Κανονικά αναφέρεται σε κάποιον ο οποίος προχωράει πέρα από τις γνώσεις του software engineer και έχει γνώσεις όχι μόνο του development αλλά και του επιχειρηματικού χώρου για τον οποίο φτιάχνει προγράμματα, π.χ. χρηματοοικονομικά, τραπεζικά, εμπορικά. Οπωσδήποτε έχει πολύ καλή γνώση μεθοδολογιών ανάπτυξης αλλά και business, πέρα από τη γνώση πολλών, ακόμα και ανταγωνιστικών, τεχνολογιών. Γι αυτό και συνήθως θεωρείται θέση management.
Δυστυχώς, τις περισσότερες φορές ονομάζεται architect οποιοσδήποτε είναι αρκετά παλιός στην εταιρεία οπότε δεν μπορεί να ονομάζεται απλώς "Senior Software Engineer". Γι αυτό και βλέπεις πολλούς με πάνω από 10 χρόνια εμπειρία να ονομάζονται "architects" χωρίς να αξίζουν τον τίτλο, ενώ συνήθως οι εφαρμογές που σχεδιάζουν είναι από ιδιαίτερα ως τρομακτικά προβληματικές.
Προκειμένου να ξεκαθαρίσει αυτός ο αχταρμάς, υπάρχουν κάποιες διαδικασίες certification. Το IEEE Computer Society έχει δημιουργήσει το Certified Software Development Professional certification, το οποίο απαιτεί να περάσεις εξετάσεις σε πολλούς τομείς, μεταξύ των οποίων και νομικά ζητήματα. H Microsoft έχει το Certified Architect, το οποίο ΑΠΑΙΤΕΙ 10 χρόνια συνολική προϋπηρεσία και 3 χρόνια σε θέση Architect, ΠΡΙΝ γίνεις δεκτός για τις εξετάσεις, στις οποίες παρουσιάζεις τα έργα που έχεις κάνει σε επιτροπή. Η Cisco έχει αντίστοιχο πρόγραμμα για network engineers, το οποίο στο τελικό στάδιο απαιτεί να στήσεις ολόκληρο δίκτυο με routers, switches, vpns, firewalls και όλα τα συμπαραμαρτούντα, πάλι σε επιτροπή.
Επίσης, υπάρχουν και πιο εύκολα certifications, όπως το (παλιό) MCSD.NET τα οποία ελέγχουν αν ξέρεις συγκεκριμένες τεχνολογίες. Ειδικά το MCSD.NET έλεγχε Winforms, Web, Enterprise Services, Web Services, Databases και αρχιτεκτονική. Αυτά τα certifications είναι καλή ένδειξη ότι κάποιος μπορεί να είναι senior developer ή software engineer.
Θα κλείσω με το καταπληκτικό ρητό του Alan Cooper σχετικά με τον αχταρμά:
"Programmers are called developers, developers are called engineers, engineers are called architects, and architects never get called!"
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos