I dag lancerede jeg min første mobilapp. Her er hvad jeg lærte

Jeg har skrevet en hel del på Medium for nylig og delte værdifuld design- og udviklingsviden, jeg fik ved at arbejde på min første app, Crypto Price Tracker, som jeg lige lancerede i dag, den 28. januar.

Jeg ville dele min historie om at arbejde på denne app fra den dag, jeg startede og frem til i dag. Jeg håber, dette indlæg hjælper og inspirerer andre unge programmører (eller virkelig enhver, der er interesseret i at fremstille teknologiske produkter!) Til at tilegne sig værdifulde tekniske færdigheder, identificere markedsbehov, opbygge gode produkter med deres færdigheder, der løser disse markedsbehov.

Lidt baggrund for mig: Jeg er en 16-årig hjemmeunderviser. Jeg har lært digitalt design og programmering siden jeg var 13. Jeg var den yngste praktikant hos Salesforce i Bangalore vinteren 2016.

Jeg deltog i MIT Launch sommerprogram i 2017 sommer, hvor mit team og jeg lancerede Universeaty. Det var første gang, jeg prøvede hænderne på iOS-apps og elskede, hvor meget hurtigere det var at oprette håndgribelige produkter og se resultaterne af mit arbejde, når jeg byggede mobile apps. At bringe mine ideer til software var meget lettere og sjovere!

Jeg begyndte at lære Swift og iOS-appudvikling fra online-kurser på Treehouse, Udemy, så videoer på YouTube og øvede mig på at bygge grundlæggende apps. Det lagde mine programmeringsfundamenter. Jeg begyndte at opbygge mere seriøse og komplekse apps efter et par ugers læring og praksis.

Omkring 20. november 2017 besluttede jeg, at jeg ville arbejde på en kryptovaluta-pris tracker, alarmer og porteføljestyrings-app. Jeg har delt lidt af historien om min motivation her. Jeg indså for nylig, at det at dele min historie og nogle af de lektioner, jeg lærte under min rejse, virkelig er nyttigt for andre!

Kom godt i gang

Det var svært at komme i gang: usikkerhed, ukendte ukendte, ting at tænke på og beslutninger at tage. Ingen anelse om hvad man skal starte med og hvor. Men jeg vidste, at mit første skridt var at gennemføre markedsundersøgelser for at vide nøjagtigt, hvad min målgruppe ønskede - funktionerne, designet og næsten alt, hvad jeg ville bygge i appen.

Jeg postede på Reddit, Facebook-grupper, Quora og spurgte et par venner, der var investeret og interesseret i kryptoer. Jeg fik en solid feedback på ideen og var meget mere uddannet om mine målbrugeres behov.

Det næste trin var at designe appen. Jeg startede med at tegne brugerflowdiagrammer og trådrammer. Derefter gik jeg over til at bruge designsoftware til at skabe mock-ups og en prototype. Jeg har skrevet en anden historie om design af mobile apps fra bunden, og jeg har delt billeder af hvert designstadium i Crypto Price Tracker-appen.

Og slutresultatet af denne proces var dette:

Udvikling af Crypto Price Tracker

Jeg var temmelig bange for at nå dette trin, fordi jeg var (og stadig er) en begynder med programmering. Jeg kendte ikke meget Swift og havde ingen anelse om, hvordan jeg ville oprette serveren til underretninger blandt mange andre tekniske forhindringer. Jeg havde så mange ting at gøre til appen med ringe tekniske færdigheder. Men jeg var overbevist om, at jeg kunne finde ud af tingene og lære undervejs, da jeg byggede hver funktion. Og i bakspejlet kan jeg sige, at jeg gjorde det :)

Jeg startede med at importere alle designs i Xcode og indstille en rå build til hver skærm. Jeg delte mit kodningsarbejde ud fra funktioner, jeg havde brug for i appen. Et par gange var jeg nødt til at skrabe ting fra min spec (og redigere design), fordi de syntes tidskrævende at udvikle (især hvis det så ud til, at de ville tilbyde lidt funktionalitet).

Jeg skrev netværkskoden for at få vist data fra de API'er, jeg brugte, og byggede hovedapparatet til min app. Derefter gik jeg videre til "ønskeseddel" -funktionen i appen. For at gemme data lokalt i en brugers telefon skal du oprette Core Data-modeller - noget jeg aldrig havde arbejdet med før. Og flere tekniske huller og udfordringer opstod.

Men jeg fortsatte med at lære. Når jeg havde brug for noget, ville jeg Google det. Normalt var der nyttige svar, kodestykker eller video-tutorials til næsten alt. Når jeg sidder fast, vil jeg bede om StackOverflow eller e-maile mine mentorer om hjælp. Langsomt begyndte jeg at blive meget mere behagelig at hoppe ind i ukendte ting.

I slutningen af ​​de tre uger, hvor jeg brugte kodning af appen, forbedrede jeg mig meget som programmør. Jeg lærte koncepter og fik faktisk øvet mig ved at bygge en rigtig app. Jeg kom til at arbejde med en række interessante iOS-teknologier, biblioteker og rammer.

Jeg har stadig brug for at forbedre mig meget som udvikler. Min app indlæses undertiden langsomt. Det er ikke den mest optimerede eller den hurtigste app derude. Men jeg er stadig ret glad for, at jeg var i stand til at bygge noget nyttigt og værdifuldt.

Det næste trin, jeg havde planlagt, var at jeg ville lokalisere min app på 10 sprog. Jeg troede, det var let, da min app ikke er teksttung. Dreng, jeg tog fejl! Lokalisering er en meget tidskrævende proces for apps. Jeg skriver en separat historie for at forklare, hvordan man lokaliserer teknisk.

I slutningen af ​​8 uger (fra den dag, jeg startede markedsundersøgelser), havde jeg designet og udviklet en app, der viste realtidspriser på over 1000+ kryptokurver fra 18 børser i 32 fiat-valutaer. Der var prisgrafer (viser historiske priser fra 1 dag, 1 uge, 1 måned, 3 måneder og 1 år), porteføljestyring, tidsbaserede og tærskelbaserede alarmer. Det blev lokaliseret på 10 sprog. Jeg har også optimeret min app til iPhone X.

Når min build var klar, var det næste trin at invitere brugere til at teste og give feedback på appen.

Test og indsendelse af appen

Jeg var ret stolt af min app og var meget begejstret for at lægge den derude på TestFlight og invitere alle mine venner og brugere til at teste den! Efter en lang ventetid på to dage blev beta-app-gennemgangen endelig godkendt. Jeg inviterede mine venner til at teste det, og de elskede appen. Alle delte feedback, ideer til funktioner at have i fremtidige opdateringer og meget mere. Appen havde nul nedbrud!

V1.0-bygningen var klar til indsendelse. Mine 100 skærmbilleder (5 skærmbilleder til iPhone 5,5 tommer og 5 til iPhone 5,8 tommer for hvert sprog) var klar, mine metadata var også lokaliseret, og min videoeksempel var færdig.

Der var nogle uventede udfordringer ved at uploade videoeksemplet, fordi fps (frames per sekund) var for højt. På dette tidspunkt var jeg vokset til at omfavne uventede udfordringer og var i stand til at håndtere dem effektivt. Jeg var i stand til at afslutte alt og indsende appen til gennemgang til tiden.

To dage senere, kl. 4, fik jeg afvisnings-e-mailen.

Dette gjorde mig ekstremt ængstelig. Så mange tanker skyndte mig gennem mit hoved, før jeg læste grundene til afvisning. Apple afviste appen, fordi designet ikke så godt ud, når det blev set på iPad. Jeg havde ingen anelse om, at iPhone-eneste apps også skulle være kompatible med iPads. I de næste par timer læste jeg nogle vejledninger og løste alle begrænsninger og problemer med automatisk layout, testede appen på iPad-simulatoren, og det fungerede. Jeg sendte bygningen til gennemgang igen.

En dag senere fik jeg endelig godkendelsen! Det var en lettelse, og nu kunne jeg fokusere tilbage på produktet. Jeg havde fået masser af feedback og fejl rapporteret fra testere. Jeg lavede de små fejlrettelser og nogle oversættelsesredigeringer og uploadede den endelige version. Det blev godkendt på bare 12 timer! Min app var nu meget bedre, og jeg er glad for, at så mange mennesker testede den og rapporterede fejl, der ellers ville være gået i appanmeldelser af vrede kunder.

I dagene op til lanceringen sammensatte jeg denne historie fra de noter, jeg lavede, og min daglige dagbog, så jeg kunne dele lektionerne med alle.

Nogle lektioner jeg lærte

  1. Lokalisering er en god idé. Indtil nu fortryder jeg min beslutning om at lokalisere min app på 10 sprog. Jeg havde skrevet nogle Quora-svar om, hvordan det var den mest tidskrævende ting, jeg gjorde for min app, og jeg ville ikke råde nogen indieudvikler uden budgettet til at outsource for at lokalisere. Men nu er min mening ændret. Lokalisering af din app på 10-12 sprog ved hjælp af Google Translate og få venner korrekturlæsning er en fantastisk måde at nå et større publikum til din app. Apple elsker også mere lokaliserede apps. Du kan ikke altid få alt rigtigt og enhver mulig streng lokaliseret. Men du kan få 80% af resultaterne (dvs. oversat tekst) med 20% af arbejdet.
  2. Folk er meget mere villige til at hjælpe dig, end du tror. Jeg er meget taknemmelig for at have et antal venner og mentorer, der hjalp mig meget på denne rejse. Men jeg var simpelthen forbløffet over, hvordan så mange fremmede reagerede på mig, da jeg nåede ud til dem og hjalp mig. Meget tidligt på min rejse, da jeg lige havde en lille prototype af hovedgrænsefladen til min app, rakte jeg ud til Carla White, efter at jeg havde læst hendes fantastiske bog. Hun vejledte mig og hjalp mig med sit råd til appen. Da jeg lokaliserede min app, havde jeg brug for korrekturlæsere for hvert sprog for at sikre, at oversættelserne (udført ved hjælp af Google Translate) er gode og kontekstspecifikke. Pascal kommenterede min historie om Medium, der tilbød sin hjælp til tyske oversættelser. Jeg nåede ud til ham og med en meget kort varsel redigerede han virkelig mine tyske oversættelser!Og mange flere komplette fremmede tilbød deres hjælp.

    En vigtig vigtig takeaway fra dette ville være: Folk er villige til at hjælpe dig. Nå ud til dem, vær oprigtig, og de vil hjælpe dig på enhver måde, de kan! : D

  3. Brugerfeedback tidligt er superkritisk. Ikke bare motiverer de venlige ord fra dine fans eller troende dig, men mange af dine tidlige brugere vil give dig ideer til funktioner, til designforbedringer og meget mere værdifuld feedback. En af de fejl, jeg lavede, var at teste meget sent. Jeg uploadede min build til TestFlight-test kun ~ 1 uge før den planlagte lancering, da appen var stort set klar, og jeg ikke kunne foretage store ændringer. Hvis jeg havde bedt mine brugere om at starte test for uger siden, da jeg lige havde hovedgrænsefladen, ville jeg have fået masser af feedback og ville have forbedret den. Og det gentog, at for hver større funktion ville min app have været meget bedre. En hel del testere har nævnt ting, der kunne have været rettet på 2-3 dage, hvis jeg havde sendt buildet ud til test tidligere. Så mit råd til alle ville være:Få din app i hænderne på dine brugere, og få dem til at teste den så hurtigt som muligt og få feedback!

Nogle nyttige værktøjer, jeg brugte

  1. AppLaunchPad til hurtigere oprettelse af flere sæt skærmbilleder (for mange lokaliseringer).
  2. Cocoapods. SwiftyJSON og Alamofire til at skrive bedre netværkskode, Diagrammer til oprettelse af prisgrafer. Der er en cocoapod til næsten alt!
  3. Firebase til push-notifikationsserveren og til caching-serveren til at gemme priser hver 5. minut for at opdatere prisgrafene.
  4. To API'er til priser: cryptowatch og CoinCap. Denne API til valutakurser til konvertering.

Det føles dejligt at kunne dele de lektioner, jeg har lært, og min rejse med et stort publikum. Jeg håber dette tjener som en inspiration for andre mennesker til at prøve at lære programmering og opbygge apps eller virkelig noget, de er interesseret i. Jeg vil personligt starte med at lære ML og datalogi efter min app - så vær ikke bange for at eksperimentere med forskellige felter! Prøv noget vanskeligt og noget, der gør dig ubehagelig. De ting, der er sværest at gøre, er normalt de mest interessante og givende i sidste ende. :)

Hvis du kunne lide at læse dette og har feedback eller tanker, du kan dele, så tøv ikke med at e-maile mig på [email protected] Og hvis du kan lide min app, kan du downloade den fra App Store her. :)