Σήμερα ξεκίνησα την πρώτη μου εφαρμογή για κινητά. Εδώ έμαθα

Έχω γράψει αρκετά για το Medium πρόσφατα, μοιράζοντας πολύτιμες γνώσεις σχεδιασμού και ανάπτυξης που απέκτησα από την εργασία στην πρώτη μου εφαρμογή, Crypto Price Tracker που μόλις κυκλοφόρησα σήμερα, στις 28 Ιανουαρίου.

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

Λίγο υπόβαθρο για μένα: Είμαι ένα 16χρονο homeschooler. Μαθαίνω ψηφιακό σχεδιασμό και προγραμματισμό από τα 13 μου. Ήμουν ο νεότερος ασκούμενος στο Salesforce στο Bangalore το χειμώνα 2016.

Παρακολούθησα το θερινό πρόγραμμα MIT Launch το καλοκαίρι του 2017, όπου η ομάδα μου και εγώ ξεκινήσαμε το Universeaty. Αυτή ήταν η πρώτη φορά που δοκίμασα τα χέρια μου σε εφαρμογές iOS και μου άρεσε πόσο πιο γρήγορα ήταν να κατασκευάζω απτά προϊόντα και να βλέπω τα αποτελέσματα της δουλειάς μου κατά τη δημιουργία εφαρμογών για κινητά. Η μεταφορά των ιδεών μου στο λογισμικό ήταν πολύ πιο εύκολη και πιο διασκεδαστική!

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

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

Ξεκινώντας

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

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

Το επόμενο βήμα ήταν να σχεδιάσουμε την εφαρμογή. Ξεκίνησα με τη σχεδίαση διαγραμμάτων ροής χρήστη και wireframes. Στη συνέχεια προχώρησα στη χρήση λογισμικού σχεδιασμού για να δημιουργήσω mock-up και ένα πρωτότυπο. Έχω γράψει μια διαφορετική ιστορία σχετικά με το σχεδιασμό εφαρμογών για κινητά από το μηδέν και έχω μοιραστεί φωτογραφίες από κάθε στάδιο σχεδίασης της εφαρμογής Crypto Price Tracker.

Και το τελικό αποτέλεσμα αυτής της διαδικασίας ήταν αυτό:

Ανάπτυξη Crypto Price Tracker

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

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

Έγραψα τον κώδικα δικτύωσης για να εμφανίσω δεδομένα από τα API που χρησιμοποιούσα και δημιούργησα την κύρια διεπαφή της εφαρμογής μου. Στη συνέχεια, μετακόμισα στη λειτουργία "Wishlist" της εφαρμογής. Τώρα, για να αποθηκεύσετε δεδομένα τοπικά στο τηλέφωνο ενός χρήστη, πρέπει να δημιουργήσετε μοντέλα Core Data - κάτι που δεν είχα δουλέψει ποτέ στο παρελθόν. Και προέκυψαν περισσότερα τεχνικά κενά και προκλήσεις.

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

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

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

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

Στο τέλος των 8 εβδομάδων (από την ημέρα που ξεκίνησα την έρευνα αγοράς), είχα σχεδιάσει και αναπτύξει πλήρως μια εφαρμογή που παρουσίαζε τιμές σε πραγματικό χρόνο πάνω από 1000+ κρυπτονομίσματα από 18 ανταλλαγές σε 32 νομίσματα fiat Υπήρχαν γραφήματα τιμών (που εμφανίζουν ιστορικές τιμές από 1 ημέρα, 1 εβδομάδα, 1 μήνα, 3 μήνες και 1 έτος), διαχείριση χαρτοφυλακίου, ειδοποιήσεις βάσει χρόνου και κατωφλίου. Εντοπίστηκε σε 10 γλώσσες. Βελτιστοποίησα επίσης την εφαρμογή μου για το iPhone X.

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

Δοκιμή και υποβολή της εφαρμογής

Ήμουν αρκετά περήφανος για την εφαρμογή μου και ήμουν πολύ ενθουσιασμένος που το έβαλα εκεί στο TestFlight και κάλεσα όλους τους φίλους και τους χρήστες μου να το δοκιμάσουν! Μετά από μακρά αναμονή δύο ημερών, εγκρίθηκε τελικά ο έλεγχος της εφαρμογής beta. Κάλεσα τους φίλους μου να το δοκιμάσουν και τους άρεσε πολύ η εφαρμογή. Όλοι τους μοιράστηκαν σχόλια, ιδέες για δυνατότητες για μελλοντικές ενημερώσεις και πολλά άλλα. Η εφαρμογή είχε μηδενικά σφάλματα!

Η έκδοση v1.0 ήταν έτοιμη για υποβολή. Τα 100 στιγμιότυπα οθόνης μου (5 στιγμιότυπα οθόνης για iPhone 5,5 ιντσών και 5 για iPhone 5,8 ιντσών για κάθε γλώσσα) ήταν έτοιμα, τα μεταδεδομένα μου εντοπίστηκαν και η προεπισκόπηση του βίντεο ολοκληρώθηκε.

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

Δύο ημέρες αργότερα, στις 4 π.μ., έλαβα το email απόρριψης.

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

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

Τις ημέρες πριν από την κυκλοφορία, έβαλα μαζί αυτήν την ιστορία από τις σημειώσεις που έκανα και το καθημερινό μου περιοδικό, ώστε να μπορούσα να μοιραστώ τα μαθήματα με όλους.

Μερικά μαθήματα που έμαθα

  1. Η τοπική προσαρμογή είναι μια υπέροχη ιδέα. Μέχρι τώρα, μετανιώνω για την απόφασή μου να εντοπίσω την εφαρμογή μου σε 10 γλώσσες. Είχα γράψει μερικές απαντήσεις Quora σχετικά με το πώς ήταν το πιο χρονοβόρο πράγμα που έκανα για την εφαρμογή μου και δεν θα συμβούλευα κανέναν ανεξάρτητο προγραμματιστή χωρίς τον προϋπολογισμό να αναθέσει σε εξωτερικούς συνεργάτες την τοπική προσαρμογή. Αλλά τώρα η γνώμη μου άλλαξε. Η τοπική προσαρμογή της εφαρμογής σας σε 10-12 γλώσσες μέσω της Μετάφρασης Google και η αναγνώριση από φίλους είναι ένας πολύ καλός τρόπος για να προσεγγίσετε μεγαλύτερο κοινό για την εφαρμογή σας. Η Apple λατρεύει επίσης τις τοπικές εφαρμογές. Δεν μπορείτε πάντα να κάνετε τα πάντα σωστά και κάθε πιθανή συμβολοσειρά εντοπισμένη. Αλλά μπορείτε να λάβετε το 80% των αποτελεσμάτων (δηλαδή, το κείμενο μεταφράζεται) με το 20% των εργασιών.
  2. Οι άνθρωποι είναι πολύ πιο πρόθυμοι να σας βοηθήσουν από ό, τι νομίζετε. Είμαι πολύ ευγνώμων που έχω πολλούς φίλους και μέντορες που με βοήθησαν πολύ σε αυτό το ταξίδι. Αλλά απλώς εκπλήσσομαι πόσοι ξένοι μου απάντησαν όταν τους έφτασα και με βοήθησαν. Πολύ νωρίς στο ταξίδι μου, όταν είχα λίγο πρωτότυπο της κύριας διεπαφής της εφαρμογής μου, έφτασα στην Carla White αφού είχα διαβάσει το καταπληκτικό βιβλίο της. Με καθοδήγησε και με βοήθησε με τις συμβουλές της για την εφαρμογή. Καθώς εντοπίζαμε την εφαρμογή μου, χρειαζόμουν διορθωτές για κάθε γλώσσα για να βεβαιωθώ ότι οι μεταφράσεις (που γίνονται χρησιμοποιώντας τη Μετάφραση Google) είναι καλές και συγκεκριμένες για το περιβάλλον. Ο Pascal σχολίασε την ιστορία μου για το Medium, προσφέροντας τη βοήθειά του με τις γερμανικές μεταφράσεις. Επέστρεψα σε αυτόν και σε μια πολύ σύντομη ειδοποίηση, επεξεργάστηκε πραγματικά τις γερμανικές μου μεταφράσεις!Και πολλοί πιο ολοκληρωμένοι ξένοι προσέφεραν τη βοήθειά τους.

    Ένα σημαντικό κλειδί από αυτό θα ήταν: Οι άνθρωποι είναι πρόθυμοι να σας βοηθήσουν. Προσεγγίστε τους, είστε ειλικρινείς και θα σας βοηθήσουν με όποιο τρόπο μπορούν! :ΡΕ

  3. Τα σχόλια των χρηστών από νωρίς είναι εξαιρετικά κρίσιμα. Όχι μόνο σας ενθαρρύνουν οι ευγενικές λέξεις από τους θαυμαστές ή τους πιστούς σας, αλλά πολλοί από τους πρώτους χρήστες σας θα σας δώσουν ιδέες για δυνατότητες, βελτιώσεις στο σχεδιασμό και πολύ πιο πολύτιμα σχόλια. Ένα από τα λάθη που έκανα ήταν να δοκιμάσω πολύ αργά. Μεταφόρτωσα το build μου για δοκιμές TestFlight μόνο ~ 1 εβδομάδα πριν από την προγραμματισμένη κυκλοφορία όταν η εφαρμογή ήταν σχεδόν έτοιμη και δεν μπορούσα να κάνω σημαντικές αλλαγές. Αν είχα ζητήσει από τους χρήστες μου να ξεκινήσουν τις δοκιμές πριν από εβδομάδες, όταν είχα την κύρια διεπαφή, θα είχα λάβει πολλά σχόλια και θα το βελτιώσω. Και επανέλαβε ότι για κάθε σημαντικό χαρακτηριστικό, η εφαρμογή μου θα ήταν πολύ καλύτερη. Αρκετοί δοκιμαστές ανέφεραν πράγματα που θα μπορούσαν να διορθωθούν σε 2-3 ημέρες αν είχα στείλει το build για δοκιμή νωρίτερα. Έτσι, η συμβουλή μου σε όλους θα ήταν:Πάρτε την εφαρμογή σας στα χέρια των χρηστών σας και ζητήστε τους να το δοκιμάσουν το συντομότερο δυνατόν και να λάβετε σχόλια!

Μερικά χρήσιμα εργαλεία που χρησιμοποίησα

  1. AppLaunchPad για ταχύτερη δημιουργία πολλαπλών συνόλων στιγμιότυπων οθόνης (για πολλές τοπικές προσαρμογές).
  2. Κοκοαπόδες. SwiftyJSON και Alamofire για τη σύνταξη καλύτερου κώδικα δικτύωσης, Διαγράμματα για τη δημιουργία γραφημάτων τιμών. Υπάρχει ένα cocoapod για σχεδόν τα πάντα!
  3. Firebase για τον διακομιστή ειδοποιήσεων ώθησης και για τον διακομιστή προσωρινής αποθήκευσης για αποθήκευση τιμών κάθε 5 λεπτά για την ενημέρωση των γραφημάτων τιμών.
  4. Δύο API για τιμές: cryptowatch και CoinCap. Αυτό το API για συναλλαγματικές ισοτιμίες για μετατροπή.

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

Αν σας άρεσε να διαβάζετε αυτό και έχετε σχόλια ή σκέψεις για κοινή χρήση, μην διστάσετε να μου στείλετε email στο [email protected] Και αν σας αρέσει η εφαρμογή μου, μπορείτε να την κατεβάσετε από το App Store εδώ. :)