Σάββατο 7 Μαρτίου 2015

Η εξέλιξη μου ως προγραμματιστής - Η αρχή!

Διευκρίνιση: Το συγκεκριμένο άρθρο ειναι κυρίως αυτοβιογραφικό. Απλά μου άρεσε η ιδέα να μοιραστώ το τι και πως με έκανε να γίνω προγραμματιστής 

Γιατί έγινα προγραμματιστής κι όχι μαθηματικός ή καθηγητής αγγλικών όπως έλεγα πολύ μικρός[1];

Στα πρώτα σχολικά μου χρόνια ήθελα να γίνω καθηγητής, επειδή δεν είχα άλλα ερεθίσματα! Ο μόνος προβληματισμός μου ήταν αν θα γίνω καθηγητής μαθηματικών ή αγγλικών! Τελικά όμως άλλαξα τελείως κατεύθυνση και ερωτεύτικα την πληροφορική και ειδικότερα τον προγραμματισμό, που ακόμα μαθαίνω και αγαπάω.

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

Ποια ήταν τα πρώτα μου βήματα στον προγραμματισμό;

  • Ίσως το πρώτο πρόγραμμα που έγραψα, στην πραγματικότητα το αντέγραψα απο το βιβλίο "Γνωρίστε τον μικρο-υπολογιστή"! Βιβλίο το οποίο διατηρώ καθαρά για λόγους νοσταλγίας. Ήταν ένα πάρα πολύ απλό παιχνιδάκι σε GWBasic, οπου ζητούσε από τον χρήστη να μαντέψει ένα νούμερο.[2] . Να σημειωθεί οτι αυτο το είχα κάνει πριν καν ξεκινήσω το δημοτικό. Πάντα νιώθω τυχερός που είχα την τύχη να υπάρχει υπολογιστής στο σπίτι κι άρα να έχω το ερέθισμα να ασχοληθώ.

  • "Μεγαλώνοντας" και έχοντας μάθει πλέον πιο πολλά, ανέπτυξα ένα εκπαιδευτικό παιχνίδι για την προπαίδια. Το είχα αναπτύξει κι αυτό σε GW BASIC, που ήταν άλλωστε η πρώτη μου γλώσσα προγραμματισμου! Η εφαρμογή ήταν πάρα πολύ απλή, για τα σημερινά δεδομένα, καθώς εμφανιζε δυο τυχαίους ακέραιους αριθμους απο το 1 μεχρι το 10 και ζητούσε στον χρήστη να γράψει το γινομενο, αν το έγραφες λάθος σε ενημέρωνε για το σωστό! Δεν ξέρω αν αυτό με έκανε να μάθω προπαίδια, αλλά σίγουρα με έκανε να νιώθω οτι ο προγραμματισμός δεν είναι κάτι το ουτοπικό!

  • Ένα πάρα πολύ σημαντικό βοήθημα στην εξέλιξη μου ως προγραμματιστής ήταν η δουλειά του πατέρα μου. Δουλεύει σε μια ΔΕΚΟ, όπου είχαν άπειρα βιβλία επίπονης καταγραφής μετρήσεων. Σταδιακά αυτό το χειρόγραφο σύστημα, το αντικαθιστούσαν από ένα πληροφοριακό σύστημα, όλα συγκεντρώνονταν σε μια κεντρική βάση δεδομένων ενώ οι υπάλληλοι την τροφοδοτούσαν ή αντλούσαν αναφορές απο αυτήν μέσω χαζων τερματικών. Αυτό ήταν το πρώτο σύστημα που παρακολούθησα να αναπτύσεται και μου έδωσε την δυνατότητα να μάθω πως αναπτύσεται ένα πληροφοριακό σύστημα, καθώς κι ότι το λογισμικό δεν πρέπει να έρχεται για να καταργήσει τις παλιές διαδικασίες αλλά για να τις βελτιώσει.

Μεγαλώνοντας άρχισα να θέλω να φτιάχνω ακόμα περισσότερα προγράμματα και συνέχεια αναζητούσα "προβλήματα" που θα μπορουσαν να λυθούν με ενα προγραμμα.

Τι με έκανε προγραμματιστή;

1. Δεν υπήρχαν έτοιμα προγράμματα

Μεγάλωσα σε μια εποχή και μια χώρα, όπου μπορούσες να βρεις ελάχιστα έτοιμα προγράμματα.  Συνήθως μόνο εφαρμογές των ακόλουθων κατηγοριών μπορούσες να βρεις:
  • Παιχνίδια, όπως τα αγαπημένο μου Shinobi και Lemmings
  • Eφαρμογές γραφείου, οπως η σουϊτα Microsoft Works και η Lotus 1-2-3 που όμως για να κάνεις το κάτι παραπάνω απαιτούσαν να γράψεις μακροεντολές και έξυπνες συναρτήσεις.
  • Compilers, όπως GW-Basic, QBasic, Clipper κ.α.

2. Το απόλυτο εργαλείο για πειράματα χωρίς επιπλέον εξοπλισμό

Πάντα μου άρεσε να κάνω πειράματα, αλλά στον φυσικό κόσμο τα πειράματα κοστίζουν. Οπότε την όρεξη μου για πειραματισμό μπόρώ και ικανοποιώ μέσω του προγραμματισμού. Ένα από τα πρώτα μου πειράματα αφορούσαν την διαχείριση των οικονομικών μου, όπου έβαζα υποθετικά πότε και πόσο χαρτζιλικι θα μάζευα καθώς και τι παιχνίδια ήθελα ώστε να βρισκω πόσο κοντά ή μακριά είμαι από τους στόχους μου[3].

3. Η χαρά της δημιουργίας

Ενας από τους πιο βασικούς λόγους που λατρεύω την ανάπτυξη λογισμικού είναι ότι μου δίνει την δυνατότητα να υλοποιώ κάτι που ο ίδιος βλέπω και χρησιμοποιώ. 
Ένα απο αυτά τα προγράμματα είναι οι Μαντινάδες, που ανέπτυξα πρώτη φορά το 2001 όταν ήμουν στην Α' Λυκείου χρησιμοποιώντας Visual Basic 6! Στο πλαισιο της συγκεκριμένης εφαρμογής υλοποίησα και έναν μεταφραστη απο ελληνικά σε greeklish ώστε να μπορεί να γίνεται αναγνωση των μαντινάδων μεσω της λειτουργιας Text2Speech που είχαν τα MS Windows, αλλά μονο για αγγλικά. 

4. Η ανάγκη για συνεχή μάθηση και βελτίωση

Σε αντιθέση με άλλα επαγγέλματα, όπου μετά απο μερικά χρόνια προϋπηρεσίας φτάνεις το ύψηστο επίπεδο γνώσης, στον προγραμματισμό συνέχεια μαθαίνεις. Ανακαλύπτεις νέες γλώσσες προγραμματισμου, νέες προσεγγίσεις ανάλυσης και επίλυσης προβλήματων, διαφορετικούς τρόπους σκέψεις και γενικότερα καταλήγεις στο να μάθεις ότι πάντα θα μαθαίνεις! Το καταπληκτικό είναι πως κάθε τι που μαθαίνεις σε κάνει πιο "εξυπνο", ενώ στην ουσία απλά σε πάει από έναν πιο σύντομο δρόμο σεσ σχέση με την μεγάλη διαδρομή που έκανε αυτός που το ανακάλυψε.
Αυτό ίσως προβληματίζει τους νεότερους, ή μπορεί και να τους αγχώνει, αλλά είναι το μόνο που μπορεί να γνωρίζει κάποιος που θέλει να θεωρηθεί καλός μηχανικός λογισμικού κι όχι απλά άλλο ένα code monkey!

Προγραμματιστής επι πληρωμή

Πάρα πολλοί νεαροί και νεαρές θεωρούν την δουλεία του προγραμματιστή ως ιδιαίτερα επικερδή. Το πρόβλημα ξεκινάει όταν μπερδεύουν το τι παίρνουν οι λίγοι και καλοι αρχιτέκτονες λογισμικού κι όχι τι παίρνει ο απλός εκπαιδευόμενος προγραμματιστής. Ενδεχομένως ακούνε για μισθους της ταξη των $100Κ τον χρόνο στο Silicon Valley και ονειρεύονται.

Η πραγματικότητα είναι λίγο πιο προσγειωμένη για τα ελληνικά δεδομένα. Ένας μηχανικός ξεκινάει έχοντας πτυχίο τριτοβάθμιας εκπαιδευσης με έναν μικτο μισθο της τάξης των 1200€, ως υπάλληλος[4], ενώ αν επιλέξει να εργαστεί ως ελεύθερος επαγγελματιας τότε έχει να αντιμετωπίσει δυο βασικές κατηγορίες "πελατών", αυτοί που θεωρούν τους μηχανικούς λογισμικου επιστήμονες που μοχθούν για να παραξουν το καλύτερο δυνατό αποτέλεσμα και αυτούς που θεωρούν τους coders τεμπέλιδες που έχουν έτοιμα τουβλάκια που τα κουμπώνουν και παράγουν εφαρμογές.

Η πρώτη κατηγορία ειναι οι πελάτες που κάθε έμπειρος επιστήμονας πληροφορικής θέλει. Είναι αυτοί που θέλεις να κρατήσεις και να έχεις μια σχέση μόνιμης συνεργασίας δίνοντας τους όχι απλά αυτό που ζητούν, αλλά αυτό που χρειάζονται και αυτό που θα χρειαστούν στο άμεσο μέλλον.

Η δεύτερη κατηγορία απλά θα πάρει αυτο που ζητάει και τίποτα παραπάνω, θα χαρεί αρχικά οτι ξεγέλασε τον χαζο coder και μόλις απομακρυνθεί απο το ταμείο θα του σκάσει στα χέρια. Αυτή η 2η κατηγορία θα αρχισει μετά δικαστικές διαμάχες θεωρώντας οτι η ανοησία που ζήτησαν ήταν η μεγαλύτερη εφευρεση του κόσμου κι οτι ο coder δεν τους το υλοποιησε σωστά με αποτέλεσμα να έχουν οικονομική ζημια σε σχεση με τα φανταστικά κέρδη που θα ειχαν.

Σε επόμενο άρθρο σκοπεύω να γράψω:

  • Βαθμίδες προγραμματιστών
  • Πόσα χρόνια προγραμματιστής;
  • Ποιό είναι το επόμενο επίπεδο, μετά απο τον προγραμματισμό;


Υποσημειώσεις:
[1] Αποφάσισα να γίνω προγραμματιστής στην 5η δημοτικού, οπότε το "πολύ μικρός" εννοώ μεχρι την 4η δημοτικού ;-)
[2] Βρήκα ένα αναλυτικό άρθρο για το συγκεκριμενο βιβλίο, στο Asciimation
[3] Η αλήθεια ειναι οτι δεν ήταν πρόγραμμα, αλλά ενα spreadsheet σε Microsoft Works, αλλά τότε μου φαινοταν σαν να εγραφα κώδικα!
[4] Σύμφωνα με την τελευταία συλλογική σύμβαση εργασίας ο πρώτος μικτος μισθος ειναι γύρω στα 1200€, αλλά επειδή τώρα δεν ισχύουν ή κάποιος μπορεί να μην έχει πτυχίο ενδέχεται να λάβει ακόμα χαμηλότερο μισθο!

LinkWithin

Blog Widget by LinkWithin

Mobile edition