Odgovor na pitanje "Kako postati programer" zavisi od toga kako definišeš reč "programer". Nedeljko je dao svoju definiciju u 7-8 tačaka.
Par primera:
1. Prijatelj radi u Belgiji u velikoj firmi koja zapošljava veliki broj programera. Ima mnogo kolega koji su u svojim 40tim zaključili da je programiranje zanimljivo i traženo. Završili možda par kurseva i programiraju nešto "nekritično". Zaposleni su na pozicijama gde se traži malo znanja, ali određenog znanja i ta znanja su im pružili specifični kursevi. Ne znaju kako izgleda procesor, pipeline, adresiranje memorije, čitanje sa diska, algoritme, C, parsiranje, threading, events, sql... ali može se reći da programiraju.
2. Drugi prijatelj zna sve gore navedene pojmove. Zna kako rade. Programirao je u JAVA-i, C-u, asembleru...Neko vreme je u silikonskoj dolini programirao neke uređaje koji će da se pojave za možda 10ak godina u masovnoj proizvodnji. Može se reći da programira.
3. Firma prodaje software koji bi trebalo da je ozbiljan jednoj ozbiljnoj ustanovi u mom gradu. Naslagali su forme u accessu, povezali ih sa tabelama, napravili reporting i čini mi se da lepo žive od takvog i sličnog SWa koji prodaju. Mislim da nikad ni na čemu nisu pokrenuli "compile". Može se reći da programiraju.
Ako definišemo da je "programer"<=>"onaj koji programira mašinu da bi olakšala nekome svakodnevni posao" sve osobe navedene u primerima su programeri.
Što se tiče Nedeljkove definicije:
Citat:
0. Prvo se moraju znati engleski jezik i nešto malo matematike (aritmetika realnih i celih brojeva zaključno sa delenjem celih brojeva sa ostatkom).
Ok
Citat:
1. Savladati osnove programiranja. Znači, C sa osnovnim algoritmima (čitaj K&R), strukturna paradigma (svođenje složenih problema na prostije i modularnost) i sposobnost da se svaki algoritam koji se zna sprovesti "na ruke" zna isprogramirati u C-u. Diplomski rad je strukturni program u C-u koji za dati graf unet iz ulazne datoteke ispituje da li je Ojlerov, ako nije kaže da nije, a ako jeste nalazi bar jedan Ojlerov put i rezultat ispisuje na standardnom izlazu i u datoteci.
C baš i nije za početnike. Python koji je i MIT uveo u svoj 6001. class je nekako prijatniji.
Besplatne knjige greenteapressa
How to Think Like a Computer Scientist su prilično čitljive.
Stari 6001. class je gurao po
Structure and Interpretation of Computer Programs.
Citat:
2. Objektno orjentisana paradigma u jeziku C++, Java, C# ili nekom drugom po izboru sa dizajn paternima.
PLz no design patterns, plz...
Zanimljiv tekst sa kojim se slažem u vezi sa patternima
Rethinking Design Patterns by Jeff Atwood osnivača Stack Exchange-a.
"Do you really want a junior developer using patterns everywhere? It's about as safe as encouraging them to "experiment" with a gas-powered chainsaw. The best way to learn to write simple code is to write simple code! Patterns, like all forms of compexity, should be avoided until they are absolutely necessary. That's the first thing beginners need to learn. Not the last thing."
Citat:
3. GUI programiranje da se malo dane dušom od teških stvari.
4. Osnove XML-a, parsiranje formata koji nisu XML, tekstualnih i binarnih (npr. bmp).
5. Niti, deljena memorija, komunikacija između procesa, bazeni poruka, privilegije i atributi nad fajlovima, događaji (valjda se to zove sistemsko programiranje, nemam pojma).
A možda mu nikad u životu neće trebati. Možemo da kažemo i da će mu trebati. Ali gde se zaustaviti? Znanje o procesorskim registrima, kešu, pipeline-u, predstavljanju podataka u memoriji, IO, interruptima, TLBu, kompajlerima... bi pomoglo kod gore navedenih pojmova.
Citat:
6. Veb (prvo HTML i CSS, a onda dinamički veb).
Ako će da radi frontend.
Citat:
7. SQL i takve baze podataka.
Osnovno znanje je bitno.
my2c