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

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

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

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

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

15 σχόλια:

PG είπε...

Άσε ρε..Δεύτερο εξάμηνo UML με το ζόρι καταλαβα ότι κατάλαβα..Κάτι εργασίες που δεν πήγε κανένας ,πολύ ασαφής έως υπερβολικά.Τώρα αν το πέρασα το μάθημα δεν ξέρω.Συσσωρεύση ,συναρμολόγηση που να βγάλω άκρη..Με ένα παλιοβιβλίο..Απορώ πως διαλεξες τέτοιο θέμα για πτυχιακή.!

Unknown είπε...

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

PG είπε...

Ειχα αρχίσει να καταλαβαίνω αλλά δεν τη διδαχτηκαμε καλά.Χρησιμοποιείται γενικά η απλά υπάρχει;.Αν δεν εχω περάσει θα την ξαναδιαβάσω απο οτι φαίνεται

Ανώνυμος είπε...

Καλή σταδιοδρομία :)

Unknown είπε...

Εγώ είμαι 15 μήνες στην Ιντρακώμ. Η αλήθεια είναι οτι δεν την χρησιμοποιώ τυπικά. Δηλαδή δεν με υποχρεώνει κάποιος να του παρουσιάζω διαγράμματα. Αλλά σίγουρα κάνει πιο δομημένη την σκέψη.
Αν σε ενδιαφέρει να είσαι προγραμματιστής, τότε θεωρείται αυτονοητο ότι τουλάχιστον μπορείς να καταλάβεις ένα διάγραμμα. Τώρα αν θα ειναι σε UML ή σε κάτι που φαντάστηκε ο δημιουργός του είναι άλλο θέμα. Αλλά το να μάθεις UML βοηθάει να καταλάβεις πως οργανώνεις τα του λογισμικού σε μια απεικόνιση.

Συνοπτικά: "Μαθε να φτιάχνεις διαγράμματα"

Ανώνυμος είπε...

σε ποια σχολή πρέπει να μπω για να γίνω προγραμματιστής?????????
και τι πρέπει να ξέρω πριν μπω εκεί??????

Ανώνυμος είπε...

Για να γίνεις προγραμματιστης δεν χρειάζεται να μπείς σε σχολή.Πάρε βιβλία προγραμματισμού αρχικά βάλε τον Builder στον υπολογιστή σου και προγραμματισε μέχρι η μυωπία σου να φτάσει πάνω 2.Τότε θα είσαι σε ένα χμ μέτριο προς χαμηλό επίπεδο.Αυτά

chris είπε...

μια και ακομα παω σχολειο αρχισα να καταλαβαινω ολο και περισσοτερο οτι μου αρεσει η χρηση η/υ γι αυτο και θα σπουδασω πληροφορικη!Αλλα μπορειτε να μου πειτε τι ακριβως επαγγελματα μπορω να ακησω αργοτερα?κανω αραγε την σωστη επιλογη?περιμενω.....

Unknown είπε...

Το να σου αρεσει η χρηση υπολογιστη απεχει πολυ απο το να σου αρεσει να γινεισ προγραμματιστησ,δηλαδη μηχανικοσ λογισμικου. Πρεπει να σου αρεσει να ψαχνεισ συνεχεια πωσ θα λυνεισ καθε προβλημα! Δεν ειναι ευκολο επαγγελμα. Θελει πολυ υπομονη και επιμονη.

Εαν θελεισ στειλε μου email να το συζητησουμε, εαν μπορω να σε βοηθησω.

Το email μου ειναι g.anagnostaros@gmail.com.

giannis είπε...

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

Unknown είπε...

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

Οπότε σε συμβουλεύω να ψάξεις για δουλειά ως Junior developer και εαν βρεις, διοτι γενικα δεν υπάρχουν δουλειες, τότε θα μάθεις μέσω της δουλειας σου και της πραγματικής καθημερινής ενασχολησης.

ΥΓ: Θεωρώ αυτονοητο ότι έχεις τελειώσει καποια σχετική σχολή και διαθέτεις το απαραίτητο θεωρητικό υποβαθρο.

Daniel είπε...

παιδια σας παρακαλω πειτε μου ενας αρχαριος σαν εμενα απο την αρχη αρχη τι μπορει να κανει για να σινιθησει το περιβαλλον του προγραματιστη??

Unknown είπε...

@Daniel ένα πολύ απλό περιβάλλον είναι αυτό που παρουασιάζεται στο πλαίσιο του μαθήματα Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον (ΑΕΠΠ) το οποίο διδάσκεται στην Τεχνολογική κατεύθυνση της Γ' Λυκείου.

Αν όμως θεωρείς ότι δεν είσαι τελείως αρχάριος, τότε σου προτείνω να παρακολουθήσεις κάποια από τα μαθήματα του https://www.coursera.org/

Unknown είπε...

καλησπερα φιλε μου ειμαι νεος ακομα ειμαι 17 χρονων αλλα απο μικρος μου αρεσει και ασχολουμε παρα πολυ με τους υπολογιστες ... θελω να ασχοληθω εππαγελματικα με τον προγραμματισμο... μπορεις να μου πεις ενα σιτε κατι στο οποιο να μπορω να μαθω τα παντα για τον πργραματισμο ... απο την αρχη δεν διαθετο καποιες ιδιαιτερες γνωσεις αλλα θελω να μαθω απο τωρα για να κερδισω χρονο ....

Unknown είπε...

Καλημέρα, έστω και λίγο αργά.. θεωρώ οτι ο μόνος σωστός δρόμος να γίνεις καλός προγραμματιστής είναι μέσω της τριτοβάθμιας εκπαίδευσης. Τα προγράμματα των ελληνικών σχολών, ΑΕΙ και ΤΕΙ έχουν πολύ σωστά προγράμματα σπουδών για αυτόν που πραγματικά αναζητά την γνώση κι όχι απλά ενα χαρτί.
Οπότε εφόσον πλησιαζεις ή είσαι ήδη στην Γ' Λυκειου δεν μπορώ να σου προτεινω κάτι διαφορετικό από το να στοχεύσεις μια σχολή πληροφορικής και να ρωτάς συνεχεια για πηγες που μπορεις να διαβάσεις αλλά και για παραδείγματα που μπορεις να μελετήσεις.

LinkWithin

Blog Widget by LinkWithin

Mobile edition