Feedback-ul juriului pentru concurenti (2008)

Generale

-> Pregatiti-va!
1. lucrarea: uitati-va dupa greseli/spelling-uri/campuri nevalidate/date care nu sunt “sanatoase” (“sanitized”). Intrebati-va prietenii daca e in regula si ce ar mai schimba – adauga, elimina, imbunanati etc. – ei ca sa fie mai usor de folosit efectiv. Sa nu uitati nici de interfata si incercati sa o faceti cat mai atragatoare.

2. uitati-va prin codul vostru. Daca nu va place, nici comisia nu va va puncta. Puteti cauta pe Web sau citi despre standarde de scriere a codului (coding standards) pentru limbajul/limbajele pe care le folositi, modalitati de a organiza codul (module, clase etc.), despre sabloane de proiectare (design patterns) – de exemplu, MVC (Model-View-Controller). Imaginati-va ca programati cu un alter-ego al vostru in <a href=“http://www.infoeducatie.ro/forum/viewtopic.php?f=36&t=2201:18tgqb5p]echipa[/url:18tgqb5p] si trebuie sa intelegi codul si peste 6 luni! Asadar, nu uitati de comentarii! – si ele corecte :wink:
<a href=“http://www.infoeducatie.ro/forum/viewtopic.php?f=36&t=2061:18tgqb5p]programati bine ![/url:18tgqb5p]

3. exersati cum veti face prezentarea (in fata oglinzii, prietenilor, si cui mai prindeti available). <a href=“http://www.infoeducatie.ro/forum/viewtopic.php?f=36&t=2059:18tgqb5p]sfaturi pentru prezentare[/url:18tgqb5p]

4. nu pregatiti lucrarea in ultimele 20 zile inainte de concurs, incepeti din timp ca sa aveti cand sa faceti corectii, adaugiri, etc

-> Cautati standarde in domeniul in care e lucrarea si aplicati-le.

-> Nu reinventati caramizile
Este ok sa folositi framework-uri pentru a va organiza codul, librarii de nivel jos (care rezolva probleme de protocoale/hardware/implementari de standarde/compatibilizare/rezolvare a incompatibilitatilor). Exemple: framework-uri pentru organizarea codului in MVC, jQuery/Prototype, lucru cu baze de date
Veti lua puncte la ingineria codului/calitatea programarii, si veti putea folosi timpul economisit pentru a implementa feature-uri care sa se puncteze si la originalitate, si la functionalitate, si la programare.

-> Nu clonati alte proiecte
E greu sa concepeti ceva cu desavarsire nou in lumea IT-ului de azi. Totusi, cand va alegeti o idee pentru un proiect, faceti reasearch (google kicks ass), vedeti ce (concept) s-a mai facut si cum (tehnologii). Apoi intoarceti-va la idee si vedeti cum puteti s-o extindeti, imbunatatiti, structurati. Va mai vin idei noi, legate de prima? Ati putea sa impuneti o perspectiva noua asupra ceea ce s-a mai facut? Nu fugiti de ce s-a mai facut, dar folositi-va de asta. Invatati sa va puneti cat mai multe intrebari si cea mai utila dintre ele este “De ce (nu) ?”. De ce nu se poate adauga un nou feature? O noua optimizare? O noua structura a interfetei? O noua perspectiva asupra problemei? De multe ori aveti de castigat cand, folosind imaginatia, puteti vedea si integra doua produse deja existente in unul singur. Implementarile existente se prea poate sa nu fi beneficiat de contextul si de tehnologiile de care beneficiati voi acum. Pentru ei este tarziu, pentru voi e numai bine.
De cele mai multe ori comisia oricum este vigilenta si in timpul prezentarii va cauta ce s-a mai facut pe subiect. Daca implementati ceva ce s-a mai facut de n-spe ori nu aduceti nimic in plus, veti lua 0 la originalitate. Incercati sa va uitati in jur pentru a gasi unde anume ar fi nevoie de un site/program in lumea reala. Documentati-va daca s-a mai facut sau nu. Daca s-a mai facut dar aveti o viziune noua/idei noi/moduri mai bune de a rezolva problema, super! Daca nu, ar putea fi util sa va mai ganditi daca nu gasiti ceva mai bun.
Sugestie: desi e improbabil sa concepeti ceva cu totul nou, de multe ori aveti sanse mari sa obtineti efecte spectaculoase integrand conceptele si functionalitatile unor alte proiecte (aparent disjuncte) in proiectul vostru. De exemplu: un site de social networking (Facebook) integrat cu Google Maps si cu un soft de GPS Tracking. Alt exemplu: integrare dintre social networking si un site de videostreaming (Youtube). Integrarea nu presupune sa luati componente existente de-a gata, sa scrieti trei linii de cod si sa faceti un proiect. Mai degraba, se refera la integrarea conceptelor, a ideilor. Daca o sa folosi un API sau un framework, e in regula, atat timp cat functionalitatea proiectului vostru nu se reduce la cea a componentelor folosite, ci le integreaza intr-un fel care este, practic, o idee noua.

Pentru web

-> vedeti framework-uri/biblioteci/standarde mai sus

-> comisia SE UITA in codul vostru

-> comisia VA INCERCA sa bage tot felul de stringuri in campurile voastre sa vada daca ati sanitizat inputul. Documentati-va despre sanitizarea inputului care e afisat in pagina, a celui care intra in baza de date, a celui care va fi folosit in query-uri SQL (atacuri SQL injection, operatorul “LIKE”)

-> mysql: cititi despre indecsi, inclusiv despre indecsi fulltext

Citeva prezentari utile :

* [url=http://thor.info.uaic.ro/~web/2007/web-program.html”>http://thor.info.uaic.ro/~web/2007/web-program.html
* [url=http://www.slideshare.net/busaco/slideshows”>http://www.slideshare.net/busaco/slideshows
* [url=http://www.infoeducatie.ro/forum/viewtopic.php?f=36&t=2061”>programati bine
* unele seminarii de pe forum au prezentarile atasate (la fiecare editie -> categoria Seminarii)

Va felicitam pentru ca ati ajuns la Galaciuc si speram sa vedem cat mai putine probleme din cele de mai sus in 2009, si cat mai multe aplicatii de care sa fiti mandri!