9 βήματα: Επιλέγοντας μια τεχνολογική στοίβα για την εφαρμογή σας στο διαδίκτυο

Ο προγραμματισμός της νέας εφαρμογής Ιστού μπορεί να είναι δύσκολος (Photo by Luca Bravo στο Unsplash).

Είστε ιδρυτής, Διευθύνων Σύμβουλος, ΚΟΤ, σύμβουλος ή άλλος ενδιαφερόμενος που πρέπει να αποφασίσει πώς να κατασκευάσει ένα προϊόν λογισμικού; Έχετε πρόβλημα να αποφασίσετε για την τεχνολογική στοίβα για την εφαρμογή σας στο διαδίκτυο; Πρέπει να χρησιμοποιήσετε Python ή Java ως γλώσσα; Είναι η node.js ή η Flask / Django η σωστή επιλογή για το πλαίσιο ιστού; Ποια είναι η καλύτερη επιλογή front-end: Γωνιακή, React ή VueJS; Τι γίνεται με τη βάση δεδομένων - MySQL, Postgres ή MongoDB; Θα πρέπει να φιλοξενείτε με Apache ή Nginx στο DigitalOcean ή απλά να πάτε με το Amazon AWS; Ίσως θα προτιμούσατε να συνεργαστείτε με ένα PaaS όπως το Heroku;

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

1. Κρατήστε το απλό. Πηγαίνετε ευκίνητος!

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

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

Μόλις γνωρίζετε ότι η ιδέα σας θα λειτουργήσει, μπορείτε να προχωρήσετε με την κατασκευή του προϊόντος. Μείνε ευκίνητος κατά τη διάρκεια αυτής της φάσης. Δεν θα πρέπει ποτέ να ξοδέψετε πολλούς μήνες για τη σύνταξη μιας προδιαγραφής συστήματος 100 σελίδων ("Pflichten- und Lastenheft" στα γερμανικά) για τους προγραμματιστές, ειδικά αν αναλάβει 6 ή 12 μήνες για την υλοποίηση του προϊόντος. Θα οδηγήσει πιθανώς σε ένα προϊόν που είναι είτε πεπαλαιωμένο είτε παραδίδεται πολύ αργά.

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

2. Σκεφτείτε τις προσωπικές σας απαιτήσεις

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

Χρήστες πριν από την τεχνολογία

Τα προϊόντα πρέπει να κατασκευαστούν για τους χρήστες τους. Ποιο προϊόν θέλετε να χτίσετε; Πώς μπορείτε να δημιουργήσετε την καλύτερη εμπειρία χρήστη; Σκεφτείτε ποιος θα χρησιμοποιεί το σύστημά σας. Θα εργάζονται σε επιτραπέζιους υπολογιστές ή tablet; Θα έχουν πρόσβαση στα πράγματα μέσω μιας κινητής σύνδεσης (όπως κάνει το 60% όλων των χρηστών); Πρέπει να υπάρχει μια εφαρμογή σε στυλ υπολογιστή; Ποια προγράμματα περιήγησης θα χρησιμοποιηθούν πιο συχνά;

Ταχύτητα και απόδοση

Έχετε (εκτός) κριτήρια; Το λογισμικό θα τρέχει στο intranet σας; Εάν ναι, οι αρχικοί χρόνοι φόρτωσης θα μπορούσαν να είναι μικρότεροι από το βέλτιστο.

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

Μεταναστεύσεις και συστήματα παλαιού τύπου

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

Ασφάλεια

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

3. Πηγαίνετε για τεχνολογίες ανοιχτού κώδικα

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

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

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

4. Ελέγξτε το οικοσύστημα

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

Πόσο μεγάλο είναι το οικοσύστημα πίσω από τη γλώσσα ή το πλαίσιο; Πόσες ερωτήσεις, συνέδρια και σεμινάρια Stackoverflow (π.χ. Udemy) υπάρχουν; Τι λέει η Google Trends; Το ενδιαφέρον για το λογισμικό εξακολουθεί να αυξάνεται; Πόσα πακέτα (npm, PyPi, κλπ.) Υπάρχουν και έχουν άδειες με τις οποίες μπορείτε να εργαστείτε;

Ξέρετε για τις εκπληκτικές καταπληκτικές λίστες; Σας βοηθούν να σκάψετε στο οικοσύστημα μιας γλώσσας ή ενός πλαισίου. Μπορείτε να ελέγξετε τα σεμινάρια, τα άρθρα και τα σημαντικά πακέτα που σχετίζονται με μια δεδομένη τεχνολογία. Υπάρχουν λίστες για τα Django, node.js, React, Angular και πολλά άλλα.

Επίσης σημαντικό: είναι η κοινότητα να καλωσορίζει νέα μέλη και πόσο δραστήρια είναι η κοινότητα; Πώς υποστηρίζεται οι χρήστες και οι προγραμματιστές; Υπάρχει μια λίστα αλληλογραφίας, ένα κανάλι συζήτησης, ένα Slack δωμάτιο ή ένα σύστημα έκδοσης εισιτηρίων; Είναι άνθρωποι blogging για την τεχνολογία;

5. Μακροπρόθεσμες τάσεις και υποστήριξη

Κύκλοι ζωής της αγοράς

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

Μια άλλη ιδέα είναι να ελέγξετε τις τεχνολογικές στοίβες της βιομηχανίας με stackshare.io ή techstacks.io. Ελέγξτε ποια στοιχεία του Airbnb χρησιμοποιούν ή που αρέσει στους χρήστες της AngularJS και ποιος τον χρησιμοποιεί. Εάν δεν είστε σίγουροι για μια τεχνολογία, μπορείτε να αναζητήσετε εναλλακτικές λύσεις. Ακολουθεί μια λίστα εναλλακτικών λύσεων προς το Angular JS για την εναλλακτική λύση.

Μακροπρόθεσμη υποστήριξη πωλητών

Ο πωλητής τεχνολογίας μοιάζει να είναι γύρω για λίγο; Είναι μεγάλες εταιρείες που χρηματοδοτούν την ανάπτυξη της εν λόγω τεχνολογίας; Η Google βρίσκεται πίσω από το Angular και το Facebook βρίσκεται πίσω από το React. Αυτό σημαίνει ότι θα πρέπει να υπάρξει κάποια πρόοδος, μέχρις ότου η εταιρεία τελικά αποφασίσει να παραιτηθεί από την υποστήριξή της (ναι, αυτό μπορεί να συμβεί). Όσο μεγαλύτερη είναι η κοινότητα, τόσο μεγαλύτερη είναι η πιθανότητα να παραμείνουν τα πράγματα εδώ και αρκετό καιρό.

Ορισμένες εφαρμογές έχουν εκδόσεις με μακροχρόνια υποστήριξη. Οι συγκεκριμένες εκδόσεις παρέχονται στη συνέχεια με διορθώσεις σφαλμάτων για μια δεδομένη χρονική περίοδο. Θα πρέπει επίσης να ελέγξετε την ιστοσελίδα της τεχνολογίας: πώς χειρίζονται οι ενημερώσεις; Πόσο εύκολη είναι η διαδικασία ενημέρωσης / μετάβασης; Έχουν υπάρξει ιδιαίτερα ασυμβίβαστες εκδόσεις (όπως η γωνιακή 1 & γωνιακή 2);

6. Ανθρώπινοι πόροι και προσλήψεις

Τι προγραμματιστές έχετε στο πλευρό σας; Εάν πρέπει να αποφασίσετε για μια τεχνολογία front-end και έχετε τρεις ισχυρούς γωνιακούς προγραμματιστές, θα πρέπει πιθανώς να συνεργαστείτε με αυτούς. Η γρήγορη μετακίνηση μπορεί να είναι σημαντική και είναι ένα αρκετά πλεονέκτημα να έχουμε ανθρώπους που βρίσκονται στη ζώνη άνεσης αντί να μάθουν μια νέα τεχνολογία. Επίσης, η υπάρχουσα γνώση του οικοσυστήματος είναι ένα επιπλέον όφελος.

Όσον αφορά την πρόσληψη, φροντίστε να ελέγξετε τα εξής: μπορείτε να βρείτε αρκετούς κατασκευαστές ποιότητας για την επιθυμητή τεχνολογία; Πόσα πρέπει να πληρώσετε; Είναι μεγάλες εταιρείες που εργάζονται με τις ίδιες τεχνολογίες και αρπάζουν όλους τους καλούς προγραμματιστές; Είναι οι προγραμματιστές που βρίσκετε ως επί το πλείστον καθιερωμένοι επαγγελματίες, ή είναι δύσκολο να διαφοροποιήσετε μεταξύ τους και τα παιδικά σενάρια; Ένας καλός προγραμματιστής Java μπορεί να είναι πιο εύκολο να βρεθεί από ένα καλό Ruby on Rails ή PHP developer. Για την έρευνά σας, μπορείτε να ελέγξετε XING, LinkedIn ή πύλες αναζήτησης εργασίας. Μπορείτε επίσης να ελέγξετε τις τάσεις εργασίας (π.χ. σύγκριση Γωνίας με React).

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

Τελευταίο αλλά εξίσου σημαντικό: ένας μεγάλος πόρος στο HR είναι η έρευνα Stackoverflow Developer. Παρέχει μια μεγάλη εικόνα των τύπων προγραμματιστών, των χρησιμοποιούμενων τεχνολογιών και των εκθέσεων μισθοδοσίας. Κοίτα!

7. Θα είστε αρκετά ευέλικτοι;

Γραμμικότητα υπηρεσίας

Τα πράγματα αλλάζουν πολύ πιο γρήγορα από ό, τι ήταν πριν από 20 χρόνια. Για μεγάλο χρονικό διάστημα, οι άνθρωποι εργάζονταν κυρίως σε επιτραπέζιους υπολογιστές και με Windows. Αυτό πιθανόν να μην συμβαίνει σε άλλα 10 χρόνια. Η τεχνολογία που επιλέξατε πιθανότατα θα παραμείνει μαζί σας για 5 έως 10 χρόνια: αυτό είναι πολύ καιρό και δεν μπορείτε να είστε σίγουροι για το πώς θα εξελιχθούν τα πράγματα. Αυτός είναι ο λόγος για τον οποίο πρέπει να είστε προετοιμασμένοι να αλλάξετε τεχνολογίες όταν προκύψει η ανάγκη.

Σκεφτείτε το κοκκώδες, σκεφτείτε σε μικρά πακέτα και σκεφτείτε το διαχωρισμό των ανησυχιών. Θα πρέπει να διαχωρίσετε τις υπηρεσίες, τα back-ends και τα front-ends σε μικρότερες εφαρμογές και μικροεπιχειρήσεις. Θα πρέπει να είστε σε θέση να ανταλλάξετε εύκολα τεχνολογίες όταν οι υπάρχουσες δεν λειτουργούν πλέον για εσάς. Ελέγξτε τις έννοιες όπως η αρχιτεκτονική προσανατολισμένη στις υπηρεσίες (SOA) και ο σχεδιασμός βάσει τομέα (DDD).

Μπορείτε να επιστρέψετε; Θα το κλίμα;

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

8. Πώς αισθάνεται;

Έχετε τους προγραμματιστές σας να εξετάσουν την τεχνολογία ή να το κάνετε μόνοι σας. Ποιες είναι οι πρώτες εντυπώσεις σας; Έχετε μια μικρή δοκιμαστική εγκατάσταση, δοκιμάστε τις υπάρχουσες πλάκες καλοριφέρ, ή (αν είναι δυνατόν) έχετε ένα μικρό σχέδιο δοκιμών. Αν πάτε με κοκκώδη υπηρεσίες, μπορείτε να δημιουργήσετε μια νέα μικρή υπηρεσία με μια δεδομένη τεχνολογία και να δούμε πώς λειτουργεί.

Υπάρχουν επίσης εφαρμογές πραγματικού κόσμου που μπορούν να σας δώσουν μια καλύτερη κατανόηση των διαφορών. Το TodoMVC είναι ένα μεγάλο έργο - μια απλή εφαρμογή Todo πραγματοποιείται με διαφορετικά πλαίσια Javascript και μπορείτε να δείτε την αρχιτεκτονική του πηγαίου κώδικα. Υπάρχουν όλα τα είδη παραδειγμάτων και μπορείτε να συγκρίνετε Γωνιακή με React ή Vue με Ember.

Το εκπληκτικό έργο του RealWorld πηγαίνει ακόμη περισσότερο: είναι μια εφαρμογή πλήρους στοίβας μεσαίου μεγέθους που χρησιμοποιεί είτε το Django είτε το node.js για το back-end και γωνιακό ή React για το front-end. Μπορείτε να διαβάσετε ένα εισαγωγικό άρθρο γι 'αυτό από τον Eric Simons.

9. Ξεκινήστε

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

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

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

Περισσότερες πηγές:

  • Πώς να επιλέξετε τις σωστές τεχνολογίες για το έργο του λογισμικού σας (μια λίστα με γρήγορα κουτάκια)
  • Πώς να επιλέξετε τη σωστή στοίβα τεχνολογίας για την εφαρμογή σας (καλό άρθρο που συζητά την απόφαση ανάλογα με το μέγεθος / κατάσταση της επιχείρησης)
  • 5 άκρες για την επιλογή της στοίβας τεχνολογίας εκκίνησης (nice listing & προειδοποίηση των Tech Stirrers)

Ευχαριστώ για το ενδιαφέρον σου. Ξεχάσαμε κάτι σημαντικό; Έχετε διαφορετική άποψη; Είμαι πάντα χαρούμενος που έχω ανατροφοδότηση.

Παρακολουθήστε με στο Twitter για ενημερώσεις και άλλα: @jensneuhaus -