Lucrând ca programator, realizezi la un moment dat în carieră că ești o parte mică, o rotiță, dintr-un mecanism mare. O rotiță esențială, fără de care întregul angrenaj nu se poate mișca. Dar totuși, doar o rotiță. În jurul tău vezi multe alte rotițe care, deși tu nu le înțelegi foarte bine rolul, sunt și ele esențiale în funcționarea mecanismului: analiști, suport, vânzări, marketing, financiar, HR, legal, etc.

Vorbind cu mulți oameni din tech, am înțeles că singura variantă prin care să înțelegi toate aceste roluri și de ce sunt importante este să le experimentezi pe pielea ta. Iar cea mai simplă opțiune e să pornești un proiect personal, un “pet project” cum i-ar zice americanii. Un proiect mic, pe care să încerci să-l duci de la zero până în punctul în care va fi public și folosit de niște utilizatori reali.

Iar cea mai simplă cale să faci acest lucru este să creezi o aplicație mobilă care să rezolve o problemă reală. Poate fi orice: o aplicație care te anunță la două zile că trebuie să duci gunoiul, una care te avertizează când prietena/soția/părinții se apropie de casă, una care îți trimite notificare cu 5 minute înainte să înceapă meciul Simonei Halep, etc. Important e să rezolve o problemă reală, oricât de mică ar fi .

Ce înveți făcând o aplicație:

Analiză de business – Orice produs începe cu o analiză de business. Încerci să îți închipui ce nevoi au oamenii. Sau discuți cu prieteni, cunoștințe, oameni de pe stradă și le culegi “requirements”-urile. Afli care este problema pe care o întâmpină și discutați despre care ar putea fi rezolvarea.

Analiză tehnică – După ce ai aflat ce trebuie să implementezi, încerci să vezi dacă/cum poți să faci asta din punct de vedere tehnic. Ce tehnologii ai nevoie, ce framework-uri, ce librării? Iar unele cerințe pur și simplu sunt prea complicate tehnic pentru a le putea implementa și va trebui să le refuzi.

Management de proiect – Bun, acum știi ce trebuie să implementezi și cum. Dar când? Cum te organizezi? Dacă lucrezi câte o oră la fiecare două zile, după job, în cât timp termini? Dar ce se întâmplă dacă prietenul tău designer nu îți trimite designul la timp? Răspunzând la acest gen de întrebări experimentezi ce ar trebui să facă un Project Manager.

Dezvoltare software – Partea cea mai distractivă, nu? Programatorii au nevoie să învețe lucruri noi tot timpul. Iar dacă la job nu poți experimenta, o poți face la proiectul tău personal. Tehnologii noi, librării noi, framework-uri noi, baze de date noi, unelte noi, IDE-uri noi. Încearcă-le pe toate.

Juridic  O să vrei să utilizezi o poză, o librărie sau un text în aplicația ta. Dar ai voie sau nu îți permite licența? De asemenea, orice aplicație presupune o responsabilitate a autorului ei în fața utilizatorilor. Va trebui să înveți câteva lucruri legate de drepturi și obligații pentru a te proteja în caz că soția utilizatorului va veni acasă, iar aplicația ta nu l-a notificat.

Managementul resurselor umane – Dacă în dezvoltarea aplicației ai nevoie de un designer și colaborezi (iar uneori te cerți) cu un prieten, o să înveți și managementul resurselor umane. Dacă  trebuie să plătești  pentru aceste servicii, o să înveți și negociere.

Testare – Automată, manuală, stress/load testing. Poate la compania pentru care lucrezi ai un departament de testare, care acționează ca un buffer între tine, ca dezvoltator, și clientul final. Pentru acest proiect nu mai ai luxul acesta. Orice greșeală faci, va ajunge direct la client. Așa că trebuie să te asiguri că vei face cât mai puține.

Deployment –  Ai terminat testarea, a venit momentul pentru lansare. Dar cum o faci? De ce ai nevoie? Lansezi pe toate versiunile sistemului de operare și la toți utilizatorii în același timp? Nu mai bine lansezi progresiv, vezi ce probleme apar și le rezolvi înainte să ajungă la toți?

Versioning – Va trebui să te organizezi serios pentru a lansa versiuni noi ale aceluiași produs. Ce vei include în noua versiune? Va fi compatibilă cu cerințele sistemului? Pe baza versiunii precedente ai primit feedback și requirements-uri noi? Ai modificat baza de date a aplicației și trebuie să o trimiți către clienți? Asigură-te că nu ai uitat nimic.

Suport  & Bug fixing – Evident, nu există software perfect, așa că produsul tău o să aibă bug-uri. Asigură-te că ai o modalitate prin care poți să afli de aceste bug-uri: log-uri, notificări pe email, etc. De asemenea, se știe că utilizatorul găsește tot timpul variante neașteptate de a utiliza produsul și le ocolește pe cele gândite de tine. O să fii contactat ca să dai indicații. Pregătește-te să oferi răspunsuri bune.

Marketing – Produsul, pe lângă dezvoltare software și funcționalitate, presupune și o parte importantă care ține de marketing: logo, branding, materiale promoționale, campanii de reclamă, etc. Toate aceste lucruri care fac dintr-un proiect software – un produs. Lucruri care sunt interfața între soluția ta software și client.

Vânzări & business – Degeaba ai creat un produs mișto, dacă nu reușești să-l vinzi. Aici este partea în care înveți niște skill-uri cu adevărat noi. Ce model de business vei alege? O să ceri bani pentru fiecare instalare? Câți? Sau îl oferi gratis și câștigi bani din reclame?

Contabilitate & finanțe – Ca să ajungi la cât mai mulți utilizatori o să vrei să-ți promovezi aplicația. Dacă utilizezi reclame plătite, atunci ar fi bine să înveți ce înseamnă ROI și CLV. Vrei să câștigi bani din reclame? Atunci ar fi bine să afli ce declarații fiscale va trebui să depui pentru a plăti impozit pentru acești bani.

 

Practic, trecând prin toate aceste etape, vei experimenta tot procesul prin care trece o firmă ca să lanseze un produs, doar că o faci la un nivel mult mai redus și lipsit de risc.

 

Ca recomandare personală, recomand oamenilor care lucrează în Java să învețe și să publice o aplicație Android. E extrem de simplu și satisfăcător. Iar senzația pe care o ai când publici prima ta aplicație este, vorba reclamei, de neprețuit. Ca “pet project” eu am realizat B.R.O. (Bulina Roșie Online), o aplicație Android ce îți arată clădirile cu risc seismic ridicat din proximitate. Iar lucrul la ea, cu toate fazele prin care a trebuit să trec, a fost o adevărată plăcere.

 

 

De ce e obligatoriu, ca programator, să ai un “pet project”

3 thoughts on “De ce e obligatoriu, ca programator, să ai un “pet project”

  • January 16, 2018 at 18:46
    Permalink

    Salut,

    Am inceput sa invat si eu java si tot ma bate gandul sa fac o aplicatie si as avea o intrebare pt tine.
    Avand in vedere aplicatia ta, din pura curiozitate si pt a-mi fac o idee cate clase are respectiva aplicatie si cate linii de cod ai scris in total.

    Mersi,
    un junior

    Reply
    • January 16, 2018 at 18:55
      Permalink

      Hello Junior! (mi-am dorit tot timpul să zic asta)
      Numărul de clase și de linii de cod nu e relevant. Nu acesta e modul în care îți dai seama de mărimea unui proiect. Ca informație utilă, îți pot spune că tot proiectul (aplicația) a durat probabil în jur de 120 de ore. Cu toate etapele de care vorbesc în articol.

      Reply
    • January 16, 2018 at 20:40
      Permalink

      Poti pierde o zi si sa scrii la finalul ei 10 linii de cod sau poti scrie 1000 care la final…nu prea merg!

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Vrei să te anunţăm când scriem ceva nou?