Dostal jste tu spoustu dobrých rad, tak jen doplním ještě navíc:
* napoprvé se to nepovede, zbastlíte to a za 5 let si budete rvát vlasy, co jste to spáchal. Je to normální. Nenechte se tím odradit. Načíst se dá jen omezená množina věcí, zbytek je o zkušenosti. Zkušenost se dá nabýt od zkušených kolegů a dobrých vyučujících na VŠ. Pokud ani jedno nemáte, nezbývá Vám, než si tu zkušenost udělat sám.
* rozvrhněte systém od shora (velké logické celky, procesy, komponenty - věci které z podstaty věci patří k sobě) dolů (konkrétní moduly/třídy/funkce). Nedjřív myslete z pohledu uživatele, zákazníka. A až když jste si jistý, že víte co se po vás chce se zamyslete nad tím, jak by se to dalo naprogramovat.
* nebuďte líný psát automatické testy, je to opruz skoro pro každého, ale alternativa bez nich je strašná
* kdykoliv budete mít potřebu vzít kus kódu a rozkopírovat ho na víc míst, zastavte se, zamyslete a zjistěte kde vám chybí třída/metoda/funkce :)
* komentujte i zřejmé věci, API, atributy, ne zcela triviální algoritmy
* přehlednost a standardizace jsou důležitější než cool-factor, pokud je projekt větší než triviální a životnost delší než krátká (pokud tedy neděláte něco tak nového, že na to standardní řešení nestačí, ale to je jiná story). Používejte ozkoušené knihovny, technologie, principy
* pokud přejímáte řešení problému ze stack overflow či blogu, buďte si nejdřív jistý, že chápete co přesně to do detailu dělá, jinak si koledujete o problémy (výkonostní, bezpečnostní).