Kad sam počeo da učim web development, mislio sam da je problem samo u tome što ne znam dovoljno sintakse. Godinama kasnije shvatam: sintaksa je najlakši deo. Teže je znati šta da ne radiš.

Ovo nije lista „top 10 grešaka" sa Medium članka. Ovo su konkretne stvari koje sam ja radio, gde sam zaglavio, i šta bih rekao sebi da mogu da se vratim unazad.
1. Tutorial hell — znam sve tutorijale, nijedan pravi projekat
Proveo sam mesecima gledajući kurseve. React tutorial. Next.js tutorial. Tailwind tutorial. Osećao sam se produktivno jer sam „učio".
Problem: nisam ništa gradio za sebe. Svaki tutorial te vodi kroz savršen scenario. U realnom projektu klijent kaže: „Treba mi forma, ali da se podaci šalju na mejl i u Google Sheet i da dobijem notifikaciju na telefon." Tutorial te na to ne sprema.
Šta sam promenio: Prestao sam da uzimam nove kurseve dok ne završim jedan mali ali kompletan projekat — od dizajna do deploy-a. Prvi takav projekat mi je trebao tri nedelje umesto tri dana. I to je bilo normalno.
2. Kopiranje koda sa Stack Overflow-a bez razumevanja
Imam jedan stari projekat gde sam zalepio useEffect koji radi — ali ne znam tačno zašto. Svaki put kad treba da ga promenim, bojim se da dirnem jer ne znam šta će puknuti.
To je tehnički dug koji si sam sebi napravio. Radi danas. Sutra te košta sat vremena. Prekosutra te košta klijent.
Pravilo koje sada držim: Ako kopiram nešto, moram da mogu da objasnim šta radi — bar svojim rečima, sebi. Ako ne mogu — ne ostavljam to u produkciji.
3. „Napraviću sve od nule" sindrom
Na početku sam odbijao gotove komponente i biblioteke jer sam mislio da je „pravi programer" onaj ko sve piše sam. Potrošio sam dva dana na custom dropdown koji radi lošije od Radix UI komponente koja postoji besplatno.
Nije stid koristiti alate. Stid je gubiti vreme klijenta na reinventing the wheel.
Danas: Koristim shadcn/ui, date-fns, gotove headless komponente. Fokus mi je na problemu klijenta, ne na tome da li sam sam napisao svaki hover efekat.
4. Ignorisanje mobilne verzije do poslednjeg dana
„Prvo ću desktop, mobilni posle." Mobilni nikad nije bio „posle" — bio je paničan petak u 23h pre predaje projekta.
Jednom sam morao da preradim celu navigaciju jer na desktopu izgleda odlično, a na telefonu se meni ne zatvara kako treba. Klijent je testirao na telefonu. Klijent je u pravu.
Sada: Dizajniram mobile-first. Ne zvuči romantično, ali me je spasilo više puta.
5. Ne pitam dovoljno pitanja na početku
Najskuplja greška. Klijent kaže „treba mi sajt" — ja krenem da radim, a posle dve nedelje ispliva da su hteli i blog, i englesku verziju, i integraciju sa njihovim starim sistemom za fakture.
Nisam pitao. Pretpostavio sam. I platio vreme.
Sada pre svakog projekta pitam:
- Ko je ciljna grupa?
- Šta korisnik treba da uradi na sajtu (pozove, kupi, pošalje upit)?
- Ko dostavlja tekstove i slike?
- Da li ima rok koji je tvrd (promocija, sajam, otvaranje)?
- Šta se dešava posle lansiranja?
Pet minuta pitanja štedi pet sati kasnije.

6. Obećavanje rokova iz entuzijazma
„Za vikend sam gotov!" Nisam bio. Nisam ni blizu. Klijent je razočaran, ja sam pod stresom, kvalitet pada.
Na početku sam hteo da impresioniram brzinom. Sada impresioniram realnošću. Kažem: „Za ovu obim, treba mi 10–14 radnih dana." I isporučim za 12.
Bolje je iznenaditi da si ranije gotov nego da kasniš.
7. Ne koristim Git kako treba
Commit „final", „final2", „final stvarno", „final posle kafee". Grananje koje ne razumem. Strah da mergujem jer „možda nešto pukne".
Git nije opcija. Git je osiguranje. Jednom sam pregazio funkcionalnost koja je radila jer nisam imao normalnu istoriju promena. Vratio sam se ručno. Sat i po izgubljen.
8. Perfekcionizam umesto isporuke
Još uvek se borim sa ovim. Mogu da polirujem animaciju dugmeta sat vremena. Klijent ne vidi razliku. Ja vidim. Ali klijent je platio da sajt radi i donosi upite — ne da easing funkcija bude savršena.
Naučio sam da pitam: Da li ovo utiče na korisnika ili na moje ego?
9. Ne čuvam energiju za komunikaciju
Mislim da je posao samo kod. Ali polovina problema na projektima dolazi iz loše komunikacije — klijent ne razume zašto nešto traje, ja ne razumem zašto menjaju zahtev, i oboje frustrirani.
Kratka poruka „Evo gde smo, sutra radim na X, završetak u petak" menja celu dinamiku.
10. Upoređujem se sa developerima sa 10 godina iskustva
Gledam nečiji portfolio i osećam se beskorisno. Zaboravim da su oni možda prikazali 5 najboljih projekata od 200. Ja vidim svoj haos od 15 projekata i mislim da sam loš.
Svi su počeli sa lošim kodom. Razlika je što su nastavili.
Ako ste početnik: nećete izbeći sve ove greške. Ja ih i dalje povremeno pravim, samo brže uočim. Cilj nije savršenstvo — cilj je da svaki projekat bude malo manje haotičan od prethodnog.
Ako tražite developera: pitajte ga kako je rešavao probleme na prošlim projektima, ne samo da vam pokaže lepe slike. Greške su deo posla. Bitno je kako ih neko rešava.