* Starea curentă a proiectului: structura repository-ului * directoare * cod incipient proceduri de dezvoltare * coding style * denumire module/fișiere * documentare module * documentare interfețe proceduri de comunicare * folosire liste de discuție * comentarii completare wiki cu informații necesare * acces la repository * coding style și proceduri de dezvoltare * documentarea tehnologiilor folosite * descrierea modulelor și interfețelor (pe măsură ce acestea sunt dezvoltate) * proceduri de documentare * Discuție cu project managerul Evaluare scurtă a ultimei săptămâni * ce întâlniri au avut loc? * ce progrese s-au înregistrat? * ce progrese a făcut fiecare membru? * ce sarcini a avut fiecare membru în această săptămână? * care sunt cei mai activi 2 membri ai echipei? * care sunt cei mai puțini activi membri ai echipei? Evaluare per ansamblu * Cât de multe proceduri au fost stabilite? * Câte de clare sunt sarcinile pentru fiecare? * Sunt bine împărțire sarcinile? * Cât de bună este comunicarea în cadrul echipei și cum team-leaderii? * Există modificări față de planul inițial? * Au apărut sarcini noi? * Există sarcini care s-au încheiat?
* Discuții cu team leaderii Care este atmosfera în echipă? Care este progresul înregistrat? Cât de cunoscute sunt tehnologiile? Cât de acomodați sunt membrii echipei cu utilizare SVN și a altor utilitare de dezvoltare? Se cunosc procedurile de dezvoltare? Care este evaluarea actuală a echipei?
In ingineria programarii anti-patterns sunt metode de design (organizational, software, etc) care desi par evidente si simple sunt defapt gresite, mai complexe decat e necesar sau inoptimale. O lista de anti-patternuri clasice se gasesc pe wikipedia, dintre care cateva frecvente printre programatorii mai putin experimentati sunt:
* Call Super - necesitatea de a chema o metoda suprascrisa dintr-o clasa de baza * God Object - existenta unui obiect cu o functionalitate foarte larga * Object Orgy - delimitare neconcludenta a variabilelor interne a unui obiect recomandat este ca variabilele interne sa fie accesate prin mutatori si accesori (ie. white listing). de exemplu in java
* Sequential Coupling - necesitatea de a chema anumite metode intr-o anumita ordine. Ele pot fi incluse in alta metoda care sa le apeleze in ordinea corecta. * Yet Another Useless Layer - adaugare de niveluri de abstractizare nenecesare (my personal favorite) * Blind faith - increderea ca o anumita functie este corecta fara a fi testata * Accumulate and fire - transmiterea de argumente unei functii folosind variabile globale si nu prin parametri * Voodoo programming & Deep magic - implementarea unei solutii vag intelese sau folosirea de unelte necunoscute (vezi [http://www.codemaestro.com/reviews/9 sqrt]) * Magic numbers & strings - folosirea constantelor si a sirurilor de caractere fara vreo explicatie (un coment sau denumire de variabila) * Copy and paste programming - lipsa unei generalizari si copierea codului cu mici modificari (vezi Blind Faith) * Reinventing the wheel - nefolosirea codului deja existent (cum ar fi third-party software) * Programming by permutation - incercarea de a repara un bug prin mici modificari aleatoare fara a intelege exact unde este greseala
* Care este problema următoarelor funcții din biblioteca standard C? atoi gets strcat, strcpy strtok, strsep scanf gethostbyname
* Pentru un limbaj gen C (procedural) definiți o interfață pentru o bibliotecă care face spargerea unui fișier PDF în mai multe fișiere PDF. Nu există alte cerințe. Biblioteca trebuie să-și facă treaba cât mai bine.
* Care este problema următoarei secvențe dintr-un header C?
* Definiți o interfață pentru o biblitecă multiprotocol pentru descărcarea unui fișier. (multiprotocol - HTTP, FTP, BitTorrent, SCP etc.) Folosiți ca suport un limbaj la alegere.
* În nucleul Linux, funcția end_request[1] este folosită pentru încheierea unei cereri pentru block I/O layer. Funcția se apelează end_request(req, 0) la eroare și end_request(req, 1) la succes. Care este neajunsul interfaței de apel a acestei funcții?
* Care sunt modulele (fișierele) folosite pentru implementarea unei biblioteci de criptare pentru mai mulți algoritmi? Ce interfață ar oferi o asemenea bibliotecă?
* În nucleul Linux există mai multe mecanisme de sincronizare. Mai jos sunt prezentate funcțiile asociate mecanismelor semafor și mutex. Care este problema acestor funcții?
* De ce este clasa StringTokenizer deprecated în Java? Care este înlocuitorul acesteia?
* Care este neajunsul interfeței funcției de sortare cu signatura <tt>int sort(int *array, size_t size)</tt>?
[1] http://lxr.linux.no/linux+v2.6.27.4/block/blk-core.c#L1859