6 Μη τεχνικές δεξιότητες που χρειάζεται κάθε προγραμματιστής λογισμικού

Δείτε επίσης:Δεξιότητες

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

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

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

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


Λοιπόν, ποιες μη τεχνικές δεξιότητες μιλάμε, ακριβώς;

Soft Skills για προγραμματιστές

Ικανότητες επίλυσης προβλημάτων

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

Δηλαδή, όταν το καταργείτε στα βασικά, η ανάπτυξη λογισμικού είναι καθαρή επίλυση προβλημάτων.

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

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

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

Τα παραδείγματα είναι ατελείωτα.

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

Μαθησιακές δεξιότητες

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

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

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

Εδώ βρίσκεταιμαθησιακές δεξιότητεςθα κάνει πραγματικά τη διαφορά.

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

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

ΠαίρνειΠρογραμματιστής Αδύο μήνες για να κατακτήσει το νέο πλαίσιο ενώΠρογραμματιστής Βπαλεύει με αυτό έξι μήνες αργότερα.

Ξαφνικά, οι δύο προηγούμενοι προγραμματιστές λογισμικού μας είναι διαφορετικοί. Ο μόνος λόγος -Προγραμματιστής Αείχε ανώτερες μαθησιακές δεξιότητες.

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

Ομαδικές Ικανότητες

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

Ως επί το πλείστον, οι προγραμματιστές λογισμικού εργάζονται σε ομάδες.

Στη σύγχρονη ανάπτυξη λογισμικού, ειδικά αν μιλάμε για ανάπτυξη λογισμικού Agile (θα το φτάσουμε αργότερα), η ικανότητα της ομάδας να συνεργάζεται καλά είναι συχνά ο κρίσιμος παράγοντας για το εάν το λογισμικό έχει ολοκληρωθεί εγκαίρως, στις απαιτούμενες προδιαγραφές, και εντός του προϋπολογισμού.

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

Δεν γεννιούνται όλοι ως αληθινοί παίκτες της ομάδας και πολλοί άνθρωποι αγωνίζονται να υιοθετήσουν πραγματικά τοΟΜΑΔΙΚΗ ΔΟΥΛΕΙΑνοοτροπία. Το καλό είναι ότι αυτή είναι μια άλλη ικανότητα που μπορεί να μάθει και είναι κάτι που όλοι οι προγραμματιστές λογισμικού πρέπει να ερευνήσουν.

Ηγετικές ικανότητες

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

Στην πραγματικότητα, είναι κοινή πρακτική (τουλάχιστον σε καλές εταιρείες ανάπτυξης λογισμικού / ομάδες) για τους προγραμματιστές να καθοδηγούν άτομα με λιγότερη εμπειρία, ακόμη και όταν δεν έχουν πολύ εμπειρία.

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

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

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

Ευέλικτες δεξιότητες

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

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

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

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

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

Καλή ντεμοντέ ενσυναίσθηση

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

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

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

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

  • Ολοκληρώνοντας μια νέα δυνατότητα (που πληροί τις πιο βασικές προϋποθέσεις) σε τριάντα λεπτά και δημιουργώντας έναν απόλυτο εφιάλτη για άτομα που θα το αναπτύξουν ή θα το διατηρήσουν στο μέλλον (καθιστώντας επίσης τον εαυτό τους ως στόχο αναρίθμητων μελλοντικών κατάρα και κούκλες Voodoo στη διαδικασία) .
  • Περνώντας μια ολόκληρη μέρα στην εν λόγω λειτουργία, γράφοντας καθαρό, διατηρήσιμο κώδικα που θα βάλει ένα χαμόγελο στο πρόσωπο κάποιου δύο χρόνια.

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

Έχει να κάνει με άλλους ανθρώπους.




Κλείσιμο του Word

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


Συνέχισε να:
Λήψη αποφάσης
Προσωπικές δεξιότητες ανάπτυξης