Η αρχιτεκτονική ενός συστήματος δεν χρειάζεται να περιγράφει κάθε πιθανό μέλλον. Χρειάζεται να αφήνει χώρο για το επόμενο πραγματικό βήμα.
Μια νέα ιδέα συχνά συνοδεύεται από μια μεγάλη λίστα τεχνολογιών. Πριν αρχίσουμε να επιλέγουμε εργαλεία, όμως, αξίζει να περιγράψουμε το πρόβλημα με λόγια που θα καταλάβαινε και κάποιος έξω από την ομάδα.
Οι περιορισμοί είναι μέρος του σχεδιασμού.
Ο χρόνος, η εμπειρία της ομάδας και η αβεβαιότητα του προϊόντος δεν είναι ενοχλητικές λεπτομέρειες. Είναι στοιχεία που καθορίζουν ποια λύση είναι κατάλληλη σήμερα.
Ένα σύστημα μπορεί να είναι τεχνικά εντυπωσιακό και ταυτόχρονα δύσκολο να λειτουργήσει στην πράξη. Η σωστή επιλογή λαμβάνει υπόψη ποιος θα το συντηρήσει και πόσο εύκολα θα καταλάβει τι συμβαίνει όταν κάτι πάει στραβά.
Η απλότητα δεν είναι απουσία σχεδιασμού. Είναι το αποτέλεσμα συνειδητών επιλογών.
Κράτησε καθαρά τα όρια.
Οι ευθύνες κάθε τμήματος πρέπει να είναι κατανοητές. Όταν ξέρουμε πού ανήκει μια αλλαγή, μπορούμε να προχωρήσουμε χωρίς να επανεξετάζουμε ολόκληρο το σύστημα.
Αυτό δεν σημαίνει ότι χρειάζεται να χωρίσουμε από την αρχή κάθε λειτουργία σε ξεχωριστή υπηρεσία. Μερικές φορές μια καθαρή εσωτερική δομή είναι ακριβώς ό,τι χρειαζόμαστε.
Τρεις ερωτήσεις πριν από την επιλογή.
- Ποια πραγματική ανάγκη εξυπηρετεί αυτή η απόφαση;
- Τι θα κοστίσει αν χρειαστεί να την αλλάξουμε;
- Μπορεί η ομάδα να εξηγήσει και να υποστηρίξει τη λύση;
Όταν οι απαντήσεις είναι σαφείς, η τεχνολογία αποκτά ρόλο. Δεν επιλέγεται επειδή είναι δημοφιλής, αλλά επειδή βοηθά να κάνουμε τη δουλειά μας καλύτερα.
Σχεδίασε για να μπορείς να μάθεις.
Μια μικρή, κατανοητή πρώτη έκδοση μάς επιτρέπει να παρατηρήσουμε πραγματική χρήση. Όσα μαθαίνουμε από αυτήν αξίζουν περισσότερο από μια λεπτομερή πρόβλεψη για ένα μέλλον που δεν γνωρίζουμε ακόμη.
Η καλή αρχιτεκτονική κρατά ανοιχτές τις επιλογές που χρειάζονται χρόνο και κάνει ξεκάθαρες εκείνες που μπορούμε ήδη να πάρουμε.