Joel on Software

Joel on Software   Ο Ιωήλ περί Λογισμικού

 

Άλλα "Joel on Software" άρθρα στα Ελληνικά

Άλλα "Joel on Software" άρθρα στα Αγγλικά

Στείλτε μήνυμα ηλεκτρονικού ταχυδρομείου στο συγγραφέα (μόνο στα Αγγλικά)

 

Πυρ και Κίνηση


από τον Ιωήλ Σπολσκι
Μεταφραστής ο Δημήτρης Στάικος
6 Ιανουαρίου 2002

Μερικές φορές δεν μπορώ να κάνω απολύτως καμία δουλειά.

Βέβαια, έρχομαι στο γραφείο, γυροφέρνω, ελέγχω το email μου κάθε δέκα δευτερόλεπτα, σερφάρω στο web, ή ακόμα κάνω μερικές εντελώς χαζές δουλειές όπως το να πληρώνω το λογαριασμό της American Express.

Tetris

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

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

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

 

 
Go read The Onion for a while.
 
 

Αυτό που με τρελαίνει είναι ότι από την εποχή ακόμα της πρώτης μου δουλειάς συνειδητοποίησα ότι σαν προγραμματιστής, συνήθως επιτυγχάνω δύο με τρεις ώρες παραγωγικής δουλειάς την ημέρα. Το καλοκαίρι που ήμουν στη Microsoft σαν μαθητευόμενος, ένας συνάδελφος μου είπε ότι κάθε μέρα ερχόταν στο γραφείο από τις 12 μέχρι τις 5. Πέντε ώρες, μαζί με  το μεσημεριανό, και η ομάδα του τον λάτρευε γιατί παρόλ'αυτά κατάφερνε να κάνει περισσότερα από το μέσο όρο. Έχω διαπιστώσει ακριβώς το ίδιο πράγμα για μένα. Νιώθω λίγο ένοχος όταν βλέπω πόσο σκληρά φαίνονται να δουλεύουν όλοι, ενώ εγώ επιτυγχάνω δύο με τρεις ώρες ποιοτικής δουλειάς την ημέρα, κι όμως πάντα ήμουν από τα πιο παραγωγικά μέλη κάθε ομάδας. Γι'αυτό όταν το Peopleware και το XP επιμένουν στην ολική κατάργηση των υπερωριών και στην εργασία αυστηρά 40 ωρών την εβδομάδα, το κάνουν με σιγουριά, έχοντας τη γνώση ότι αυτό δεν θα μειώσει το έργο της ομάδας. 

Αλλά δεν είναι οι ημέρες που επιτυγχάνω "μόνο" δύο ώρες δουλειάς αυτές που με ανησυχούν. Είναι οι ημέρες που δεν μπορώ να κάνω τίποτα.

Το έχω σκεφτεί πολύ αυτό. Προσπάθησα να θυμηθώ την εποχή στην καριέρα μου που έκανα την πιο πολλή δουλειά. Ήταν πιθανότατα όταν η Microsoft με μετακίνησε σε ένα πανέμορφο, κυριλέ γραφείο με μεγάλα παράθυρα τα οποία κοιτάγανε σε μία αυλή με βράχους και ανθισμένες κερασιές. Τα πάντα κάνανε 'κλικ'. Δούλευα ασταμάτητα για μήνες χτίζοντας τις λεπτομερείς προδιαγραφές της Excel Basic -- ένας μνημειώδης σωρός χαρτί ο οποίος περιέγραφε με απίστευτη λεπτομέρεια ένα γιγάντιο object model και το προγραμματιστικό του περιβάλλον. Κυριολεκτικά δεν σταματούσα ποτέ. Όταν είχα πάει στη Βοστώνη για την MacWorld είχα πάρει ένα φορητό μαζί μου, και έγραψα την τεκμηρίωση για την κλάση Window ενώ ήμουν καθισμένος σε ένα ευχάριστο προαύλιο στην HBS.

Όταν μπω σε λειτουργία δεν είναι πολύ δύσκολο να συνεχίσω. Πολλές από τις ημέρες μου κυλάνε ώς εξής: (1) πάω στη δουλειά (2) ελέγχω το email, σερφάρω στο web, κλπ (3) αποφασίζω ότι καλύτερα να φάω μεσημεριανό πριν αρχίσω να δουλεύω (4) επιστρέφω από το μεσημεριανό (5) ελέγχω το email, σερφάρω στο web, κλπ (6) τελικά αποφασίζω ότι πρέπει να αρχίσω (7) ελέγχω το email, σερφάρω στο web, κλπ (8) αποφασίζω ξανά ότι πραγματικά πρέπει να αρχίσω (9) ξεκινάω τον καταραμμένο editor και (10) γράφω κώδικα ασταμάτητα μέχρι που συνειδητοποιώ ότι είναι ήδη 7:30 μ.μ. 

Κάπου μεταξύ των βημάτων 8 και 9 φαίνεται να υπάρχει πρόβλημα, γιατί δεν καταφέρνω πάντα να περάσω το χάσμα. bike trip Για μένα, το μόνο δύσκολο πράγμα είναι απλά το να ξεκινήσω. Ένα αντικείμενο σε ηρεμία τείνει να μένει σε ηρεμία. Υπάρχει κάτι απίστευτα βαρύ στο μυαλό μου το οποίο είναι εξαιρετικά δύσκολο να κινηθεί, αλλά άπαξ και ρολλάρει σε πλήρη ταχύτητα δεν απαιτεί καμία προσπάθεια για να συνεχίσει. Σαν ένα ποδήλατο προετοιμασμένο για ένα αυτόνομο ποδηλατικό ταξίδι σε όλη τη χώρα -- όταν πρωτοξεκινάς να καβαλήσεις ένα ποδήλατο με όλον αυτό τον εξοπλισμό, δυσκολεύεσαι να πιστέψεις πόση προσπάθεια απαιτείται για να ξεκινήσεις να τσουλάς, αλλά όταν καταφέρεις να ρολλάρεις σου φαίνεται εύκολο σαν να είχες ένα ποδήλατο χωρίς καθόλους εξοπλισμό.

Ίσως αυτό να είναι το κλειδί της παραγωγικότητας: απλά το να ξεκινήσεις. Ίσως όταν δουλεύει ο προγραμματισμός σε ζευγάρια (pair programming) να δουλεύει επειδή όταν κανονίζεις με τον κολλητό σου να δουλέψετε σε ζευγάρι, εξαναγκάζετε ο ένας τον άλλο να ξεκινήσετε.

Joel in the ArmyΌταν ήμουν αλεξιπτωτιστής στον Ισραηλινό στρατό, ένας στρατηγός πέρασε για να μας εκφωνήσει ένα λογύδριο περί στρατηγικής. Στις μάχες πεζικού, μας είπε, υπάρχει μόνο μία στρατηγική: Πύρ και Κίνηση. Κινείσαι προς τον εχθρό ενώ πυροβολείς συνεχώς. Τα πυρά τον αναγκάζουν να κρατάει σκυφτό το κεφάλι του και έτσι δεν μπορεί να σε πυροβολήσει αυτός. (Αυτό εννοούν οι στρατιώτες όταν φωνάζουν "κάλυψέ με". Σημαίνει "πυροβόλα τον εχθρό μας ώστε να αναγκαστεί να σκύψει και να μην μπορεί να με πυροβολήσει όσο τρέχω κατά μήκος του δρόμου". Και δουλεύει.) Η κίνηση σου επιτρέπει να καταλάβεις έδαφος και να πλησιάσεις τον εχθρό σου, απ'όπου οι βολές σου είναι πολύ πιο πιθανό να πετύχουν το στόχο τους. Αν δεν κινείσαι τότε ο εχθρός σου είναι που αποφασίζει τι συμβαίνει, και αυτό δεν είναι καλό. Αν δεν πυροβολείς εσύ, θα σε πυροβολεί ο εχθρός σου και θα σε καθηλώσει.

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

Αναλογιστείτε την ιστορία των διαφόρων τρόπων πρόσβασης στα δεδομένα που έχει βγάλει η Microsoft. ODBC, RDO, DAO, ADO, OLEDB, και τώρα ADO.NET - Όλα Νέα! Ήταν όλα αυτά τεχνολογικές αναγκαιότητες; Το αποτέλεσμα μιας ανίκανης ομάδας σχεδιασμού η οποία πρέπει να ξαναεφευρίσκει τον τρόπο πρόσβασης στα δεδομένα κάθε χρόνο; (Μάλλον αυτό συμβαίνει εδώ που τα λέμε.) Αλλά το τελικό αποτέλεσμα είναι απλά πυρά κάλυψης. Οι ανταγωνιστές δεν έχουν άλλη επιλογή από το να ξοδεύουν όλο το χρόνο τους μετατρέποντας κώδικα και προσπαθώντας να παρακολουθήσουν τις εξελίξεις, χρόνο τον οποίο δεν μπορούν να δώσουν στην υλοποίηση νέων δυνατοτήτων. Κοιτάξτε προσεκτικά το τοπίο των εταιρειών λογισμικού. Οι εταιρείες που τα πάνε καλά είναι αυτές που βασίζονται το λιγότερο στις μεγάλες εταιρείες, και δεν χρειάζεται να τρώνε όλο το χρόνο τους τρέχοντας, επαναϋλοποιώντας και διορθώνοντας προβλήματα που εμφανίζονται μόνο στα Windows XP. Αυτές που σκοντάφτουν είναι εκείνες που προσπαθούν όλη την ώρα να διαβάσουν στο φλιτζάνι την μελλοντική κατεύθυνση της Microsoft. Ο κόσμος ανησυχεί για το .NET και αποφασίζουν να ξαναγράψουν ολόκληρη την αρχιτεκτονική τους για .NET επειδή νομίζουν ότι έτσι πρέπει. Η Microsoft σε πυροβολεί, και είναι απλά πυρά κάλυψης ώστε αυτοί να μπορούν να κινηθούν προς τα μπρος ενώ εσύ όχι, γιατί έτσι παίζεται το παιχνίδι φιλαράκο. Σκοπεύετε να υποστηρίξετε το Hailstorm; Το SOAP; Το RDF; Το υποστηρίζετε επειδή το χρειάζονται οι πελάτες σας ή επειδή κάποιος σας πυροβολεί και νιώθετε υποχρεωμένοι να απαντήσετε; Οι ομάδες πωλήσεων των μεγάλων εταιρειών καταλαβαίνουν καλά τα πυρά κάλυψης. Πηγαίνουν στους πελάτες τους και λένε "Εντάξει, δεν είστε υποχρεωμένοι να αγοράσετε από εμάς. Αγοράστε από τον καλύτερο. Αλλά βεβαιωθείτε ότι θα πάρετε ένα προϊόν το οποίο υποστηρίζει (XML / SOAP / CDE /J2EE) γιατί αλλιώς θα κλειδωθείτε στο μπαούλο". Έτσι, όταν οι μικρές εταιρείες προσπαθήσουν να πουλήσουν σε αυτόν τον πελάτη, αυτό που ακούνε είναι υπάκουους CTOs να παπαγαλίζουν "Έχετε J2EE;" Και πρέπει να σπαταλήσουν όλο το χρόνο τους χτίζοντας σε J2EE ακόμα και αν αυτό δεν τους δίνει πραγματικά πωλήσεις, ούτε κάποια ευκαιρία να διακριθούν. Είναι μία δυνατότητα checkbox -- το κάνεις γιατί πρέπει το checkbox να λέει ότι το έχεις, αλλά κανείς δεν το χρειάζεται και δεν θα το χρησιμοποιήσει. Είναι πυρά κάλυψης.

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

It's getting better all the time... o/~


Το άρθρο αυτό πρώτο-εμφανίστηκε στα Αγγλικά με το όνομα Fire and Motion  

Ο Ιωήλ Σπολσκι είναι ο ιδρυτής της Fog Creek Software, μιας μικρής εταιρείας λογισμικού στη Νέα Υόρκη. Αποφοίτησε από το Πανεπιστήμιο του Γεηλ και εργάστηκε ως προγραμματιστής και στέλεχος διοίκησης στις εταιρείες Microsoft, Viacom και Juno.


Τα περιεχόμενα αυτών των σελίδων αντιπροσωπεύουν τις γνώμες ενός ατόμου.
Όλα τα περιεχόμενα Copyright ©1999-2005  του Ιωήλ Σπολσκι (Joel Spolsky). All Rights Reserved.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky