Ja buv vidpovidaľnym za stvorennja blyźko 6 serjoznyh startapiv MVP z nulja i blyźko 5 domašnih projektiv. Dejaki z nyh projšly čudovo, a dejaki zaznaly nevdači šče do zapusku. Moї pomylky zmusyly mene sformuvaty tverdu dumku pro te, jaki tehnologiї ja hoču vykorystovuvaty u svojemu nastupnomu MVP, i ja virju, ščo ce jedyna pravyľna tehnologija, jaka ne maje gidnyh aľternatyv.
KPIs
Perš niž perehodyty do peremožciv, my povynni vyznačyty kryteriї peremogy. My pracjujemo nad stvorennjam MVP-startapu. Ce označaje, ščo švydkisť rozrobky ta kom’juniti je osnovnymy KPI. Nas ne cikavyť jakisť movy. Nam takož ne važlyvo naskiľky vona innovacijna. Nam ne važlyvo naskiľky vona masštabovana. Ja rozumiju, ščo vy hočete maty možlyvisť obrobljaty miľjony korystuvačiv za sekundu i, povirte meni, z sučasnymy arhitekturnymy stekamy buď-jaka mova može ce robyty, ale riznycja bude v cini. I koly vy stavyte svoїm osnovnym KPI “Vartisť arhitektury”, todi pogovorimo pro її optymizaciju. Zazvyčaj “Vartisť arhitektury” i “Švydkisť dostavky” — ce dosyť protyležni KPI. Ne pomyliťsja ta oberiť pravyľni KPI dlja MVP.
Otže, naš osnovnyj KPI —”Švydkisť dostavky”, a kryteriї, za jakymy my vymirjujemo movu, —”švydkisť rozvytku” ta “spiľnota”.
Movy
Ce bude zaležaty vid togo, jake rišennja vy stvorjujete, ale v 99% vypadkiv vy budete vykorystovuvaty JS na frontendi. Jakščo vy hočete stvoryty WEB-dodatok, JS — jedynyj variant. Jakščo vy hočete stvoryty mobiľnyj dodatok, vy možete vykorystovuvaty rišennja na osnovi JS za dopomogoju React Native, rišennja na osnovi Dart za dopomogoju Flutter abo natyvnyj dodatok za dopomogoju Swift i Kotlin. Stvorennja natyvnogo dodatku vymagatyme vid vas stvorennja 2 okremyh dodatkiv dlja 2 platform, ščo zanadto dovgo dlja startapu. Flutter vs React Native —ce svojeridne zmagannja memiv. U mene buv dosvid vykorystannja oboh, i React Native peremig, tomu ščo u ńogo biľše rozrobnykiv, biľše bibliotek i prostiša kodova baza. Česno kažučy, ja nikoly ne stvorjuvav desktopnyh dodatkiv i navrjad čy možu ujavyty, ščo htoś zahoče stvoryty desktopnyj dodatok u 2023 roci, ale naviť jakščo vy ce zrobyte, vy, jmovirno, zahočete, ščob vin pracjuvav na vsih operacijnyh systemah, tomu vy, skoriš za vse, zahočete vykorystovuvaty Electron, jakyj, znovu ž taky, vykorystovuje JS.
Otže, ščo b vy ne robyly, vy budete vykorystovuvaty JS na frontendi.
Z bekendom trohy cikaviše, tomu ščo u nas je 2 kandydaty: JS ta Python. Biľše ne isnuje žodnoї movy dlja stvorennja bekendu dlja startapu MVP. Ni Java, ni Golang, ni Rust. Oś čomu cja stattja tak nazyvajeťsja. Ale, dozvoľte meni vyslovyty svoju dumku. I JS, i Python vvažajuťsja najprostišymy movamy u sviti. Vony obydvi majuť najbiľšu kiľkisť rozrobnykiv i najbiľšu kiľkisť bibliotek, tomu vony je bezzaperečnymy peremožcjamy za našymy kryterijamy.
Teper je proste derevo rišeń, jake vy možete vykorystovuvaty dlja vyboru miž nymy: jakščo vy budujete startap, pov’jazanyj z danymy, abo planujete navčaty vlasnyj AI, abo stvorjujete skrapper — vykorystovujte Python. U vsih inšyh vypadkah vykorystovujte JS.
Pid startapom, pov’jazanym z danymy, ja maju na uvazi, ščo ce vaša osnovna točka prodažu. Jakščo vy stvorjujete marketplejs dlja prodažu budynkiv i hočete maty možlyvisť analizuvaty ciny na nyh — ce ne startap, pov’jazanyj z danymy. Jakščo vy stvorjujete bota, jakyj skanuje vsi rynky neruhomosti ta nadaje vam dostup do agregovanyh danyh čerez čat zi štučnym intelektom — ce startap, pov’jazanyj z danymy.
Jakščo vaš startap pov’jazanyj z danymy, vykorystovujte Python, u vsih inšyh vypadkah —JS.
Čomu JS u vsih inšyh vypadkah? Perevagy, jaki daje vam infrastruktura z odnijeju movoju, velyčezni. Buď-jakyj z vašyh bekend/frontend rozrobnykiv teper staje povnocinnym stekom. Full-stack rozrobnyk —ce jedynyj rozrobnyk, jakogo vam potribno maty dlja startapu. Vam ne potribni specialisty, vam potribni universaly, jaki možuť vporatysja z usim. JS — ideaľna mova v ćomu vypadku.
Krim togo, vy možete obminjuvatysja strukturamy danyh i kodom miž bekendom i frontendom za dopomogoju spiľnoї biblioteky. Ce ekonomyť bagato času, tomu ščo teper, koly vy vyznačyly DTO, front- i bekend-versiї znajuť pro ce. Teper vy takož možete narešti maty povnu uzgodženisť vašyh danyh i logiky.
Zvyčajno, JS ne ideaľnyj, i ce trohy smišno, koly sprava dohodyť do zminy kodu, jakyj vy napysaly. A vy hočete zminyty kod. Vy hočete robyty zvedennja, i vy hočete povtorno vykorystovuvaty svij kod pid čas zvedennja. Oś čomu isnuje TS. TypeScript (TS) — ce rozšyrennja JS, jake dozvoljaje dodavaty v movu strict types. Ujaviť sobi, ščo ce syn JS ta C#. Z TS vy otrymujete potužnisť C# razom z prostotoju JS. Potužna kombinacija, jaka robyť vaš JS stek masštabovanym. 100 rozrobnykiv možuť pracjuvaty nad vašym kodom, i vsi vony buduť rozumity kod i zmožuť pidtrymuvaty jogo zavdjaky typam.
U 2023 roci bude pryjnjato vykorystovuvaty TS. Jakščo vy planujete vykorystovuvaty JS, vykorystovujte TS.
Frejmvorky
Pry vykorystanni TS framework stack prostyj i ne potrebuje komentariv:
- WEB – React + Redux Toolkit OR Next.JS
- Mobile – React Native + Redux Toolkit
- Desktop – Electron
- Backend – Nest.JS
Vy možete skazaty, ščo Svelte abo Vue.js solodšyj, ale todi ja skažu, ščo vam poščastylo znajty rozrobnykiv, jaki jogo pidtrymujuť. Vony je, ale vy točno ne zahočete skorotyty 90% rynku rozrobnykiv, obravšy jakyjś dyvnyj unikaľnyj frejmvork abo tehnologiju.
Ja ljublju Nest.JS čerez arhitekturu, jaku vin zmušuje vas vykorystovuvaty. Vam ne potriben stupiń CS, arhitektory rišeń ta UML-diagramy, ščob pobuduvaty dyvovyžnu arhitekturu bekendu, vam potriben lyše Nest.JS. Koly ja počynav svij projekt na Nest.JS, ja prosto pročytav vsju dokumentaciju, i pislja ćogo u mene ne vynyklo žodnyh problem z kodom. Zvyčajno, my takož vykorystovuvaly TS, litery, reteľno kontroljuvaly zaležnosti, pysaly migraciї ta namagalysja sliduvaty čystomu kodu.
Dovša rozmova — ce biblioteka komponentiv, jaku vy budete vykorystovuvaty. Prosto vykorystovujte dejaki, ne namagajtesja stvorjuvaty komponenty z nulja. Ce dovgo i vono togo ne varte, prynajmni dlja MVP. Inodi zasnovnyky zakinčujuť rozrobku dyzajnu i vymagajuť vid rozrobnykiv realizuvaty jogo. Ne robiť ćogo, jakščo vy prosto budete vykorystovuvaty pošyreni biblioteky komponentiv dyzajnu, taki jak Material UI, Ant design abo hoča b Tailwind, vy stvoryte MVP v 3 razy švydše, i ce vidminnyj kompromis, jakščo prypustyty, ščo “Švydkisť dostavky” je našym osnovnym KPI.
Vykorystovujte biblioteku komponentiv, nevažlyvo jaku, ale ne vykorystovujte Bootstrap — ce zvučyť jak 2001.
Baza danyh takož maje pevnu gnučkisť. Sučasni full-stack rozrobnyky viddajuť perevagu MongoDB, ja ž oldskuľnyj hlopeć, jakyj ljubyť SQL i Postgres. Mongo ideaľno pidhodyť dlja analityky danyh ta skrapingu, koly vy hočete zberigaty dani u neformatovanij strukturi. Odnak, jak osnovna DB vona duže pogana. Ja vidčuvav velyčezni problemy z nalaštuvannjam migracij na nij, i vona dijsno ne bula stvorena dlja ćogo. Tomu, na moju dumku, v projekti zavždy povynna buty SQL DB dlja vysokostrukturovanyh i napered vyznačenyh sutnostej, takyh jak korystuvači, roli, konfiguraciї ta dejaki inši specyfični reči. Ale jakščo u vas je jakiś dyvni dani, vy možete vykorystovuvaty Mongo dlja ćogo. Jakščo vy šukajete biľšoї gnučkosti v Postgres, je typ danyh JSON, jakyj vstavljaje povnu strukturu danyh v DB i avtomatyčno serializuje їh, vykorystovujučy ORM, napryklad, TypeORM.
Naviť jakščo vy stvorjujete sociaľni mereži i dumajete, jak ja zmožu obijtysja bez GraphDB i DB ključovyh značeń, a takož DB časovyh rjadiv dlja analityky, prosto ne robiť ćogo. V majbutńomu u vas bude bjudžet na optymizaciju vśogo ćogo, i ce čudovo, ščo vy majete take masštabovane bačennja, ale dlja MVP prosto vykorystovujte Postgres, vin može vporatysja z usim.
Tož ne vygadujte velosyped, ne uskladnjujte svoju infrastrukturu i ne buďte zanadto legkovažnymy z DB, prosto vykorystovujte PostgreSQL.
Perevirka zdorov’ja startapu
Na osnovi vśogo raniše obgovorenogo my z’jasuvaly, ščo je bagato rečej, jaki možuť pity ne tak pry stvorenni abo rozšyrenni MVP. Ščob dopomogty inšym tehničnym dyrektoram ta zasnovnykam buduvaty startapy, ne bojačyś tehničnyh ryzykiv, ja rozrobyv Healthcheck, jakyj je nabagato menš bezgluzdym i nabagato biľš uzagaľnenym, ščob jogo možna bulo zastosuvaty do buď-jakogo startap-projektu. Ja osobysto organizovuju cej Healthcheck dlja kožnogo startapu, z jakym pracjuju, prynajmni raz na 6 misjaciv.
Vy možete sprobuvaty projty jogo za cym posylannjam — https://foil-millennium-d85.notion.site/Startup-MVP-development-Healthcheck-56b42f307c6d490780966dc27053e51b