Προγραμματισμός

Η πλήρης ζωή Java: Τι κάνει πραγματικά ένας αρχιτέκτονας λογισμικού όλη την ημέρα;

Οι αρχιτέκτονες λογισμικού το έχουν εύκολο, ή πολλοί κωδικοποιητές και μηχανικοί πιστεύουν. Μάθετε πώς μοιάζει πραγματικά η καθημερινή εργασιακή ζωή ενός αρχιτέκτονα Πλήρης ζωή Java συνέντευξη. Ο βετεράνος προγραμματισμού Java, Bruce Brouwer, συζητά την προσέγγισή του για την αναβάθμιση παλαιότερων εφαρμογών Ιστού Java σε μια αρχιτεκτονική front-end προσανατολισμένη στις υπηρεσίες, την ταχέως εξελισσόμενη εργαλειοθήκη UI Ιστού και γιατί γενικά προτιμά να εργάζεται με τους περιορισμούς της Java να επιλέξει μια λιγότερο αυστηρή γλώσσα JVM.

Όπως πολλοί προγραμματιστές λογισμικού, ήμουν πάντα σκεπτικός για τους αρχιτέκτονες. Πολύ συχνά φαίνεται να κάνουν απαιτήσεις σχετικά με το πώς θα γίνει το έργο της κωδικοποίησης χωρίς να χρειάζεται να ζουν με τις συνέπειες. Είμαι ο τύπος που έγραψε κάποτε ένα άρθρο με τίτλο "Γιατί δεν είμαι αρχιτέκτονας", και έχω γνωρίσει ότι "το αγαπημένο του IDE είναι το MS Outlook."

Στη συνέχεια συνάντησα τον Bruce Brouwer, αρχιτέκτονα εφαρμογών στο Gordon Food Service (GFS), έναν οικογενειακό διανομέα τροφίμων με γραφεία στο Μίσιγκαν. Όταν γνώρισα τον Μπρους, βρισκόταν βαθιά στην οθόνη του υπολογιστή του, κοιτάζοντας τον πραγματικό κώδικα. Ο στόχος του ήταν να ενσωματώσει τον μεταγλωττιστή Compass που βασίζεται σε Ruby του GFS σε μια κατασκευή εφαρμογών χρησιμοποιώντας το JRuby και η προσέγγισή του στο έργο φαινόταν τίποτα άλλο παρά αφηρημένο. Μου κίνησε το ενδιαφέρον.

Η δουλειά του Bruce στο GFS, λέει, είναι και οι δύο να ορίσουν το όραμα για μελλοντικές διαδικτυακές εφαρμογές και να αποδείξουν το όραμά του με αποδεικτικές εφαρμογές. Συνήθως συνεργάζεται με ομάδες ανάπτυξης στις πρώτες υλοποιήσεις του roll out. Το πρωτοποριακό ζήτημα που επεξεργάστηκε ο Bruce, την ημέρα που συναντηθήκαμε, ήταν πώς να μετακινήσετε το GFS μετά από παραδοσιακές εφαρμογές ιστού αιτήσεων / απαντήσεων σε ένα αρχιτεκτονική front-end προσανατολισμένη στις υπηρεσίες (SOFEA), όπου χειρίζεται όλη τη λογική παρουσίασης στο πρόγραμμα περιήγησης και όχι στο διακομιστή.

Ο Μπρους μοιράστηκε μερικές από τις ιδέες του για να προωθήσει πέρα ​​από τις κλασικές αρχιτεκτονικές προσανατολισμένες στις υπηρεσίες (SOA) σε περισσότερα παραδείγματα που βασίζονται σε μηνύματα. Αυτές οι ιδέες πρέπει να δουλεύουν σε χαρτί, αλλά ο Bruce χρειάζεται buy-in από τις τεχνικές ομάδες για να τις κάνει να λειτουργήσουν. Ως αρχιτέκτονας, παρέχει καθοδήγηση εφαρμογής σε ομάδες, τεχνολογίες, ακόμη και παλαιά συστήματα. Είναι μια συναρπαστική προοπτική και πιστεύω ότι αξίζει να μοιραστώ.

Ματ Χάουσερ: Μίλα μου για την καριέρα σου ως προγραμματιστής και αρχιτέκτονας. Πώς άλλαξε ο ρόλος σας με την πάροδο του χρόνου; Πώς προσεγγίσατε τον ρόλο σας ως νεότερος προγραμματιστής έναντι ως προγραμματιστής μέσης καριέρας ή ως αρχιτέκτονας σήμερα;

Μπρους Μπρουβέρ: Μετά το κολέγιο μετακόμισα στην πρώτη μου πραγματική δουλειά. Σχεδόν από την αρχή, πίεζα στα όρια. Υπήρχε αυτή η κουραστική διαδικασία ενημέρωσης του επιπέδου πρόσβασης δεδομένων αυτής της εφαρμογής. Όλες οι νέες προσλήψεις υποβλήθηκαν στον πόνο της εργασίας αυτής της διαδικασίας. Μετά την πρώτη μου φορά, αποφάσισα να το αυτοματοποιήσω. Η διαχείριση εντυπωσιάστηκε, οπότε μου ζήτησαν να το τρέξω για όλους τους πίνακες στη βάση δεδομένων. Χρειάστηκε περίπου μια εβδομάδα για να καθαρίσω το χάος από την αυτοματοποίησή μου που αποδείχθηκε ότι ήταν μια κατεστραμμένη διαδικασία.

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

Αλλά μπορείτε να προχωρήσετε τόσο πολύ κάνοντας καλύτερα εργαλεία. Έπρεπε να αρχίσω να σκέφτομαι σε μεγαλύτερη κλίμακα. Όταν αρχίζετε να παίζετε σε αυτόν τον μεγαλύτερο κόσμο, πρέπει και πάλι να ωθήσετε τα όρια. Ίσως δεν είναι απαραίτητη μια βάση δεδομένων SQL. Ίσως η αναμονή μιας απάντησης από αυτήν την υπηρεσία δεν είναι η καλύτερη χρήση του χρόνου. Ίσως η Java να μην το κόψει πια.

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

Ματ Χάουσερ: Με ποιες τεχνολογίες εργάζεστε τώρα;

Μπρους Μπρουβέρ: Πριν από λίγο καιρό αποφάσισα να συμπληρώσω το προφίλ μου στο LinkedIn, αναφέροντας όλες τις τεχνολογίες που χρησιμοποιώ πραγματικά. Κατά τη διάρκεια αυτής της προσπάθειας, έμαθα ότι το LinkedIn έχει ένα όριο. Δεν το λέω για να καυχιέμαι, νομίζω ότι είναι πρόβλημα. Υπάρχουν πάρα πολλά πράγματα που πρέπει να γνωρίζετε για να είστε καλός προγραμματιστής στον σημερινό κόσμο. Πρέπει να κάνουμε καλύτερα στον περιορισμό της λίστας των εργαλείων που χρησιμοποιούμε για να κάνουμε τη δουλειά μας.

Σε μεγάλο βαθμό, αυτό που χρησιμοποιώ είναι η Java και η Άνοιξη. Αυτό που έχω εργαστεί πρόσφατα είναι ο σχεδιασμός του μέλλοντος της ανάπτυξης εφαρμογών ιστού στο GFS. Η GFS αναπτύσσει εφαρμογές web χρησιμοποιώντας Java EE από τότε που υπήρχαν πλαίσια όπως Struts ή JSF. Τώρα υπάρχουν μερικές νέες ιδέες που αμφισβητούν αυτά τα πλαίσια ιστού από τον διακομιστή, όπως το SOFEA και το σχεδιασμό απόκρισης. Ναι, θα μπορούσαμε να κλέψουμε αυτές τις ιδέες στην τρέχουσα υποδομή Struts 2 που διαθέτουμε, αλλά είναι καιρός να κάνουμε ένα πραγματικό διάλειμμα μεταξύ του UI και του back end. Με αυτόν τον τρόπο θα είμαστε σε καλύτερη θέση για να ανταποκριθούμε στον ρυθμό αλλαγής στο επίπεδο UI ιστού χωρίς να χρειαστεί να κάνουμε τέτοιες δραστικές αλλαγές στο επίπεδο υπηρεσίας.

"Τώρα υπάρχουν μερικές νέες ιδέες που αμφισβητούν τα πλαίσια ιστού από τον διακομιστή, όπως το SOFEA και το σχεδιασμό απόκρισης. Ναι, θα μπορούσαμε να καλύψουμε αυτές τις ιδέες στην τρέχουσα υποδομή Struts 2, αλλά είναι καιρός να κάνουμε ένα πραγματικό διάλειμμα μεταξύ της διεπαφής χρήστη και του πίσω μέρους τέλος."

Για αυτήν τη νέα διεπαφή ιστού, έχω σχεδόν μια εντελώς νέα σουίτα εργαλείων: Angular και Twitter Bootstrap, και φυσικά jQuery. Αυτό που επιδιώκω είναι να δημιουργήσω ολόκληρο το περιβάλλον εργασίας χρήστη από στατικούς πόρους. Κανένα από το περιβάλλον χρήστη δεν θα βασίζεται στον διακομιστή που δημιουργεί δυναμικό περιεχόμενο διεπαφής χρήστη. Πρέπει να λειτουργεί σε έναν απλό διακομιστή Web Apache. όχι PHP, όχι Perl, τίποτα.

Όσο για το επίπεδο υπηρεσίας, το GFS έχει μια τεράστια κληρονομιά Java. Και ως επί το πλείστον, είναι πραγματικά πολύ καλό. Η GFS έχει ακολουθήσει μια αρχιτεκτονική προσανατολισμένη στις υπηρεσίες για χρόνια, χρησιμοποιώντας Spring POJOs. Οι υπηρεσίες βρίσκονται στον πυρήνα της SOFEA. Το JSON είναι η μεταφορά δεδομένων της επιλογής αυτές τις μέρες και το Spring MVC διευκολύνει την έκθεση αυτών των POJO μέσω JSON. Έτσι, το SOFEA είναι πραγματικά πολύ κατάλληλο για το GFS.

Το προκλητικό μέρος, ωστόσο, ήταν αυτό το όραμα να γίνει αυτό το UI ιστού πραγματικά στατικό. Για να δημιουργήσετε μια καλή εφαρμογή ιστού που είναι γρήγορη απαιτεί κάποια άλλα εργαλεία. Χρησιμοποιώ το Compass για τη διαχείριση του CSS. Για JavaScript χρησιμοποιώ τον μεταγλωττιστή κλεισίματος Google, ο οποίος διαθέτει την καταπληκτική δυνατότητα των χαρτών πηγής. Ρίξτε μερικές άλλες απαιτήσεις για την προσωρινή αποθήκευση και διευκολύνετε την ανάπτυξή σας και ξαφνικά χρειάζεστε μια ολοκληρωμένη λύση κατασκευής για κάτι που καταλήγει να γίνει απλώς μια δέσμη αρχείων κειμένου.

Υπάρχουν μερικά εντυπωσιακά εργαλεία που έχουν αρχίσει να απαντούν σε αυτές τις προκλήσεις. Έχω εντυπωσιαστεί αρκετά με τους Grunt και Yeoman και έφτασα ακόμη και στο GFS για να εγκαταλείψω τον Maven για τον Yeoman. τουλάχιστον για τη διεπαφή χρήστη ιστού. Έχω την εντύπωση ότι η απομάκρυνση του Maven μπορεί να είναι πολύ μακριά για εργαλεία που δεν είναι ακόμη και ενός έτους. Άρχισα λοιπόν να δημιουργώ ένα πρόσθετο Maven για να τα τραβήξω όλα μαζί. Υπάρχουν προσθήκες Maven για τη διαχείριση της πυξίδας και του κλεισίματος, αλλά δεν παρέχουν μια ολοκληρωμένη λύση που μπορεί ακόμη και να τροποποιήσει την ανάπτυξη HTML σε σχέση με την παραγωγή και επίσης να προσφέρει λειτουργικότητα επαναφόρτωσης. Αυτή ήταν πραγματικά μια υπέροχη εμπειρία στο να γράφεις αυτό το πρόσθετο Maven, το οποίο φυσικά είναι γραμμένο στην Java.

Ίσως σύντομα θα μπορέσω να πείσω τη διοίκηση να μου επιτρέψει να το επιστρέψω στην κοινότητα ανοιχτού κώδικα.

Ματ Χάουσερ: Πόσο καιρό είσαι αρχιτέκτονας; Τι δουλεύατε πριν από ένα χρόνο;

Μπρους Μπρουβέρ: Είμαι αρχιτέκτονας εφαρμογής εδώ και οκτώ χρόνια. Έκανα το άλμα από τον ανώτερο προγραμματιστή στον αρχιτέκτονα όταν μετακόμισα στο GFS.

Το προηγούμενο μεγάλο μου έργο, το οποίο δούλευα πριν από ένα χρόνο, ήταν η μετάβαση στις Εφαρμογές Google. Αυτή ήταν και μια πραγματική μαθησιακή εμπειρία για μένα. Είχα αυτήν την υπέροχη ιδέα του συγχρονισμού του παλαιού ημερολογίου με το Ημερολόγιο Google κατά τη μετάβαση. Χρησιμοποίησα τα API της Google από την Java μαζί με το Spring Integration για να τα κάνω όλα. Τουλάχιστον για λίγο. Μετά από μερικές σοβαρές δυσλειτουργίες, έπρεπε να παραδεχτώ ότι δεν άξιζε τον κίνδυνο. Όντας τόσο αρχιτέκτονας όσο και προγραμματιστής σε αυτό το έργο με βοήθησε να διατηρήσω τον πραγματικό κόσμο σε προοπτική.

«Έπρεπε να σχεδιάσουμε μια γραμμή στην άμμο για το τι είναι και δεν είναι κατάλληλο να χρησιμοποιήσουμε το Google όταν ενσωματώνουμε στα υπάρχοντα συστήματά μας. Μπορεί να είναι δύσκολο όταν αναγκάζεσαι να μετριάσεις λίγο από αυτόν τον ενθουσιασμό».

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

Ματ Χάουσερ: Ως αρχιτέκτονας, έχετε φτάσει σε ένα επίπεδο που επιτυγχάνεται μόνο ένα μικρό ποσοστό προγραμματιστών. Έχετε συμβουλές για προγραμματιστές που ξεκινούν την καριέρα τους;

Μπρους Μπρουβέρ: Μου αρέσει όταν νέοι προγραμματιστές έρχονται με μια ιδέα να αμφισβητήσουν το τρέχον status quo. Συνήθως θέλουν να χρησιμοποιήσουν κάποιο νέο εργαλείο για να κάνουν μια εργασία ευκολότερη. Όταν συμβεί αυτό μπορώ να τους βοηθήσω να κοιτάξουν τη μεγαλύτερη εικόνα. Πολλές φορές αυτό σημαίνει ότι επισημαίνουμε τα προβλήματα με την εισαγωγή αυτού του εργαλείου. Μιλώντας για τα προβλήματα μερικές φορές αναγκάζει τον νέο προγραμματιστή να ανοίξει τα μάτια του σε μεγαλύτερα θέματα.

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

Ματ Χάουσερ: Ποιος είναι ο πελάτης σας; (Ή, για να δανειστείτε μια γραμμή από τους Bobs στο "Office Office": Τι θα λέγατε ότι θα κάνατε εδώ;)

Μπρους Μπρουβέρ: Δεν υποστηρίζω άμεσα κανέναν πελάτη με την έννοια ότι θα υπάρχει άμεση εστίαση στις επιχειρήσεις. Βρίσκομαι πραγματικά στην πλευρά υποδομής του IS, μαζί με τους DBA και τους διαχειριστές διακομιστή. Το υπόλοιπο της IS έχει πραγματικά ως επίκεντρο την εξυπηρέτηση ενός συγκεκριμένου τομέα της επιχείρησης. Μπορεί να φαίνεται περίεργο να τοποθετήσω έναν προγραμματιστή Java σε υποδομές, αλλά μου επιτρέπει να επικεντρωθώ σε θέματα που έχουν μεγαλύτερη αρχιτεκτονική εστίαση από ό, τι άλλοι. Ενώ άλλοι προσπαθούν να εργαστούν μέσω του καθορισμού επιχειρηματικών διαδικασιών, έχω επικεντρωθεί περισσότερο στην τεχνολογία που χρησιμοποιείται για την επίλυση των προβλημάτων όλων με επαναχρησιμοποιήσιμο τρόπο.

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

Ματ Χάουσερ: Πόσο καιρό προγραμματίζετε στην Java; Πώς έχετε δει τη γλώσσα και τον ίδιο τον προγραμματισμό Java να αλλάζει αυτά τα χρόνια;

Μπρους Μπρουβέρ: Δεν πήρα σοβαρά την Java μέχρι το Java 1.3. Αυτό θα ήταν περίπου 13 χρόνια. Αλλά ακόμη και τότε, η Java δεν έγινε πραγματικά μια χαρά για να αναπτυχθεί έως ότου το 1,5 εμφανίστηκε με γενόσημα. Υπάρχουν τόσες πολλές καλές χρήσεις γενικών και οι περισσότεροι άνθρωποι δεν φαίνεται να τις χρησιμοποιούν πέρα ​​από το πλαίσιο συλλογών Java.

Όταν ξεκίνησα με την Java, γράψαμε σχεδόν τα πάντα. Με την πάροδο του χρόνου, έχω δει πώς ο υπόλοιπος κόσμος έχει αγκαλιάσει την Java, ειδικά στην κοινότητα ανοιχτού κώδικα. Αυτή η έκρηξη του ανοιχτού κώδικα είναι η πιο σημαντική αλλαγή που έχω περάσει κατά τη διάρκεια της καριέρας μου στον προγραμματισμό Java. Είναι κάτι που πραγματικά δεν ταιριάζει με καμία άλλη γλώσσα μέχρι πρόσφατα.

Ματ Χάουσερ: Μίλα μου για τη χρήση του JRuby στο GFS. Ποια είναι η γνώμη σας για τις γλώσσες JVM; πρέπει να γίνουμε όλοι προγραμματιστές Clojure τώρα;

Μπρους Μπρουβέρ: Ο JRuby ήταν πραγματικά ένα μέσο για το τέλος στο Gordons. Το Compass είναι πραγματικά η πρώτη εφαρμογή Sass εκεί έξω και τυχαίνει να γράφεται στο Ruby. Έχω χρησιμοποιήσει επίσης το Rhino και το Groovy επίσης στο JVM. Έχω δει πόσο ισχυρές και ικανές είναι αυτές οι άλλες γλώσσες, αλλά και η Java.

Άλλες γλώσσες όπως η Scala, και αναφέρατε το Clojure, έχουν αποκτήσει δημοτικότητα τον τελευταίο καιρό. Ενώ μπορείτε να κάνετε το ίδιο πράγμα στη Scala με κάτι σαν τον μισό κώδικα της Java, πιστεύω ότι η αναγνωσιμότητα μπορεί να υποφέρει πιο γρήγορα από ό, τι στην Java. Λίγο καιρό πίσω, είδα έναν αριθμό εργολάβων με αυτοκόλλητα στο φορητό τους υπολογιστή που έλεγαν "Η πληκτρολόγηση δεν είναι το εμπόδιο." Συμφωνώ απολύτως. Το να σκεφτείτε το πρόβλημα και να το καταστήσετε σαφές για τον επόμενο άντρα είναι πιο σημαντικό από το να βρείτε έξυπνους τρόπους για να μειώσετε τον αριθμό των γραμμών κώδικα που γράφετε. Μην με παρεξηγείτε, η διατήρηση λιγότερου κώδικα είναι καλύτερη από περισσότερη, αλλά πρέπει να είναι σαφές τι συμβαίνει.