Ce este informatica?

Lucrez de 10 ani în informatică și nu mi-am pus întrebarea. Am abordat muncitorește și ca un bun meseriaș nu mi-am pus întrebări filozofice la început de carieră. Am executat.

Cred ca am auzit cândva o definiție pe care trebuia să o memorez pentru un examen sau o lucrare de control. Nu reușesc să țin minte așa că preiau definiția din dex.

INFORMÁTICĂs. f. Știință care se ocupă cu studiul prelucrării informației (3) cu ajutorul sistemelor automate de calcul.

A deci trebuie să ințeleg ce înseamnă informația …

Pentru a înțelege ce este informația trebuie să înțeleg mai întâi ce sunt datele pentru că acestea reprezintă materia primă pentru informație.

Datele sunt

  • observații
  • măsurători
  • numere
  • fapte
  • constatări

Exemple

  • marimea de la pantofi
  • numărul de pe o clădire
  • un cuvânt

Pentru ca datele să devină informații ele suportă prelucrări care le oferă o anumită semnificație. Deci informatica este știința care presupune utilizarea unui calculator pentru a transforma datele în informații.

Acum m-am clarificat. Merg mai departe.

 

Angajez Sculer-Matriter

Angajez Sculer-Matriter. Cam așa arată majoritatea anunțurilor de recrutare în IT. Dacă te pricepi să mânuiești o unealtă ești bun de muncă. Destul normal pentru contextul actual. Avem o industrie formată în majoritatea ei de companii ce oferă servicii și companii de outsourcing care închiriează în diverse modele oameni pentru corporații mai mari. Suntem băieți (și ceva fete) muncitori.

Într-un birou modern cu două sau trei monitoare pe care sunt afișate grafice pe care nu le înțelege nimeni, cu device-uri de tele-conferință ultra-moderne, vedere panoramică discută trei oameni ai muncii. Pe o parte a mesei stă Sculerul. Pe cealaltă parte Maistrul Șef și domnișoara Resurse Umane.

– Maistrul Șef: Și… ce unelte spuneți că folosiți?

– Sculerul: Știu să dau cu ciocanu și am mai găurit cu bormașina

– Maistrul Șef: Câte cuie bați pe oră?

– Sculerul: Cam zece cuie, dar să mi se spună foarte clar unde să le bat!

Discuția continuă despre tot felul de tehnici de mânuire a ciocanului până la intervenția discretă a domișoarei de la resurse umane care plictisită de ascultare activă intervine.

– Resurse Umane: Unde vă vedeți peste 5 ani?

– Sculerul: Păi… maistru șef

Interviul se încheie. Candidatul se retrage. Maistrul șef și domnișoara de la resurse umane încadrează candidatul pe grila de salarii. Dacă se potrivește și nu pare să atenteze la identitatea și competența maistului șef candidatul este ofertat. Sculerul nu e prea îngrijorat pentru că mai are vreo trei oferte. Se caută meseriași la greu.

Asta a fost încercarea mea de a surprinde în proză imaginea asupra pieței forței de muncă din IT-ul Românesc. Exercițiu de scriere creativă.

Ne merge bine în IT. Salariu este mare, cu sau fara impozitare, și avem birouri care mai de care. Îți găsești oricând de muncă. Primești cel puțin două telefoane pe săptămână de la un HR în căutare disperată de noi resurse. Dacă ai abilități rare poate și mai multe. Cu toate astea pare că ne lipsește ceva.

Ceva care îți face ochii să sclipească de bucurie. Te unge pe suflet. Îți dă suflu șă trăiești. Te trezește dimineața cu o oră mai devreme pentru că ai visat ceva și vrei să aduci visul în realitate.

Ne lipsește #creația. Nu spun creativitatea pentru că eu consider că o avem din simplul fapt că suntem oameni. Ne lipsește actul creației. Noi executăm.

Creativitatea ne-o exprimăm în timpul liber așa cum ne pricepem mai bine. Unii cântă, alții dansează, unii pictează, alții croșetează. Mai sunt unii care lucrează o idee pe care visează să îl transfrome în startup. Am terecut și eu prin asta. Doar că nu merge. Nu mai ai toată energia de care ai nevoie pentru a realiza ceva complet după opt ore de stat la birou.

Dezvoltare software – retrospectiva pentru 2016

În 2016 preocupările legate de dezvoltare software au fost orientate către partea de proces, învățare, bune practici, soluții de business și arhitectură folosind tehnologii moderne.

Anul l-am început alături de Koding Tehnology cu o colaborare pe partea de consultanță și dezvoltare software.

  • am realizat un studiu exploratoriu privind soluțiile de business (ERP, CRM, BPM)
  • am lucrat la o soluție custom de raportare
  • am urmat cursul de MongoDB
  • am experimentat cu Neo4J
  • am prototipat alături de echipa Koding o arhitectură pentru catalogul de produse bazată pe baze de date nerelaționale și tehnologii cloud

Cea mai mare provocare si cea mai bogată din punct de vedere al satisfacției personale a fost să împărtășesc cunoștințele către studenții de la ASE.

  • am lucrat împreună cu grupele 1070, 1074 și 1075 în laboratorul de tehnologii web
  • am facilitat seminarul de Afaceri Electronice
  • am organizat două workshop-uri cu tema “Agile în practică” la invitația doamnei prof. Bodea în cadrul cursului de Management al Proiectelor Informatice, master SIMPRE

Practică deliberată

Pe peretele unui prieten am văzut o interfață familiară. Te îndeamă să dai share dacă primul tău mediu integrat de dezvoltare (IDE) a fost albastru. 

Mi-am amintit de zecile de programe pe care le-am scris în C++

Toate din plăcerea de a realiza ceva gândit de mine. Cred că nimeni nu te poate forța să înveți programare. Cel mult să te inspire și să te ghideze. În rest e nevoie de foarte multă practică deliberată.

omg

Se spune că ai nevoie de cel putin 10.000 de ore pentru a deveni expert într-o meserie.

Plăcerea de a scrie cod de calitate

Plăcerea de a scrie cod de calitate mi-a fost insuflată de doi oameni pe care îi respect foarte mult și sunt tare recunoscător că am avut ocazia să lucrez alături de ei. Pe amândoi i-am considerat mentori și modele în perioada în care am lucrat la Zitec. Cei doi sunt Ionuț VODĂ și Lucian DAIA. Ambii fac parte din echipa de conducere unde Ionuț este CTO, iar Lucian este Chief Software Engineer.

Amândoi au standarde înalte de calitate pe care le pun în practică așa că am luat decizia să îi urmez și să le ascult sfaturile. A fost o decizie inspirată pentru că după ce am început să mă preocup de calitatea codului munca mea a căpătat o nouă dimensiune. Am început să mă bucur atât de rezultatul muncii cât și de procesul de a ajunge la soluție într-un mod elegant.

Lucian mi-a făcut cunoștința cu PHP MessDetector un tool de analiză statică pe cod. Se întâmpla prin anul 2011 când am început să lucrez pe unul din proiectele pe care el îl conducea. A avut mare răbdare să îmi explice conceptele și ce înseamnă fiecare indicator. Apoi ne-am chinuit împreună să îl facem să meargă. Foarte puțin mai conta ora de încheiere a programului pentru că eram tare curios să văd rezultatele. L-am rulat pe toate proiectele pe care le făcusem până la momentul respectiv. Am găsit variabile nefolosite, clase foarte lungi și metode greu de înțeles datorită numărului mare de puncte de decizie.

Tot Lucian mi-a prezentat conceptul de refactorizare și am lucrat împreună să optimizăm un script care prelucra date foarte multe extrase din AppStore. Am rescris codul pentru a fi mai ușor de înțeles și de extins. Am optimizat interogările în baza de date pentru a obține o viteză cât mai bună pentru utilizatori. Mi-a recomandat cartea Code Complete pe care m-am grăbit să o descarc și am citit-o cu mare interes.

Cu Ionuț am început să lucrez tot în 2011. El avea un stil diferit. Fiind implicat în mai multe proiecte și activități își gestiona timpul într-un mod foarte eficient așa că majoritatea conversațiilor le purtam pe email. Realiza analize foarte riguroase asupra codului pe care îl scriam și era foarte ferm cu modificările pe care le cerea. Stilul direct combinat cu cel directiv îl făcea să pară rece și de multe ori provoca frustrare celor cu care interacționa. Am reușit să depășesc acest mod de comunicare și să văd experiența ca pe una de învățare. Și cu adevărat am avut multe de învățat, iar atunci când am scris cod bun nu a ezitat să mă felicite atât privat cât și public printr-un email către conducere. Pe măsură ce am lucrat mai mult împreună și am început să mergem împreună la client aveam conversații foarte interesante despre principii de arhitectură și design patterns. De la el am primit recomandarea să citesc Head First Design Patterns și Design Patterns: Elements of Reusable Object-Oriented Software.

La rândul meu urmăresc să transmit mai departe ce am învățat când am văzut că există dorință și deschidere pentru a obține rezultate. Am petrecut niște sâmbete frumoase la birou împreună cu George ȚUȚUIANU să facem o analiză despre evoluția codului pe un an de zile pe proiectul în care eram implicați și am observat trendul ascendent al evoluției indicatorilor. Ne-am ambiționat și l-am făcut să scadă chiar dacă lucram la o integrare complexă cu presiunea deadline-ului imediat după sărbătorile de iarnă. Asta pentru că dacă îți dorești cu adevărat se poate.

calitate

Acum PHP Mess Detector e integrat în majoritatea mediilor de dezvoltare și pentru Code Review există o grămadă de soluții care permit inspectarea codului și adăugarea cu ușurință de sugestii de îmbunătățire. Totuși cred că interesul și dorința de a scrie cod de calitate nu vine de la unelte sau reguli impuse. Vine din setea de cunoaștere, dorința de a învăța și din interacțiunea cu oameni care sunt un exemplu prin orientarea lor către calitate.

Scriț cod frumos! Se merită!

Dezvoltarea primului produs software – minimul utilizabil

Am povestit în postarea anterioară despre cum am început ca angajat într-o companie de software și contextul în care am ajuns să dezvolt primul produs software.

Compania se numește PIT Software și dezvoltă soluții pentru industria Ho.Re.Ca. La momentul respectiv produsul principal era Pitos® POS o soluție desktop dedicată restaurantelor. Extinderea portofoliului cu un client important a venit cu necesitatea de a dezvolta cât mai repede o soluție pentru a gestiona comenzile la domiciliu.

Timpul era foarte limitat și pentru a câștiga contractul era important să ne mișcăm rapid. Am avut la dispoziție aproximativ 3 săptămâni pentru a veni cu o variantă funcțională. Opțiunile erau să dezvoltăm un modul nou în soluția existentă sau să dezvoltăm un nou produs. Fiindcă era vorba de o aplicație complexă cu o durată lungă de învățare și ne având cunoștințele necesare pentru a o extinde am ales varianta de a porni cu noua aplicație de la zero.

De vreme ce resursele erau limitate cea mai importantă parte a fost să definim un minim utilizabil. În literatură și în practică de cele mai multe ori acest lucru se referă la a defini un MVP (https://en.wikipedia.org/wiki/Minimum_viable_product). Desigur că la momentul respectiv nu aveam habar de această terminologie. Știam doar că trebuie să lucrăm cât mai repede pentru a oferi o soluție.

Experiența proprie în dezvoltarea de produse software – începutul

Mi-am început cariera de programator web ca angajat în August 2007 când m-am angajat la PIT Software companie ce dezvoltă soluții pentru Ho.Re.Ca

Dezvoltasem deja un portofoliu de proiecte proprii folosind tehnologiile web (HTML, CSS, PHP, MySQL și JavaScript) așa că am devenit productiv încă din prima zi de muncă.

Așa tare m-am entuziasmat de oportunitate încât m-am dus acasă, mi-am luat unitatea centrala și am început să lucrez la primul program pentru ei. Aveau nevoie urgent să deblocheze un proiect pentru un client foarte important care avea un lanț de cafenele și restaurante în Buzău. Din portofoliu lipsea o aplicație pentru gestionarea comenzilor cu livrare la domiciliu. Am schițat câteva idei împreună cu Adrian Poenaru și Ovidiu Roșu și m-am apucat de treabă. După prima zi de muncă aveam o interfață în HTML. După 3 săptămâni am făcut prima instalare de Pitos Delivery.

Situația în 2007 se prezenta astfel

  • dezvoltarea se concentra pe aplicațiile desktop
  • foarte puține locații aveau conexiune la internet
  • PHP trecea de la versiunea 4 la versiunea 5

Limitările de la momentul respectiv și natura aplicației ce presupunea comunicarea cu casa de marcat și imprimantele m-au forțat să am o abordare hibridă desktop/web. Am optat pentru a înstala pe calculatorul respectiv un server web care rula aplicația scrisă în PHP și am dezvoltat o interfață în C# care se folosea de componenta de browser pentru a randa paginile. Asta a dus la o restricție de a folosi exclusiv Internet Explorer 7 ca navigator web. Mozilla era mult mai capabil la momentul respectiv decât IE7, dar dat fiind limitarea am dus chinuri groaznice să adaptez anumite comportamente diferite pe cele două browsere.

Web-ul se bazează pe operații de Request și Response între client și server. Încărcarea conținutului unui website se face prin navigarea pe link-uri. Fiind vorba de o aplicație a trebuit să ofer o experiență cât mai fluidă de utilizare care se obținea cu greu dacă aș fi folosit refresh la fiecare acțiune. Pentru a depăși aceatstă problemă m-am orientat către request-uri asincrone folosind JavaScript (AJAX). Așa s-a născut prima mea aplicație web. Ceea ce se numește în prezent Single Page Application (SPA). Deci mare hipstereală din partea mea la vremea respectivă. Am făcut SPA-uri înainte să fie cool 😉

Cu toate limitările setup-ul mi-a permis să obțin o productivitate încredibilă în comparație cu ceilalți colegi care dezvoltau aplicații desktop. Flexibilitatea limbajului HTML îmi permitea să adaptez foare ușor înterfețele. PHP lucrează foarte bine cu MySQL și structurile de date le gestionam ușor folosind array-uri (vectori). Pe lângă asta a contribuit și faptului că eram sunt un workaholic.