Ma elindítottam az első mobilalkalmazásomat. Itt van, amit megtanultam

Nemrég írtam egy jó darabot a Medium-on, megosztva értékes tervezési és fejlesztési ismereteimet, amelyeket az első alkalmazásom, a Crypto Price Tracker munkáján szereztem, amelyet most indítottam el, január 28-án.

Meg akartam osztani az alkalmazással kapcsolatos történetemet a kezdetektől a mai napig. Remélem, hogy ez a bejegyzés segít és inspirál más fiatal programozókat (vagy bárkit, aki érdeklődik a technológiai termékek gyártása iránt!) Értékes technikai készségek elsajátítására, a piaci igények felismerésére, a készségekkel kiváló termékek felépítésére, amelyek megoldják ezeket a piaci igényeket.

Egy kis háttér rám: 16 éves otthoni tanuló vagyok. 13 éves korom óta tanulok digitális tervezést és programozást. 2016 telén voltam a legfiatalabb gyakornok a Bangalore-i Salesforce-nál.

2017 nyarán vettem részt az MIT Launch nyári programján, ahol csapatommal elindítottuk az Universeaty-t. Ez volt az első alkalom, hogy kipróbáltam a kezeimet az iOS alkalmazásokban, és szerettem, hogy mennyivel gyorsabban tudtam kézzelfogható termékeket építeni, és mobilalkalmazások készítésekor láttam munkám eredményeit. Sokkal könnyebb és szórakoztatóbb elhozni az ötleteimet a szoftverekhez!

A Swift és az iOS alkalmazások fejlesztését a Treehouse (Udemy) online tanfolyamain kezdtem el tanulni, videókat néztem a YouTube-on és gyakoroltam az alapvető alkalmazások építését. Ez fektette le a programozási alapjaimat. Néhány hét tanulás és gyakorlat után komolyabb és összetettebb alkalmazásokat kezdtem el építeni.

2017. november 20. körül úgy döntöttem, hogy egy kriptovaluta árkövetővel, riasztásokkal és portfóliókezelő alkalmazással szeretnék dolgozni. Itt megosztottam egy kicsit a motivációmról szóló történetet. Nemrég rájöttem, hogy a történetem és az utazás során tanult néhány tanulságom megosztása valóban hasznos másoknak!

Elkezdeni

Nehéz volt elindulni: bizonytalanság, ismeretlen ismeretlenek, gondolkodni kívánó dolgok és döntések. Semmi fogalom, hogy mit kezdjek és hol. De tudtam, hogy az első lépésem egy piackutatás elvégzése volt, hogy pontosan megtudjam, mit akar a célközönségem - a funkciókat, a kialakítást és szinte mindent, amit az alkalmazásban építenék.

Feltettem a Reddit-re, a Facebook-csoportokra, a Quora-ra, és megkérdeztem néhány barátot, akiket befektettek és érdekeltek a kriptók. Szilárd visszajelzést kaptam az ötletről, és sokkal képzettebb voltam a célfelhasználóim igényeivel kapcsolatban.

A következő lépés az alkalmazás megtervezése volt. A felhasználói folyamatábrák és drótvázak rajzával kezdtem. Ezután áttértem a tervező szoftver használatára makettek és prototípus készítésére. Más történetet írtam a mobilalkalmazások nulláról történő tervezéséről, és megosztottam képeket a Crypto Price Tracker alkalmazás minden tervezési szakaszáról.

Ennek a folyamatnak a végeredménye a következő volt:

A Crypto Price Tracker fejlesztése

Nagyon féltem, hogy eljutok ebbe a szakaszba, mert programozási kezdő voltam (és vagyok még mindig). Nem ismertem sok Swiftet, és fogalmam sem volt, hogyan állítsam be a kiszolgálót az értesítésekhez, sok egyéb technikai akadály mellett. Annyi dolgom volt az alkalmazásért, kevés technikai hozzáértéssel. De abban bíztam, hogy az egyes funkciók építésekor kitalálhatom a dolgokat és megtanulhatom. És utólag azt mondhatom, hogy megtettem :)

Azzal kezdtem, hogy az összes mintát importáltam Xcode-ba, és minden képernyőhöz beállítottam egy nyers összeállítást. A kódolási munkámat az alkalmazásban szükséges funkciók alapján osztottam fel. Sokszor le kellett vonnom a dolgokat a specifikációimról (és szerkeszteni a terveket), mert időigényesnek tűnt a fejlesztés (főleg, ha úgy tűnt, hogy kevés funkcionalitást kínálnak).

A hálózati kódot az általam használt API-k adatainak megjelenítésére írtam, és elkészítettem az alkalmazásom fő felületét. Ezután átkerültem az alkalmazás „Wishlist” funkciójára. Az adatok helyi mentéséhez a felhasználó telefonjában létre kell hoznia Core Data modelleket - amivel még soha nem dolgoztam. És újabb technikai hiányosságok és kihívások merültek fel.

De tovább tanultam. Amikor szükségem volt valamire, gugliztam. Általában szinte mindenre hasznos válaszok, kódrészletek vagy oktatóvideók voltak. Valahányszor elakadtam, a StackOverflow-t kértem, vagy e-mailben kértem segítséget mentoraimtól. Lassan kezdtem sokkal kényelmesebbé válni, és ismeretlen dolgokba ugrottam.

Az alkalmazás kódolásával töltött három hét végén sokat fejlődtem programozóként. Megtanultam fogalmakat, és egy igazi alkalmazás elkészítésével gyakorolhattam a gyakorlatban. Számos érdekes iOS technológiával, könyvtárral és keretrendszerrel dolgoztam.

Fejlesztőként még sokat kell fejlődnöm. Az alkalmazásom néha lassan töltődik be. Ez nem a legoptimalizáltabb vagy a leggyorsabb alkalmazás. De még mindig nagyon örülök, hogy valami hasznosat és értékeset fel tudtam építeni.

A következő lépésként azt terveztem, hogy lokalizálom az alkalmazásomat 10 nyelven. Azt hittem, hogy könnyű, mivel az alkalmazásom nem nehéz szövegekkel. Fiú, tévedtem! A lokalizáció nagyon időigényes folyamat az alkalmazások számára. Külön történetet írok, hogy elmagyarázzam a technikai lokalizációt.

8 hét végén (attól a naptól kezdve, hogy elkezdtem a piackutatást) teljesen megterveztem és kifejlesztettem egy olyan alkalmazást, amely több mint 1000+ kriptovaluta valós idejű árait mutatta be 18 tőzsdéből 32 fiat pénznemben. Voltak árdiagramok (1 nap, 1 hét, 1 hónap, 3 hónap és 1 év történelmi árait mutatva), portfóliókezelés, időalapú és küszöbalapú figyelmeztetések. 10 nyelven lokalizálták. Az alkalmazásomat az iPhone X-hez is optimalizáltam.

Miután elkészült a buildem, a következő lépés az volt, hogy meghívta a felhasználókat, hogy teszteljék és visszajelezzenek az alkalmazásról.

Az alkalmazás tesztelése és benyújtása

Nagyon büszke voltam az alkalmazásomra, és nagyon izgatott voltam, hogy kitettem a TestFlight-ra, és meghívtam az összes barátomat és felhasználót, hogy teszteljék! Hosszú két napos várakozás után végül jóváhagyták a béta alkalmazás felülvizsgálatát. Meghívtam barátaimat, hogy teszteljék, és imádták az alkalmazást. Mindannyian megosztottak visszajelzéseket, ötleteket a jövőbeni frissítésekhez szükséges funkciókról és még sok minden mást. Az alkalmazásnak nem volt összeomlása!

A v1.0 összeállítás készen állt a beküldésre. 100 képernyőképem (5 képernyőkép iPhone 5,5 hüvelykhez és 5 iPhone 5,8 hüvelykes nyelvhez) készen voltak, a metaadataim is lokalizálódtak, és elkészült a videó előnézetem.

Váratlan kihívások merültek fel a videó előnézete feltöltésekor, mert az fps (képkocka / másodperc) túl magas volt. Ekkorra már felkészültem a váratlan kihívásokra, és képes voltam hatékonyan kezelni őket. Sikerült mindent befejeznem és időben benyújtani az alkalmazást felülvizsgálatra.

Két nappal később, hajnali 4-kor kaptam az elutasító e-mailt.

Ez rendkívül aggasztóvá tett. Annyi gondolat rohant a fejemben, mielőtt elolvastam volna az elutasítás okait. Az Apple elutasította az alkalmazást, mert a dizájn nem nézett ki jól iPaden nézve. Fogalmam sem volt, hogy a csak iPhone-nak szánt alkalmazásoknak kompatibiliseknek kell lenniük az iPad-ekkel is. A következő órákban elolvastam néhány útmutatót, és kijavítottam az összes korlátozást és az automatikus elrendezéssel kapcsolatos problémákat, teszteltem az alkalmazást iPad szimulátoron, és működött. Ismét átküldtem felülvizsgálatra az építést.

Egy nappal később végre megkaptam a jóváhagyást! Megkönnyebbülés volt, és most újra a termékre koncentrálhattam. Rengeteg visszajelzést és hibát kaptam a tesztelőktől. Elvégeztem azokat a kis hibajavításokat és néhány fordítást szerkesztettem, és feltöltöttem a végső buildet. Mindössze 12 óra alatt elfogadták! Az alkalmazásom sokkal jobb volt, és örülök, hogy olyan sokan tesztelték és jelentették azokat a hibákat, amelyek egyébként a dühös ügyfelek által az alkalmazás-áttekintésekbe bekerültek volna.

A bevezetés előtti napokban összeállítottam ezt a történetet az általam készített jegyzetekből és a napi folyóiratomból, hogy mindenkivel megoszthassam a leckéket.

Néhány tanulság, amit megtanultam

  1. A lokalizáció remek ötlet. Eddig sajnáltam azt a döntést, hogy az alkalmazást 10 nyelven lokalizáltam. Írtam néhány Quora-választ arról, hogy ez volt a legidőigényesebb dolog, amit az alkalmazásommal tettem, és a költségvetés nélküli indie-fejlesztőknek nem tanácsolom a lokalizáció kiszervezését. De most megváltozott a véleményem. Alkalmazásod lokalizálása 10–12 nyelven a Google Fordítóval és a barátok lektorálása lehetővé teszi, hogy nagyobb közönséget érj el az alkalmazásoddal. Az Apple a lokalizált alkalmazásokat is jobban szereti. Nem mindig lehet mindent rendben és minden lehetséges karakterláncot lokalizálni. De az eredmények 80% -át (azaz lefordított szöveget) a munka 20% -ával megszerezheti.
  2. Az emberek sokkal szívesebben segítenek neked, mint gondolnád. Nagyon hálás vagyok, hogy számos barátom és mentorom van, akik sokat segítettek nekem ezen az úton. De egyszerűen csodálkoztam, hogy ennyi idegen válaszolt rám, amikor hozzájuk nyúltam és segítettem. Utazásom nagyon korai szakaszában, amikor még volt egy kis prototípusom az alkalmazásom fő felületéről, elértem Carla White-t, miután elolvastam csodálatos könyvét. Mentorált és segített az alkalmazással kapcsolatos tanácsaival. Ahogy lokalizáltam az alkalmazásomat, minden nyelvhez korrektorokra volt szükségem, hogy megbizonyosodjak arról, hogy a fordítások (a Google Fordító segítségével készültek) és kontextus-specifikusak-e. Pascal kommentálta a Medium történetét, felajánlva segítségét a német fordításokhoz. Megkerestem őt, és nagyon rövid időn belül valóban szerkesztette a német fordításomat!És még sok teljesen idegen ajánlotta fel segítségét.

    Ennek egyik fontos kulcsa a következő lenne: Az emberek készek segíteni. Nyúlj hozzájuk, légy őszinte, és minden lehetséges módon segítenek neked! : D

  3. A korai felhasználói visszajelzések rendkívül kritikusak. Nemcsak rajongói vagy hívői kedves szavai motiválják Önt, hanem sok korai felhasználó ötleteket ad a funkciókról, a fejlesztések fejlesztéséről és sokkal értékesebb visszajelzésekről. Az egyik hibám, amit nagyon későn teszteltem. Csak 1 héttel töltöttem fel a buildemet a TestFlight tesztelésére a tervezett indítás előtt, amikor az alkalmazás nagyjából készen állt, és nem tudtam nagyobb változásokat végrehajtani. Ha hetekkel ezelőtt megkértem a felhasználóimat, hogy kezdjék meg a tesztelést, amikor éppen megvan a fő kezelőfelületem, rengeteg visszajelzést kaptam, és javítottam volna rajta. És megismételte, hogy minden fontosabb funkció esetében az alkalmazásom sokkal jobb lett volna. Jó néhány tesztelő megemlített olyan dolgokat, amelyeket 2-3 nap alatt meg lehetett volna javítani, ha korábban elküldtem volna az buildet tesztelésre. Tehát mindenkinek a következő tanácsom lenne:Vigye az alkalmazását a felhasználók kezébe, és tesztelje őket, és kapjon visszajelzést!

Néhány hasznos eszköz, amit használtam

  1. AppLaunchPad több képernyőkép készítéséhez (sok lokalizációhoz) gyorsabban.
  2. Cocoapods. SwiftyJSON és Alamofire jobb hálózati kód megírásához, diagramok árgrafikonok készítéséhez. Szinte mindenhez tartozik egy kakas!
  3. A Firebase a push értesítések kiszolgálójához és a gyorsítótár-kiszolgálóhoz, hogy 5 percenként tárolja az árakat az árdiagramok frissítéséhez.
  4. Két API az árakhoz: cryptowatch és CoinCap. Ez az API az átváltási árfolyamokhoz.

Nagyszerű érzés, hogy nagy hallgatósággal tudom megosztani a tanultakat és az utamat. Remélem, hogy ez inspirációként szolgál más emberek számára, hogy kipróbálhassák a programozást és az alkalmazások felépítését, vagy bármi mást, ami érdekli őket. Én személy szerint az MLM és az adattudomány tanulásával kezdem az alkalmazásom után - tehát ne fél a különböző területeken történő kísérletezéstől! Próbáljon ki valami nehéz dolgot, és valamit, ami kényelmetlenné tesz. A legnehezebben elvégezhető dolgok általában a legérdekesebbek és a leghálásabbak. :)

Ha tetszett olvasni, és visszajelzései vagy bármilyen gondolata van megosztani, ne habozzon, írjon nekem e-mailt a [email protected] címre. És ha tetszik az alkalmazásom, itt letöltheti az App Store-ból. :)