να οργανώνει τη δουλειά του. Κάθε πράγμα έχει σημασία όταν απαιτείς ένα καλό ισοζύγιο ποιότητας δουλειάς και ταχύτητας ανάπτυξης ενός προϊόντος. Το σημαντικότερο για τον προγραμματιστή / developer, είναι ο σχεδιασμός. Να σχηματίσει μία εικόνα για το τελικό προϊόν και για τι χρειάζεται να λάβει υπόψη, προχωρώντας στην υλοποίηση. Τα εργαλεία παίζουν επίσης σημαντικό ρόλο. Σε αυτά συγκαταλέγονται, κειμενογράφοι, IDE, preprocessors, εφαρμογές γραφικών, frameworks, ακόμα και guidelines, που μπορεί να αφορούν καλύτερες πρακτικές ή γνώσεις που κρίνει ότι χρειάζονται! Αλλά δεν τις κατέχει σε καλό επίπεδο ακόμα. Project Management 101
είναι το ίδιο πράγμα! Ωστόσο, μία εφαρμογή versioning, μας λύνει πολλά προβλήματα, όπως και το backup κατά το ήμισυ. Μας προσφέρει ασφάλεια από πιθανά λάθη, που θα κάνουμε κατά την ανάπτυξη και τη δυνατότητα να επανέλθουμε σε ένα προηγούμενο σημείο της δουλειάς μας. Όπως και την δυνατότητα να την διακλαδώνουμε, και να δημιουργούμε παράγωγα ή παραλλαγές, πχ: git! Ωστόσο, δεν μας καλύπτει σε περίπτωση που το σύστημα μας καταρρεύσει. Κακώς «ερχόντων» των πραγμάτων, ένα svn ή git δε σώζει τίποτα! Υπάρχουν πολλές λύσεις, για ένα αξιόπιστο backup. H πιο εύκολη είναι η αποθήκευση του εκάστοτε project σε ένα ή περισσότερους εξωτερικούς σκληρούς δίσκους. Ανέβασμα σε ένα server στον ιστό με FTP. Και σαν πιο ασφαλές, πάνω στο σύννεφο (cloud). Η χρήση μία υπηρεσίας όπως το google drive, το dropbox, το skydrive ή ακόμα κάποιο team server, όπως για παράδειγμα ένα team room στο visualstudio.com. Safety first!
θα χρησιμοποιήσουμε για τη συγγραφή κώδικα, παίζει πάρα πολύ σημαντικό ρόλο. Μπορεί να μας δυσκολέψει τη ζωή, ή να μας δίνει την αίσθηση ότι η δουλειά μας προχωράει σα νερό. Από μόνη της! Υπάρχουν αρκετοί παράγοντες που πρέπει να ληφθούν υπόψη κατά την επιλογή. Οι σοβαρότεροι των οποίων είναι : η εξοικείωση, τα χαρακτηριστικά, τα οποία πρέπει να είναι ανάλογα την γλώσσα ή τις γλώσσες στις οποίες γίνεται η ανάπτυξη της εκάστοτε εφαρμογής και το γραφικό περιβάλλον της εφαρμογής του κειμενογράφου ή IDE! H επιλογή, τέλος, μεταξύ κειμενογράφου και IDE, γίνεται με κριτήριο το σύστημα μας, και την φύση του project. Αν επιθυμούμε ευκολίες όπως η επισκόπηση documentation, autocomplete, refactoring, debugging, κτλ. H επιλογή είναι το IDE. Αν όμως επιθυμούμε λίγο φόρτο για το σύστημα κι απλά χαρακτηριστικά όπως code highlighting, εδώ η επιλογή είναι κειμενογράφος! Βασικά εργαλεία
επιταχύνουμε τη διαδικασία ανάπτυξης ενός προϊόντος, χρησιμοποιώντας κάποιο open source framework. Δε βοηθάει μόνο στη γρήγορη ανάπτυξη, αλλά και στην αποφυγή συνηθισμένων λαθών, που συχνά μας ταλαιπωρούν ώρες. Τα frameworks, είναι project specific στις περισσότερες περιπτώσεις. Και μπορούν να χρησιμοποιούνται γενικά, παραπάνω από ένα για ένα project. Εξηγώντας: Μπορούμε να χρησιμοποιούμε ένα javascript framework, ένα css κι ένα php. Και πολλές φορές στο javascript, χρησιμοποιούνται και παραπάνω από ένα. Για παράδειγμα jquery με angular.js ή handlebars.js. Αντίθετα στην php, παρότι τίποτα δεν απαγορεύεται, δεν είναι καλή πρακτική να μπλέκουμε πολλά frameworks. Εκτός αν ξέρουμε τι κάνουμε και το έχουμε κρίνει απαραίτητο. Rapid Development
μαραφέτι, στην εργαλειοθήκη του developer. Πολλοί αντιστέκονται στην χρήση του. Πολλοί, το δέχτηκαν με ενθουσιασμό. Κι άλλοι, πιο συντηρητικά, το υιοθετούν με αργούς ρυθμούς στη δουλειά τους. Δεν είναι πάντα χρήσιμο εργαλείο, ωστόσο, προσφέρει αρκετά μεγάλη ευελιξία και καθαριότητα στον κώδικα, για τον χρήστη που θα αφιερώσει χρόνο να το μάθει. HTML5 Boilerplates Υπάρχουν διάφορα έτοιμα πακέτα με κώδικα, και οργάνωση, σχεδιασμένα να αυξάνουν την παραγωγικότητα και την συμβατότητα συσκευών και browsers. H επιλογή, για εκκίνηση ενός project, με τη χρήση ενός πακέτου όπως το HTML5 Boilerplate, ή του KickStart. Λύνει τα χέρια σε αρκετές περιπτώσεις. Prototyping
ξεκινήσουμε να γράφουμε κώδικα. Πρέπει να έχουμε υπόψη ότι σε καμία περίπτωση δεν μπλέκουμε τύπους αρχείων κι οργανικές λειτουργίες μεταξύ τους. Δε μπλέκουμε javascript με php, όπως και frontend template με το καθαρό κώδικα λειτουργιών. Και καλό είναι για κάθε αρχείο να χρησιμοποιούμε κάποιο prefix, ώστε να είναι εύκολο για εμάς και κάποιον στο προσεχές μέλλον να διακρίνει τις λειτουργίες στην εφαρμογή μας. Πχ: template.post-video.php Καθαρός κώδικας Η ονοματολογία κι οι εσοχές στις συναρτήσεις, όπως και η χρήση αντικειμενοστραφούς οργάνωσης στον κώδικα. Είναι πράγματα που δεν πρέπει να αγνοούμε. Το όνομα της κάθε συνάρτησης πρέπει να έχει όνομα της λογικής ρημα_ουσιαστικό ή μετοχή, και να είναι περιγραφικό της λειτουργία της. Αν πάλι υπάρχει κάποιο κομμάτι κώδικα, που δεν μπορεί να ανατεθεί σε νέα συνάρτηση, απλά πρέπει να επισημανθεί η λειτουργία του με σχόλιο, στην γραμμή από πάνω. Επίσης φροντίζουμε την ιεραρχία στης δομή του κώδικα, ώστε να είναι ορατά, τα όρια των κλάσεων και των συναρτήσεων. Easy finding… Good Looking Code ;)
συχνά δεν θεωρείται απαραίτητο. Και μερικές φορές δεν είναι. Αυτό γιατί σε πολύ μικρά project, η συγγραφή των τεστ, είναι πιο χρονοβόρα από την διαδικασία επισκόπησης του κώδικα και εύρεσης του προβλήματος χειροκίνητα. Ωστόσο, σε μεγάλα project, που ενδεικτικά ο χρόνο εύρεσης ενός προβλήματος μπορείς να διαρκεί ακόμα και ώρες χειροκίνητα. Προτείνεται το TDD, αν δεν κρίνεται ακόμα κι αναγκαίο! Καλά όλα αυτά, τι είναι το TDD; Πρακτικά, είναι η χρήση ενός testing framework, όπως το PHPUnit, και ανάπτυξη κώδικα για τη δοκιμή της εξαγωγής των συναρτήσεων και των κλάσεων μας. Γίνεται παράλληλα με το development της εφαρμογής, κι επιτρέπει τον εύκολο εντοπισμό προβλημάτων στον κώδικα μας. Τα οποία δεν διαπιστώνονται τόσο εύκολα με το κλασικό debugging. Γιατί συχνά μπορεί να μην είναι συντακτικά τα λάθη, αλλά λογικά! You know, really, if your software works???