O zi din viața unui Software Developer

Din ce în ce mai mulți tineri își doresc să urmeze o profesie în IT deși puțini știu ce presupune cu adevărat acest lucru. Fiecare job are o anumită aură de mister. Ce fac acei oameni toată ziua? Ce se întâmplă la locul lor de muncă? E dificil? Meseria de Software Developer e una relativ nouă dar taskurile pot varia destul de mult de la o zi la alta. În prezentul articol vă vom arăta cam cum se desfășoară o zi normală pentru cei ce au această meserie.

Sprinturile și diminețile

Dacă faci parte dintr-o echipă de agile development , asta va include de la 5 până la 10 oameni. (Agile development include Extreme Programming [XP], Scrum, Crystal, Dynamic Systems Development Method [DSDM], Lean Development, și Feature-Driven Development [FDD] printre alte discipline.) În general vei lucra în sprinturi. Ideea e că decât să lucrați la un proiect foarte mare deodată, el e împărțit în sprinturi de două sau trei săptămâni. Fiecare din echipă va lua un task care i se potrivește și va lucra la el. Apoi, în fiecare dimineață există o sesiune scurtă în care se urmărește progresul făcut. În aceste ședințe de aproximativ 15-20 min, fiecare spune ce a realizat, la ce lucrează sau unde a întâmpinat blocaje.

Rutina zilnică

Deci o zi normală s-ar putea desfășura în felul următor:

9:00- Verificare e-mailurilor, aranjarea listelor de ,,to do”, organizarea întâlnirilor.

10:00- Meeting Stand-Up, lucrul la proiect: carry out coding, rezolvarea problemelor și development. Desigur, va mai fi nevoie să mai ceri și sfatul cuiva sau să ți se ceara sfatul. Dacă membri echipei tale sunt liberi, ați putea să mergeți împreună la tablă și să faceți o diagramă și să găsiți o soluție. Aici depinde de companie, dar după ce găsiți soluția o să creați un „change request” sau „pull request” în care faceți un rezumat al schimbărilor propuse, pe care altcineva poate să-l analizeze. Probabil până acum vei ajunge la pauza de masă. După-amiaza e momentul când ședințele se poartă și când proiectele long-term sunt discutate.

După-amiaza și lansările de proiect

Când se lansează un nou proiect, în general primești o listă de cerințe și trebuie să creezi un design document. Acesta e în general un document de 2-3 pagini în care descrii problema și soluția propusă. Vei lua fiecare alternativă în parte și vei explica de ce ai ales-o sau de ce ai respins-o. După ce terimini, îi vei arăta echipei și managerului la ce ai lucrat. Depinzând acum de companie, daca totul este ok, ar trebui deja să începi să implementezi proiectul singur sau alături de un coleg. În acest stadiu, chiar daca l-ai testat deja riguros, fii sigur că funcționează pe computerul tău de lucru! S-ar putea să descoperi probleme la el mai târziu și va trebui să semnalezi bugurile bazate pe feedback-ul primit de la colegi sau clienți.

Sfârșitul zilei

Când și cum ziua ta de muncă se sfârșește depinde de angajator: de obicei acest lucru se întâmplă după cele 8 ore de muncă, deși s-ar putea în unele cazuri să mai fi nevoit să rămâi până termini un task specific. Când ne gândim la o zi din viața unui software developer ar trebui să ne gândim la capacitatea de a rezolva probleme: Lucrurile care trebuiesc rezolvate sunt sunt mici și cumulative, ducând la apariția unuei soluții mulțumitoare atunci când echipa lucrează în tandem și proiectul e finalizat.

Ecaterina Filimon

Cum știi dacă ești făcut pentru programare? Calitățile unui programator de succes

Majoritatea celor care vor să se apuce de programare își pun, așa cum e și firesc, întrebarea dacă sunt făcuți pentru așa ceva. În special cei care nu au urmat specializări în științe exacte cred că au șanse reduse pentru a reuși în acest domeniu dacă nu știu matematică la un  nivel rezonabil.

În realitate, este vorba despre cu totul altceva. Mulți se apucă de programare pentru că au auzit că jobul este bine plătit și le poate oferi independența financiară relativ repede. Dacă vă gândiți doar la aspectul financiar, nu veți ajunge prea departe.

Este vorba, până la urmă, de un cumul de calități pe care, dacă nu le ai, nu e cazul să te mai obosești să înveți programare. Astfel, dacă ești motivat doar de câștigul financiar și nu ești interesat deloc de calculatoare, nu îți place sau nu poți să stai așezat pentru lungi perioade de timp, ochii îți joacă în cap când te uiți la o pagină de cod și tastezi destul de încet și adesea faci multe greșeli, cu siguranță programarea nu este pentru tine.

În schimb, dacă te consideri analitic și creativ în aceeași măsură, ești atent la detalii, te simți confortabil să lucrezi cu ceilalți, dar și să lucrezi singur, ai o bază solidă în înțelegerea limbii engleze scrise, îți place să rezolvi probleme și să înveți mereu lucruri noi și te adaptezi ușor la schimbări, atunci alegerea ta este corectă.

Dincolo de toate acestea, ai nevoie de concentrare și răbdare pentru a crea codurile la care te gândești. Pe de altă parte, programul unui programator poate fi neregulat, dacă alege să corecteze erorile din sistemele informatice, ce pot apărea oricând, dar la fel de bine poate fi un job cu un program obișnuit.

Cert este că un programator are mult mai multă libertate decât alte profesii existente pe piață în prezent, iar un alt avantaj este că poate face programare și de acasă sau de la o cafenea pentru că important este produsul final.

Pentru ca toate aceste lucruri să se întâmple este nevoie de studiu riguros, iar recomandarea este să faceți asta cu persoane avizate, care vă pot învăța corect bazele programării și vă pot ghida apoi pașii către zonele avansate ale acestui domeniu.

Cum afli pe ce zonă a programării vrei să activezi. Limbajul de programare ideal pentru începători

Pentru orice novice în programare, specialiștii recomandă limbajul de programare Python. Acesta este considerat limbajul ideal de programare pentru începători dintr-o multitudine de motive, ponind de la sintaxa relativ ușoară și până la faptul că necesită mai puțin cod față de alte limbaje de programare pentru a realiza lucrurile pe care le cerem.

De regulă, după câteva ore de studiu serios, puteți spune că ați deprins sintaxa și vă puteți apuca efectiv de treabă. Ce puteți face cu Python? Aplicațiile sunt practic nelimitate, dar le vom aminti doar pe cele mai importante.

Limbajul de programare poate fi folosit pentru a găsi vulnerabilitățile dintr-o rețea pentru a le elimina apoi prin măsuri potrivite de protecție. De asemenea, prin intermediul acestuia pot fi testate modulele software care urmează să fie lansate pe piață, astfel încât să se verifice dacă funcționează corect.

Nu în ultimul rând, Python poate fi folosit pentru a crea meniuri interactive pentru diferite programe și este o unealtă utilă pentru programarea senzorilor și sistemelor de securitate din industria automotive.

Python poate fi însă doar începutul. Pasionații de mașini care vor să contribuie la dezvoltarea computerului de bord, se pot concentra pe învățarea limbajelor de programare C sau C++.

Cei care fac programare pentru a-și deschide propriul startup, pot opta pentru HTML, CSS și JS. Începeți ușor, cu noțiunile de bază, iar apoi le aprofundați, implicându-vă în proiecte personale, unde puteți crea programe extrem de complexe. Dacă doriți să creați aplicații pe mobil, limbajul de programare potrivit este Java.

Important este să deprindeți bine baza programării, iar acest lucru îl puteți face cel mai bine învățând de la profesioniști, care vă vor lămuri și în privința domeniului pe care doriți ulterior să activați.

 

 

Cei trei pași de bază pentru învățarea limbajelor de programare

Nu puțini sunt cei care renunță la învățarea programării pentru că li se pare un proces mult prea greu și complicat. Acest lucru se întâmplă pentru că cei în cauză nu au urmat câțiva pași simpli, dar esențiali în procesul de învățare.

Este vorba despre punerea corectă a bazelor teoretice ale progrămării. Un limbaj de programare conține litere (sau instrucțiunile elementare ale unui PC), cuvinte (unde te folosești de instrucțiuni pentru a forma/scrie programe), precum și sintagme sau chiar fraze întregi (unde combini programele scrise pentru a forma alte programe cu funcții complexe). Dacă unul dintre aceste elemente este învățat greșit, nu se va ajunge, evident, la niciun rezultat.

Un alt pas important este învățarea serioasă a limbajului de programare (Java, C++, HTML) pe care persoana în cauză și l-a ales. Superficialitatea în abordarea limbajului de programare va conduce la rezultate pe măsură. Timpul și atenția pe care le veți dedica învățării se vor reflecta proporțional în rezultatele pe care le veți obține.

Ultimul pas, esențial de altfel în orice domeniu, este exercițiul. Numai prin practică vă puteți descoperi punctele slabe și le puteți corecta. Asta înseamnă să exersați programarea oricât de mult puteți pentru că nu va fi cu siguranță timp pierdut. Tratați procesul ca pe o învățare prin joacă și veți ajunge mai departe de cât v-ați fi putut închipui.

Aveți două opțiuni prin care puteți învăța programare. O puteți face singuri sau ghidați de specialiști în domeniu. Deși învățarea pe cont propriu are avantajele ei, unul dintre ele fiind faptul că veți deveni autodidact, este recomandat să apelați la profesioniști pentru că veți reduce mult, probabil cu luni sau ani de zile, perioada deprinderii limbajelor de programare care vă interesează.

Cei șapte pași pe care trebuie să îi parcurgi pentru a învăța programare

Nu este suficient să fiți pasionați de informatică pentru a învăța programare. Există câțiva pași pe este recomandat să îi parcurgeți pentru a putea spune cu adevărat că ați devenit programator IT.

Nu citiți doar codul

Cel puțin în primii ani de studiu este necesar nu numai să preluați codul cu copy, ci să și înțelegeți cum funcționează acesta. Cea mai facilă cale pentru a face asta este să puneți în practică un proiect propriu, care vă va permite să îl folosiți în cel mai eficient mod.

Nu neglijați principiile de bază ale programării

Mulți învățăcei trec cu superficialitate peste principiile fundamentale ale programării, considerând că sunt prea ușoare. Cert este că dacă nu vă acordați timp pentru a înțelege aceste principii, vă veți împotmoli mai târziu, când se trece la noțiuni complicate de programare.

Gândiți, nu copiați

Cea mai eficientă cale de a reține limbajele de programare este să le învățați în stilul clasic, adică cu un creion și o foaie de hârtie în față. Pare o metodă învechită, dar ea vă asigură înțelegerea informațiilor, astfel încât să realizați greșelile pe care le faceți și să le corectați.

Teoria nu trebuie confundată cu practica

Dacă ați deprins anumite noțiuni teoretice despre programare, nu înseamnă că știți cum se face asta. Este recomandat ca imediat după ce învățați ceva, să puneți în practică. Scrieți un cod sau lucrați la un program informatic, astfel încât să fiți siguri că ați înțeles corect informațiile.

Folosiți ”debuggerul”

În limbaj comun i se mai spune și depanatorul de probleme și el vă va ajuta să găsiți eroarea în codul pe care l-ați scris. La început va merge mai greu, dar pe măsură ce vă veți obișnui cu această unealtă, veți reuși să identificați mai repede problemele și să le înțelegeți, astfel încât să nu le mai repetați pe viitor.

Nu grăbiți lucrurile

Nu va fi deloc ușor să învațați programare. Mulți tineri se descurajează după primele eșecuri și renunță. Perseverența este un atu al fiecărui programator de succes, alături de răbdare și atenția la detalii.

Cereți ajutor atunci când aveți nevoie

Nu odată vi s-a întâmplat să vă împotmoliți  în anumite noțiuni sau să nu găsiți soluții la crearea unui program. Ideal este să identificați singur rezolvarea la problemă, mai ales că puteți căuta răspunsuri pe internet sau în cărți de specialitate, dar dacă nu reușiți asta, este indicat să apelați la ajutorul unor profesioniști care să vă ghideze, astfel încât să știți pe viitor cum să vă descurcați.

Programare cu răbdare

Programare cu răbdare

Asociația EduSoft organizează din 17 noiembrie 2018 un cerc de informatică pentru elevi de peste 14 ani, la Colegiul Național „Gheorghe Vrănceanu” din Bacău.

Denumirea aleasă „Programare cu răbdare” le sugerează participanților că în domeniul informaticii nu se pot obține rezultate decât dacă ai răbdare, ești perseverent și muncitor.

Activitățile cercului se desfășura în fiecare sâmbătă, începând cu ora 9, în mai multe săli de clasă și laboratoare de informatică ale colegiului.

Organizatorii invită studenți și cadre didactice din centrele universitare din țară sau străinătate, precum și specialiști din industria IT, pentru a realiza activități didactice cu elevii participanți la cerc.

„Programare cu răbdare” este o inițiativă a Asociației EduSoft, care promovează educația STEM în rândul copiilor și tinerilor. Proiectul este derulat în colaborare cu Colegiul Național „Gheorghe Vrănceanu” din Bacău și cu diverse organizații care sprijină educația în domeniul IT.

Organizatorii susțin că au inițiat aceste activități, pornind de la faptul că „în Bacău nu plutește în aer ideea de informatică”, deși informatica este unul dintre cele mai atrăgătoare domenii de pe piața forței de muncă.

La prima întâlnire au participat 140 elevi dar acum s-au înscris peste 200 elevi din liceele băcăuane și chiar din împrejurimi (Târgu Ocna, Onești, Adjud, Roman etc.).

„Ne așteptam la câțiva copii, dar fiind așa mulți, am organizat deschiderea cercului în sala de sport a liceului, fiind singurul spațiu suficient de încăpător.” ne-a declarat Bogdan Pătruț, inițiatorul cercului.

După cuvântul de deschidere al doamnei director Doina Marinov, copiii i-au întâlnit pe primii invitați speciali. Aceștia au fost doi tineri foști bursieri Facebook și Google, Petru Trîmbițaș și Bianca Costin de la WellCode (Cluj), un start-up care își propune să-i învețe pe copii programarea de la zero.

„Am fost entuziasmat să văd interesul atâtor copii față de informatică, m-am bucurat foarte mult că mulți din ei au auzit de noi și de WellCode.” a spus Petru Trîmbițaș.

Giorgiana Vlăsceanu și Mihai Volmer de la Codette le-au vorbit copiilor despre proiectele IT și programarea în Python.

„Și fetele pot scrie cod, iar uneori chiar mai bine.”, ne-a declarat Giorgiana, care este co-fondatoare a organizației Codette, ce promovează informatica în rândul fetelor.

„Nu pot să cred că se întâmplă așa ceva în orașul meu. Sunt uimită și mă simt binecuvântată în același timp. Ca tânăr licean mi-am pus zeci de întrebări despre facultatea potrivită și „Programare cu răbdare” a apărut chiar când aveam cea mai mare nevoie. Primim de la acești oameni, care își dau din timpul lor, o super motivație și recomand oricărui licean pasionat (sau care ar vrea să învețe mai mult) să vină sâmbăta la Vrănceanu.” a mărturisit Anca Elisa Szilagyi, elevă în clasa a XII-a a colegiului băcăuan.

Dr. Bogdan Pătruț, de la Facultatea de Informatică, Universitatea „Alexandru Ioan Cuza” din Iași, inițiatorul acestui proiect ne-a declarat că „numărul de ore din școală este insuficient pentru a stârni interesul elevilor pentru informatică și pentru a-i pregăti pentru o carieră în contextul IT în contextul în care acest domeniu evoluează foarte rapid.”

Echipa care se ocupă de elevi este foarte mixtă și este în continuă creștere. Sunt implicați foști angajați ai companiilor mari precum Google, Amazon, Twitter sau Facebook, dar și ai unor companii IT locale (precum ISSCO sau Cirro Solutions).

Plecând de la ideea că elevii sunt diferiți și pot fi atrași de diferite domenii ale informaticii (algoritmică, grafică, proiecte complexe, crearea de jocuri, web-design etc.), aceștia au fost grupați în mai multe grupe

Printre invitații speciali sunt și Paul Diac, fost angajat Twitter și Facebook, care pregătește olimpici la informatică, Dr. Simina Brânzei, profesor asistent de informatică la Universitatea Purdue, SUA, și Camelia Tănase (Ciocan), pe care mulți elevi o îndrăgesc, ea fiind și instructor de dans sportiv la Adamas.

Următoarea întâlnire este pe 8 decembrie. Printre invitați este Irina-Mădălina Bejan, o tânără  cu experiență la Google, Gemini CAD Systems și Sprocket, director la Girls Who Code – Iași și ambasador la Girls in Tech. Irina le va prezenta elevilor cum se realizează jocuri video 3D.

Andrei Netedu este colegul Irinei și a pregătit pentru grupa de performanță câteva probleme dificile, date pe la olimpiadele de informatică.

Ioana Rădulescu va fi și ea prezentă pe 8 decembrie și va vorbi despre etapele realizării unui proiect, urmând ca la a doua întâlnire cu elevii băcăuani să facă o aplicație concretă, punându-i să rezolve diferite sarcini în echipe.

Detalii despre activitatea cercului „Programare cu răbdare” se găsesc la http://programarecurabdare.ro, iar înscrierile se fac online la http://programarecurabdare.ro/index.php/inscriere/

Roxana Neagu

 

Interviu la Google (II)

Citeşte aici prima parte din articolul Interviu la Google

Cum rezolvă Google problemele

google_logo_vechiA trecut ceva timp de când am promis că voi spune ce a urmat după al doilea interviu tehnic, telefonic, pentru Google Zurich. După vreo două săptămâni, însă, într-adevăr am văzut că sunt (încă) destul de deştept, pentru că, într-adevăr, am fost invitat la un interviu on-site (la faţa locului). M-a contactat recruiterul, prin e-mail şi m-a felicitat că am trecut cu brio acest al doilea interviu şi dacă putem stabili o perioadă, cam peste vreo două săptămâni în care să vin la Zurich. Dacă ar fi fost după mine, aş fi aşteptat ceva mai mult, timp în care să mă mai pun la punct cu unele tehnici de programare sau algoritmi sofisticaţi. Am căutat pe Google cam ce fel de probleme ar putea să mă întrebe acolo, am contactat un vechi prieten, care a lucrat pentru o vreme la Google în Mountain View, iar el m-a testat cu o serie de probleme de algoritmică. La aceste probleme predominau soluțiile cu tabelele de dispersie, sortările rapide şi rezolvarea de probleme în timp liniar. De pildă, una din probleme avea o aplicabilitate foarte directă la Youtube. Am constatat că cei de la Google au un mod foarte inventiv de a rezolva unele probleme, care aparent se rezolvă în O (nxn), dar ei le rezolvă chiar în O(n), dacă trebuie să le rezolvi de mai multe ori. La unele probleme la care eu aveam o soluţie în O(log(n)) ei vin adesea cu o soluţie în O(1), încât uneori te întrebi dacă ceea ce se predă la algoritmică prin liceu sau facultate sunt cele mai avansate metode.

Adesea, fiecare problemă ce trebuie rezolvată de Google are o anumită particularitate, iar noi de multe ori aplicăm orbeşte un algoritm, bine învăţat, fără să studiem bine particularităţile acelei probleme şi să observăm că, deşi algoritmul este foarte bun, poate că în acele cazuri speciale există ceva şi mai bun.

Idei furate sau coincidenţe?

Dorind să le fac o impresie bună, le-am trimis şi câteva idei de-ale mele, din preocupările mele din domeniul limbajului natural, publicate sau care au fost ulterior publicate în articole de reviste sau la conferinţe internaţionale. Recruiterul m-a încurajat în acest sens, iar eu m-am gândit că e bine să trimit o serie de materiale reprezentative ale ultimelor mele preocupări academice, ca să fac impresie bună. Ulterior m-am convins că nu le sunt de mare folos, ei preocupându-se mai mult de problemele de bază ale informaticii (căutare şi ordonare) sau arhitecturi generale distribuite şi mai puţin de inteligenţa artificială. Pe de altă parte, mi-am asumat riscul ca să-mi fie furate ideile şi un googler să şi le însuşească, ca fiind ale lui. De fapt, Google e o firmă foarte isteaţă din punct de vedere juridic, au nişte contracte de confidenţialitate foarte deştepte, aşa încât am fost nevoit să semnez două asemenea contracte şi să le trimit lor. Unul se referea la faptul că nu voi spune ce probleme mi-au dat la interviuri (aşadar nu vă voi spune!), iar al doilea că sunt de acord să nu am pretenţii asupra a ceea ce le-am trimis benevol, dacă se întâmplă ca ei să descopere sau să inventeze ceva similar lucrărilor mele. E normal, din moment ce ei cercetează permanent şi uneori e posibil ca ideile să se suprapună :). Cu alte cuvinte, dacă mâine o să vedeţi vreo tehnologie implementată de Google, să nu fiţi convinşi că au făcut-o angajaţii permanenţi, ci poate vreun candidat intervievat.

În fine, am fost pus în legătura cu o altă persoană, o domnişoara care s-a ocupat de rezervarea biletelor de avion: mi-a trimis nişte variante din care să aleg, atât pentru dus, cât şi pentru întors şi mi-a spus că pot veni cu soţia şi că pot sta încă o zi sau două pentru a vizita oraşul. Ei puteau să-mi rezerve camera la hotel pentru două nopţi sau mai multe, dar ei îmi plăteau doar o noapte de cazare pentru o cameră (double) şi drumul cu avionul dus-întors doar pentru mine. Am ales să merg singur, după ce am discutat în familie problema. Mai ales că domnişoara de la Google a ales companiile aeriene şi nu unele foarte ieftine, ci Swiss Air şi Lufthansa. Am primit un ultim telefon în ziua de 10 martie şi mi s-a spus că totul este OK, interviul urma să fie pe 14 martie, iar eu să ajung acolo pe 13 martie.

Continuă să citești Interviu la Google (II)

Interviu la Google (I)

Un e-mail ciudat

google_logo_vechiÎn seara zilei de 6 decembrie 2007, când tocmai sărbătoream pe Sfântul Nicolae, primesc un e-mail ciudat de la o adresă cu nume de utilizator având drept domeniu google.com. O tânără (cu nume turcesc şi care semna ca fiind un director zonal de resurse umane) îmi spune că a găsit pe Internet profilul meu şi că de o vreme încearcă să mă contacteze şi să mă întrebe dacă nu aş dori să mă alătur echipei Google. Iniţial am crezut că e o gluma, vreo surpriză făcută de vreun prieten informatician, numai bună de trimis de Sfântul Nicolae. La o analiză mai atentă a sursei mesajului, mesajul chiar venea de la Google şi era o invitaţie de a aplica pentru această companie, în sediul lor din Zurich. Google Zurich este cel mai mare şi mai important centru Google din Europa, al doilea ca importanţă după cel din Mountain View, California.

Continuă să citești Interviu la Google (I)