Πρόσφατα συμμετείχα σε μια συζήτηση στην οποία αναφέρθηκε ο ρόλος του DB Developer. Μέσα από αυτή την συζήτηση διαπίστωσα ότι οι απόψεις για το τι είναι και κυρίως τι κάνει ένας DB Developer δεν είναι ξεκάθαρες.
Θεωρώντας ότι είναι χρήσιμο να γνωρίζουμε τι είναι ο DB Developer ρόλος και πως αυτός τοποθετείτε στην αγορά εργασίας (ζήτηση/αμοιβή) τόσο στην χώρα μας όσο και στο εξωτερικό, αποφάσισα να γράψω το συγκεκριμένο άρθρο.
Εισαγωγή
Ο αριθμός και ο όγκος των βάσεων τα τελευταία χρόνια έχει αυξηθεί αρκετά. Οι προβλέψεις δείχνουν ότι θα γίνει ακόμα μεγαλύτερος μέσα στα επόμενα χρόνια. Αυτό έχει οδηγήσει στην ραγδαία αύξηση της ζήτησης εξειδικευμένου προσωπικού στις βάσεις δεδομένων.
Μπορεί αρκετοί να θεωρούν ότι ο σχεδιασμός ή η συντήρηση ενός database server ή μιας database είναι κάτι που μπορεί να γίνει από κάποιον έμπειρο είτε IT professional είτε developer. Αυτό πλέον είναι κάτι που ανήκει στο παρελθόν. Η ανάγκη για άμεση πληροφορία είναι επιτακτική σήμερα και θα γίνει επιτακτικότερη στο μέλλον. Αυτό γίνεται ακόμα δυσκολότερο καθώς τα δεδομένα αλλάζουν καθημερινά και δεν αναφέρομαι στη προσθήκη εγγραφών αλλά στην δομή τους.
Ο παραδοσιακός full-time DBA πλέον δεν φτάνει να καλύψει τις ανάγκες που υπάρχουν καθώς τα περισσότερα RDBMS έχουν εμπλουτιστεί με τόσα χαρακτηριστικά που πλέον χρειάζεται εξειδίκευση. Αυτό είχε σαν αποτέλεσμα τα τελευταία χρόνια να δημιουργηθούν νέοι ρόλοι γύρω από το θέμα data & databases. Ένας από αυτούς είναι και ο DB developer. Φυσικά οι ρόλοι αυτοί μεταξύ τους έχουν κοινά σημεία, και να μην σας φανεί αυτό περίεργο όπως θα δείτε παρακάτω, διότι πρέπει να υπάρχει αρμονική συνεργασία μεταξύ τους και φυσικά άριστη επικοινωνία ώστε να μπορεί να βγει αποτέλεσμα.
Το ότι θεωρούμε ότι το application είναι αυτό που κάνει την διαφορά είναι κατά την γνώμη μου παντελώς λάθος. Προσωπικά μου πήρε αρκετά χρόνια για να συνειδητοποιήσω αυτό. Σίγουρα ένα καλό application μπορεί να κάνει την διαφορά αλλά στην ουσία είναι ο δίαυλος επικοινωνίας του χρήστη με τα δεδομένα. Εξάλλου πόσα είναι τα applications που έχουμε φτιάξει και δεν έχουν κάποιας μορφής δεδομένα;
Θα πρέπει να επισημάνω προς αποφυγή παρεξηγήσεων και ατελέσφορων συζητήσεων ότι δεν απαξιώνω το application καθώς στο μυαλό μου δεν υπάρχει διαχωρισμός αυτών. Για μένα υπάρχει το πληροφοριακό σύστημα που σκοπό έχει να καλύψει τις ανάγκες που υπάρχουν το οποίο αποτελείται από πολλά components όπως servers, network, databases, applications και όποιος πιστεύει ότι μπορεί να έχει ένα σύστημα μόνο με ένα από αυτά τα components μάλλον θα πρέπει να το σκεφτεί ξανά.
Ένας database developer θα πρέπει να έχει μεγάλη εμπειρία σε hardware, software αλλά και σε computer systems και processes. Πρέπει οπωσδήποτε να έχει πολύ καλή γνώση προγραμματισμού (languages & techniques) και πάνω από όλα μεράκι και διάθεση για μάθηση. Πρέπει να είναι μεθοδικός, λογικός, υπομονετικός, προσεκτικός και πάνω από όλα ακριβής καθώς δεν του επιτρέπονται λάθη. Πρέπει να είναι ανοικτός στο να ενστερνίζεται και να εφαρμόζει νέα πράγματα και τεχνολογίες. Επίσης πρέπει να μάθει να δουλεύει κάτω από μεγάλη πίεση. Φυσικά θα πρέπει να είναι επικοινωνιακός και να ξέρει να δουλεύει σε ομάδες χωρίς όμως να χάσει την δυνατότητα να εργαστεί σαν one man show. Είναι ένας απαιτητικός ρόλος…
Αρκετοί πιστεύουν ότι ένας database developer απλά γράφει queries , φτιάχνει stored procedures, triggers, views. Είναι παντελώς λάθος αυτή η θεώρηση και αν κάποιος θεωρεί ότι κάνοντας μόνο αυτά είναι database developer λυπάμαι αλλά δεν είναι.
Ποιες όμως είναι οι αρμοδιότητες του database developer;
Ένας database developer έχει τις εξής αρμοδιότητες
- Σχεδιάζει, αναπτύσει και υλοποιεί database systems με βάση τις επιχειρηματικές απαιτήσεις
- Ορίζει τα system requirements σε συνεργασία με τους DBA και τους SysAdmins
- Καθορίζει πως τα δεδομένα θα οργανωθούν, ποιοι θα έχουν πρόσβαση σε αυτά και πως θα γίνονται display στους χρήστες
- Υλοποιεί το capacity planning για τις databases
- Διασφαλίζει την ποιότητα και την ακεραιότητα των δεδομένων
- Υλοποιεί το οποιοδήποτε database programming είτε σε νέες είτε σε υπάρχουσες databases
- Υλοποιεί complex functions, scripts, stored procedures, triggers και σε αρκετές περιπτώσεις είναι αυτός που υλοποιεί το data access layer σε distributed applications
- Συμμετέχει ενεργά στο σχεδιασμό της βάσης δεδομένων
- Υλοποιεί της διαδικασίες ασφάλειας των δεδομένων
- Αξιολογεί της υπάρχουσες βάσεις και προτείνει βελτιώσεις που αφορούν απόδοση, ασφάλεια, ακεραιότητα δεδομένων
- Σχεδιάζει, προτείνει και υλοποιεί best practices που αφορούν database design & development
- Επιλύει προβλήματα που αφορούν τις databases όπως performance, stability, realiability
- Παρέχει βοήθεια στους application developers σε θέματα προγραμματισμού που αφορούν το data accessing
- Συμμετέχει στην δημιουργία των databases & functional specifications
Από τα παραπάνω είναι σαφές ότι ένας database developer έχει πολλά να κάνει και δεν του λείπει ο κώδικας . Αντίθετα έχει αρκετές δυνατότητες συγγραφής κώδικα τόσο σε Transact SQL / PL-SQL αλλά και σε άλλες γλώσσες προγραμματισμού όπως C#, C++, Java κλπ.
Ποια όμως είναι ζήτηση στην αγορά εργασίας ενός database developer και που μπορεί να φτάσει η αμοιβή του;
Η ζήτηση για database developer είναι μεγάλη στην αγορά εργασίας. Στο εξωτερικό είναι σίγουρα μεγαλύτερη από ότι στην χώρα μας. Παρόλα αυτά όμως ακόμα και στην Ελλάδα υπάρχει αυξημένη ζήτηση για τον συγκεκριμένο ρόλο.
Οι αμοιβές που υπάρχουν στην αγορά εργασίας για τον ρόλο αυτό είναι κλιμακούμενες ανάλογα με τα προσόντα και την εμπειρία. Δυστυχώς στην Ελλάδα είναι σαφώς χαμηλότερες από ότι στο εξωτερικό.
Στο εξωτερικό οι αμοιβές κυμαίνονται από 45-90Κ δολάρια το χρόνο, με ένα μέσο όρο γύρω στα 75Κ.
Στην Ελλάδα είναι από 25-60Κ ευρώ το χρόνο με μέσο όρο τα 43Κ.
Ένας database developer πως μπορεί να εξελιχθεί (Career Path);
Στο παρακάτω γράφημα μπορεί κανείς να δει ποιο είναι το career path ενός DB developer
Source: www.payscale.com
/*antonch*/