Rad u timu često može da bude sa toliko izmena programa, da i najsmirenije osobe može da dovede do negodovanja pri uvođenju bilo kakvih revizija. Niko ne voli da radi bilo koji posao uzalud, tj. da kasnije radi ponovo isti posao, a prethodni jednostavno zaboravi, kao da ga nije ni radio. Zato je za sve programere veoma bitno da unapred pripreme i predvide osnovnu strukturu programa, da bude takva da može sa što manje napora da se izmeni i nadogradi prema novim zahtevima. Ovaj posao nije toliko komplikovan ali zahteva ogromno iskustvo iz programiranja, i ako unapred isplanirate sve kako treba uštedećete mnogo vremena kasnije pri revizijama programa. Naravno, ne postoji univerzalni programski kod, i veoma je teško unapred predvideti šta će kasnije nekome u timu pasti na pamet, ali u toku izrade programa, često se javljaju nove ideje, čija se nadogradnja treba uraditi na što je moguće lakši način.
Iako skoro svako voli da pravi programe prema svom nahođenju i u zavisnosti od inspiracije uvek radi drugačije, potrebno je pridržavati se nekog osnovnog modela pri programiranju. Posle nekoliko nedelja, meseci ili više, ako se ukaže potreba za korišćenjem istog programa ili njegovih delova za neku drugu namenu, biće Vam lako da primenite postojeći kod ako se pridržavate gore navedenih pravila. U suprotnom, imaćete mnogo problema i mnogo više vremena će Vam biti potrebno da se snađete i prilagodite već urađeni posao u novim projektima.
Postoje razni programski jezici, a ovaj tekst se odnosi na korišćenje objektno orijentisanih programskih jezika poput c#, jave, Adobe Flash AS3.0 (moj omiljeni programski jezik) ili nekog drugog. Svima je zajednički cilj, a strategija programiranja se pomalo razlikuje, ali vodi ka istom rešenju. Na samom početku izrade programa, uvek izaberite naziv jednog ili više glavnih stanja poput promenljive ‘mainMode’, koja će biti dostupna svim delovima programa, bez obzira da li se radi o glavnom kodu ili o objektima. Ovu promenljivu stalno i svuda kontrolišite i u zavisnosti od njenog stanja preduzimajte odgovarajuće akcije. MainMode može imati vrednosti: initialization, intro, options, loading, game, ads… i još mnoga stanja po vašoj želji zavisno od potrebe. Svaki deo programa treba da proverava na odgovarajućim mestima, da li je promenjena vrednost mainMode, i ako jeste da odreaguje kako treba. Moja preporuka je da glavna stanja imaju svoja predstanja. Na primer mainMode = ’startIntro’ je podešavanje koje prethodi izvršavanju funkcije Intro(…) koja na početku ima upit:
if (mainMode == ’startIntro’) { mainMode = ’intro’; … }
Na ovaj način se izbegava mogućnost višestrukog neželjenog izvršavanja koda. Na isti način se treba primeniti upit i za ostala stanja, i na taj način obezbediti sigurnost u radu, kao i lakše praćenje svih aktivnosti iz svih delova programa. Posle ovako formirane postavke glavnog koda, lako možete uvoditi nova stanja poput: pause, records, message, level1, level2… Treba samo dodati delove programskog koda o novim stanjima, i naravno šta se dešava kada se dese ta nova stanja. Ovakav pristup stanjima je i nejpogodniji pri programiranju kodova koji koriste komunikaciju sa serverom. Na primer kod igara sa više igrača postoje stanja poput: offline, online, logging, registering, active, busy, free, waiting… Razmenom informacija o stanjima između korisnika i servera precizno su određene akcije koje se mogu izvršiti, a koje ne.
Što se tiče saradnje u okviru tima, ona mora da bude dvosmerna u svim linijama na kojima se vrši razmena bilo kakvih informacija. Veoma je važna usaglašenost svih članova u timu. Na početku rada u timu, dolazi do velikih nesuglasica između osoba koje rade razne poslove – grafika, okruženje, animacija, programiranje, igrivost… ali već posle nekoliko završenih projekata, tim se uhodava, i skoro svi shvataju šta se može a šta ne. Svako voli da radi kako njemu odgovara, ali iz neophodnih razloga poput usaglašenosti i optimizacije, svi moraju da se prilagode konačnom cilju i manje više da izmene tj. da prilagode svoje navike timskom radu.
Programiranje bi moglo da se shvati kao objašnjenje za ponašanja računara na razne događaje koji dolaze od strane korisnika, u određenom vremenu ili na osnovu nekih događaja. Programer mora da objasni računaru programskim jezikom (kao stranim jezikom) šta će kada da se desi – izvrši. Ovo se odnosi i na glavni programski kod, i na kod koji se odnosi na objekte pojedinačno. U zavisnosti od programa, potrebno je predvideti i razmenu informacija – posmatranje stanja između objekata međusobno i glavnog programa, i na osnovu toga izvršavati predviđene zadatke. Pravilnim izborom stanja kao iz gore navedenog teksta, može se reagovati precizno, i bez pojave nepredviđenih situacija, jer se kontrolišu glavna stanja. Kada više programera rade zajedno, uvođenje stanja kao i dogovor o funkcionisanju je neohodno.
Na raznim platformama na kojima se izvršava program, postoje razni događaji koje je potrebno predvideti. Nije isto praviti program za računar, za telefon ili pametni televizor na primer. Svaka platforma ima neke svoje specifičnosti koje treba posebno pratiti i predvideti šta da se radi ako se iste dese. Najbolje rešenje je da sve potrebne informacije za ciljanu platformu spakujete zajedno, i pri instaliranju raspakujete i pripremite kako Vam odgovara, ali iz raznih razloga, nekada je potrebno dodatne informacije preuzeti sa nekog servera ili reagovati na dešavanja u realnom vremenu. Tada su mogući nepredviđeni događaji, na koje Vi ne možete da utičete – razni kvarovi servera, loš protok informacija, preopteređenost…
Nikada ne zaboravite da Vaš rad treba da sarađuje sa radom ostalih ljudi u timu. Zato pokušajte da što bolje usaglasite stavove, i nađete najbolji model koji će u najvećoj meri udgovarati svima i koga će se svi pridržavati.