6 pași esențiali pentru un proiect reușit

6 pasi esențiali pentru un proiect reușit

Salutare,

În experiența mea de programator, cele mai interesante momente erau atunci când trebuia să realizez o aplicație de la zero. Acest proces mă obliga să îmbin partea tehnică cu multe alte soft skill-uri, indiferent că era vorba despre un proiect la facultate, licență, hackathon sau un proiect personal.

Dacă te-ai încurcat vreodată în acest proces sau vrei pur și simplu să îl îmbunatațesti, ești în locul potrivit. Îți voi povesti din experiența dobândită în urma dezvoltării a peste 10 aplicații de la zero din ultimii ani.

Înainte să începem, vreau să precizez un lucru pe care îl consider important și care mie mi-a schimbat radical modul de a privi aceste proiecte. Din punctul meu de vedere, orice aplicație/proiect ar trebui privit ca un start-up personal, ca și cum tu urmează să lansezi acel lucru către publicul tău. Poate o să ți se pară exagerat să faci asta cu un proiect de la facultate sau cu lucrarea de licența, dar acest lucru te poate face să ai rezultate mult mai bune și să îți dezvolți atât skill-urile tehnice cât și pe cele non-tehnice.

La sfârșitul articolului îți voi lăsa ca exemplu toți pașii pe care i-am urmat pentru licența mea realizată în 2017, o aplicație web pentru persoanele ce susțin bacalaureatul la informatică. Hai să începem!

Pasul 0 – Definește obiectivul tău

În trecut, nu am luat în considerare acest pas, instinctul meu fiind să deschid programul în care scriam cod și să mă apuc de treabă.

Acest lucru funcționa pentru o perioadă scurtă, dar apoi ajungeam să mă pierd în toate lucrurile pe care le făceam, deoarece nu știam încotro mă îndrept. Din același motiv, când aveam de luat o decizie, nu reușeam să îmi dau seama în ce direcție să merg.

Bun. Sper că te-am convins de importanța acestui pas, iar acum vreau să întru un pic în detalii și să îți dau câteva exemple. Ca să îți definești obiectivul trebuie să răspunzi la întrebarea: ce vreau să obțin prin acest proiect? Aici pot să intervină mai multe genuri de răspunsuri:

  • Vreau să obțin nota 10 la proiect/licență
  • Vreau să învăț cum se face o aplicație de la zero
  • Vreau să învăț JavaScript
  • Vreau să înțeleg mai bine algoritmi și structuri de date
  • Vreau să învăț skill-uri de debug

Înțelegi încotro merg? Să zicem că tu ai ca obiectiv să iei nota 10 la licență și să înțelegi mai bine algoritmii și structurile de date. În tot procesul tău, îți vei lua deciziile pe baza acestor lucruri. Când va trebui să gândești funcționalitățile, te vei orienta spre ceva complex, care îți va asigura o notă mare, dar și ceva care necesită algoritmi optimi sau parcurgeri eficiente de structuri de date.

Pasul 1 – Ideea

Perfect, următorul pas este conturarea ideii, iar acest lucru presupune câteva aspecte importante pe care le voi prezența imediat.

  1. Nevoia

În centrul oricărui proiect ar trebui să existe o nevoie, o problemă ce trebuie să fie rezolvată printr-un mod diferit decât cel actual (mai rapid, mai ușor de folosit, cu beneficii noi etc.). După ce îți vine o idee pentru o aplicație, este important să vezi dacă aceasta rezolva o nevoie și care este aceea exact.

La acest punct mai este un mic detaliu, acela de a confirma această nevoie de pe piață și de a te asigura că nu este doar o presupunere. În funcție de situația și proiectul tău, există mai multe modalități de a realiza acest lucru. ÎțI las mai jos 4 exemple:

  • sondaj
  • research studii existente
  • focus grupuri
  • discuții private
  1. Public țintă

Împreună cu nevoia este necesară și definirea publicului căruia i te adresezi. Există o mulțime de metode prin care poți defini acest “buzz word”, dar pentru a simplifica lucrurile, la început este suficient să îți notezi câteva caracteristici ale acestora precum ar fi: vârstă, sex, localizare, interese etc..

Acest proces te va ajuta, la fel ca punctele anterioare, la multe decizii pe care le vei face pe parcurs. Un exemplu bun este modul în care realizezi design-ul pentru o aplicație dedicată copiilor vs adulților sau dedicată femeilor vs bărbaților.

  1. Research

În cazul research-ului mă refer la 2 direcții, prima cea referitoare la aspectele ce țin de idea ta, iar a două despre aplicații asemănătoare ce există deja pe piață.

-> Research idee

La această parte, este necesar să intri un pic mai în detaliile proiectului tău și să începi să strângi informațiile de care ai nevoie, pentru a înțelege și mai bine nevoia și publicul tău. În funcție de idea ta, există diferite metode de a caută informații și sunt sigur că există un punct din care să pleci.

-> Research aplicații asemănătoare

Cum îi spune și numele, am ajuns la partea unde căutăm soluții existente pentru aceeași nevoie pe care am descoperit-o și noi. Este important să vizualizezi cum altcineva încearcă să rezolve această nevoie și, în special, să ii afli punctele forte și slabe.

Făcând acest lucru, vei putea să îți dai seama cu ce lucruri poți veni tu în plus pentru publicul tău și ce te va diferenția de concurența ta. În același timp, poți vedea dacă ideea ta este confirmată în piață.

După toată această muncă probabil vei reuși să strângi suficientă informație cât să îți dai seama exact cum trebuie să arate proiectul tău și în ce direcție vrei să te îndrepți. Înainte să trecem la pasul următor, îți propun să mai faci un mic lucru care te va ajuta să răspunzi foarte ușor la întrebarea: “Ce face proiectul tău?”.

d) Pitch

Dacă nu știi ce este acela un pitch, îți voi explică acum. Un pitch este reprezentat de câteva propoziții ce descriu ceva (un proiect, o persoană, o afacere etc.), ce pot fi prezentate în timpul unei urcări cu liftul, de unde și numele complet “elevator pitch”. Din cauza timpului limitat, pitch-ul te forțează să sintetizezi tot research-ul tău în doar câteva cuvinte, prin care tu să poți descrie punctele cheie de interes pentru publicul țintă. 

Poate te întrebi de ce ar trebui să faci un pitch pentru un simplu proiect, pe care nu o să îl prezinți într-un mediu de business. Ei bine, într-un final, tot îl vei prezența unui profesor, coleg sau prieten. În plus față de asta, te va ajuta inclusiv pe tine să îți sintetizezi ideea.

Pasul 2 – User stories/funcționalități

Perfect, până acum știm ce vrem să obținem cu proiectul nostru și avem ideea clară definită în minte. Urmează să întrăm în procesul de construire a proiectului nostru, prin definirea  funcționalităților.

În domeniu, acestora li se mai spune și “user stories” adică, mai pe românește, ce poate să facă un utilizator în aplicația noastră. Cel mai des o să auzi termenul acesta folosit în echipele ce folosesc agile ca metodologie de lucru. Dacă nu știi încă ce este agile, este ok, o să întru în câteva detalii puțin mai târziu.

“User stories are simple, yet extremely powerful constructs: they describe pieces of functionality from a user’s point of view, expressed in a solid, compact way.”

https://www.freecodecamp.org/news/how-and-why-to-write-great-user-stories-f5a110668246/

Printre beneficiile acestui pas, se numără claritatea cu care vei putea vizualiza aplicația ta într-o formă finală și volumul de efort necesar. De asemenea te va ajuta la unul din pașii viitori să prioritizezi aceste funcționalități. Există o mulțime de resurse pe această tema, dar dacă vrei să începi, îți pot recomanda acest articol.

Pentru mine, a fost extrem de util să vad toate lucrurile pe care trebuie să le implementez pentru a finaliza proiectul, pentru a-mi putea lua asta de pe cap și a mă putea concentra doar la următoarele 1-2 lucruri.

Un sfat pe care pot să ți-l ofer în scriera acestor “user stories” este să te pui în pielea unui utilizator al proiectului tău și să te gândești ce ar avea el nevoie să facă. Uite, îți voi lasă mai jos câteva exemple de “user stories” pentru site-ul 4MAYO.

  • Ca utilizator, vreau să întru pe pagină contact pentru a contacta echipa 4MAYO.
  • Ca utilizator, îmi doresc să întru pe pagină conținut pentru a vedea articolele.

Pasul 3 – Planning

Bun, în momentul acesta ai și mai clar în minte cum va arăta proiectul tău și ce anume trebuie să facă, detaliat prin “user stories”. Este momentul potrivit să planifici următorii pași. Benefiicile pe care poate să ți le aducă o planificare sunt faptul că poți urmări progresul pe care îl ai în timp, dar și posibilitatea de a ordona/prioritiza lucrurile.

Poți aborda această planificare în multe feluri, dar eu prefer abordarea agile, pe care am regăsit-o și în toate companiile la care am lucrat, într-o formă sau alta.

Despre Agile, îți pot spune că este un mod de lucru modern aplicat în domeniul IT, pe care îl utilizează majoritatea echipelor. Principiul de baza este faptul că, așa cum îi spune și numele, oferă echipelor o agilitate, o flexibilitate în livrarea unui produs și adaptarea în tot acest proces.

Îți las aici un link către “Agile Alliance”, un website unde poți găsi toate resursele de care ai nevoie.

Acum te poți întreba, bun, dar de ce am eu nevoie de o metodologie aplicată pe echipe, la un proiect unde lucrez singur? Ei bine, există elemente din Agile pe care eu le-am găsit utile chiar și în proiecte individuale.

În acest caz am extras din metodologie doar modul de organizare, planificare și urmărire de task-uri pe care le aveam de rezolvat.

Mai exact, am împărțit task-urile mele în 4 categorii:

  • Backlog: Locul în care am introdus inițial toate task-urile, într-o ordine a priorităților.
  • Todo: Locul în care mutam din “Backlog” cate 1-3 task-uri pentru a știi la ce trebuie să lucrez pe termen scurt, de asemenea în ordinea priorităților.
  • Doing: Locul unde mutam din “Todo” task-urile începute.
  • Done: Locul unde mutam task-urile finalizate.

Poate să ți se pară un efort inutil, dar pot să iți spun că pe mine m-a ajutat extrem de mult cu cât proiectul era mai complex.

Ca să fac tot ce ți-am povestit mai sus într-un mod vizual, am utilizat platforma Trello. Este un instrument gratuit prin care te poți organiza pentru orice îți dorești. Eu l-am folosit pentru proiecte personale, când lucram cu alte persoane sau când trebuia să mă pregătesc pentru un examen/interviu.

În cazul proiectelor eu am creat listele “Backlog”, “Todo”, “Doing” și “Done”, iar task-urile le-am adăugat printr-un mod de afișare sub forma de carduri. Îți las mai jos un exemplu.

Pasul 4 – Technology stack

Felicitări, ai reușit să treci de zona ce ține mai mult de business și te poți îndrepta spre cea tehnică, mai exact să iți definești tehnologiile cu care urmează să lucrezi.

În funcție de contextul tău pot exista mai mulți factori care să îți influențeze această decizie. Astfel, pentru un Hackathon, aș alege limbaje ușoare, rapide și pe care le stăpânești, pentru a-ți oferi acea viteza de care ai nevoie. În cazul unei licențe, în funcție de aplicația pe care vrei să o dezvolți, te poți orienta către tehnologii de mobil, web sau desktop.

Totuși, un sfat pe care ți-l pot oferi este să încerci să ajungi la un echilibru între tehnologiile pe care le stăpânești în prezent și cele de care ai nevoie pentru a finaliza proiectul. Cel mai bun exemplu care îmi vine în minte (pe care îl ofer ori de cate ori am ocazia) este următorul: daca ai nevoie să faci (și) o aplicație mobilă, dar experiența ta este în zona de web și aici vrei să te dezvolți, te poți orienta către Progressive Web Apps (o modalitate de a transforma o aplicație web, într-una nativa de mobil) sau către React Native, fiind o tehnologie apropiată de zona web.

De asemenea, îți recomand atunci când realizezi “technology stack-ul” pentru proiectul tău, să împarți tehnologiile în mai multe categorii, cum ar fi: backend, frontend, bază de date, design, APIs etc..

În prezent, există extrem de multe resurse de care te poți folosi, așa că dacă viteza sau efectul rezultatului final este important pentru tine, orientează-te către proiecte/API-uri open source.

Pasul 5 – Design si structură

Acest pas se referă la 2 lucruri, design-ul aplicației tale și structura bazei de date. Acum, este posibil ca unele proiecte să nu aibă interfață grafica sau bază de date, dar majoritatea aplicațiilor din prezent conțin ambele componente, așa că am ales să le acopăr. Hai să vedem.

  1. Design aplicație

Procesul de realizare a design-ului presupune să te gândești, pe baza tuturor informațiilor adunate până în prezent, cum va arăta interfața grafică a aplicației tale, cum va interacționa utilizatorul cu aceasta. Nu este suficient să iți imaginezi în mare acest design ci să gândești în detaliu fiecare pagina și interacțiunea dintre ele.

Pentru mine, acest proces este format din doi pași, “wireframe” și “mockup”. “Wireframe” este pasul în care realizezi doar un schelet al aplicației tale, cu forme extrem de simple și fără culori. Acesta te poate ajuta să fii sigur că știi cum va arată la baza aplicația ta, înainte să începi să gândești întreagă cromatică sau alte elemente.

Tot acest proces ar trebui realizat într-un mod vizual. Dacă știi că ai talent la desen, te poți orienta către metoda clasică, pe hârtie, dar dacă nu (cum este și cazul meu) îți recomand un tool extrem de simplu, gratuit, unde poți realiza acest lucru digital: Wireframe.cc.

Următorul pas, mockup-ul, presupune completarea wireframe-ului pentru a ajunge o versiune statică a aplicației tale. Câteva elemente pot fi culorile, imaginile, text sau titluri. Aici, dacă vrei să te orientezi tot către un instrument digital, nu ai foarte multe soluții gratuite, totuși îți voi lăsa un instrument cu care poți să începi, gratuit dacă realizezi un singur proiect:  Moqups

  1. Structura bazei de date

În prezent exista două direcții în care poți merge când vine vorba de o bază de date, SQL sau NoSQL. Daca nu știi exact care este diferență dintre ele, nu iți face griji, nu voi intra în detalii, ci voi încercă să iți dau câteva sfaturi ce se aplică la ambele.

Astfel, în funcție de ce informații ai strâns până acum la partea de “user stories” și design, poți identifica datele pe care trebuie să le persiști în baza ta de date. Personal, încep să parcug lista de “user stories” și pentru fiecare încerc să identific elementele principale.

După ce m-am asigurat că am strâns toate entitățile dorite, mă asigur că acestea au toate câmpurile de care am nevoie, iar apoi mă gândesc la relațiile dintre acestea.

La fel ca în cazul design-ului ajută foarte mult dacă realizezi aceasta structură vizual. Te poți orienta de asemenea către foaie și pix, dar daca ești mai familiar cu zona digitală, ai aici două tool-uri pe care le poți folosi:  DBDiagram (doar pentru SQL, cu o structură clasică) sau Creately (SQL și NoSQL, modern, cu template-uri pentru multe alte lucruri).

Pasul 6 – Acționează

Am ajuns și la pasul în care poți începe să acționezi și să dezvolți efectiv proiectul tău. Acest pas diferă destul de mult în funcție de contextul proiectului tău, dar voi încerca să îți dau câteva sfaturi generale, care te-ar putea ajuta.

  • Orice decizie ești nevoit să iei pe parcurs, ia în considerare obiectivul de la pasul 0 și ideea de la pasul 1.
  • Transformă “user stories” în task-uri mici, pentru a fi mai ușor de urmărit.
  • Actualizează Trello când ai ocazia. Te ajută să urmărești mai ușor progresul și să te bucuri de task-urile finalizate.
  • Nu uita să prioritizezi mereu task-urile și să respecți această ordine.

Concluzie

Gata, am ajuns și la concluzie. Ei bine, aceștia sunt pașii pe care eu îi urmez de cele mai multe ori atunci când încep un proiect nou. Dacă nu sunt toți utili pentru tine, încearcă să îi extragi pe cei care sunt și să-i adaptezi pentru situația ta.

Nu te lasa coplesit de nivelul ridicat de informații sau de task-uri. Este normal sa fie de munca la un proiect, dar daca iei lucrurile pas cu pas, vei ajunge într-un final la rezultatul dorit.

Mulțumesc ca ai citit articolul pana la final, sper ca te va ajuta să realizezi proiecte din ce în ce mai complexe.

Daca ți-a plăcut conținutul nu uita să îl distribui către un prieten, iar daca vrei să discutăm mai în detaliu despre unul dintre pași poți să lași un comentariu sau sa ne scrii pe rețelele de socializare.

Exemplu propriu:

Pasul 0 – Obiectiv

Eu la licență am avut avut 3 obiective:

  1. Să obțin nota 10
  2. Să realizez o aplicație web (backend + frontend)
  3. Produsul final să fie utilizabil și util pentru publicul meu

Din primul obiectiv îmi dau seama că trebuie să fie o aplicație cu o complexitate mai ridicată. De asemenea, din obiectivul 3 știam sigur că funcționalitățile le voi realiza bazându-mă pe nevoiele reale ale utilizatorului, nu în funcție de ce era mai ușor/ce credeam eu că ar da bine.

Pasul 1 – Ideea

  1. Nevoia

În cazul meu, atunci când am susținut proba de informatică la bacalaureat, am simțit o frustrare pentru că peste 80% din ce trebuia să învăț, împreună cu lucrarea efectivă, era pe foaie. Am considerat că este dificil pentru un programator să își dezvolte abilitățile necesare scriind cod pe foaie, aceasta fiind nevoia pe care mi-am propus să o rezolv.

Eu atunci am ales un sondaj cu mai multe întrebări, ce a fost completat de 90 de persoane. Îți las mai jos un exemplu de întrebare.

  1. Public țintă

Când am relizat licența eu aveam clar în minte care este publicul țintă, dar nu l-am scris nicăieri, așa că voi repara această greșeală acum:

  • Vârste cuprinse între 15 și 19 ani
  • Persoane la un liceu cu profil informatic din România care doresc să susțină proba de informatică la bacalaureat
  • Utilizează mai mult un mobil decât un calculator/laptop
  • Vor să își exerseze conoștințele acumulate
  1. Research

Pentru acest pas, eu am trecut peste materia de informatică predată în liceu și peste structura probei de informatică de la bacalaureat (tipuri de exerciții, punctaje intermediare etc.). Astfel, după acest lucru, aveam o idee mult mai clară despre ce avea nevoie publicul meu.

În etapa de research, am reușit să găsesc două aplicații ce își propuneau să rezolve aproximativ aceeași problemă, dar nu erau aproape de ce avea nevoie publicul țintă. Drept urmare, acestea nu mai există în prezent.

Acestea erau Agilo.ro si Testeonline.informaticasite.ro și aveau diferite lipsuri printre care:

  • experiența utilizator mediocră
  • doar teste grilă
  • fără punctaj intermediar
  • puține întrebări
  1. Pitch

Voi realiza o aplicație web unde liceenii din România vor putea rezolva variante pentru proba de informatică de la bacalaureat, iar punctarea fiind realizată exact după barem.

Pasul 2 – User stories/funcționalități

Trebuie să îți recunosc că în momentul în care am lucrat la licență, nu am făcut acest pas ca la carte, dar îți voi da acum câteva exemple de story-uri pentru aplicație:

  • Ca utilizator, vreau să pot rezolva o variantă la informatică, cu toate tipurile de exerciții.
  • Ca utilizator, îmi doresc să am la dispoziție maximum 3 ore, pentru o experiență apropiată de proba efectivă.
  • Ca utilizator, vreau să primesc punctaj intermediar pentru orice răspuns parțial corect.
  • Ca utilizator, îmi doresc să vizualizez la sfârșitul variantei punctajul, împreună cu răspunsurile corecte, pentru a mă verifica.

Pasul 3 – Planning

Spre dezamăgirea mea, atunci nu am utilizat Trello pentru a mă organiza, cred că aveam un proces ușor haotic prin care notam într-o agendă toate aceste lucruri. Posibil să funcționeze pentru tine, dar pentru mine sigur nu era cel mai eficient. Am realizat totuși acum un exemplu.

Pasul 4 – Technology stack

  • Backend: JAVA, Spring Boot, Maven
  • Frontend: HTML, CSS, JS, AngularJS 1 (știu, Angular 1, era totuși 2017)
  • Package management: NPM, Bower
  • Librării: CodeMirror
  • Design: MaterializeCSS
  • Algoritmi: RegEx, MathML
  • Baza de date: MySQL

Pasul 5 – Design

Distribuie articolul pe: