Tvorba softwaru od nuly

By John SonmezFebruary 23, 2017

Mnoho vývojářů softwaru si rádo věci komplikuje. Dostanou něco, co by mohlo být jednoduché a snadné, a vzhledem k tomu, co většina lidí říká na internetu, to zkomplikují.

Software by měl být jednoduchý. Když to řeknu, je snadné pochopit, proč má tolik vývojářů problém vytvořit software od nuly. V jejich představách je to naprosto složitá a obtížná věc a uprostřed procesu se úplně zaseknou.

Takže otázka zní… Jak se vytváří software od nuly?

Přepis z videa

John Sonmez:

Ahoj, jak je? John Sonmez z webu simpleprogrammer.com. Dnes mám otázku týkající se vytváření softwaru od nuly. Tuto otázku jsem dostal mnohokrát od různých lidí, protože je to něco, co je těžké udělat, když jste začátečník, přijít na to, jak byste to vůbec mohli udělat.

Tato otázka pochází od Akashe a říká: „Ahoj Johne, tvá videa jsou skvělá a velmi si cením tvých rad. Jeden problém, se kterým se potýkám, spočívá v tom, že když jde o vytvoření velkého softwaru, nenapadá mě, jak to celé navrhnout od začátku. Řekněme, jak celou věc rozdělit na mini dílčí úkoly a pak implementovat jednotlivé dílčí úkoly a dát je dohromady, aby to fungovalo. Bylo by moc fajn, kdybyste mi poradili, jak tento problém překonat. Předem děkuji.“

Co bych zde řekl, Akashi, je, že to, co chcete udělat, je, že chcete přemýšlet – místo toho, abyste přemýšleli o tom, že vezmete celý systém, takový ten přístup shora dolů, rozložit ho na všechny tyto části, sestavit všechny tyto části a zjistit, jak do sebe zapadají, a postavit tento obrovský Transformer nebo Lego z – těchto obrovských kostek Lega. Chcete o vývoji softwaru přemýšlet spíše jako o evoluci.

Tím chci říct, že začněte s něčím opravdu jednoduchým. Začněte s nejjednodušší věcí, která by mohla fungovat, která nemá mnoho funkcí, a pak ji vyvíjejte tam, kam chcete jít, místo toho, abyste dělali to, čemu se říká velký předběžný návrh. Neznamená to, že byste nikdy neměli jako přemýšlet o celkové architektuře věci a že nemáte návrhy a určité věci dopředu. V mnoha případech toho nemusíte dělat tolik, kolik si myslíte, že potřebujete.

No, pokud navrhujete nějaký software, který bude zabudovaný v elektronickém zařízení, a hardwarový inženýr bude muset vyvinout obvody nebo vlastní čip nebo něco, aby to fungovalo, pravděpodobně budete muset navrhnout spoustu těchto věcí předem a pravděpodobně to budete muset udělat. Tam můžete být dokonce omezeni. U většiny softwaru, který dnes vytváříme, zejména webových aplikací a podobných věcí nebo mobilních aplikací, bychom mohli vytvořit něco, co je velmi, velmi základní, a pak to vyvíjet, provádět změny, aby to rostlo a přidávalo složitost podle potřeby.

Jednou věcí – jedním z důvodů, proč je to tak důležité, je to, že prokletím vývoje softwaru, jednou z nejhorších věcí při vývoji softwaru je složitost. Tento kanál se jmenuje Simple Programmer a můj obor se zabývá zjednodušováním složitého, protože to je to, co potřebujeme dělat. Jako vývojáři softwaru je jedním z vašich hlavních úkolů bojovat proti složitosti, protože složitost vstupuje do systému a ztěžuje jeho údržbu a znesnadňuje jeho pochopení. Zvyšuje pravděpodobnost výskytu chyb a selhání. Chceme složitost co nejvíce snížit. Chceme ji zjednodušit. Musíme začít co nejjednodušeji, co je nejjednodušší možná věc, která by mohla fungovat?

V podnikatelském světě se tomu často říká MVP neboli minimální životaschopný produkt. Co můžete udělat, když se snažíte vytvořit velký softwarový systém, nebo co můžete udělat, je to, že můžete začít opravdu v malém. Začněte s velmi, velmi malou věcí. Snažím se vzpomenout si na knihu, ale četl jsem jednu opravdu dobrou knihu o něčem, myslím, že to byl vývoj řízený testy krok za krokem nebo něco takového. V té knize navrhoval něco jako aplikaci Notepad nebo tak něco. Začal velmi, velmi postupně – dělal to velmi postupně a začal, myslím, že jeho aplikace potřebovala databázi, ale začal s tím, že databázi nemá. Místo toho jen jakoby ukládal data do textových souborů, které četl z textových souborů. Pak se dostal do bodu, kdy je skutečně potřeboval umístit do databáze, a pak upravil program a přiměl ho číst stejná data, jen vytvořil abstrakci pro čtení z databáze.

Takový je přirozený vývoj věcí a takhle můžete vytvářet tento komplexní software. Garantuji vám, že většina složitého softwaru, který se dnes skutečně vytváří, je vytvořena tímto způsobem. Mnoho z nich se nenavrhuje úplně dopředu a pak se sestavují všechny tyto části a doufá se a modlí se, aby fungovaly. Jinak to skončí překročením rozpočtu a časového plánu. To se bohužel stává. Pokud chcete být úspěšní, pokud to chcete zvládnout, začněte s něčím malým. Na světě není nic, co by bylo těžké. Neexistuje nic, co by bylo složité. Je to jen to, že se to skládá ze spousty jednoduchých věcí, kvůli kterým to vypadá složitě.

Můžete postavit tu nejsložitější architekturu. Můžete postavit obrovskou věc, ale musíte začít od jednoduchého. Všechno se skládá z jednoduchých věcí. Pak místo toho, abyste se snažili vzít všechny ty části, prostě začněte. Vyvíjejte tu věc. Začněte. Něco vybudujte. Jaká je ta nejmenší nejjednodušší věc, kterou můžete vydat a která dělá něco, co se blíží funkčnosti? Pak začněte přidávat funkce. Jak budete přidávat funkce, přidávejte architekturu, která je bude podporovat, a vytvářejte abstrakce.

Kniha, kterou vám doporučím a která by vám s tím pravděpodobně pomohla, se jmenuje Čistý kód. Je to jedna z mých oblíbených knih od Roberta Martina. Tuto knihu rozhodně doporučuji, ale chcete rozvíjet svou architekturu. Pak další věc, kterou bych k tomu řekl, je, že jak budete věci vyvíjet, budete vytvářet abstrakce, abyste to udrželi jednoduché, abyste nikdy neměli tu obrovskou, obrovskou složitost. Někdy to může znamenat i přepsání celé věci nebo přepsání jejích částí, ale to je v pořádku. Tak funguje vývoj softwaru. Je to lepší než přidávat složitost.

Mnohokrát chtějí vývojáři softwaru předčasně optimalizovat. Chtějí věci udělat extrémně flexibilní. Předčasně optimalizují software, protože se snaží vytvořit velmi, velmi robustní systém. To se často nedaří, protože nevíme, co nevíme. Nevíme, co budeme potřebovat, takže je lepší nesnažit se to předvídat, ale prostě říct: „Dobře. Teď potřebuji přidat tuto novou funkci nebo zajistit, aby to fungovalo tímto způsobem. Jak to mohu vyvinout?“

Pamatujte, že vývoj softwaru není jako most. Není to, jako když máte položený beton a teď budete měnit architekturu domu. Software je tvárný. Je jako hlína. Můžete ji měnit. Nemá vysoké, vysoké náklady na to, abyste ho upravili a změnili. Musíte co nejvíce využívat výhod tohoto média, které se hodí k evolučnímu procesu vývoje softwaru, na rozdíl od velkého počátečního návrhu.

Doufám, že vám to pomohlo, Akashi. Skvělá otázka. Myslím, že se na to v minulosti ptalo hodně lidí. Pokud máte dotaz na mě, můžete mi napsat na adresu [email protected]. Pokud se vám toto video líbí, pokračujte a klikněte na to velké tlačítko Přihlásit se k odběru níže, pokud jste se ještě k odběru nepřihlásili. Pokud ano, vážím si vás. Zůstaňte naladěni do příště. Mějte se hezky.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.