Nedavno pošteno pišem o Mediumu, dijeleći dragocjena znanja o dizajnu i razvoju koja sam stekao radom na svojoj prvoj aplikaciji Crypto Price Tracker koju sam upravo pokrenuo danas, 28. siječnja.
Htio sam podijeliti svoju priču o radu na ovoj aplikaciji od dana kada sam započeo do danas. Nadam se da će ovaj post pomoći i nadahnuti druge mlade programera (ili stvarno svakoga tko je zainteresiran za izradu tehnoloških proizvoda!) Da steknu vrijedne tehničke vještine, prepoznaju potrebe tržišta i izgrade sjajne proizvode svojim vještinama koje rješavaju te potrebe tržišta.
Malo pozadine: Ja sam 16-godišnjak. Digitalni dizajn i programiranje učim od svoje 13. godine. Bila sam najmlađa pripravnica u Salesforceu u Bangaloreu zimi 2016. godine.
Pohađao sam MIT Launch ljetni program u ljeto 2017. gdje smo moj tim i ja pokrenuli Universeaty. Tada sam se prvi put okušao u iOS aplikacijama i volio koliko je brže bilo stvarati opipljive proizvode i vidjeti rezultate svog rada prilikom izrade mobilnih aplikacija. Prenošenje mojih ideja u softver bilo je puno lakše i zabavnije!
Počeo sam učiti razvoj Swifta i iOS aplikacija s mrežnih tečajeva na Treehouseu, Udemyju, gledao sam videozapise na YouTubeu i vježbao izgradnju osnovnih aplikacija. To je postavilo moje temelje programiranja. Ozbiljnije i složenije aplikacije počeo sam graditi nakon nekoliko tjedana učenja i vježbanja.
Otprilike 20. studenog 2017. odlučio sam da želim raditi na aplikaciji za praćenje cijena kriptovaluta, upozorenjima i aplikaciji za upravljanje portfeljem. Ovdje sam podijelio malo priče o svojoj motivaciji. Nedavno sam shvatio da dijeljenje moje priče i nekih lekcija koje sam naučio na svom putu zaista pomaže drugima!
Početak rada
Bilo je teško započeti: neizvjesnost, nepoznate nepoznanice, stvari o kojima treba razmišljati i odluke koje treba donijeti. Nema pojma s čime početi i gdje. Ali znao sam da je moj prvi korak provođenje istraživanja tržišta kako bih točno znao što moja ciljna publika želi - značajke, dizajn i gotovo sve što bih izgradio u aplikaciji.
Objavio sam na Redditu, Facebook grupama, Quora i pitao nekoliko prijatelja koji su uloženi i zainteresirani za kripto. Dobio sam solidne povratne informacije o ideji i bio sam puno obrazovaniji o potrebama svojih ciljnih korisnika.
Sljedeći je korak bio dizajn aplikacije. Počeo sam s crtanjem dijagrama korisničkog toka i žičanih okvira. Zatim sam prešao na korištenje softvera za dizajn za izradu maketa i prototipa. Napisao sam drugačiju priču o dizajniranju mobilnih aplikacija od nule i podijelio sam slike svih faza dizajniranja Crypto Price Tracker aplikacije.
Krajnji rezultat ovog postupka bio je sljedeći:

Razvoj Crypto Price Trackera
Prilično sam se bojao doći do ove faze, jer sam bio (i još uvijek sam) početnik u programiranju. Nisam poznavao puno Swifta i nisam imao pojma kako sam, među mnogim drugim tehničkim preprekama, postavio poslužitelj za obavijesti. Morao sam toliko toga učiniti za aplikaciju s malo tehničkih vještina. Ali bio sam uvjeren da mogu shvatiti stvari i usput učiti dok gradim svaku značajku. I, unatrag, mogu reći da jesam :)
Počeo sam s uvozom svih dizajna u Xcode i postavljanjem neobrađene gradnje za svaki zaslon. Svoj posao kodiranja podijelio sam na temelju značajki koje su mi potrebne u aplikaciji. Dosta sam puta morao brisati stvari sa svojih specifikacija (i uređivati dizajne) jer mi se činilo da je potrebno puno vremena za razvoj (pogotovo ako se činilo da nude malo funkcionalnosti).
Napisao sam mrežni kôd za prikaz podataka iz API-ja koje sam koristio i izgradio glavno sučelje svoje aplikacije. Zatim sam prešao na značajku "Popis želja" u aplikaciji. Sada, da biste lokalno spremali podatke na korisnikov telefon, morate stvoriti Core Data modele - nešto s čime nikada prije nisam radio. I pojavilo se još tehničkih praznina i izazova.
Ali nastavio sam učiti. Kad bih nešto trebao, proguglao bih. Obično su za gotovo sve postojali korisni odgovori, isječci koda ili video vodiči. Kad god bih zapeo, zamolio bih StackOverflow ili poslao pomoć mentorima. Polako mi je postalo mnogo ugodnije skakati u nepoznate stvari.
Na kraju tri tjedna koliko sam proveo kodirajući aplikaciju, puno sam se poboljšao kao programer. Naučio sam koncepte i zapravo sam trebao vježbati gradeći pravu aplikaciju. Morao sam raditi s nizom zanimljivih iOS tehnologija, knjižnica i okvira.
Još se moram puno poboljšati kao programer. Moja se aplikacija ponekad učitava sporo. To nije najoptimiziranija ili najbrža aplikacija. Ali još uvijek mi je prilično drago što sam uspio izgraditi nešto korisno i vrijedno.
Sljedeći korak koji sam planirao bio je da lokaliziram svoju aplikaciju na 10 jezika. Mislio sam da je to lako jer moja aplikacija nije teška za tekst. Čovječe, pogriješio sam! Lokalizacija je za aplikacije vrlo dugotrajan postupak. Pišem zasebnu priču kako bih objasnio kako tehnički lokalizirati.
Na kraju 8 tjedana (od dana kada sam započeo istraživanje tržišta) u potpunosti sam osmislio i razvio aplikaciju koja je u stvarnom vremenu prikazivala cijene preko 1000+ kriptovaluta s 18 mjenjačnica u 32 fiat valute. Postojali su grafikoni cijena (koji su prikazivali povijesne cijene za jedan dan, 1 tjedan, 1 mjesec, 3 mjeseca i 1 godinu), upravljanje portfeljem, upozorenja na temelju vremena i praga. Lokaliziran je na 10 jezika. Također sam optimizirao svoju aplikaciju za iPhone X.
Nakon što je moja izrada bila spremna, sljedeći je korak bio pozvati korisnike da testiraju i daju povratne informacije o aplikaciji.
Testiranje i slanje aplikacije
Bio sam prilično ponosan na svoju aplikaciju i bio sam jako uzbuđen što sam je objavio na TestFlightu i pozvao sve svoje prijatelje i korisnike da je testiraju! Nakon dugog čekanja od dva dana, konačno je odobrena recenzija beta aplikacije. Pozvao sam svoje prijatelje da je testiraju i svidjela im se aplikacija. Svi su dijelili povratne informacije, ideje za značajke koje će se imati u budućim ažuriranjima i još mnogo toga. Aplikacija nije imala padova!
Izgradnja v1.0 bila je spremna za predaju. Mojih 100 snimki zaslona (5 snimki zaslona za iPhone 5,5 inča i 5 za iPhone 5,8 inča za svaki jezik) bilo je spremno, moji su metapodaci također lokalizirani i moj video pregled je završen.
Bilo je nekih neočekivanih izazova u prijenosu pregleda videozapisa jer je fps (kadrova u sekundi) bio previsok. Do ovog trenutka prihvatio sam neočekivane izazove i uspio sam se s njima učinkovito nositi. Uspio sam sve završiti i na vrijeme poslati aplikaciju na pregled.
Dva dana kasnije, u 4 sata ujutro, dobio sam e-poruku s odbijenicom.
To me jako zabrinulo. Toliko mi je misli proletjelo glavom prije nego što sam pročitao razloge odbijanja. Apple je odbacio aplikaciju jer dizajn nije izgledao dobro kada se gleda na iPadu. Nisam imao pojma da i aplikacije samo za iPhone moraju biti kompatibilne i s iPadima. U sljedećih nekoliko sati pročitao sam neke vodiče i popravio sva ograničenja i probleme s automatskim rasporedom, testirao sam aplikaciju na iPad simulatoru i uspjelo je. Ponovo sam poslao građu na pregled.
Jedan dan kasnije napokon sam dobio odobrenje! Bilo je olakšanje, a sada bih se mogao vratiti na proizvod. Dobio sam hrpu povratnih informacija i grešaka prijavljenih od testera. Napravio sam te male ispravke programskih pogrešaka i neke izmjene prijevoda te učitao konačnu verziju. Odobren je za samo 12 sati! Moja je aplikacija sada bila puno bolja i drago mi je što ju je toliko mnogo ljudi testiralo i prijavilo greške koje bi inače u recenzijama aplikacija ušli bijesni kupci.
U danima koji su prethodili lansiranju, sastavio sam ovu priču iz bilješki koje sam napravio i svog dnevnika kako bih mogao podijeliti lekcije sa svima.
Neke lekcije koje sam naučio
- Lokalizacija je izvrsna ideja. Do sada sam žalio zbog svoje odluke da lokaliziram svoju aplikaciju na 10 jezika. Napisao sam nekoliko odgovora na Quoru o tome kako mi je to najviše oduzimalo vrijeme za moju aplikaciju i ne bih savjetovao nijednog nezavisnog programera bez proračuna da ga preuzme za lokalizaciju. Ali sada se moje mišljenje promijenilo. Lokalizacija vaše aplikacije na 10–12 jezika pomoću Google Prevoditelja i lektoriranje prijatelja sjajan je način za dosezanje veće publike za vašu aplikaciju. Apple također više voli lokalizirane aplikacije. Ne možete uvijek sve ispraviti i lokalizirati sve moguće nizove. Ali možete dobiti 80% rezultata (tj. Tekst preveden) s 20% rada.
- Ljudi su vam puno spremniji pomoći nego što mislite. Jako sam zahvalan što imam brojne prijatelje i mentore koji su mi puno pomogli na ovom putu. Ali jednostavno sam se zapanjio kako mi je toliko nepoznatih ljudi odgovorilo kad sam im se obratio i pomogao. Vrlo rano na svom putu, kad sam upravo imao mali prototip glavnog sučelja svoje aplikacije, obratio sam se Carli White nakon što sam pročitao njezinu nevjerojatnu knjigu. Podučila me i pomogla mi svojim savjetima za aplikaciju. Dok sam lokalizirao svoju aplikaciju, trebali su mi lektori za svaki jezik kako bi bili sigurni da su prijevodi (učinjeni pomoću Google Prevoditelja) dobri i specifični za kontekst. Pascal je komentirao moju priču na Mediumu nudeći mu pomoć oko njemačkih prijevoda. Posegnuo sam za njim i u kratkom je roku stvarno uredio moje njemačke prijevode!I mnogi potpuni stranci ponudili su svoju pomoć.
Jedan od važnih ključnih pomaka iz ovoga bio bi: Ljudi su vam spremni pomoći. Obratite im se, budite iskreni i oni će vam pomoći na bilo koji način! : D
- Korisničke povratne informacije na samom početku vrlo su kritične. Ne samo da vas motiviraju ljubazne riječi vaših obožavatelja ili vjernika, već će vam mnogi rani korisnici dati ideje za značajke, poboljšanja dizajna i puno vrijednije povratne informacije. Jedna od pogrešaka koju sam napravio je testiranje vrlo kasno. Prenio sam svoju gradnju za testiranje TestFlight samo ~ 1 tjedan prije planiranog pokretanja kada je aplikacija bila prilično spremna i nisam mogao napraviti velike promjene. Da sam zamolio svoje korisnike da počnu testirati prije nekoliko tjedana kada sam upravo imao glavno sučelje, dobio bih puno povratnih informacija i poboljšao bih ga. I ponovio da bi za svaku glavnu značajku moja aplikacija bila puno bolja. Nemalo je testera spomenulo stvari koje bi se mogle popraviti za 2-3 dana da sam ranije poslao gradnju na testiranje. Tako bi moj savjet svima bio:Uzmite svoju aplikaciju u ruke svojih korisnika i neka je što prije testiraju i dobiju povratne informacije!
Neki korisni alati koje sam koristio
- AppLaunchPad za brže stvaranje više skupova snimki zaslona (za mnoge lokalizacije).
- Cocoapods. SwiftyJSON i Alamofire za pisanje boljeg mrežnog koda, Grafikoni za izradu grafikona cijena. Gotovo za sve postoji cocoapod!
- Firebase za poslužitelj push obavijesti i za poslužitelj predmemoriranja za pohranu cijena svakih 5 minuta radi ažuriranja grafikona cijena.
- Dva API-ja za cijene: cryptowatch i CoinCap. Ovaj API za tečajeve valuta za konverziju.
Osjećam se sjajno kad mogu podijeliti lekcije koje sam naučio i svoje putovanje s velikom publikom. Nadam se da ovo služi kao nadahnuće drugim ljudima da isprobaju učenje programiranja i izradu aplikacija ili stvarno svega što ih zanima. Osobno ću započeti s učenjem ML-a i znanosti o znanosti nakon moje aplikacije - zato nemojte biti boji se eksperimentiranja s različitim poljima! Isprobajte nešto teško i nešto zbog čega vam je neugodno. Stvari koje je najteže učiniti na kraju su obično najzanimljivije i najisplativije. :)
Ako vam se svidjelo ovo čitati i imate povratne informacije ili bilo kakve misli za dijeljenje, ne ustručavajte se poslati mi e-poštu na [email protected]. A ako vam se sviđa moja aplikacija, ovdje je možete preuzeti iz App Storea. :)