Πώς να οργανώσετε τις σκέψεις σας στον πίνακα και να συντρίψετε την τεχνική σας συνέντευξη

Σχετικά με τις οργανωτικές δεξιότητες και την εφαρμοσμένη επιστήμη της συγκόλλησης πολλών πραγμάτων μαζί στην τέχνη της μηχανικής λογισμικού

Πριν από μερικές εβδομάδες, ένα φωτεινό άτομο δημοσίευσε στο Hacker News μια καλά μελετημένη και σύντομη ανάρτηση σχετικά με την πιο σημαντική ικανότητα στην ανάπτυξη λογισμικού. Σε αυτό το post, ο John D. Cook επεσήμανε ένα απόσπασμα από το άρθρο Organizational Skills Beat Algorithmic Wizardry, του James Hague. Και οι δύο συγγραφείς αντιμετωπίζουν το αντικείμενο της μηχανικής λογισμικού της οργάνωσης ως δεξιότητα . Αυτό το αντιπαραβάλλουν με τογνώση της επιστήμης των υπολογιστών που δοκιμάστηκε σε συνεντεύξεις, διδάσκονταν σε ακαδημαϊκούς ή σχολιασμένους σε δημοσιεύσεις blog Ο συλλογισμός τους με έκανε να συλλογιστώ πώς θα μπορούσε να βελτιωθεί η τέχνη μας.

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

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

Αυτό με ώθησε να γράψω μια συνέχεια με τον δικό μου τρόπο. Αυτό συμβαίνει επειδή με συγκίνησε η βαρύτητα αυτών των δημοσιεύσεων. Γιατί να μην απαντήσω σε ερωτήσεις που τέθηκαν ακόμη και αν η απάντησή μου στο παράδειγμα δεν ταιριάζει καθαρά; Έτσι κλώτσησα την ιδέα μπρος-πίσω και κρέμασα μια ερώτηση. Ο Τζον ρώτησε:

… Πώς παρουσιάζετε ένα έξυπνο κομμάτι οργάνωσης;

Σκέφτηκα λίγο, κοίταξα μακριά από την οθόνη και είδα τον πίνακα μου να στέκεται μπροστά μου. Το κεφάλι μου περιστράφηκε γύρω από τις θέσεις. Σκληρές τεχνικές συνεντεύξεις; Οργάνωση? Διαχείριση κατάστασης; Κατάρρευση βάρους; Πολυπλοκότητα κώδικα; Ίσως η άσκηση της τεχνικής συνέντευξης στον πίνακα θα μπορούσε να αποδειχθεί σημαντικό σημείο της μηχανικής λογισμικού.

Άρχισα λοιπόν να επιλύω μερικά τυπικά προβλήματα στον πίνακα, νευρικά, μόνος μου.

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

Μια καλύτερη προσέγγιση

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

Εδώ ξεκινά το κεφάλι μου να ξεφεύγει από άγχος και αποδιοργάνωση. Οι τρομπέτες αρχίζουν να παίζουν στο μυαλό μου και η διαδικασία σκέψης μου αμαυρώνεται. Ο χρόνος επιταχύνεται. Το όραμά μου στενεύει και γίνομαι κουρασμένος.

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

Οι τρεις ενότητες θα οργανωθούν για προσωρινό χώρο για την επίλυση του προβλήματος.

Βήμα 1: το πρόβλημα

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

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

Βήμα 2: Υποθέσεις

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

Η αποσαφήνιση των υποθέσεων μπορεί να απλοποιήσει το πρόβλημα. Καθώς κάνετε κάθε ερώτηση, πρέπει να γράψετε κάθε ζεύγος απαντήσεων στην περιοχή των υποθέσεων. Όταν λαμβάνετε απαντήσεις, λάβετε έναν δευτερεύοντα δείκτη (διαφορετικό χρώμα) για να επισημάνετε την απάντηση. Το να φέρετε τους δικούς σας δείκτες μπορεί να σας βοηθήσει.

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

Βήμα 3: η προσέγγιση

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

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

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

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

Βήμα 4: εφαρμογή κώδικα

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

Ακόμα κι αν παλεύεις με την επίλυση, είσαι ο μάγος της οργάνωσης.

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

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

Μπόνους Βήμα 5: δοκιμή

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

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

Εν κατακλείδι

Ορίστε. Αυτό ήταν λίγα λεπτά καθαρής οργάνωσης χωρίς πολλή θεωρία. Στηρίζεται σε μερικές απλές έννοιες.

  1. Διαχωρισμός -τεμαχίζοντας το πρόβλημα σε κομμάτια από την αρχή έως το τέλος.
  2. Σκαλωσιές - η έννοια της προσωρινής αρχιτεκτονικής ή όπου δημιουργούμε μια υποστηρικτική δομή καθώς χτίζουμε γύρω μας.
  3. Gating - δεν πρέπει να προχωρήσουμε με το επόμενο βήμα έως ότου είμαστε άνετοι και σίγουροι για τις υποθέσεις της καλής αντιμετώπισης του προβλήματος. Εμφανίστε την εμπιστοσύνη, αλλά ασχοληθείτε ενεργά με το "Μου έλειψαν υποθέσεις;" ή "Η προσέγγισή μου έχει τρύπες;" πριν συνεχίσετε.
  4. Το κράτος  - οργάνωση αντιμετωπίζεται οπτικά για να διατηρήσει τη ζυγιστική πολυπλοκότητα του προβλήματος. Αποφύγετε τη χρήση μιας γόμας εάν μπορείτε.

συμπέρασμα

Ήθελα να τελειώσω με κάποια tidbits που θα φέρουν τη διαδικασία της σκέψης μου στο σπίτι.

Δεν μπορείτε να εκτιμήσετε ένα κατόρθωμα οργάνωσης έως ότου αντιμετωπίσετε την αποδιοργάνωση. - Γιάννης

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

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

Ποτέ μην υποτιμάτε αυτό το φαινόμενο.

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

Όλοι έχουμε μια ιστορία για τον πίνακα. Ήθελα να βρω πώς θα μπορούσα να βελτιώσω και να αναθέσω στο μυαλό μου τη μηχανική ταυτόχρονα. Πολλοί μηχανικοί συνδέονται συναισθηματικά στον πίνακα. Όλοι έχουμε τις ιστορίες της καταδικασμένης ήττας.

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

Θυμηθείτε, υπάρχει υπερηφάνεια για τη βελτίωση του κώδικα μέσω της οργάνωσης και της δομής. Έχω γράψει μερικές δημοσιεύσεις σχετικά με την οργάνωση και το θέμα που συνδέει τον οργανισμό με την πολυπλοκότητα του συστήματος. Υπάρχει ένας ισχυρός σύνδεσμος. Γι 'αυτό εκτίμησα βαθιά τις σκέψεις του John και του James. Είναι οργανωμένα μηνύματα χωρίς βιασύνη λήξη χρόνου.

Εάν βρεθείτε σε αυτήν την κατάσταση, ζητήστε έναν μεγαλύτερο πίνακα!