Σάββατο, 7 Ιουλίου 2007

Πως να γίνεις προγραμματιστής

Τις τελευταίες 2-3 μέρες πρόσθεσα έναν μετρητή επισκεπτών. Ώστε να βλέπω αν έχω κανέναν επισκέπτη, ή αν μονος τα γράφο, μονος τα διαβάζω! [Η μέτρηση γίνεται με το sitemeter, αν πάτε στην κάτω μεριά της σελίδας στο κέντρο υπάρχει το εικονιδιο]. Αυτό μου δίνει την δυνατότητα να βλέπω το πως με βρήκανε και αν διαβάσανε κάποια συγκεκριμένη ανάρτηση [post] ή γενικά μπήκαν στο blog μου, αλλά και το σε ποια σελίδα πήγανε..
Ολα αυτά τα γράφω για να πω οτι το έχω κάνει ώστε να βλέπω αν αυτοι που με βρίσκουν τους ικανοποιώ! Δηλαδή αν ψάχνει κάποιος για το Α, τότε εγώ του δίνω αυτό το Α ή με βρίσκει κατα τύχη; Ανάμεσα στις αναζητήσεις, όπου οι περισσότερες αφορούσανε το θέμα που με έχει ευαισθητοποιήσει περισσότερο απο όλα, δηλαδή την στην Πάρνηθα, βρήκα και μια για το "πως γίνεσαι προγραμματιστής".
Η αλήθεια είναι ότι ειδικότητα μου είναι ο προγραμματισμος, αυτή άλλωστε ειναι η δουλειά μου! Έχω πλέον και 12 μήνες ένσημα και γενικά 15 μήνες προϋπηρεσία ;-). Αλλά ως τώρα δεν είχα σκεφτεί αν γράψω κάτι τέτοιο.. Είναι κάτι περίπλοκο. Ένας συνάδερφος μου λέει οτι είναι απλά να ακολουθείς κάποιες διαδικασίας, εγώ απο την άλλη θεωρώ ότι ειναι να έχεις ταλέντο. Να έχεις τον περίπλοκο τρόπο σκέψης, ή μάλλον τον προσαρμόσιμο τρόπο σκέψης. Πρέπει να μην είσαι απλά μαθηματικό μυαλό. Πρέπει να μπορείς να βλέπεις τα πράγματα πιο χαοτικά. Και πάνω απο όλα να μπορείς να δομής την σκέψη.
Δομημένη σκέψη σημαίνει ότι όταν πρέπει να ξεκινήσεις απο το Α να πας στο Ω πρέπει να περιγράψεις όσο πιο απλά γίνεται την διαδρομή ώστε να μπορέσεις να βρεις εύκολα το τι λάθος έκανες. Γιατι αυτό που πρέπει να ξερει απο την αρχή ένας προγραμματιστής είναι ότι στόχος δεν ειναι να μην κάνει λάθη, είναι αδύνατον, αλλά να μπορεί να τα εντοπίζει εύκολα. Για αυτό πρέπει πάντα να φτιάχνει ένα σχεδιαγραμμα και γενικά να μελετά πρώτα στο χαρτί το πως θα λειτουργεί το προγραμμα του, πριν το γράψει σε κώδικα. Είναι όπως ο μηχανικός στις οικοδομές. Φτιάχνει τα σχέδια πρώτα, αφού έχει μελετήσει. Και μετά ρίχνει μπετά, δηλαδή υλοποιεί τα σχέδια.
Άλλωστε και ο προγραμματιστής τι είναι; Μηχανικός λογισμικού είναι. Άρα και ο προγραμματιστής πρέπει να ξέρει να σχεδιάζει το οικοδομημα του πριν ρίξει τα μπετά, δηλαδή γράψει κώδικα. Οποιος αρχίζει και γράφει γραφει γραφει, σιγουρα κάποια στιγμή θα το πετάξει ολοκληρο! Εκτώς βέβαια κι αν κάνει κάτι το πάρα πολύ εύκολο οποτε και δε θα έχει προβλημα.
Αυτά τα σχέδια φτιαχνονται συνήθως με χρήση μιας τυποποιημένης γλώσσας, που είναι η UML, ή με αυτοσχέδιες μεθόδους ;-) Στην πτυχιακή μου εργασία είχα ασχοληθεί με την UML και πως μπορεί να επεκταθεί έξυπνα ώστε να καλύψει κάποιες ανάγκες επεκτασιμοτητας συστηματων. [Κάποια στιγμή θα την ανεβάσω στο Δίκτυο να την διαβάσει όποιος ενδιαφέρεται! Αν κι αν είστε τυχεροί και είναι πάνω ο server της βιβλιοθήκης του ΤΕΙ, μπορείτε να την δείτε κι εδώ]. Οι ανάγκες επεκτασιμότητας που καλύπτονται απο την δικιά μου πτυχιακή είναι ανάγκες όπως προσαρμοστικότητα, δηλαδή για παραδειγμα πρόγραμμα που φτιάχτηκε να παίζει σε υπολογιστή, να θέλουμε να παίζει και σε κινητο. Με χρήση της UML, με τον τρόπο που προτείνω στην πτυχιακή μου, αποφεύγεται ο πλήρης επανασχεδιασμός. Οπότε έχει μικρότερο κόστος σε χρόνο, χρήμα αλλά και κίνδυνο ;-) Γενικά ο σχεδιασμός είναι το πρώτο βήμα που πρέπει να μάθει κάποιος, αν θέλει να γίνει προγραμματιστής κι όχι απλά ένας code monkey.
Αλλωστε, το επόμενο βήμα απο το να είσαι ένας απλό προγραμματιστής πρέπει να είναι να γίνεις αναλυτής. Δηλαδή να είσαι αυτός που θα κάνει τα σχέδια για ολόκληρο το σύστημα. [τα σχέδια που κάνει ένας απλός προγραμματιστής αφορούν πιο συγκεκριμένα θέματα, που είναι πιο κοντά στην υλοποιηση, σε σχέση με τον αναλυτή. Αν και συνήθως μπλέκονται οι αρμοδιοτητες ;-)]
Μετά απο αυτό το βήμα, του σχεδιασμού, πρέπει να μπορεί να γράψει και κώδικα. Δηλαδή να μετατρέψει αυτά τα διαγράμματα σε μια γλώσσα προγραμματισμου, το οποίο είναι το πιο εύκολο αλλά, λόγο των ιδιαιτεροτήτων κάθε γλώσσας, χρειάζεται εξοικείωση.
Τέλος το τρίτο και εξίσου σημαντικό με το πρώτο βήμα είναι η δοκιμή. Δηλαδή ο έλεγχος του ότι αυτό που υλοποιήθηκε κάνει αυτό που ζητήθηκε. Εδώ χρειάζεται προσοχή. Δεν δοκιμάζουμε αν αυτό που σχεδιάστηκε είναι αυτό που υλοποιήθηκε, αλλά αν αυτό που ζητήθηκε είναι αυτο που υλοποιήθηκε ;-). Πολλές φορές μου έχει συμβεί αυτό το μπέρδεμα. Σχεδιάζω κάτι λάθος, οποτε στον έλεγχο συγκρίνω το υλοποιημένο με το σχέδιο και βλέπω ότι είναι σωστό. Αλλά στην πραγματικότητα έχει γίνει λάθος απο την αρχή. Για αυτό το λόγο πρέπει το πρώτο βήμα να το προσέχουμε πάρα πολύ, ώστε να μην μπαλώνουμε μετά.

Συνοψίζοντας:
Αν θέλεις να γίνεις καλός προγραμματιστής πρέπει να μπορείς να κάνεις τουλάχιστον τα 3 ακόλουθα:
  1. Σχεδιασμός συστήματος, βάση κάποιων απαιτήσεων του πελάτη
  2. Υλοποιηση σε κάποια πραγματική γλώσσα προγραμματισμού
  3. Δοκιμή ότι το υλοποιημένο καλύπτει τις απαιτήσεις
Βεβαίως αυτα προϋποθέτουν υπομονή, επιμονή, συνεχή όρεξη για λάθη, διάθεση για επίλυση κάθε προβλήματος. Και γενικά ένας προγραμματιστής πρέπει να έχει μια βασική αρχή,
"ΔΕΝ ΥΠΑΡΧΟΥΝ ΠΡΟΒΛΗΜΑΤΑ, ΜΟΝΟ ΠΡΟΚΛΗΣΕΙΣ"

ΥΓ: Αν έχεται κάποιες ερωτήσεις, ή σχόλια παρακαλώ προσθέστε τα και θα προσπαθήσω να ανταποκριθώ το συντομότερο ;-)
Δημοσίευση σχολίου

Gadget

Αυτό το περιεχόμενο δεν είναι ακόμα διαθέσιμο μέσω κρυπτογραφημένων συνδέσεων.

LinkWithin

Blog Widget by LinkWithin

Mobile edition