Τελειώνεις την σχολή πληροφορικής και θα βγεις να ψάξεις για δουλειά ως web developer; Τότε αυτό σε ενδιαφέρει.

Μου έστειλε στο facebook ένας φίλος περιληπτικά την ερώτηση "Αύριο μεθαύριο τελειώνω τη σχολή και με το καλό θα βρω μια δουλειά σε μια εταιρεία που θα φτιάχνει sites. Πάνω κάτω τι θα μου ζητάνε να κάνω εκεί;" και επειδή πιστεύω πως πραγματικά θα έχουν την ίδια απορία και άγχος οι περισσότεροι φοιτητές δημοσιεύω εδώ την απάντηση που του έγραψα με κάποιες αλλαγές, για να το συζητήσουμε και για να υπάρχουν σχετικές μελλοντικές αναφορές.


Το πρώτο που πρέπει να κάνεις είναι να ΜΗΝ αγχώνεσαι 🙂 Δεν υπάρχει κάτι στάνταρτ και έχει να κάνει συνήθως με τους ρόλους του προσωπικού που υπάρχει ήδη στην εταιρεία αλλά και τι υπηρεσίες προσφέρει η εταιρεία.

Και εγώ όταν πρωτοξεκίνησα στην εταιρεία έκανα τα πάντα. Τα πάντα σημαίνει:

  • Project management – Ανάλυση – σχεδίαση – προγραμματισμός

Δηλαδή καθόμασταν 3 άτομα που ήμασταν τότε και αποφασίζαμε ότι θέλουμε να βγάλουμε την Χ εφαρμογή. Κάναμε μια έρευνα και ανάλυση, φτιάχναμε τη βάση δεδομένων, κάναμε το template, γράφαμε t-SQL και γράφαμε και τον κώδικα για την εφαρμογή. Μέχρι και συγγραφή εγχειριδίων χρήσης, σχεδιασμό λογοτύπων και εξωφύλλου για το κουτί της εφαρμογής κλπ έκανα. Ελλείψει ατόμων υποχρεωτικά ψάχναμε και τεχνικά θέματα του τύπου στήσιμο web site, συντήρηση server, εγκαταστάσεις λογισμικού που χρειαζόμαστε κλπ

Σήμερα που είμαστε αρκετά άτομα έχει μοιραστεί η δουλειά και κάνει άλλος το design, άλλος την ανάλυση, άλλος μας γράφει τον κώδικα (stored procedures) για την βάση δεδομένων και οι υπόλοιποι ασχολούμαστε καθαρά με τον κώδικα της εφαρμογής.
Αυτό που θέλω να σου πω είναι πως αν πας σε μια εταιρεία που θα είστε μόνο εσύ και το "αφεντικό", υποχρεωτικά θα πρέπει να ξέρεις από όλα, να είσαι δηλαδή σε θέση να βγάλεις ένα site online από το ΜΗΔΕΝ. Αν όμως πας σε μια εταιρεία που έχει κόσμο και έχει μοιράσει τις δουλειές θα ασχολείσαι κυρίως με τον κώδικα που θα γράφεις σε php.

Εννοείται βέβαια πως πλέον δεν μπορούμε να μιλάμε μόνο για php, αφού υποχρεωτικά θα πρέπει να γνωρίζεις και τουλάχιστον τα βασικά των CSS και Javascript (HTML εννοείται). Το πιο πιθανό είναι να χρειάζεται να γράφεις και την SQL για να τραβάς τα δεδομένα από την βάση σου. Δεν είναι δυστυχώς στην Ελλάδα πολλές οι εταιρείες που έχουν άλλα άτομα για τις βάσεις δεδομένων και άλλες για τον κώδικα. Εμείς έχουμε κάποια άτομα που ασχολούνται αποκλειστικά με αυτό. Εγώ σαν προγραμματιστής τους λέω ότι χρειάζομαι μια store procedure (δουλεύομε με MS SQL Server) που θα μου γυρίζει τα Χ δεδομένα από τον Ψ πίνακα και θα δέχεται ως παραμέτρους τις ΤΑΔΕ και αυτοί αναλαμβάνουν να τις φτιάξουν και εγώ απλώς να γράψω τον κώδικα που θα καλέσει αυτήν την SP και θα εμφανίσω τα δεδομένα / φόρμες / λίστες κλπ.

Το όλο σκηνικό πάει κάπως έτσι όταν μιλάμε για νέο project και όχι απλώς για στήσιμο ενός site με κάποιο από τα εργαλεία που ήδη έχουμε αναπτύξει (τα δικά μας δηλαδή content management systems).

Έρχεται ο «αρχηγός» για παράδειγμα και σου λέει «πρέπει να φτιάξουμε μια εφαρμογή διαχείρισης ξενοδοχείου» και μοιράζει ρόλους. Δηλαδή ποιοι θα πάνε από τον πελάτη για την ανάλυση που είναι και το Α και το Ω σε οποιαδήποτε νέας custom web εφαρμογή (αν και το ακόμα πιο βασικό είναι αυτός που θα βρει και θα "κλείσει" τον πελάτη 🙂 , αλλά αυτό είναι θέμα άλλης συζήτησης). Αυτοί πρέπει να καταλάβουν τι ακριβώς κάνει ο πελάτης και πως θα μπορέσουμε αυτό που κάνει να του το οργανώσουμε σε μια εφαρμογή και να κάνει τη δουλειά του πιο γρήγορα και πιο παραγωγικά.

Έπειτα αναλαμβάνουν ταυτόχρονα designers και SQL analysts / developers, όπου φτιάχνουν templates και σχεδιάζουν την βάση δεδομένων αντίστοιχα.
Μετά ερχόμαστε εμείς που ξεκινάμε τον κώδικα στην ιδανική περίπτωση έχοντας στα χέρια μας μια ανάλυση που περιγράφει μέχρι και σε επίπεδο φόρμας και σελίδων τι πρέπει να κάνουμε. Αυτό δυστυχώς γίνετε σπανίως! Δηλαδή τις περισσότερες φορές ξεκινάμε, θα υπάρχουν παρεμβάσεις του πελάτη και κατά τη διάρκεια της ανάπτυξης – εφόσον έχει ζητήσει να παρακολουθεί την εξέλιξη – οπότε θα ζητάει και αλλαγές ή στην καλύτερη περίπτωση απλώς θα διορθώνει πιθανή λανθασμένη λογική που έχουμε ακολουθήσει στην εφαρμογή.

Τα μεγαλύτερα λάθη οφείλονται σε λάθη από την ανάλυση και όχι απαραίτητα γιατί αυτοί που αναλάβανε να τις κάνουν δεν κάνουν καλή δουλειά, αλλά γιατί στις περισσότερες περιπτώσεις ούτε οι πελάτες ξέρουν τι ψάχνουν… πρέπει να τους βοηθάς όσο μπορείς ώστε να καταλήξουν σε κάτι, αλλά και πάλι θα έχεις αυτό που σου έλεγα. Θα βλέπουν κάτι και θα σου λένε αυτό δεν το θέλω έτσι ή δεν το κάνατε σωστά ΑΦΟΥ το έχεις κάνει… ακόμα και αν έχεις ξεκινήσει το project με υπογεγραμμένο συμφωνητικό και από τις δυο μεριές που περιγράφει τι ακριβώς πρόκειται να αναπτύξεις και οφείλεις να παραδώσεις…

Αυτά βέβαια ισχύον στην περίπτωση που θα πέσεις σε software house που κάνει όντως ΑΝΑΠΤΥΞΗ εφαρμογών. Γιατί στο λέω αυτό;
Στο χώρο μας το 80% ίσως και παραπάνω το μόνο που κάνουν είναι να στήνουν / φτιάχνουν websites και πολύ λίγες να γράφουν custom εφαρμογές. Τι σημαίνει αυτό; Έχουν ένα CMS ας πούμε το joomla, drupal κλπ ή στην καλύτερη περίπτωση ένα που ανέπτυξαν οι ίδιοι άντε και κάτι αντίστοιχο για να φτιάχνουν ηλεκτρονικά καταστήματα και έπειτα απλώς φτιάχνουν sites που βασίζονται σε αυτά.
Δηλαδή πάνω σε μια έτοιμη εφαρμογή (δική τους ή έτοιμη) κάποιοι από το προσωπικό της εταιρείας αναλαμβάνουν να φτιάξουν το template (αν δεν είναι και αυτό έτοιμο) και κάποιοι να το προσαρμόσουν ώστε να βγει το τελικό αποτέλεσμα, δηλαδή ένα web site που θα παραδώσουν τελικά στον πελάτη. Σε αυτές λοιπόν τις περιπτώσεις θα καλείσαι να στήσεις ένα site στο CMS / E-commerce και να κάνεις ότι ψιλοαλλαγές θέλει ο πελάτης. Που σημαίνει ο μόνος κώδικας που θα γράφεις είναι κανένα custom module ΑΝ θέλει ο πελάτης κάτι που δεν το προσφέρει ήδη το CMS ή δεν υπάρχει έτοιμο!
Για να το δεις αυτό που σου λέω στην πράξη πήγαινε σε ένα κατάλογο που έχει καταχωρημένες εταιρείες του χώρου και πιάσε και δες στα sites τους τι πουλάνε και δες πόσες εταιρείες στην Ελλάδα κάνουν πραγματικά ανάπτυξη εφαρμογών και έχουν κάποιες εφαρμογές στο portfolio τους και δεν στήνουν απλώς web sites.


Θα προσθέσω εδώ και ένα κείμενο που είχα γράψει πριν κάποια χρόνια και αφορά κάποια ενδεικτικά στάδια ανάπτυξης εφαρμογών που και πάλι δεν είναι κανόνας γιατί τα πάντα έχουν να κάνουν με το μέγεθος και το αντικείμενο της κάθε εταιρείας και τα προσθέτω απλώς και μόνο γιατί στην πράξη μπορεί μέσα στους ρόλους σας ως developer / designer / προγραμματιστής να σας ανατεθούν και τέτοιου είδους εργασίες (γιατί ως γνωστόν οι προγραμματιστές θεωρούνται και power users που ξέρουν να κάνουν τα πάντα 🙂 ):

Φάσεις έργων (web project)

Συλλογή πληροφοριών / διευκρίνιση αναγκών πελάτη (requirements + specifications):
* Επικοινωνία (face to face και τηλεφωνική) με πελάτη για κατανόηση των αναγκών και ανάλυση των τεχνικών προδιαγραφών του έργου. Συμβουλές & προσδιορισμός της καλύτερης τεχνικής λύσης.

Ανάλυση:
* Ανάλυση και καταγραφή του τρόπου δουλειάς του πελάτη, και καταγραφή πρότασης υλοποίησης μέχρι επίπεδο φορμών.
* Γνωστοποίηση πρότασης στον πελάτη, προφορική και γραπτή ανάλυση των δυνατοτήτων που θα παρέχει η εφαρμογή όταν ολοκληρωθεί.
* Αντι-προτάσεις, νέες προτάσεις από πελάτη και ξανά καταγραφή μέχρι την τελική συμφωνία για το τι θα περιλαμβάνει τελικώς το έργο (με σύμβαση μεταξύ εταιρείας – πελάτη)
* Σχεδίαση τεχνικής αρχιτεκτονικής και πλάνου υλοποίησης.
* Ανάλυση χρόνου υλοποίηση και κόστους

Σχεδίαση:
* Δημιουργία γραφικών, animations
* Δημιουργία template
* Δημιουργία λιστών, φορμών, υποσελίδων
* Λογότυπο εφαρμογής και πακέτου (για packaging)

Υλοποίηση (κώδικας):
SQL Server Stored Procedures
* SP’s για κλήση από τον κώδικα

Ανάπτυξη σε scripting language (PHP, ASP, Coldfusion κλπ)
* Πολύγλωσσο;
* Ασφάλεια (security);
* Υπόλοιπος κώδικας

Δοκιμές (testing / debugging):
* Καταχώρηση περιεχομένου (αν απαιτείται)
* Δοκιμή όλων των φορμών και των συνδυασμών για πιθανά λάθη

Documentation:
* Συγγραφή κειμένου χαρακτηριστικών εφαρμογής (features)
* Συγγραφή εγχειρίδιου χρήσης (manual)
* Συγγραφή οδηγιών εγκατάστασης (installation)
* Συγγραφή help file για online help

Packaging:
* Πακετάρισμα εφαρμογής και δυνατότητα εγκατάστασης από τους ίδιους τους πελάτες

Παράδοση:
* Αν δεν κάνει ο πελάτης την εγκατάσταση, χρειάζεται άτομο που θα κάνει remote ή επί τόπου εγκατάσταση.

Εκπαίδευση:
* Εκπαίδευση (τηλεφωνική ή face to face) χρήσης εφαρμογής στον πελάτη

Υποστήριξη:
* Τηλεφωνική και επί τόπου υποστήριξη μετά την παράδοση

 

Δες και αυτό το βίντεο: how can i become a good programmer

Αφήστε το σχόλιο σας στο "Τελειώνεις την σχολή πληροφορικής και θα βγεις να ψάξεις για δουλειά ως web developer; Τότε αυτό σε ενδιαφέρει."

Σχολιάστε