You are on page 1of 40

No. 2 / 2012 www.todaysoftmag.

ro

TSM

T O D A Y S O F T WA R E MAG A Z I NE

Microsoft Kinect de la SF la realitate Agile Software Development folosind Scrum Big Data Programarea funcional Startups - SociaLook Exploratory testing Pregtirea unui interviu

6 Microsoft Kinect de la SF la realitate


Echipa Simplex

24 SociaLook
Horaiu Mocian

12 Agile Software Development folosind Scrum


Tavi Bolog

28 Interviu Dan Lua Portretul unui specialist n securitatea informaiei


Marius Mornea

16 Big Data
Robert Enyedi

32 Pregtirea unui interviu


Andreea Prvu

18 Programarea funcional
Ovidiu Deac

36 Facei cunotin cu Gogu!


Simona Bonghez

22 Exploratory Testing
Ioana Matros

editorial

Editorial
evista s-a bucurat de un real succes pentru primul su numr, www.todaysoftmag.ro a avut peste 1373 de vizitatori unici de la lansarea din 6 Februarie 2012. Imboldul local s-a simit prin cele 1420 de accesri a utilizatorilor din Cluj. Suportul comunitii locale n sprijinirea acestei iniiative nu s-a lsat ateptat. Mulumim ISDC pentru ncrederea acordat de a deveni primul nostru sponsor. n 16 Martie am lansat versiunea internaional a revistei in englez prin www. todaysoftmag.com care a avut un nou look&feel i care a fost aplicat i versiunii locale. Diversitatea a fost principala caracteristic, cititorii fiind localizai n 25 de ri. Odat cu acest numr inaugurm rubrica Comuniti locale n care vom prezenta grupuri precum Transylvania Java User Group sau Cluj Semantic Web Meetup i a evenimentelor organizate de acestea.
Ovidiu Man, PMP
ovidiu.matan@todaysoftmag.com Coordonates Gemini Solutions Clujs team, in the past worked as a Product Manager for Ovi Sync at Nokia, founder of Today Software Magazine.

Coninutul numrului 2 este destul de variat, multe dintre articole reprezentnd nceputul unei serii. Trebuie s remarc prezena n revist a d-nei Simona Bonghez, care apare cu un articol inedit despre ct de costisitor poate fi s i oferi o lecie unui angajat. Prezentarea limbajelor funcionale, nceput in primul numr, continu cu o prezentare general a acestora i a modului de folosire. Big Data ne arat care sunt provocrile generat de fluxul tot mai mare de date produs de reelele sociale i nu numai. Acesta promite s fie primul dintr-o serie n care vor fi descrise provocrile la care suntem supui n analiza realtime a fluxului de datelor i cum se pot aplica tehnologiile disponibile pe pia. nceput de serie este i articolul despre Kinect, un dispozitiv exotic care ne d posibilitatea s programm aplicaii, nu doar jocuri, avnd ca i dispozitiv de intrare chiar corpul uman. Cum testm o aplicaie? Este o ntrebare la care nu prea se nva rspunsul n facultate n condiiile n care numrul de ingineri QA este comparabil cu cel al programatorilor. n acest numr vom analiza Exploratory Testing ca modalitate de testare. Pregtirea pentru interviu i modul de susinere este un lucru trecut cu vederea de muli programatori aa c am considerat util prezena unui articol special pe tema aceasta, mai ales c poate fi folosit cu succes i la altfel de ntlniri, nu doar n interviurile de angajare. Seria de startup-uri i interviuri continu prin prezentarea SociaLook, un tool eficient pentru mediul de afaceri bazat pe Twiter i un interviu cu Dan Lua de la BitDefender. Nu n ultimul rnd, v ateptm comentariile pe www.todaysoftmag.ro unde v putei i nregistra la newsletter-ul revistei pentru a fi la curent cu ultimele apariii. Mulumesc,

Ovidiu Man
fondator Today Software Magazine

nr. 2/2012 | www.todaysoftmag.ro

Redacie Fondator / Editor in chief: Ovidiu Man / ovidiu.matan@todaysoftmag.ro Graphic designer: Dan Hdru / dan.hadarau@todaysoftmag.ro Editor (limbaje de programare): Ovidiu Deac / ovidiu@agile-bit.ro Editor (startups i interviuri): Marius Mornea / marius.mornea@todaysoftmag.ro Colaborator marketing: Ioana Fane / ioana.fane@todaysoftmag.ro Reviewer: Romulus Paca / romulus.pasca@todaysoftmag.ro Adres de contact str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com www.todaysoftmag.ro www.facebook.com/todaysoftwaremagazine twitter.com/todaysoftmag ISSN 2284-6360

www.todaysoftmag.ro | nr. 2/2012

programare

Microsoft Kinect de la SF la realitate


nc din anul 2002, de la lansarea filmului Minority Report regizat de Steven Spielberg n care personajul principal John Anderton, jucat de Tom Cruise, interacioneaz cu un calculator folosind o mnu i gesturi ale minilor i degetelor, lumea tehnologic a nceput s vorbeasc despre un nou mod de utilizare a calculatoarelor, un mod n care butoanele i mouse-ul s nu fie principala metod de interaciune ntre om i PC, un mod care s ofere utilizatorilor o interfa natural (Natural User Interface - NUI). Pe parcursul anilor urmtori s-au fcut publice diferite proiecte i concepte asemntoare, dar abia dup apte ani, la Electronic Entertainment Expo 2009 (E3), Microsoft a anunat Project Natal, punnd accent pe ideea You are the controller (Tu eti Controller-ul). Project Natal era anunat ca fiind un dispozitiv hardware periferic pentru consola XBOX 360 i avea s schimbe modul de interaciune i gameplay ntre utilizatori i consola de jocuri Microsoft. n filmul demonstrativ al conceptului, utilizatorii puteau s se distreze cu jocuri de lupt sau cu maini prin micri naturale ale corpurilor lor, fr s fie constrni de utilizarea unei manete sau de un joystick. Mai lansarea versiunii oficiale pentru Windows: mult, aparatul ar fi avut i un microfon http://www.kinectforwindows.org) foloncorporat special, iar pornirea sau opri- sind, cum am menionat anterior, gesturi rea unui film spre exemplu, se puteau face ale corpului i comenzi vocale. Dei scopul prin simple comenzi vocale. Timp de un an iniial a fost de a mbogi experiena jocude zile Microsoft nu a mai dezvluit nimic rilor pe consola XBOX 360, n scurt timp despre produsul anunat, iar la E3 2010, sfera de utilizare pentru Kinect s-a extins Project Natal a fost redenumit n Kinect i considerabil. n prezent, dispozitivul e folourma s fie lansat oficial la nceputul lunii sit n domenii precum medicina, industria noiembrie a aceluiai an. de advertising sau robotica, mergnd cu Aadar, Kinect este un dispozitiv mult mai departe dect funcia iniial de periferic dezvoltat de Microsoft, care divertisment. detecteaz micarea i permite utilizatoriChiar dac n prim faz, Kinect era lor s interacioneze cu consola XBOX 360, destinat doar utilizatorilor de XBOX precum i cu orice Windows PC (odat cu 360, la cteva sptmni de la lansare au

Echipa Simplex

simplex@todaysoftmag.com

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

nceput s apar diferite proiecte sub forma unor hack-uri. Controlul mouse-ului n Windows, cntatul la o chitar digital, generarea 3D n timp real a unei camere de apartament, mainue teleghidate ce ocoleau singure obstacole plasate n faa lor au fost doar cteva din zecile de proiecte pe baz de Kinect construite de pasionai. Dup scurt timp au aprut i SDK-uri (Software Development Kit) Open Source pentru ca oricine s poat s dezvolte proiecte cu noua tehnologie de la Microsoft. Drept rspuns, n iunie 2011, Microsoft a lansat primul Kinect-SDK oficial, dar fr licen de comercializare. Versiunea final, de asemenea i comercial, a fost lansat pe 1 Februarie 2012, mpreun cu o nou ediie de Kinect, numit Kinect for Windows. Noul dispozitiv e asemntor cu ediia pentru XBOX, cea mai notabil adiie fiind suportul pentru Near-Mode, un mod de funcionare n care utilizatorul se poate apropia foarte mult de camer, iar aceasta 3D. Cu ajutorul tehnologiei software, poate detecta micri mult mai fine, cum ar Kinect poate recunoate gesturi (gesture fi micarea degetelor. recognition) i ofer un sistem foarte avansat de interaciune natural. Detalii tehnice Aparatul poate urmri ase persoane Kinect are n componena sa o camer simultan, dar doar la dou din acestea se RGB cu o rezoluie de 640 x 480, un poate analiza micarea. Micarea analizat microfon format din 4 capsule ce ofer o se obine cu ajutorul scheletului pe care acuratee mare cnd vine vorba de iden- software-ul Kinectului l ofer. Un numr tificarea vocii, un sistem pentru nclinare de puncte sunt plasate asupra corpului i motorizat care permite aparatului s-i sunt folosite pentru a recunoate anumite ridice sau s-i coboare unghiul de orien- micri fcute de utilizator. Aceste puncte, tare asupra mediului i, probabil cea mai sau ncheieturi, sunt: cap, gt, umr stng/ interesant trstur, senzorul de adncime drept, cot stng/drept, ncheietura mi3D. nii stnga/dreapta, mn stnga/dreapta, Senzorul de adncime 3D este format coloan, pelvis, old stng/drept, genuchi dintr-un proiector de unde infrarou i un stng/drept, glezn stnga/dreapta, laba senzor CMOS, care captureaz informaii piciorului stnga/dreapta.

Urmrirea acestor puncte pe corp e posibil prin intermediul proiectorului de unde infrarou. Acesta transmite undele i msoar timpul lor de ntoarcere, dup ce au lovit unele obstacole fizice din mediul nconjurtor. Principiul e asemntor cu modul n care funcioneaz sonarul: dac putem detecta timpul necesar undelor pentru a se ntoarce la senzorul infrarou, putem afla i distana la care se afl corpurile de care acestea s-au ciocnit. Toate aceste distane se pot stoca i n final mapa ntr-o imagine sau un fel de hart a cmpului vizual al camerei. Fiecarui punct de pe aceast hart i e ataat un indice de adncime n spaiu, iar toate aceste puncte pot fi transmise pentru o procesare aprofundat, unde, prin intermediul unor algoritmi, se pot detecta anumite forme sau obiecte, cum ar fi corpul uman, mpreun cu poziia unor puncte importante pe acesta (cap, mini, n principiu, exact punctele de care am discutat anterior). Pe lng acuratee i vitez de reacie, tehnologia infrarou aduce i un avantaj n plus: rezolvarea problemei luminii ambientale. Pentru c senzorul nu e proiectat s capteze lumina vizibil, Kinect poate fi folosit i n ncperi unde luminozitatea e foarte redus. Pentru a funciona, Kinect are nevoie de o surs de curent mai mare dect cea obinut prin USB. De aceea aparatul are nevoie de un cablu de alimentare. Transferul de informaii i conexiunea cu XBOX 360 (sau PC) se face prin USB,
www.todaysoftmag.ro | nr. 2/2012

programare

Microsoft Kinect - de la SF la realitate

iar alimentarea se face de la priz. Noile modele XBOX 360 Slim, lansate n 2010, includ un adaptor special care elimin nevoia de alimentare de la priz. Conectarea Kinect-ului la PC se face prin USB i necesit instalare unor drivere ce se pot obine de pe internet. Dac se dorete instalarea unui SDK, fie Open Source sau cel oficial, driverele se instaleaz odat cu ele. SDK-ul oficial ofer posibilitatea de dezvoltare a unor aplicaii n limbajele C++, C#, sau Visual Basic, utiliznd mediul de dezvoltare Microsoft Visual Studio 2010. Utilizarea SDK-ului necesit o main ce ruleaz sistemul de operare Windows 7.

Competitori

Principalii competitori ai Kinectului sunt Nintendo Wii i Playstation Move, fiecare avnd diferite atribute care le difereniaz. n continuare vom face o comparaie ntre cele trei dispozitive i vom ncerca s-l gsim pe cel care implementeaz cel mai bine o interfe uman natural. n ceea ce privete camera video, Microsoft Kinect iese n eviden i e oarecum de ateptat, ntruct camera e fundamental n funcionarea sa. Pe lng camera ce emite n infrarou i camera receptor ataat acesteia, Kinect dispune i de o camera RGB care sporete funcia de recunoatere a formelor n imagini i poate fi folosit pentru detectarea expresiilor faciale i a detaliilor de finee pe care camera infrarou nu le poate capta. n plus, poate fi folosit i ca un fel de webcam mai performant pentru Skype sau alte conversaii video pe internet. Playstation Move dispune de o camera RGB, dar pentru c funcioneaz n tandem cu un alt controller, Move nu ofer o soluie bazat pe infrarou, iar asta face destul de dificil urmrirea corpului utilizatorului n ntregime. Wii nu dispune de nici un fel de camer, ntruct dispozitivul celor de la Nintendo se bazeaz n special pe accelerometru i giroscop. Nintendo Wii poate detecta micarea, dar nu cu o precizie foarte ridicat. Controlul audio e foarte bine integrat de Kinect: dispozitivul dispune de un set de microfoane direcionale care i permit s asculte doar comenzile utilizatorului i s ignore zgomotul de fond. Ca i camera RGB, setul de microfoane poate fi perfect folosit pentru Skype sau alte aplicaii pentru

Punctele plasate asupra corpului de Kinect

Imagine infrarou (stnga) i imagine RGB (dreapta), captate de senzorul de care dispune Kinect captare de sunet. Move ofer un set asemntor de microfoane, deci performanele audio sunt comparabile cu cele gsite la Kinect. Wii-ul nu integreaz nici un fel de microfon, deci comenzile vocale sau captarea audio nu sunt o opiune. Ct despre controllere fizice ataate, Kinect iese din start din discuie, iar asta e chiar partea interesant. Potrivit Microsoft, cnd vine vorba de Kinect, controllerul este chiar utilizatorul i orice micare sau gest al acestuia sunt automat captate de dispozitiv i procesate n continuare. Controller-ul fizic e elementul central al Nintendo Wii, iar accelerometrele i giroscopul su l fac destul de eficient i distractiv pentru unele jocuri mai simple. ns, dei se afl printre deschiztorii de drumuri n domeniu, Nintendo Wii a pierdut puin teren ntre dispozitivele ce pot oferi o interfa uman natural cu adevrat performant. Playstation Move dispune de un controller asemntor cu maneta Wii ce msoar acceleraia micrilor utilizatorului. E un sistem de funcionare bun, iar mpreun cu camera video, poate oferi i o precizie bun n detectarea gesturilor, ns pentru a folosi Playstation Move, utilizatorul trebuie s in tot timpul n mn i controller-ul ataat. E un mic dezavantaj pentru c n timp poate provoca disconfort i ca atare deprteaz puin soluia oferit de Playstation de o interfa uman cu adevrat natural.

Code Sample

n continuare, vom include un exemplu de cod, scris n C# i avnd rolul de a iniializa un Kinect ataat la un PC. Mai mult, secvena de cod seteaz anumii parametri de funcionare i, ca o funcionalitate simpl, afieaz pe ecran o elips roie n funcie de poziia minii drepte a utilizatorului. Deocamdat, vom include doar codul propriu-zis, urmnd ca n numerele viitoare ale revistei, s l parcurgem n detaliu i s venim i cu unele exemple mai complicate.

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

public partial class KinectSample : Window { public KinectSample() { InitializeComponent(); } bool closing = false; const int skeletonCount = 6; Skeleton[] allSkeletons = new Skeleton[skeletonCount]; private void Window_Loaded(object sender, RoutedEventArgs e) { kinectSensorChooser.KinectSensorChanged += new DependencyPropertyChangedEventHandler(kinectSensorChooser_KinectSensorChanged); } void kinectSensorChooser_KinectSensorChanged(object sender, DependencyPropertyChangedEventArgs e) { KinectSensor old = (KinectSensor)e.OldValue; StopKinect(old); KinectSensor sensor = (KinectSensor)e.NewValue; if (sensor == null) { return; } var parameters = new TransformSmoothParameters { Smoothing = 0.3f, Correction = 0.0f, Prediction = 0.0f, JitterRadius = 1.0f, MaxDeviationRadius = 0.5f }; sensor.SkeletonStream.Enable(parameters); sensor.SkeletonStream.Enable(); sensor.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(sensor_AllFramesReady); sensor.DepthStream.Enable(DepthImageFormat.Resolution640x480Fps30); sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30); try { sensor.Start(); } catch (System.IO.IOException) { kinectSensorChooser.AppConflictOccurred(); } } void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e) { if (closing) { return; } Skeleton first = GetFirstSkeleton(e); if (first == null) { return; } MainCanvas.Children.Clear(); Ellipse rightEllipse = new Ellipse(); rightEllipse.Fill = Brushes.Red; rightEllipse.Width = 20; rightEllipse.Height = 20; MainCanvas.Children.Add(rightEllipse); ScalePosition(rightEllipse, first.Joints[JointType.HandRight]); } Skeleton GetFirstSkeleton(AllFramesReadyEventArgs e) { using (SkeletonFrame skeletonFrameData = e.OpenSkeletonFrame()) { if (skeletonFrameData == null) { return null; } skeletonFrameData.CopySkeletonDataTo(allSkeletons); Skeleton first = (from s in allSkeletons where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault(); return first; } private void StopKinect(KinectSensor sensor) { if (sensor != null) { if (sensor.IsRunning) { sensor.Stop(); if (sensor.AudioSource != null) { sensor.AudioSource.Stop(); } } } } private void ScalePosition(FrameworkElement element, Joint joint) { Joint scaledJoint = joint.ScaleTo(1280, 720, .3f, .3f); Canvas.SetLeft(element, scaledJoint.Position.X); Canvas.SetTop(element, scaledJoint.Position.Y); } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { closing = true; StopKinect(kinectSensorChooser.Kinect); } } }

www.todaysoftmag.ro | nr. 2/2012

programare

Microsoft Kinect - de la SF la realitate

Secvena de cod este inspirat din unele resurse educaionale oficiale de pe site-ul http://www.kinectforwindows.org, iar rularea lui necesit o instalare a SDKului oficial, oferit de Microsoft i gsit pe acelai site.

Concluzii

Kinect ofer multe oportuniti pentru dezvoltarea de aplicaii inovative, ce asigur un mod intuitiv i natural de interaciune ntre om i calculator. Dei este o tehnologie nc relativ nou, dispozitivul a captat atenia multor dezvoltatori independeni i entuziati, dar i a unor corporaii i a unor companii mari, comericale. Astfel, n ultimele luni, au nceput s apar numeroase proiecte i aplicaii care, folosind Kinect, aduc numeroase soluii n cele mai diverse domenii. Kinect se poate folosi cu uurin n advertising sau n magazine de retail, unde clienii ar putea proba haine n faa unui calculator. Mai mult, dispozitivul e ideal i pentru domenii n afara sferei de divertisment. Momentan, e propus n coli, unde elevii ar avea parte de un mod mult mai interactiv i captivant de a nva. De exemplu, la ora de chimie, elevii ar putea s interacieze cu unii compui chimici i s fac unele experimente pe un calculator cu Kinect, fr a fi expui direct la unele elemente chimice sau reacii periculoase. Dispozitivul atrage i foarte muli studeni, iar pentru asta Microsoft, dar i

alte organizaii sau companii, organizeaz unele competiii sau proiecte de finanare. Un exemplu e Imagine Cup, un concurs internaional adresat studenilor pasionai de tehnologie, unde n 2012 s-a format o categorie special dedicat Kinect i numit Kinect Fun Labs Challenge. n final, Kinect este o tehnologie cu un potenial enorm ce aduce un progres important n interaciunea natural dintre om i calculator. Drept dovad st impactul pe care l-a avut n trecutul su nc foarte scurt. Noi vom continua cu unele articole despre aceast nou tehnolgie, iar n numerele viitoare ale revistei Today Software Magazine, ne propunem s publicm unele idei i detalii despre cum i ce se poate dezvolta cu Kinect i SDK-ul oficial al su.

Link-uri utile

P r o j e c t N a t a l - http://www.youtube.com/watch?v=g_ txF7iETX0&feature=youtube_gdata Microsoft E3 2010 Kinect Demo - http:// www.youtube.com/watch?v=LUsiFjeRWjw OpenKinect SDK - http://openkinect. org/wiki/Main_Page Kinect for Windows SDK - http://www. microsoft.com/en-us/kinectforwindows/ develop/ Nintendo Wii - http://www.nintendo. com/wii PlayStation Move - http:// us.playstation.com/ps3/playstation-move/

We are seeking Senior C++ software engineer, experienced in game development.


Required knowledge: very experienced C++ programmer design patterns understanding of game development process experienced in using rendering engines & physics engines. proven track of of working on released games Position available for Cluj-Napoca, Bucureti, Iai Apply at jobs@geminisols.ro

10

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

Comuniti locale

eciunea comunitate i propune s in evidena grupurilor de profesioniti relevante pentru industria IT, dar i un calendar de evenimente i ntlniri din acest sector. Pentru nceput prezentm principalele iniiative din mediul local, n timp intenionnd s cretem acest index pn ce va conine toate comunitile locale, dar i cele naionale cu prezen i activitate pe plan local. Criteriul ales pentru ordonare este o funcie dat de numrul de membrii i activitatea grupurilor (evenimente locale) raportate la durata de viat, astfel sperm s obinem o ierarhie bazat pe gradul de implicare, att al organizatorilor, ct i al membrilor.

Transylvania Java User Group

Comunitate dedicat tehnologiilor Java. Website: http://www.transylvania-jug.org/ Data nfiinrii: 15.05.2008 / Nr. Membri: 459 / Nr. Evenimente: 37

Calendar
Aprilie 10

Romanian Testing Community

Comunitate dedicat QA. Website: http://www.romaniatesting.ro Data nfiinrii: 10.05.2011 / Nr. Membri: 422 / Nr. Evenimente: 1

The Social Web part2 Contact: http://www.meetup.com/Cluj-Semantic-WEB/

Aprilie 18 Mai 18

Cluj.rb

Mobile Training Contact: training@arobs.com

Comunitate dedicat tehnologiilor Ruby. Website: http://www.meetup.com/cluj-rb/ Data nfiinrii: 25.08.2010 / Nr. Membri: 101 / Nr. Evenimente: 24

Aprilie 22 Mai 22

The Cluj Napoca Agile Software Meetup Group

AROBSchool .Net Class AROBSchool C/C++ Class Contact: training@arobs.com

Comunitate dedicat metodelor Agile de dezvoltare software. Website: http://www.agileworks.ro Data nfiinrii: 04.10.2010 / Nr. Membri: 170 / Nr. Evenimente: 10

Aprilie 23 - 26

JobShop Contact: http://www.jobshop.ro/cluj/2012/

Cluj Semantic WEB Meetup

Comunitate dedicat tehnologiilor semantice. Website: http://www.meetup.com/Cluj-Semantic-WEB/ Data nfiinrii: 08.05.2010 / Nr. Membri: 109 / Nr. Evenimente: 14

Aprilie 25

Machine Learning for Pairwise Data Contact: http://www.meetup.com/Cluj-Semantic-WEB/

Google Technology User Group Cluj-Napoca

Mai 24 27

Comunitate dedicat tehnologiilor Google. Website: http://cluj-napoca.gtug.ro/ Data nfiinrii: 10.12.2011 / Nr. Membri: 25 / Nr. Evenimente: 4

AQTR2012 (2012 IEEE International Conference on Automation, Quality and Testing, Robotics) Contact: http://www.aqtr.ro/

Cluj Mobile Developers

Mai 28 29

Comunitate dedicat tehnologiilor mobile. Website: http://www.meetup.com/Cluj-Mobile-Developers/ Data nfiinrii: 08.05.2011 / Nr. Membri: 38 / Nr. Evenimente: 2

ITCamp 2012 Contact: http://itcamp.ro/

Menionm i salutm recenta nfiinare a grupului Cluj Perl Mongers (www.cluj.pm), in data de 2 Martie a acestui an. n ncheiere v invitm s ne trimitei propunerile voastre sau s v pronunai asupra propunerilor de mai jos, pentru a completa lista cu grupuri pe care le considerai active i relevante pentru mediul ITC romnesc. O parte din grupurile pe care le analizm i dorim s le adugm pentru a extinde att domeniile i tehnologiile, ct i pentru a oferi perspective care nu sunt legate strict de o anumit tehnologie sunt: GeekMeet (http://geekmeet.ro/), ITSpark (http://itspark.ro/default.aspx), Codecamp (http://www.codecamp.ro/), CodExpert (http://www.codexpert.ro/), PHPRomania (http://www.phpromania.net/), ARIES (http://www.aries.ro/).
www.todaysoftmag.ro | nr. 2/2012

11

management

Agile Software Development folosind Scrum


e la nceputul lui 2008, compania n care lucram la momentul respectiv a decis c trebuie s devenim agili i s folosim Scrum. Nu am neles exact de ce ar trebui s ne schimbm modul de lucru pe care l foloseam ca echip, mai ales c pn la urm urmam SDLC (software development life cycle): cerine, design, implementare, testare, mentenan i aveam cte un release la 3-4 luni folosind waterfall. Modelul waterfall este unul secvenial, aa cum arat diagrama de mai jos. Cea mai mare critic adus modelului este rigiditatea. n realitate, s-a dovedit c un proiect software nu poate fi planificat n ntregime de la nceput pn la sfrit i c este foarte important ca echipele de dezvoltare s se adapteze pe parcursul proiectului la cerine noi. Cerine Cerine Design Implementare Testare Mentenan Revenind la Scrum, metoda a fost prezentat pentru prima dat in 1995, de ctre Jeff Sutherland i Ken Schwaber, n cadrul unui workshop la OOPSLA 95. Ideea de Scrum nu a fost legat iniial de software development, ci a fost descris ca o metod de a crete viteza de execuie i flexibilitatea unei echipe folosind aceeai abordare ca i n rugby (o echip ncearc s avanseze cu mingea ct mai mult pasnd nainte i napoi). Implementare Scrum folosete o abordare incremental si iterativ, avnd ca scop final dezvoltarea unei soluii software care satisface nevoile clienilor, din punct de vedere funcional i calitativ i este rulat ntr-un mediu de producie nc din stadiile iniiale: Design

Tavi Bolog

tavi.bolog@nokia.com Development Lead at Nokia, enjoying Berlin and building software together with an enthusiastic team

Mentenan

Testare

Aceasta filozofie, la care ader toate metodele agile precum extreme programming, kanban, lean software development etc., a fost formalizat n 2001 sub numele de Agile manifesto: Indivizii i interaciunea naintea proceselor i uneltelor Software funcional naintea documentaiei vaste Colaborarea cu clientul naintea negocierii contractuale Receptivitatea la schimbare naintea urmririi unui plan Cu alte cuvinte, dei exist valoare n elementele din dreapta, le apreciem mai mult pe cele din stnga.

12

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

Implementarea Scrum

Scrum-ul pare relativ simplu de implementat pentru c rolurile i procesul n sine sunt simple. ns asta nseamn c fiecare echip va trebui s defineasc detaliile (de exemplu vezi definiia lui done de mai jos). De asemenea, Scrum se bazeaz pe valorile umane (vezi agile manifesto). Fiecare membru al echipei va trebui s contribuie la atingerea elurilor echipei fiind onest, punctual, disponibil n a-i ajuta colegii, multi-funcional (contribuind la toate fazele de dezvoltare software sau definiiei lui done). Filozofia scrum sugereaz c echipele trebuie s se auto-organizeze, iar interaciunile de management din exterior reduse la minim. Ca metodologie de dezvoltare, Scrum este foarte simplu ca roluri si proces. Rolurile sunt: Product Owner: este interfaa cu clientul, asigurndu-se c produsul dezvoltat de echip este prioritizat corespunztor i aduce valoare de business pentru client. Scrum Master: este responsabil cu facilitarea procesului de Scrum (planning, grooming, daily scrum, retrospective, review, etc) si se asigur c echipa are toate condiiile pentru a-i atinge scopul: se ocup de ndeprtarea impedimentelor, protejeaz echipa de intervenii din exterior. Scrum master-ul nu este managerul sau liderul grupului, ns are un rol de facilitator i protector. Echipa: este responsabil s produc software care ar putea s fie folosit de ctre utilizatori ntr-un mediu de producie. Echipa are toate calificrile necesare pentru a face software development: cerine, design, implementare, testare. Este recomandat s fie format din pn la 10 membri. Procedeul Scrum se desfoara n jurul unui interval fix de timp, numit Sprint. Durata unui sprint este de 1 - 4 sptmni. Echipelor care ncep sa foloseasc Scrum le este recomdat s foloseasc patru sptamni pentru a se adapta la noua modalitate de lucru. Cum timpul, echipele vor micora durata unui sprint, dar este important cu durata s fie meninut constant n intervale mari de timp. n echipa mea folosim momentan sprint-uri cu durata de o sptmn. Sprint-ul n sine trebuie considerat ca o

structur atomic. Acest lucru nseamn c odat pornit, coninutul lui nu se schimb. n cazuri excepionale, cu acordul echipei coninutul poate suferi modificri minore. De asemenea echipa poate decide s opreasc un sprint prematur n cazul n care coninutul lui nu mai este relevant pentru business.

de acceptan. Revizuirea backlog-ului va face ca planificarea unui sprint s fie mai simpl. n echipa mea, groomingul se face o dat pe sptamn pe durata unei ore.

Definiia lui Done

Product Backlog

nainte de nceperea unui sprint propriu-zis este important ca product owner-ul s aib creat un Product Backlog. Acesta descrie funcionalitatea dorit pentru produs i priorititile pentru funcionalitatea respectiv. Backlog-ul este un document viu, care va fi modificat constant de ctre product owner n cazul n care prioritile sau functionalitatea se schimb sau funcionalitate nou este necesar produsului. Product owner-ul este persoana care poate modifica backlogul, dar depinznd de situaie, am vzut cazuri n care i membri echipei contribuie. Din acest punct de vedere, poate fi o modalitate de a stimula membri unei echipe. Pe de alt parte, product owner-ul este singurul care prioritizeaz functionalitatea. O modalitate simpl de a formula funcionalitatea cerut este folosirea formatului de user story (folosit de extreme programming). Un user story are forma: Ca [utilizator] a vrea s [face ceva] pentru a [obine un scop]. Acesta este un exemplu mai specific: Ca utlizator a vrea s m pot loga pentru a folosi functionalitea produsului. Un user story este de obicei nsoit de criterii de acceptan care definesc detalii adiionale care trebuie implementate pentru a considera un user story complet. Pentru exemplul de mai sus, criteriile de acceptan ar putea fi: Sistemul trebuie s afieze pagina [X] n cazul n care autentificarea este fcut cu success. Sistemul trebuie s returneze mesaje de eroare pentru combinaii greite de nume utilizator i parol. Pentru produsele complexe, backlog-ul va crete considerabil i este foarte important ca acesta s fie revizuit. Procedul de revizuire se numete grooming. Revizuirea const n evaluarea prioritilor story-urilor, spargerea user story-urilor complexe n user story-uri mai simple, revizuirea coninutului user story-urilor i a criteriilor

nainte de a ncepe planificarea, orice echip trebuie s i defineasc criteriile dup care un user story va fi considerat ncheiat cu success. Aceste criterii formeaz definiia lui done. Iat cteva exemple de criterii pe care le-am folosit de-a lungul timpului, fiecare echip de Scrum trebuind s determine ce are sens: Cerinele definite mpreun cu criteriile de acceptan. Designul soluiei agreat (i documentat dac e cazul). Soluia implementat. Codul soluiei revizuit de ctre ali developeri. Unit testele implementate i rulate cu success. Testele de acceptan implementate i rulate cu success (automatizarea lor este benefic; aici se pot include i testele de load). Documentaia necesar este modificat (de exemplu: parametrii de configurare noi aprui sunt menionai). Procesul de build modificat si toate testele executate cu success. Soluia demonstrat cu success la sfritul sprint-ului.

Sprint Planning

Sprint-ul este nceput cu o edin numit Sprint Planning. Aceasta folosete un interval fix de timp (de exemplu 8 ore) care este mprit n dou. n prima parte, product owner-ul prezint scopul dorit pentru sprint, mpreun cu prioritatea fiecrui funcionaliti din Backlog. Echipa ncerc s neleag ct mai mult din funcionalitate discutnd si punnd ntrebri product owner-ului. n partea a doua a sprint planning-ului, bazat pe informaiile pe care le are pn la momentul de fa, echipa va defini scopul sprint-ului crend aa numitul Sprint backlog. n sprint backlog se vor aduga toate user story-urile pe care echipa consider c le va putea implementa pe parcursul sprint-ului respectiv i care potenial vor putea folosite de ctre utilizatori la sfritul sprint-ului. Product owner-ul este de asemenea prezent pentru a rspunde la ntrebri sau pentru a discuta mpreun cu echipa
www.todaysoftmag.ro | nr. 2/2012

13

management

Agile Software Development folosind Scrum

reducerea/creterea scopului. Fiecare user story din sprint backlog este estimat de ctre echip folosing story points. Acestea reprezint complexitea relativ a user story-urilor si nu neaprat timpul efectiv necesar pentru a termina un user story. O metod clasic de msurare a complexitii (story points) ar fi numerele lui Fibonacci: 1, 2, 3, 5, 8, 13, 21, etc. n echipa mea am decis n ultima vreme s ne oprim la 13. Dac un user story pare mai complex de 13 story points, ncercm s creem user story-uri mai mici (vezi grooming). Estimarea n sine se face ca i echip. Exist suficiente date statistice prin care s-a demonstrat c estimarea colectiv este ntotdeauna mai aproape de realitate aa c nu o s insist asupra acestui aspect. Estimarea colectiv poate fi fcut folosim poker planning: fiecare membru din echip estimeaz individual, dar toi membri echipei i prezint estimarea deodat pentru a se evita influenarea unor membri de ctre alii. De obicei, estimrile exteme se discut pentru ca echipa s neleag de ce anumii membri consider un user story prea simplu sau prea complex. n cele din urma, echipa poate s mai estimeze odat bazat pe discuiile avute. La noi n echip aplicm un principiu al majoritii n momentul n care estimrile sunt foarte apropiate. Estimarea n story points este relativ i depinde de fiecare echip (nu are sens s se compare dac un user story cu 3 story points al unei echipe va avea aceeasi complexitate i n alt echip). Estimarea n story points o s ajute echipa s ncerce s evalueze cam n ce sprint va fi implementat un anumit user story. Acest lucru este posibil pentru c dup cteva sprint-uri echipa i va crea o vitez de execuie (velocity). Aceasta reprezint numrul de story points asociat user story-urilor pe care echipa reuete s le termine ntr-un sprint conform definiiei lui done. Folosind aceast informaie statistic se poate crea o estimare a timpului necesar terminrii backlogului folosind aceeai echip. O echip matura va reui s stabilizeze viteza de execuie ca urmare a experienei acumulate n sprint-urile precedente. Echipele care ncep s fac Scrum, ar putea ncepe prin a asocia un story points cu interval de timp. Aceasta soluie ar compensa lipsa eventualelor date statistice ale echipei. De exemplu, un story point ar

putea fi ceva care dureaza patru ore. fie modificat conform definiiei lui done Odat ncheiat planificarea, sprint-ul pe care echipa o folosete i s arate propoate s nceap. gres doar cand un user story este done. Ca i regul de baz, n scrum se prefer Daily Scrum s ai 50% din user story-uri done, dect n fiecare diminea, membri echipei se s ai toate use story-urile aproape done. ntlnesc la o or exact pentru a discuta Ideea e c un user story done reprezint progresul sprint-ului. Participarea este obli- funcionalitate care poate fi demonstrat gatorie. Pentru a tine discuia focusat, toi sau pus n producie astfel nct s poat membri echipei stau n picioare. Fiecare membru al echipei va rspunde doar la trei ntrebri: Ce a fcut de la ultimul daily scrum? Ce i propune s fac pn la urmtorul daily scrum? Ce impedimente nu l las s i desfoare activitatea fi folosit. Scrum master-ul poate pedepsi membri echipei care ntrzie sau lipsesc. nc nu am Sprint Review vzut asta n practic, dar o pedeaps de 1 n ultima zi a sprint-ului, mpreuna cu leu care eventual poate fi donat pare of idee product owner-ul, se face un review a ceea bun. De asemenea Scrum master-ul este ce s-a realizat. Echipa demonstreaz proresponsabil n a nu depi 15 minute/daily duct owner-ului funcionalitatea realizat. scrum i a limita discuiile la cele 3 ntrebri Product owner-ul este ncurajat s i prespecifice. zinte feedbackul. Aceasta va fi folosit de n cazul n care anumite impedimente ctre echip in sprint-urile urmtoare sau sau probleme necesit o atenie special, ele poate face ca un user story sa nu mai fie se pot discuta dup daily scrum, implicnd considerat done i s fie planificat din nou. doar oamenii relevani. n general, Scrum n echipa mea, folosim sprint review i penmaster-ul este responsabil cu eliminare tru a decide dac o s punem n producie impedimentelor, dar vor exista situaii n funcionalitatea implementat n sprint-ul care va avea nevoie de suport de la mem- respectiv. Durata reviewului este de obicei bri echipei sau externi, deci delegarea este n jur de dou ore. acceptabil, att timp ct rezolvarea problemei n sine va fi urmrit de ctre scrum Sprint Retrospective master. Dup review, membrii echipei analizeaz ce a mers bine i ce trebuie Sprint Burndown mbunit n desfurarea procesului de Odat scopul unui sprint definit, echipa scrum. Fiecare membru al echipei trebuie trebuie s aib o modalitate de a-i urmri s participle cu idei. Prin rotaie, un memprogresul zilnic. Sprint Burndown este de bru al echipei noteaz punctele importante. cele mai multe ori un grafic care arat ct Este important ca focusul retrospectivei s mai este pn cnd toate user story-urile fie pe lucrurile pozitive care s-au ntmplat sprint-ului vor fi terminate. Mai jos este un de-a lungul sprint-ului. De asemenea este exemplu n care: important ca pentru lucrurile negative s se Axa X arat numrul de zile al planifice aciuni specific pentru corectarea sprint-ului. acestor situaii. Axa Y arat numrul de story points al Membri echipei trebuie s fie deschii sprint-ului (alte echipe pot folosi num- n a da i a primi feedback ca parte a retrosrul de user story-uri). pectivei. Faptul c oamenii pot discuta Ideal nseamn progresul ideal pen- deschis problemele ntmpinate ct i reatru ca echipa s termine la timp tot ce lizrile este un exemplu clar al unei echipe i-a propus. mature de scrum. Actual nseamn progresul actual al Subiectele discutate n retrospectiv echipei. trebuie s fie specific i nu generale pe ct posibil. De exemplu: Este important ca burndown-ul s Comunicarea n echip a fost bun ar

14

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

avea mai mult sens ca Andrei m-a ajutat Pare c aceast abordare are un efect mai s rezolv problema X. Fra ajutorul lui nu bun asupra echipei: l putem modifica i a fi reuit asta. vizualiza n timpul daily scrum-ului. Limitarea lucrului n progres este o Cnd Scrum nu funcioneaz recomandare care vine din principiile de Exist situaii n care folosirea Scrum lean manufacturing. Echipa trebuie s se nu este recomandat, sau cel puin e nevoie focuseze n a termina user stories conform de adaptri specifice. Iat cteva exemple: definiiei lui done i nu la a ncepe ct mai A. Echipe distribuite: dac membri multe. n momentul cnd cineva lucreaz echipei nu sunt n aceeasi locaie este destul la mai mult de dou lucruri simultan de complicat ca ei s funcioneze ca o echip intervine o problem de concentrare care Scrum. Distribuirea afecteaz cel mai mare afecteaz productivitatea. Recomandarea asset al Scrum-ului: interaciunea. Acelai ar fi s i ajui mai bine un coleg dac ai lucru este aplicabil dac product owner-ul terminat ce aveai sau este temporar blocat, nu este colocat cu echipa. O alternativ ar fi dect s ncepi ceva nou. mprirea echipei astfel nct s se limiteze Feedback-ul rapid al calitii poate fi efectele distribuirii. dat doar de ctre tool-uri automate. Orice B. Echipe neechilibrate: dac o echip echip care face Scrum trebuie s aib un nu are n componen civa oameni sistem de build continuu. Noi folosim seniori, ideea de echipa care se auto-orga- Jenkins n mometul de fa. Sistemul de nizeaz se va transforma destul de repede build continuu trebuie sa creeze un build, n haos. Din ce am vzut o raie de 1:2 ntre dar s i ruleze teste automate pe buildul seniori i juniori funcioneaz destul de respectiv. Noi folosim JUnit si diferite bine. variaii de implementari Mock (JMock, C. Organizaii care nu ofer suport Mockito, etc). Membri echipei au obligaia pentru Scrum: exist organizaii care s scrie teste automate pentru codul nou consider c dac vor cere echipei de dez- scris. O tehnic interesant se numete voltare s fie agil, nseamn c schimbri Test Driven Development (TDD) i implic de direcie pot exista n orice moment fr scrierea de teste nainte de scrierea de a avea impact asupra ceea ce se execut sau funcionalitate. Nu am vazut-o ns folosit asupra datelor de release. prea mult de ctre developeri. De asemeD. Echipe care fac mentenan: proce- nea, Sonar ruleaza o dat pe sptmn sul de mentenan nseamn n principiu pentru a colecta metrici legate de calitatea fixarea de probleme care apar n sisteme din punct de vedere a folosirii Java ca limde producie. n cazul ast, o abordare baj de programare. Kanban pare mai simpl, pentru c eliPentru testele de acceptan folosim min necesitatea planificri unui sprint, Selenium mpreun cu o implementare fiecare zi putnd schimba cel mai prioritar custom care ne permite generarea de bug care trebuie fixat. De asemenea, unele rapoarte implementat in Ruby on Rails. bug-uri de producie sunt mai greu de fixat Testele de accepan ruleaz de cteva ori din cauza informaiei limitate (mai puine pe zi pe un server care este instalat ntr-un loguri), fcnd astfel irelevant o eventual mediu similar cu cel din producie i veriestimare a efortului necesar. Am ncercat fic corectitudinea aplicaiei din punct de s folosesc Scrum pentru situaia asta i am vedere functional. Este posibil, folosind realizat c este nu este prea folositor com- Selenium s verificm i corectitudinea parat cu Kanban. UI-ului dar necesit un volum mai mare de munc. n trecut am mai folosit JMeter Lucruri necesare pentru a face pentru load testing. Scrum Pentru meninerea calitii codului si Product backlog-ul n sine trebuie rspndirea cunotinelor se poate folosi meninut folosind un tool. Am vazut exem- fie code review fie pair programming. Code ple de product backlog n MS Excel. n review implic revizuirea codului dup ce ultimul timp am folosit Scrum Works Pro a fost scris i poate fi fcut ad-hoc sau fori Jira. De asemenea ambele tool-uri ofer mal. Exist chiar si tool-uri care ajut cum suport de a vizualiza sprint burndown, dar ar fi Code Collaborator. O alt modalitate am renunat la aceast funcionalitate i ar fi pair programming, mprumutat din folosim un poster pe un perete care este extreme programming, n care doi develomodificat zilnic de ctre Scrum master. peri stau n faa unei singure tastaturi pe

care o mpart pentru a scrie code pentru aceeai funcionalitate. Aceast metod este mai dinamic dect code reviewul i eventual mai puin plictisitoare. Totui nu am vazut-o folosit full time de ctre echip, dar mai mult n moment de nevoie. Membrii echipei trebuie sa aib caliti multi-funcionale. De cteva sptamni experimentm ca echip testarea manul. Adic toat lumea este responsabil s ajute echipa de testare cu rularea testelor manuale. Ca urmare, sistemul de bug tracking a fost suprasolicitat, dar pn la urm ceea ce dorim este s avem avem o situaie clar a calitii i o confiden sporit n a face un release. Acesta e doar un exemplu care a funcionat bine la noi n echip.

Concluzie

Scrum este un proces foarte simplu ca i ceremonii. Puterea lui st n puterea unei echipe de a funciona din ce n ce mai bine, favoriznd interaciunea membrilor ei. Scopul final este de a avea un client mulumit care poate s evalueze rapid impactul pe care o funcionalitate a produsului su o are asupra utilizatorilor. Dac o organizaie decide s fac Scrum sau orice alt form de agile software development este recomdat s nu ncerce s adapteze procesul de la nceput, ci doar dup ce echipele se simt confortabil n a folosi metoda respectiv.

www.todaysoftmag.ro | nr. 2/2012

15

programare

Big Data
e ce big data? Pentru c e un subiect la mod, pentru c piaa pentru big data este un business de 70 de miliarde de dolari pe an cu o cretere de 15% de la an la an. Pentru c mai toate companiile mari de soft investesc n soluii orientate ctre big data, pentru c pe internet, zilnic, se genereaz o cantitate imens de date (de ordinul sutelor de petabytes) i pentru ca toate aceste date sunt stocate i marea majoritate sunt supuse unor procese de analiz a datelor. Analiz care sa extrag informaii utile pentru cei care le dein, informaii care de regul duc la creterea business-ului, amintim doar cteva: detectarea patternului de cumprare a utilizatorilor, o mai bun targetare a reclamelor, detectarea fraudelor, etc. Pentru c big data i tehnologiile care-l inconjoar atrag talentele, programatorii de top, de pe piaa. Dar ce este big data? Anecdotic vorbind big data este buzzwordul anului 2012. Dac ar fi sa dm o definiie oarecum formal, aceasta ar fi: cantitatea de date a cror dimensiune duce la depirea capacitii de procesare a unei baze de date convenionale. Depire datorat fie efectiv cantitii uriae de date, fie din cauz c se genereaz o cantitate mare de date la intervale de timp foarte scurte si repetate, fie din cauza c datele nu se supun regulilor stricte ale sistemelor RDBMS. Altfel spus ca s caracterizm big data putem folosi cele 3V-uri, volum, vitez i varietate.

Robert Enyedi

robert.enyedi@betfair.com Senior Software Developer @Betfair

Volum

Beneficiul obinut de pe urma ieftinirii continue a hardware-ului, inclusiv a mijloacelor de stocare const n capacitatea de a stoca cantiti imense de date la preuri rezonabile i care nu mai sunt doar la ndemna Google sau Yahoo. Date a cror cantitate n ultima perioada a crescut exponenial, datorit: social media prin care mai toat lumea conectat la internet genereaz i consum date, probelor de GPS generate de smartphoneuri, imaginilor din satelit, .a.m.d i nu n ultimul rnd a reelelor de WIFI i 3G care faciliteaz toate acestea. Dar stocarea datelor este doar jumtate din ecuaie, cealalt jumtate o reprezint

capacitatea de a analiza volume uriae de date. Trebuie menionat ca exist o relaie dual ntre cantitatea de date i capacitatea de a le analiza. Fra una nu ar exista cealalt. Mai exact avnd mai multe date e mai valoros dect a avea modele matematice mai bune, adic chiar i folosind o matematic primar se pot extrage informaii foarte valoroase avnd seturi de date mari, pe cnd dac cantitatea de date e insuficient nici cei mai buni algoritmi nu pot extrage informaii valoroase. Volumul de date este i cel care dezvluie problema cea mai evident, cea legat de stocarea scalabil a datelor i necesitatea interogrii distribuite a datelor.

16

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

Dac eliminm ca i opiune sistemele RDBMS pentru rezolvarea acestei probleme practic avem de ales ntre dou soluii. Pe de o parte sisteme de tip data warehouse (de exemplu: Greenplum), pe de alt parte sisteme bazate pe Hadoop . De obicei alegerea uneia sau alteia se face innd cont de celelalte 2 V-uri. De regul sistemele de tip data warehouse implic scheme predefinite, pe de alt parte Hadoop nu impune nicio restricie asupra structurii datelor. L a b a z , Ha d o op e s t e o pl at form pentru distribuirea problemelor computaionale pe mai multe servere. A fost dezvoltat i mai apoi open sourced de ctre Yahoo, i are la baz MapReduce, care la rndul lui a luat natere n cadrul Google fiind folosit la indecii de cutare. Hadoop MapReduce implic distribuirea unui set de date pe mai multe servere i executarea de operaii pe acestea, faza de map, operaii care se execut concurent. Rezultatele pariale sunt apoi combinate pentru a obine rezultatul final, partea de reduce. Pentru a stoca datele Hadoop are propriul lui sistem de fiiere distribuit, numit HDFS (Hadoop filesystem).

Primul caz este cnd datele de intrare curg prea repede ca s poat fi stocate n totalitate, astfel c o analiz a datelor este necesar nainte de stocarea propriu-zis. Al doilea caz este cnd aplicaia necesit un rspuns imediat referitor la datele de intrare. Ca i produse open source folosite pentru manipularea fluxului de date amintim Storm de la Twitter i Yahoo S4. Cum am menionat mai sus, nu este vorba doar despre datele de intrare. Viteza cu care se genereaz rezultatele conteaz i ea. Cu ct este mai scurta bucla de feedback cu att mai mare este avantajul competiional. Rezultatele pot ajunge direct ntr-un produs, sau pot ajunge n console care sunt folosite pentru luarea deciziilor. Aceast nevoie pentru vitez, n special pe web, a dus la dezvoltarea bazelor de date de tip cheie-valoare, de tip coloana i de tip document. Aceste tipuri de baze de date formeaz categoria bazelor de date de tip NoSQL, folosite atunci cnd modelele relaionale nu sunt cele potrivite. Cteva din cele mai cunoscute baze date de tip NoSQL sunt: MongoDB, Couchbase, Apache Cassandra, Voldemort, HBase, Riak.

stocare dedicate pentru XML (de exemplu MarkLogic). Datele din reele sociale se prezint mai degrab sub forma de grafuri, iar pentru acestea ar fi de preferat bazele de date de tip graf (de exemplu Neo4j). Chiar dac datele s-ar putea reprezenta ntr-o structur relaionala relativ uor, un alt dezavantaj al sistemelor RDBMS const n natura static a schemei bazei de date. Ori ntr-un mediu agil, evolutiv structura rezultatelor se schimb odat cu evoluia operaiilor de analiz. Iar din acest motiv bazele de date semi-structurate, de tip NoSQL sunt de preferat.

Concluzie

n ncheiere trebuie precizat c big data nu este leacul universal. Ca acesta s funcioneze trebuie s fie foarte clar ce anume vrem s tratam. Un sfat pentru cei care vor s porneasc pe calea big data, ar fi s clarifice ce problem vor s rezolve. Daca alegei s rezolvai o problem de business real, spre exemplu care din modalitile de publicitate mresc numrul consumatorilor, aceasta v va ghida i implementarea. n articole viitoare vom detalia folosirea Hadoop, baze de date NoSQL i partea de analytics (mai ales legat de vizualizarea datelor). Atept comentariile voastre p e www.todaysoftmag.ro.

Varietate

Vitez

Rata de cretere a vitezei cu care curg datele a urmat un tipar asemntor cu cel al creterii volumului de date. Probleme care acum ceva timp se aplicau unor domenii specifice, cum ar fi cele de trading, au ajuns s fie mult mai generale. Modalitile prin care livrm i consumm produse online sunt din ce n ce mai instrumentate, fiecare click i fiecare interaciune este urmrit, nu doar cumprarea efectiv. Cei care sunt n msur s analizeze rapid aceasta informaie, de exemplu, recomandnd produse similare, au un avantaj competiional iar era smartphone-urilor i a internetului mobil a amplificat acest fenomen. Problema nu o constituie doar viteza cu care intr datele, acestea s-ar putea stoca pentru o procesare ulterioar, ci importana rezid n viteza buclei de feedback. Sunt situaii cnd pur i simplu nu exist timp pentru a atepta ca un job de Hadoop s se execute. Terminologia folosit pentru datele care se mica att de rapid e flux de date (data streaming). Exist doua motive pentru a lua n considerare fluxul de date.

Rareori datele se prezint ntr-o forma ordonat perfect i gata spre a fi procesat. O tem comuna a big data este faptul c datele sunt diverse, eterogene i nu se muleaza pe structuri relaionale. Datele pot fi text din reele sociale, pagini web care trebuiesc indexate, imagini, date brute provenite de la diveri senzori. Unul din principalele scopuri ale procesrii big data este s transforme i s extrag din date nestructurate sens, care mai apoi poate fi interpretat de oameni sau s fie folosit ca i input structurat pentru aplicaii. Procesul prin care se realizeaz aceast transformare implic pierderea de date, ceea ce inseamn c invariabil anumite informaii se vor arunca. Unul din principiile big data spune c atunci cnd este posibil pstreaz toate datele, deoarece odat pierdut informaia nu mai exist cale de ntoarcere. Chiar daca sitemele RDBMS sunt n prezent populare i bine nelese, ele nu ar trebui s fie destinaia de facto nici pentru informaiile obinute de pe urma procesrii big data. Anumite tipuri de date se preteaz a fi stocate de alte tipuri de baze de date. Spre exemplu documentele de tip XML se preteaz a fi stocate n sisteme de

www.todaysoftmag.ro | nr. 2/2012

17

programare

Programarea funcional

rogramarea funcional (FP) https://en.wikipedia.org/wiki/Functional_programming este un concept destul de vechi aprut n anii 50 odat cu crearea limbajului Lisp. Se bazeaz pe calculul lambda, care e o ramur a matematicii introdus n anii 30 de catre Alonzo Church https://secure.wikimedia.org/wikipedia/en/ wiki/Lambda_calculus. Elementul central n FP sunt funciile i n general se lucreaz cu structuri de date imutabile i funcii pure. n general limbajele funcionale ofer un set de unelte care uureaz mult lucrul cu funcii.

Ovidiu Deac

ovidiu@agile-bit.com Consultant software independent specializat n metode de dezvoltare agile i limbaje funcionale. n timpul liber practic notul, alpinismul i motocrossul.

Limbaje funcionale

Cele mai cunoscute limbaje funcionale pot fi grupate n urmatoarele familii: Lisp (Lisp, Common Lisp, Scheme, Clojure), ML (Standard ML, CAML, OCAML, F#), limbajele funcionale pure (Haskell, Clean), limbaje concurente (Erlang, Oz, Scala). Tabelul de mai jos arata o harta a principalelor limbaje funcionale, anul aparitiei lor i influentele dintre ele. Nici un limbaj de uz general nu poate fi exclusiv funcional. Toate limbajele enumerate mai sus sunt predominant funcionale,

dar au i elemente imperative pentru c un program scris pur funcional, fr side effects, nu poate comunica cu exteriorul. Cineva glumea: pentru a observa un program pur funcional, tot ce putem face este sa punem mna pe carcasa calculatorului i sa simim cum se nclzete. Deci, n general limbajele de programare sunt multi-paradigm: unele predominant imperative cu elemente funcionale, iar altele predominant funcionale cu elemente imperative.

18

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

Lisp/Common Lisp/Scheme

A aprut n anii 50 ca primul limbaj care suporta tehnici de programare funcional. Este un limbaj multiparadigm cu tipuri dynamic-typed i strong-typed i evaluare imediat . Numele ii provine de la LISt Processing pentru c este specializat pe lucrul cu liste. Totul este o lista n LISP, att datele cat i codul. Astfel n Lisp se poate modifica codul ca i pe nite structuri de date printr-un un sistem de macrouri foarte puternic care permite programatorilor s modifice sintaxa i s creeze limbaje specializate pentru diverse domenii (DSL)http://en.wikipedia. org/wiki/Domain-specific_language n timp au aprut multe dialecte Lisp, cele mai cunoscute fiind Scheme, Common Lisp i Clojure.

Erlang

E ste un limb aj de prog ramare funcional i concurent dezvoltat n anii 80 de ctre Ericson i a fost folosit initial n aplicaii de telefonie. Este gndit pentru scrierea de aplicaii concurente, distribuite, tolerante la erori i soft-real-time. Este un limbaj dynamic-typed i strong-typed. Concurena este implementat folosind modelul actorului. http://en.wikipedia. org/wiki/Actor_model iar maina virtual poate suporta sute de mii de procese lightweight independente. Fiecare proces are date proprii i acceseaz date comune doar read-only (cu mici excepii) deci garbage-collectorul poate rula per-proces, cu rezultate foarte bune din punct de vedere a performanei.

Clean e considerat mai eficient i mai uor de optimizat dect Haskell.

Tehnici de programare funcional

Voi prezenta cteva elemente de baz prezente n limbajele funcionale. O parte dintre ele se gsesc i n unele limbaje imperative.

Functiile sunt first class citizens

Un limbaj funcional are n primul rnd funciile ca first class citizens. Asta nseamn c funciile sunt tratate ca orice alte variabile. O funcie poate primi ca parametru alte funcii i poate returna funcii noi. Un exemplu ar fi decoratorii din Pyt hon:
def log_call(f): def wrapper(*args, **kwargs): print Calling f with arguments (%s,%s) % ( args, kwargs) try: result = f(*args, **kwargs) print Result: %s % result except Exception as ex: print Exit by exception %s % ex raise return wrapper

Closure

Scala

Este un dialect modern al Lisp creat n 2007. Unul dintre atuurile sale este suportul pentru concuren prin Software Transactional Memory https://en.wikipedia.org/wiki/ Software_transactional_memory. Ruleaz n JVM i CLR iar un subset al Clojure, ClojureScript, poate fi compilat n Javascript.

Este un limbaj de programare orientat obiect i funcional, static-typed i cu inferena de tipuri. Ruleaz pe JVM, CLR sau Android i poate folosi biblioteci scrise n Java sau C#. Concurena este suportat att prin primitive de sincronizare, ct i prin modelul Decoratorul de mai sus poate fi folosit actorului, asemntor cu abordarea Erlang. astfel:

Haskell

ML/Standard ML

Este un limbaj funcional impur dezvoltat n anii 70 la Universitatea Edinburgh. Tipurile sunt statice iar evaluarea expresiilor se face imediat (eager). Cele mai cunoscute dialecte sunt Standard ML (SML), Caml, OCaml i F# iar limbaje cum ar fi Haskell i Clean au fost puternic influenate.

OCaml

Este un limbaj ML multi-paradigm cu suport att pentru programare funcional ct i pentru programare orientat obiect. Limbajul este static-typed, dar n majoritatea cazurilor tipurile pot fi omise, iar compilatorul, prin mecanismul de inferen, le deduce singur. O Caml este cunoscut pentru performana sa destul de apropiat de o implementare echivalent n C.

Este un limbaj pur funcional, lazy i static typed. . Lucrul n stil imperativ se face prin folosirea monadelor. Efectele secundare ale funciilor trebuie declarate n semntura acestora. Fiind un limbaj pur funcional concurena i paralelismul sunt foarte uor de implementat. Pentru paralelism se pot folosi thread-uri clasice combinate cu date shared mutabile (MVars). Alte soluii sunt Software Transactional Memory - concept implementat pentru prima data n Haskell - , sparks - operatii care pot fi executate n paralel dac maina virtual considera ca e avantajos - sau paralelizarea operaiilor pe unele structuri de date (data paralelism).

@log_call def my_function(a, b, c): return (a+b)/c my_function(1,2,3) my_function(4, 2, 0) $ python example.py Calling f with arguments ((1, 2, 3),{}) Result: 1 Calling f with arguments ((4, 2, 0),{}) Exit by exception integer division or modulo by zero Traceback (most recent call last): File example.py, line 18, n my_function(4, 2, 0) File example.py, line 5, n wrapper result = f(*args, **kwargs) File example.py, line 14, n my_function return (a+b)/c ZeroDivisionError: integer division or modulo by zero

... cu urmatorul rezultat:

Este un limbaj pur funcional dezvoltat n anii 80. E destul de asemntor cu Haskell dar cu o abordare diferit n ceea ce privete efectele secundare. Funciile care produc efecte secundare folosesc tehnica F# uniqueness typing astfel un obiect odat Este partial compatibil cu OCaml i alterat nu mai poate fi folosit mai departe, a fost creat de Microsoft pentru a rula n fapt care e verificat de compilator. Aceast mediul .NET. Are suport pt .NET i ruleaza tehnic permite compilatorului s produc pe CLR i Mono. un cod mai eficient, motiv pentru care

Clean

Un exemplu de funcii pasate ca parametrii n Haskell ar putea fi un operator forward pipe pe care l putem defini astfel
x |> f = f x

...i care primete o valoare i o funcie si returneaz rezultatul aplicrii funciei. Acesta ne permite s folosim sintaxa urmatoare:
double x = 2 * x doubleAppliedThreeTimes x = x |> double |> double |> double

Odat ce funciile sunt folosite ca orice alte obiecte, n mod natural, urmeaz alte
www.todaysoftmag.ro | nr. 2/2012

19

programare

Programarea funcional

cteva elemente eseniale care ne uureaz Compunere de funcii mult lucrul cu funcii. n matematic dac h(x) = f(g(x)) ...putem scrie c h = f *g Functii inner i closures ...care se citeste h este funcia obtinut Funciile declarate n interiorul altor prin compunerea funciei f cu funcia g. funcii, ca si decoratorul din exemplul Evident a doua sintax este mult mai de mai sus, se numesc inner functions. curat pentru ca exprima ideea direct, fr Uneori o funcie inner acceseaz valori din a ne arta cum se transmit parametrii. namespace-ul funciei printe, caz n care S presupunem c sunt deja implemense numete closure. Valorile accesate sunt tate funciile reverse(care inverseaz o lista) transmise transparent funciei inner. i sort(care sorteaz n ordine cresctoare Mai jos e un exemplu de closure n C#: o lista) i dorim s implementam o funcie ...care la rulare va tipari: care sorteaz n ordine descresctoare o using System; list. class Example { n Python codul ar arata n felul static Action CreateAction(string name, urmator. int value)
Action a = delegate { System.Console.WriteLine(Action name: + name + value: + value); }; return a; } static void Main(string[] args) { Action a1 = CreateAction(action1, 10); Action a2 = CreateAction(action2, 20); a1(); a2(); } } { def reverse_sort(seq): return reverse(sort(seq))

returneaz un int este vzut ca i o funcie care primete un parametru int i returneaz o funcie care primete un parametru int i returneaz o funcie. Astfel pentru o funcie care primete N parametri putem fixa primii M parametri (M < N) i obtinem o funcie care primete N-M parametri. De exemplu, n Haskell, dac avem definit funcia multiply astfel:
multiply a b = a * b

...putem defini funcia double i triple astfel:


double = multiply 2 triple = multiply 3

Functia double apelat de exemplu cu parametrul 10 returneaz rezultatul apelului multiply 2 10. n C++ codul e similar, avnd n plus Astfel o funcie care nmulete cu 2 doar acoladele pentru definirea blocurilor toate elementele unei liste ar putea fi scris respectiv tipurile parametrilor i de retur. astfel:
std::vector<int> reverse_sort(const std::vector<int>& seq) { return reverse(sort(seq)); } doubleAll xs = map (multiply 2) xs

... sau scris n stil point free:


doubleAll = map (multiply 2)

n schimb n F# se prefer operatorul ...sau folosind o funcie anonim n loc de compunere care arat astfel: de multiply:
reverse_sort = sort >> reverse doubleAll = map (\x -> x * 2)

...i care produce o sintax uor lizibil. n Haskell, se poate implementa prin compunere de funcii, folosind operatorul $ mcs closure.cs && mono closure.exe Action name: action1 value: 10 (.) sau prin forward pipe folosind operaAction name: action2 value: 20 torul (>>>). Astfel cele dou funcii de mai delegate folosete variabilele name i jos sunt (aproape) echivalente: value din contextul n care a fost creat. reverseSort = reverse.sort n exemplul acesta, funcia intern
reverseSort = sort >>> reverse

Funcii anonime

Cnd se lucreaz n stil FP de multe ori e nevoie de funcii simple folosite ntr-un singur loc. n general, se folosesc mpreun cu funciile de nivel nalt map, fold, filter sau ca i predicate pentru funcii cum sunt find, count etc n exemplul anterior delegate-ul este o funcie anonim iar mai jos avem un exemplu de folosire n C++ 0x11, ca predicat n apelul funciei count_if

Dup cum se vede n Python sau C++ ne lovim de detaliile referitoare la transmiterea parametrilor, iar n limbajele care suport compunerea de funcii, codul e mult mai clar i concis. Acest stil de a scrie funciile, fr parametrii expliciti se numeste point-free style. n stilul funcional se prefer definirea funciilor n stil point-free cnd acest lucru e posibil.

Acest lucru a fost posibil datorit faptului c limbajul suport funcii ca first class citizens, functii anonime si aplicarea parial. Not: n plus Haskell suporta operator sections pentru operatorii binari, astfel funcia de mai sus s-ar putea scrie i mai concis astfel:
doubleAll = map (*2)

Este remarcabil ct de concis i de lizibil este acest cod, odat ce suntem familiari cu funcia map.

#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = {1,2,3,4,5,5,5,6,6,7,7,7,8}; int even_count = std::count_if(v.begin(), v.end(), [] (int n) { return n % 2 == 0;}); std::cout << Even numbers: << even_count << std::endl; }

Avnd n vedere faptul c n stil funcional se lucreaz foarte mult cu liste, e nevoie sa descriem transformrile aplicate pe liste ntr-un mod clar i concis. n Python o funcie care returneaz Aplicare parial elementele din produsul cartezian a dou n teoria calculului lambda o funcie mulimi, n care prima componenta este poate primi doar un singur parametru. O mai mare dect a doua, arat n felul funcie care primete doi parametri int i urmtor:
def f(m1, m2): return [(x,y) for x in m1 for y in m2 if x>y]

List comprehension

n Haskell aceeai funcie se scrie astfel:


f m1 m2 = [ (x,y) | x <- m1, y<- m2, x>y]

n Erlang, pe lng list comprehension, exist i binary comprehension, prin care n loc de liste se produc structuri de date

20

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

binare. E o funcionalitate foarte util n lucrul cu protocoale binare, care e una dintre specialitile Erlang. Toate tehnicile prezentate mai sus ne dau posibilitatea s scriem un cod foarte clar i concis. Din acest motiv limbajele imperative moderne au introdus tehnici funcionale.

Limbaje pur funcionale

Un limbaj pur funcional este un limbaj funcional n care structurile de date sunt imutabile, iar funciile nu produc efecte secundare nedeclarate. Limbaje cum ar fi Haskell sau Clean separ prin sistemul de tipuri funciile pure de cele impure, dar folosesc abordri diferite. n Haskell, felul n care este executat o secven de funcii impure care produc efecte secundare de un anumit tip este descris de o monad. Pentru fiecare tip de efecte secundare avem o alta monad. Astfel toate funciile care produc efecte de input/output se execut n monada IO, funciile care modifica stare extern se execut n monada State etc. Pentru a putea produce efecte secundare, o funcie trebuie sa fie executat n monada respectiv. Astfel compilatorul va da o eroare n cazul n care o funcie care nu este n monada X apeleaz o alt funcie cu efecte secundare de tip X. n Clean funciile impure, care altereaz starea unor obiecte vor primi obiectele respective ca i obiecte unice. Un obiect unic poate fi folosit o singura data. Astfel o funcie, odat ce a alterat un obiect unic, va returna pe lng valoarea normal de retur i noua versiune a obiectului alterat. Apelatorul funciei va folosi obiectul nou n continuare, utilizarea celui vechi fiind interzis de compilator.

Concluzie
Avantaje
n primul rnd limbajele funcionale ne pun la dispoziie nite unelte de nivel foarte nalt care ne fac foarte productivi. Apoi, n limbajele pur functionale, faptul c efectele secundare sunt foarte clar localizate ne ajut s scriem un cod mai robust. Astfel nu putem avea surpriza neplcut c o funcie product, pe lng faptul c returneaz produsul parametrilor mai i scrie rezultatul ntr-un fiier. Aceast separare poate fi garantat de ctre compilator. Asta crete mult claritatea i calitatea codului rezultat.

Se zice c n Haskell compilarea e cea mai dificil parte, iar odat codul compilat el este fr bug-uri. Desigur e o exagerare, dar are totui o parte de adevr. Sistemul de tipuri este att de bine pus la punct nct greelile normale pentru alte limbaje aici sunt sesizate n faza de compilare. n cazul limbajelor funcionale impure efectele secundare pot fi prezente, dar n general ele sunt descurajate, iar stilul de lucru funcional ne face n general mai ateni la prezena acestora. Un alt avantaj al faptului c se lucreaz predominant cu funcii pure este c testarea, refactorizarea, paralelizarea i diverse optimizri devin mult mai simple. n articolul precedent din serie am discutat aceasta problema. Chiar dac nu avem de-a face cu limbaje funcionale pure paralelizarea e mult mai usoar dac se lucreaz n stil funcional. Limbaje ca Erlang, Clojure, F#, Haskell sunt cunoscute pentru usurina cu care se scriu aplicaiile paralele. Tendina many-core din arhitecturile hardware de azi cere tot mai mult paralelism, iar estimrile zic c numrul de core-uri dintr-un procesor standard se vor dubla la fiecare 2 ani. Asta nseamn ca ntr-un viitor destul de apropiat vom ajunge s lucrm pe sisteme cu zeci sau sute de core-uri. Aplicaiile nu vor putea profita automat de numrul mare de coreuri dect dac arhitectura lor permite paralelismul masiv i procesarea pe zeci, sute sau mii de fire de execuie. Ca si exemplu, n Erlang aplicaiile cu zeci sau sute de mii de fire de executie sunt ntlnite frecvent n producie. E destul de evident c cele mai potrivite limbaje pentru scrierea unor aplicaii masiv paralele sunt limbajele funcionale care de multe ori fac paralelismul aproape trivial.

Dezavantaje

Percepia general este c limbajele funcionale au performan mai scazut. Este doar parial adevrat. n general lucrnd n stil funcional se folosesc structuri de date imutabile care sunt mai puin eficiente. De exemplu modificarea unui element ntr-o list nlnuit presupune: 1. crearea unei liste noi care contine aceleai elemente de la nceput pn naintea elementului modificat. 2. crearea unui nod nou cu valoarea nou a elementului.

3. legarea nodului nou de restul listei existente. Deci, att din punctul de vedere a memoriei consumate, dar i ca timp de execuie, modificarea listei imutabile este mai costisitoare. Pe de alt parte avem un avantaj n faptul c nu avem nevoie de sincronizare. Lista original rmne nemodificat i ceilalti utilizatori ai ei nu sunt deloc afectai. Acesta este un ctig dac utilizatorii respectivi sunt n thread-uri diferite de executie sau pe maini diferite. Pe de alta parte, avem posibilitatea de a folosi structuri de date mutabile i eficiente acolo unde e nevoie chiar i ntr-un limbaj funcional. Deci putem identifica zonele cu probleme de performan i s schimbm elegana i robusteea codului funcional pentru performana codului imperativ unde e nevoie. Deci afirmaia c limbajele funcionale sunt mai slabe din punctul de vedere al performanei este fals. Conteaza n mare parte ce structuri de date folosim. De asemenea, referitor la performan, sunt destul de frecvente situaiile n care aplicatii scrise original n limbaje imperative i apoi rescrise n limbaje funcionale cum ar fi Haskell, Ocaml sau F# sunt cel puin la fel de rapide ca i implementarea original, dar cu un cod mult mai mic i mai robust. O alt problem ar fi faptul ca n limbajele funcionale lazy (ex Haskell) e greu de estimat ct va dura o anumit operaie. Aceasta pune probleme n special n sistemele soft-real-time. Totui, pricipala problem care n c e t i n e t e a d o p t a r e a l i m b aj e l o r funcionale este faptul c programatorii trebuie s i schimbe radical felul de a gndi. n abordarea funcional problema se pune ce face aplicaia? si nu cum face?. Gndind astfel nevoia de produce efecte secundare dispare ntr-o mare parte din cod, excepie facnd doar acele componente care interacioneaz cu lumea imperativ din jur. Cu toate acestea industria face din ce n ce mai mult loc limbajelor functionale. Exemple ar fi Erlang n care s-au scris aplicaii foarte populare cum ar fi RabbitMQ, CouchDb, Riak sau ejabberd, Haskell care e din ce n ce mai folosit n aplicaii n care calitatea codului este esenial.

www.todaysoftmag.ro | nr. 2/2012

21

QA

Exploratory Testing,
o dezbaterela mod

n ultima vreme am auzit/vzut n diferite contexte(grupuri, meetinguri) subiectul Exploratory Testing despicat ca firul n patru. Targetul meu pentru acest articol e un rezumat util, sper al ideilor primite, nsuite, testate de ctre mine. Am tot ascultat dialoguri i monologuri legate de exploratory fie ele pro, fie contra. Urmrind un parcurs firesc al unei aplicaii o s ncerc s creionez i s subliniez cteva dintre argumente.

Despre
Ioana Matros

ioana.matros@geminisols.com QA Engineering at Gemini Solutions Cluj

prticic din pretinsul tot al aplicaiei i joac bine rolul. i dac e s o lum de la nceput, am putea s ne ludam cu nite teste scrise pe baza unor Cerine, cum am zice noi Requirement-uri, care ar fi cazul ideal, dup mine. Specie rar Clientul care tie ce vrea - din punct de vedere funcional, estetic i tehnic. Daca a fi eu Clientul a ti c vreau un produs calitativ, care s fie livrat ieri, cu costuri minimale, probabil asta tiu toi Clienii, nu? Evident aceast abordare ne afecteaz nou cursivitatea i succesul testrii. Gndindu-m la experiene i discuii a putea zice ca am ntlnit destul de des sintagma de la Client de data asta: Dac nu-l poi convinge, zpcete-l Acum c am aezat totul ntr-un context am putea s dm prima Contr. Folosind explorarea s-ar putea s ne scape flow-uri de baz i s deviem cu bun tiina n Context credina c scenariile de baz merg. Nu e i cum bug-urile sunt un fel centru de cea mai constructiv gndire, dar cred ca atracie n domeniul nostru, ne vom referi mcar o dat tot am czut n pcat. la ele n cele ce urmeaz, doar asta ne face plcere, nu? Avnd aplicaia, totul ar tre- Contra bui s nceap de la nite scenarii de baz S zicem c am terminat de explocare s urmreasca flow-ul. i dezvolrat aplicaia i precum ne-am ateptat tnd aceste scenarii s vedem dac fiecare am gsit o sumedenie de bug-uri care Exploratory testing e n principal testarea pe care o faci evitnd urmrirea i executarea unor testcase-uri deja scrise. Exploratory presupune s nveti produsul, s creezi i s corelezi o suit de teste cu o suit de date, n cele din urm s le execui. Toate acestea ntr-un singur om, n aceelai timp i ntr-o maniera mai degajat, consider eu. S vedem Ca s o luam de la nceput, am primit o aplicaie pe care trebuie s o demonstrm fie ca e bun, fie c e nebun. Aici se pare c opiniile variaz destul de mult n funcie de orizontul fiecruia. Discuia, evident, e una mai complex i adevrul e de cele mai multe ori la mijloc. De data aceasta voi merge pe varianta n care demonstrm c aplicaia noastr nu e cea mai bun.

22

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

cteodata ne-au fcut ziua ori mai frumoas ori mai nervoas, dup caz. Expresia terminat explorat aplicaia e una mai relativ, e aproape la fel cum am zice c aplicaia nu are buguri), se poate? Contra. Cum gestionm i msuram ce am testat, doar nu vrem sa repetam aceeai explorare. Evident e mai greu dect s dm un pass sau un fail la nite teste deja scrise. Ar fi aici de fapt i un Pro, existnd modaliti de msurare: Checklist, Recording, Notes, Bug Hunt, Questioning Nu prea avem parte de automation, proces destul de important al testrii. i cum mai ntotdeauna exist o soluie, de ajutor aici este automatizarea bugurilor gsite n incursiunea n necunoscutul aplicaiei. Teste care se pot rula ori de cate ori se fixeaza un bug, sau se modific, adaug cod n aria respectiv.

Pro

Abordarea n sine, prin natura ei, te inva s cunoti produsul. Faci i nvei s faci cam de toate: s creezi teste, s le rulezi,s investighezi, s contabilizezi Folosete partea mai curioas si creativ din fiecare, zic eu. E momentul mai multor ntrebri ce ar fi dac, ce ar fi s, comparativ cu testarea dupa mai muli pai din exceluri, worduri, qc sau orice alt metod ar fi folosit. Ar trebui sa conduc la creterea responsabilitii, avnd n vedere c fiecare explorator trebuie s decid traseul

prin vrea s fac o anumit testare, iar in realizarea lui sa gseasc, investigheze, foloseasc orice mijloc care l-ar putea ajuta, pornind de la specificaiile (ne)existente, la produse similare testate, la produse concurente.. Ce ar putea s ajute aici e contientizarea faptului c explorarea fiecaruia e unic prin simplul fapt c fiecare tester e unic. Duce cteodata(la unii mai mult la alii mai puin sau la un produs mai mult la altul mai puin) la mari descoperiri de genul NullPointer in Java orTooManyOpenCursors in Oracle, care au anse s nu fie gsite prin testarea la carte. Momentul NullPointerException e unul savurat de testeri, deoarece marcheaz n general sfritul sau rareori, de ce nu nceputul unei investigaii care devine la un moment dat mai personal, s zicem prin manifestarea si gravitatea lor. Da, tiu c e relativ gsirea unor astfel de erori, dar in general n aceasta scriere am facut referire la un cod care nu e la prima mna, presupunnd c am fi in code complete. Cam astea ar fi cteva dintre argumentele disputate momentan, fiecare dintre ele poate constitui un nou subiect de discuii pe care o lsam pe alt dat, cnd vom avea mai mult hrtie, mai mult min la creion, mai mult timp. Dac ar fi s trag acum o linie, a zice Pro, dar nu ca metoda unica de testare.

www.todaysoftmag.ro | nr. 2/2012

23

startup

SociaLook

numes c Horaiu Mo cian, i sunt fondator ul S ociaLook, www.socialook.net, un startup care urmrete prezena companiilor i a a angajailor acestora n social media, n special Twitter si bloguri. Chiar dac startup-ul este nc destul de tnr, aproximativ un an, povestea din spatele lui este destul de interesant.

nceputul

Horaiu Mocian

horatiu@socialook.net Tanar antreprenor in social media. A absolvit un Master in Advanced Computing la Imperial College London, iar in momentul de fata isi imparte timpul intre Targu Mures si Londra in rolul de CEO si fondator al SociaLook.

startup-urile din SUA si Europa, n special ce runde de finanare au primit i de la cine, i care sunt oamenii din spatele lor. Pentru fiecare persoan produsul afia conturile de social media: Twitter, blog, LinkedIn, Facebook. Dar cea mai interesant funcionalitate era crearea de conexiuni ntre oameni bazate pe investiii si poziiile n diferite companii. Spre exemplu, dac un utilizator cuta cea mai buna conexiune la un investitor, SociaLook i putea oferi urmatoarea legtura: utilizatorul era conectat pe Twitter cu o persoana care lucreaz la un startup care primise finanare de la investitorul respectiv. Spre deosebire de LinkedIn, SociaLook oferea conexiuni de pe mai multe reele sociale, si calcula un scor pentru fiecare conexiune o conexiune ntre doi oameni e mai puternic dac au lucrat zece ani mpreun, dect dac s-au ntlnit la o conferin, pe cnd n LinkedIn toate conexiunile sunt la fel. Am nceput s lucrm la produs n mai, n Trgu Mure. Dup ce am avut un prototip, a urmat un alt pas important: validarea produsului. Astfel, n iunie-iulie, Primul produs am petrecut trei sptmni n Londra unde Primul produs al SociaLook a fost am avut ntlniri cu antreprenori i posidestul de simplu: crearea unei aplicaii bili investitori. Feedback-ul primit a fost web ce coninea ct mai multe date despre promitor: majoritatea celor cu care am Povestea SociaLook a nceput n aprilie 2011, cnd proaspt revenit dup primul meu startup, euat, am nceput s plnuiesc o nou afacere. Ideea a venit ntr-un mod natural: cnd lucram la primul meu start-up, Newistic, eram n Romnia i trebuia s gsesc clieni printre ageniile de comunicare din Anglia i SUA. Astfel, am petrecut cteva sptmni folosind LinkedIn si Twitter pentru a cuta oameni care sunt activi pe aceste medii i contactndu-i direct. Metoda a funcionat, i am reuit s stabilesc ntlniri n Londra cu patru persoane, iar trei dintre acestea au devenit clieni. n concluzie, LinkedIn si Twitter s-au dovedit a fi mult mai eficiente dect e-mailul. Am observat c acest proces de a gsi date din social media poate fi automatizat i este o oportunitate destul de mare pentru un startup. Am convins un business angel din Belgia pe care l tiam de pe vremea cnd lucram la Newistic, s investeasc n aceast idee nscndu-se astfel SociaLook.

24

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

discutat vedeau o oportunitate pentru un astfel de produs. Am decis s lucrm n continuare la el i s pregtim o versiune beta pentru luna septembrie. n timpul verii am pregtit produsul pentru testarea beta, reuind s ajungem la o versiune stabil spre sfritul lui septembrie.

Turneu de prezentri

ncepnd cu luna septembrie focusul s-a mutat pe participarea la evenimente i pe creterea vizibilitii produsului. Am participat la Capital on Stage n Amsterdam (septembrie) i la Venture Connect n Cluj (octombrie). Dar punctul de maxim a fost n noiembrie: am prezentat SociaLook pe scen la How To Web, cea mai mare conferin de tehnologie din sud-estul Europei, i am luat locul 3 (cea mai bun clasare pentru o echip romneasc). Apoi, am prezentat n faa investitorilor la Venture Connect n Bucureti. Aceast conferin reunete cele mai bune startup-uri din Romnia cu majoritatea investitorilor romni, precum i cu un numr important de investitori strini. Pentru mine feedback-ul a fost destul de bun, am nceput discuii de finanare, ns acestea nu au ajuns la un rezultat final. Turneul de prezentare a SociaLook s-a ncheiat cu nc o vizit n Londra pentru ntlniri cu poteniali clieni. n tot acest timp, ncepeam s primim i feedback de la clienii care au nceput s foloseasc produsul. Prerea majoritar a fost c produsul era destul de interesant, ns utilitatea lui era restrns. n primul rnd, piaa adresat (antreprenori ce caut investiie) era destul de mic. n plus, un antreprenor care nc nu a luat o rund de finanare nu i-ar putea permite s plteasc pentru un astfel de produs, iar dup ce a primit runda de finanare nu mai are nevoie de produs (chiar i pentru rundele urmtoare, investitorii existeni vor fi mult mai utili dect cei gsii de SociaLook). n al doilea rnd, ne-am dat seama c produsul este greu de mutat pe alte verticale (vnzri, business development), pentru c nu avem surse de date destul de bune i majoritatea sunt pltite (LinkedIn, CapitalIQ, Bloomberg, etc).

SociaLook. S-au luat cteva decizii importante: nu se vor folosi alte surse de date n afara celor din social media, vor fi construite profile automate pentru orice companie iar sursa principal de date va fi Twitter. n concluzie, focusul s-a mutat de la gsirea conexiunilor, la gsirea oamenilor care au conturi de Twitter, LinkedIn sau bloguri, din orice companie. De asemenea, noul produs va fi orientat oamenilor care fac vnzri sau business development. Din luna martie, lucrm la un nou design al site-ului care s reflecte noua direcie. La momentul scrierii articolului se lucreaz intens la noul produs, care va putea fi testat de primii useri n aprilie. De asemenea, n aprilie, voi face demo-uri ale noului produs n Londra.

Viitorul

Planurile pentru urmtoarele luni sunt destul de clare: finalizarea noului produs, prezentarea la mai multe conferine, discutarea unui posibil parteneriat pentru date cu LinkedIn, i creterea echipei. Dac totul merge conform planului, n var se va discuta de o nou rund de finanare, i extinderea prezenei SociaLook n Londra. n final, dac tot am amintit de echip, voi descrie pe scurt componena ei. Eu sunt singurul implicat full-time, ns investitorul iniial e implicat n discuiile despre strategia companiei. Din ianuarie 2012, Rzvan Roman ni s-a alturat ca advisor, fiind implicat n definirea produsului pentru oamenii de vnzri i n aducerea de posibili clieni. Eu am fcut design-ul funcional al produsului i am construit back-endul, ns pe partea de design vizual i front-end lucrez cu Reea, o firm din Trgu Mure. n urmtoarele luni, voi cuta nc o persoana tehnic care s se alture echipei ca CTO, urmnd a fi responsabil de ntreaga parte tehnic a produsului. Principalele provocri tehnice ale proiectului sunt procesarea unui volum mare de date i crearea unor componente de procesare a limbajului natural (NLP).

SociaLook 2.0

n ianuarie 2012, dup ce am coroborat tot feedbackul primit n ultimele luni, am nceput reinventarea produsului
www.todaysoftmag.ro | nr. 2/2012

25

Managing Multiple Projects in a Program Environment


May 14-15 2012, Bucharest, Romania 16PDUs This 2-day seminar provides key skills for Project and Program managers in todays increasingly complex global project & program world

Seminar Focus
Learn how multiple projects can be effectively controlled, especially where change is business as usual Review the show-stoppers which repeatedly impact upon the delivery of complex & multiple projects Analyze the strategic alignment of projects and issues around delivering trans-national projects Discover how Program Managers ensure a portfolio or program is managed at the correct level Explore what a best practice organizational structure for the management of multiple projects looks like Develop a personal action plan to apply your learning back at work Familiarize yourself with Program Management Professional (PgMP) credential requirements & exam criteria

May 14-15 2012 Zagreb, Croatia 16PDUs

The

Agile

PMP

May 17-18 2012 Bucharest, Romania 16PDUs

By blending the very best of Lean-Agile methodology with traditional projectmanagement approach, this course shows you how to achieve the ultimate success on your projects and programs by driving the productivity and ROI.

Seminar Focus
What is Agile, who uses it, and what challenges does it resolve Agile Project Management with Scrum How do the Waterfall and Scrum life cycles compare Agile, Lean, Flexible, Waterfall, Scrum, DSDM and more Explore Lean-Agile to successfully deliver your projects Pragmatic hybrid approaches: Implementations from the real world Why you stand out as an Agile PMP What competitive advantage does your organization gain Learn pragmatic Lean-Agile

interviu

Interviu Dan Lua


Portretul unui specialist n securitatea informaiei

Marius Mornea

marius.mornea@todaysoftmag.com Fost senior software developer in cadrul Nokia, n prezent fondatorul platformei Mintaka Research

m s ncep prin a v prezenta o dilem legat de alegerea intervievatului din acest numr al revistei: Dan Lua. Mi-a fost coleg de liceu i facultate i mi place s l consider prieten, lucru care a generat iniial un conflict intern ntre obiectivitatea n alegerea i prezentarea articolului, i subiectivismul adus de amestecul vieii personale cu cea profesional. Exist destui profesioniti n mediul local ale cror realizri i recomand pentru interviu, fr a genera acest conflict, aa c am s prezint pe scurt de ce am rmas la aceast alegere. Totul a pornit de la un amic comun care mi-a artat articolul 30 sub 30, generaia restart, publicat de Forbes Romnia, n care Dan este alturat altor 29 de tineri cu potenialul de a schimba viitorul n bine. Trecnd peste senzaional, trecnd i peste reacia lui modest (el consider c a ajuns acolo din greeal), am analizat la rece profilul lui profesional i m-am convins de ceea ce tiam demult: Dan face parte din acei oameni care se identific total cu ceea ce fac. Aparine acelei categorii care dedic 10,000 ore de efort unei preocupri, care nu este doar hobby, carier sau pasiune, ci este manifestarea unui echilibru intre activitatea zilnic i ceea ce sunt ei ca persoane. Munca de la birou, cercetarea pentru doctorat i orele predate la universitate, toate sunt dedicate securitii, la fel cum n liceu programarea, i n facultate ingineria, au fcut tot timpul parte natural din cine este el. Eu cred c acest gen de dedicaie este

unul din ingredientele principale ale unui profesionist din orice domeniu. S vedem aadar cum a ajuns, ce l definete i care sunt preocuprile unui inginer IT specialist n securitate. Avnd n vedere c interviul a durat peste o or jumtate, i prima tentativ de al transpune integral n text cretea alarmant ca i dimensiune, am decis s folosesc un stil concis i cu permisiunea dumneavoastr am s sintetizez principalele idei discutate. Totul a nceput la Satu-Mare acum 29 de ani, cnd Dan s-a nscut i dup doar 3 zile s-a mutat la Cluj. Primul contact cu calculatorul l va avea imediat dup revoluie, cnd n repetate rnduri curiozitatea l va ajuta s strice calculatorul bunicului, fiind nevoie de reparaii tot la dou sptmni. Tot atunci a fcut cunotin i cu primul su virus: OneHalf, care s-a strecurat n sistem pe o dischet cu un joc, i i-a oferit provocri i recompense mai mari dect jocul n sine: am vrut s vd despre ce este vorba, am spat i mi-a plcut foarte mult i de atunci mi-a rmas ntiprit n minte: asta trebuie s faci, sta este viitorul. Domeniul calculatoarelor a venit natural, profesia de inginer la fel de natural, deci a fost trasat totul de la nceput. Prin urmare Liceul de Informatica Tiberiu Popoviciu i secia de Calculatoare a Facultii de Automatic i Calculatoare din UTCN, cu diploma de inginer, cea de Master i actualul statut de

28

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

doctorand, au alctuit traseul normal al evoluat de la folosirea antivirusului pentru evenimentelor. a devirusa un calculator gata infectat, la a mpiedica infectarea acestuia prin oprirea i-a nceput cariera n timpul facultii atacurilor nainte de a avea loc. i primii 3 ani a programat n C i Java, fr preocupri legate de securitate. Intrarea n Trecnd de la istorie n prezent am acest domeniu a venit, cnd Dan a: vzut hotrt s ne oprim un pic asupra firmei c Bitdefender recruta i am revenit la Bitdefender, n opinia mea una dintre cele vechea mea pasiune din copilrie. Am mai de succes firme IT romneti, printre zis: hai s ncercm s vedem ce iese [..] i singurele care au n portofoliu un produs ce astfel s-a deschis Bitdefender Cluj, mpre- se bate constant pentru primul loc, la nivel un cu mine i nc 4 colegi n 2005. n mondial, n categoria lui, i genereaz cancei 7 ani care ne aduc pn n ziua de azi, titi nsemnate de Proprietate Intelectuala. poziiile ocupate au variat de la: analist de Eu vd n asta un semn pozitiv, o dovad a virui (2 ani i jumtate), timp n care a competenei i competitivitii mediului IT fcut: mult mult mult reverse engineering din Romnia, dar n acelai timp i o pat (eng. Inginerie invers), studiat codul x86, de culoare n marea de outsourcing. Prin studiat formate de fiiere, analizat foarte urmare am vrut s aflu o prere din intemulti virui, fcut ture (lucrul la analiz rior: Pe avtest.org Bitdefender este chiar este non-stop, n foc continuu), lucram pe primul loc, dac te uii n ultimul an, am weekendurile, lucram nopile, dar era o ieit n fiecare semestru primii la detecie munc foarte plin de recompense, simeai i la partea de curare. Suntem n topul c nvei tot timpul lucruri noi i puteai s topurilor, suntem cei mai buni i ne mnevoluezi.; apoi a trecut pe partea de dez- drim cu asta. a spus Dan zmbind. Vreau voltare de tehnologii de detecie, din modul s mai spun c este un produs 100% romutilizator a trecut n modul kernel, un pas nesc, toat tehnologia se face n Romnia, necesar pentru a ine pasul cu ameninrile nu se face nimic n afar, nu avem outsourdin domeniu. Tot la asta lucreaz i astzi, cing, totul este fcut de specialitii romni. doar c n rolul de conductor al echipei Aceste echipe locale sunt i primul ingredide cercetare metode de protecie kernel ent n reeta succesului: cred c oamenii i proactive, la un nivel tehnologic mai sunt cei mai importani pan la urm i nalt, avansnd la tehnici de hipervizoare exist oameni n Bitdefender care lucreaz i introspecie. de 12-13 ani ncontinuu, i lucreaz cu aceeai pasiune i cu aceeai dorin de a fi Odat cu dezvoltarea carierei s-au cei mai buni. De asemenea este vorba i de dezvoltat i provocrile i a crescut com- viteza de reacie i abilitatea cu care poi s plexitatea ameninrilor informatice. Dac: anticipezi ceea ce urmeaz s se ntmple. la nceput scopul principal era s creezi un eful meu chiar avea o zical: <<the fasvirus prin care s ari ct de priceput eti, ter you are, the less you get fired>> adic s afiezi un mesaj pe ecran sau s distrugi cu ct eti mai rapid, cu att ansele s te datele, aceast tipologie a disprut. n ziua concediem scad. Viteza este o component de azi accentul se pune pe furtul de infor- foarte important n acest domeniu, dac maii i pe valorificarea acestor informaii. nu reueti s previi, trebuie s ai detecie Trebuie s nelegem c ies foarte muli la nivel de ore, de minute dac se poate. O bani din a crea malware care s spioneze alt component a succesului este inovaia i care s fure identiti. Din acest motiv [..] Bitdefender a fost primul produs antivinu mai avem de a face cu creatori de virui rus cu update online de semnturi. acesta care sunt oameni singuratici i fixai pe o fiind doar un exemplu de inovaie adus de idee, ci este vorba de o ntreag industrie de Bitdefender n domeniul securitii i premalware, n care se folosesc metodologii de luat de industrie, devenind un standard n dezvoltare de malware, acesta are un ciclu oferta de servicii. de via, este actualizat, controlat, se aduc mbuntiri. Avem de a face cu o chestie Lsnd realizrile companiei s vorprofesionista, i ca s rspunzi la asemenea beasc de la sine, pe viitor, am decis s ameninri trebuie s ai o abordare profe- discutam un pic despre primul ingredient: sionist. Abordarea curent n industrie echipele de dezvoltatori. Cum? i de unde? este una proactiv: E mult mai uor s se gsesc resurse n securitatea IT, un previi dect s tratezi. Practic modelul a domeniu de ni. S gsesc un specialist

gata format i gata pregtit mi este aproape imposibil, aici n Cluj i pot s zic chiar n Romnia. [..] trebuie fcut un training, i acesta n Bitdefender dureaz mult, 4 luni de zile, poate chiar mai mult. De aceea ideea este s gsim persoane cu potenial, interesate de domeniu [..] i care sa ajung la nivelul cerut de noi. Prin implicarea n viaa universitar, ncercm s atragem oamenii direct de la surs. ns implicarea lui Dan n viaa universitar nu are ca principal preocupare recrutarea, el fiind mai degrab interesat de procesul educational, prednd laboratoare sub convingerea c: n momentul n care acumulezi nite cunotine, dac le i numai pentru tine nu rezolvi nimic, ideea este s le mprteti i s ii ajui i pe alii s dobndeasc acele cunotine i s creti nivelul de contientizare al celor din jur., mai ales asupra unui aspect important ca: Securitatea este la fel de puternic, ca i cea mai slab veriga a sa, i cea mai slab verig a sa sunt oamenii. [..] iar prin implicarea mea n nvmnt, asta ncerc s fac [..] s popularizez acest domeniu i s le atrag atenia de la nceput la ce riscuri se expun. Important este i sentimentul de satisfacie simit cnd: studenii chiar au fost interesai i au simit ca pot s nvee lucruri noi. Cam asta este raiunea mea, de asta vreau eu s in acele laboratoare, s diseminez i s cresc gradul de contientizare asupra securitii. Prin urmare securitatea tine la fel de mult de tehnologie, ct tine i de educarea factorului uman: formal, prin politici n interiorul companiilor, ncepnd din faza de dezvoltare, pn n producie; dar i educational: securitatea ar trebui s strbat ca un fir rosu, din anul nti pn n anul 6 la master. Pentru a explora pn la capt sfera academic, am decis s comparm un pic activitatea de cercetare de la doctorat i din industrie. Practic, dei Dan ncearc s le pstreze aliniate exist unele diferene fundamentale: n cea academic prezini o idee, fr s iei n considerare aspectele de performan, stabilitate, scalabilitate, implementare n viaa real. Pe cnd n industrie e cu totul altfel, fix pe dos. primeaz specificaiile non-funcionale, practice, naintea ideilor teoretice revoluionare. Dac eti protejat de cupola academic poi s faci cercetare de dragul cercetrii, spernd s ajungi la un panaceu, care s rezolve totul, dar n industrie, Dan
www.todaysoftmag.ro | nr. 2/2012

29

interviu

Interviu Dan Lua Portretul unui specialist n securitatea informaiei

crede c este important s rmi pragmatic i s te pstrezi n sfera aplicabilitii rapide, fr a lsa efortul de implementare pe generaiile urmtoare i a avansa doar teoretic. Revenind la mediul economic am decis s trecem scurt n revist schimbrile curente din IT, cum ar fi trecerea de paradigm de la vechile structuri fixe la combinaia dintre mobil i cloud, att din perspectiva consumatorului individual, ct i din cea industrial. Schimbare ce deschide o ntreag palet de vulnerabiliti noi: pierderea confidenialitii, nevoia de contracte SLA (Service Level Agreement) pentru a asigura accesul i integritatea datelor etc. Securitatea trebuie s tina pasul i echipa Bitdefender, deja a lansat pe pia o soluie pentru infrastructura n medii virtualizate VMware, Hyper-V, Xen. Dei exist schimbri rapide n toate domeniile ITC, este remarcabila viteza de schimbare i de reacie din domeniul securitii. Practic trebuie tot timpul sa fii pregtit, nu doar pentru atacuri din prile ru intenionate, dar i pentru schimbri n tehnologiile i produsele soft cu distribuie masiv pe pia. nainte de a explora paleta larga de opiuni, din care putem s ne alegem, cnd ne construim o carier n securitate, am decis s atingem un pic partea senzaional a acestui gen de munc. Exist multe tiri din categoria 007: Stuxnet, rzboaie cibernetice, etc.; care fac din ramura asta una dintre puinele din IT, care ii ofer adrenalin la locul de munc. Aa c mi-am ntrebat interlocutorul: ct de mult din rutina zilnic ine de senzaional i de lupta pe viata i pe moarte? Zmbind, Dan a fcut o paralel ntre filmele cu James Bond i agenii secrei din viaa real, unde mult sub 10% din activitate are adrenalina i aciunea din filme. Exist firme de securitate care ofer soluii foarte avansate i specializate, dar sunt la un alt nivel i este nevoie de certificri i investiii majore pentru a ajunge acolo. Chiar i asa unele ameninri foarte sofisticate, ca i Stuxnet (care a reuit s afecteze programul nuclear iranian) pot fi prinse de ctre un antivirus de uz casnic. Diferena apare n aplicarea soluiilor corective, deoarece, spre deosebire de filme, n realitate exist procese bine puse la punct, cu proceduri stricte care trebuiesc respectate. Nimeni

nu aplic strategia lupul singuratic care merge pe urmele hackerului i l aresteaz. Exist satisfacie personal cnd reueti s gseti o soluie pentru a opri un atac, ns: nu ii legal s faci ceva tu singur, [..] dar poi s mergi n sfera juridic, s lucrezi cu autoritile competente i n urma unui mandat, s opreti reeaua respectiv. Cu alte cuvinte, chiar i sistemele controlate de hackeri sunt protejate de lege i se urmresc canalele juridice oficiale pentru oprirea lor.

Dac tot am pornit pe drumul senzaionalului, i-am dat satisfacia lui Dan de a demitiza un alt subiect comun n presa local: atacurile hackerilor romani asupra FBI, Pentagon i alte astfel de fortree i celebrul cuib de hackeri de la Rmnicu Vlcea (supranumit i Hacker Ville). Rspunsul lui Dan mparte hackerii n trei Ca s complicam i mai tare lucrurile categorii distincte: amatorii ce folosesc i s fie i mai greu de definit grania dintre instrumente automate, escrocii i hackerii nivelurile de gri, am povestit un pic despre reali. pen-testing i am aflat c, dac n cazul atacurilor asupra companiilor, lucrurile Practic prima categorie este alctuit, sunt destul de clare, nu la fel stau lucrurile de cele mai multe ori, din tineri care uti- n cazul unor produse comerciale publice. lizeaz instrumente automate, foarte uor De exemplu este o practic curent s se de folosit: orice om care tie s foloseasc ia o aplicaie foarte folosit, s se ruleze yahoo messenger, d trei click-uri i gata, pe ea instrumente i teste de descoperire care identific automat vulnerabiliti i ii a vulnerabilitilor, iar odat gsite, exist permit s le exploatezi (tot prin interme- dou posibiliti. Ori anuni compania diul interfeei grafice). Aceti hackeri au, productoare i le dai ocazia s repare vulde cele mai multe ori, un nivel foarte sc- nerabilitatea, caz n care ii construieti o zut de cunotine tehnice i nu reuesc s reputaie bun i faci un serviciu public; exploateze mai departe accesul la date de ori poi organiza legal o licitaie pentru a mare importan, fiind prini cu uurin vinde vulnerabilitatea pentru profit finani ajungnd pe prima pagin din ziare. Dan ciar personal. Exist o dezbatere aprins n consider c ar trebui tratai cu indulgen comunitate, att din perspectiva etic, ct i i introdui ntr-un proces de reeducare. legal a celei de a doua abordri. A doua categorie, cei din Hacker Ville, se ocupa de fapt cu: neltorie la drumul mare [..] anunuri false pe ebay [..] puneau preuri de dumping i se bazau pe veriga cea mai slaba din lanul de securitate, pe om, care nu mirosea escrocheria. Nu a merge ntra-colo nct s numesc astfel de activiti, activiti de hacking. [..] Nu este nici o diferen ntre hackerul vlcean i unul care te neal la un schimb valutar, practic exploateaz inocena uman. Ultima categorie o reprezinta hackerii reali, nsa aici apar unele nuane de gri: n accepiunea veche: hackerul este o persoan foarte curioas, care este foarte pasionat de un domeniu i ncearc s neleag ct mai multe din acel domeniu.

n acest sens, zice Dan: mi place s ma consider hacker. Cum facem atunci s separm hackerii n Black Hats i White Hats, adic n biei ri i buni. Diferena [..] este dat de autorizaia i etica, ca s fii white, trebuie s ai autorizaia din partea companiei pe care o ataci sau ii descoperi vulnerabiliti; i s ai etic, adic s nu dezvlui datele respective, s le faci publice sau s le foloseti pentru avantajul tu personal. n rest, la nivel de cunotine tehnice, la nivel de tehnologii sau abiliti personale, nu ar trebui s fie nici o diferen. Cu alte cuvinte moralitatea ii separ pe pen-testeri (cei pltii s gseasc vulnerabiliti), de hackeri. Primii primesc bani, ceilali ajung la nchisoare, dar ambii merita respect din perspectiva abilitilor tehnice.

Prsim senzaionalul de gazet i graniele fine ale nuanelor de gri din etic, i ne ntoarcem un pic la statistici i realitatea industriei securitii. Chiar dac am hotrt c un angajat n securitatea IT nu este un agent 007, cifrele oficiale ale Norton Cybercrime report 2011 arat c: n fiecare secund 14 persoane cad victim unei infraciuni cibernetice, iar totalul prejudiciilor cauzate de nclcri ale securitii IT n 2011 se ridic la 388 miliarde de dolari, n condiiile n care valoarea total a pieei drogurilor este estimat la 288. Chiar dac Dan se ferete de cuvntul mafie, eu consider c magnitudinea cifrelor de mai sus descriu clar o form de crim organizat, care a pus bazele unei industrii de exploatare a vulnerabilitilor de securitate.

30

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

Amndoi cdem de acord c avem n fa o curs a narmrilor, iar dac acum 10 ani raportul de fore era clar n favoarea securitii, n momentul de fat lupta este deschis i de partea cealalt a baricadei, st un adversar la fel de bine pregtit tehnologic i financiar. Cu toate acestea Dan m asigur c, dei suntem: atacai non-stop, mi place s cred ca putem face fa. Dac nu ne bazm doar pe tehnologie, ci suntem ateni pe ce site-uri intrm i ce operaii facem i la ce ne expunem, n acelai timp avem o soluie anti-malware, c deja nu mai vorbim de antivirus, ci de o ntreag palet de creaturi virtuale.. cred c suntem ok. Aleg s am ncredere i s l cred, dar ntreb ce strategie au pentru a ine pasul pe viitor. Mai exact prin ce mijloace reuesc s se in la curent cu tehnologia: certificri, traininguri sau studiu personal. Cel mai mare accent se pune pe studiu personal [..] trebuie s depui tu efort, s fii tu la curent cu toate atacurile nou aprute, ideal ar fi s fii conectat la listele de vulnerabiliti, s tii ce se ntmpl n industrie; ct despre traininguri: Nu vreau s par lipsit de modestie, dar trainingurile le cam inem noi!, a declarat Dan rznd. Rolul certificrilor, n viziunea lui Dan, este de a oferi perspective noi asupra industriei. Desigur, exist ramuri i poziii care necesit formal anumite certificri, dar n cazul lui, contribuia principal a fost explorarea unor concepte cu care nu se ntlnete n viaa de zi cu zi, n rolul

su de developer din tranee. Dan deine certificrile: CISSP (Certified Information Security Professional, eng. Profesionist Certificat n Securitatea Informaiei), CEHv7 (Certified Ethical Hacker, eng. Hacker Etic Certificat) i CISA (Certified Information Security Auditor, eng, Auditor Certificat n Securitatea Informaiei). Unele au fost o provocare (CISSP a avut 250 de ntrebri n 6 ore), timpul de pregtire pentru fiecare ajungnd la 2-3 luni, dar au meritat, de exemplu CEH i-a prilejuit contactul cu: Un ntreg arsenal de tool-uri (eng. instrumente), te cruceti cnd vezi ce au la dispoziie cei care vor s atace i ct de simplu e. Dup cum se vede n toate paragrafele de mai sus, este nevoie de o investiie considerabil de timp i efort, pentru a reui s ii pasul ntr-un mediu adversarial att de dinamic cum este domeniul securitii IT. Aa c, n ncheiere, am discutat despre aspectele sociale: ct timp aloc zilnic un inginer de securitate pentru a fi la zi, iar Dan aproximeaz la 10-12 ore pentru a pstra ritmul, i 13-14 dac doreti s ajungi n elit. n condiiile n care seara este dedicat familiei, mai ales celor doi copii ai si, este de neles de ce unii din prieteni l consider agent 007. n final cred c am subestimat investiia la doar 10.000 de ore i sunt sigur c Dan se va dedica securitii tot restul vieii, deoarece: Eu cred c fac ceea ce mi place cu adevrat.

www.todaysoftmag.ro | nr. 2/2012

31

HR

Pregtirea unui interviu

nd am acceptat invitaia de a scrie despre Cum s te pregteti pentru un interviu am crezut c va fi simplu. Mi-am propus ca articolul s fie uor de citit i de neles i, nu n ultimul rnd, o oportunitate de a deprinde ceva util. Cnd am nceput s-l editez ns, am realizat c limba romn nu e tocmai uoar i cu att mai mult e destul de dificil s exprimi idei complexe ntr-o manier simpl. Dup ce am pus punctul de final, l-am dat unui copil de zece ani s-l citeasc, cu scopul de a-i testa simplitatea i coerena. Mi-a spus c nu a neles nimic. Aa c am luat-o de la capt. Cum s m pregtesc pentru un interviu? Rspunsul n mintea mea este extrem de familiar. Dar, cnd ncerc s-l pun pe hrtie, devine din ce n ce mai complicat. Aa este i cu participarea la interviuri. Te gndeti c e o discuie degajat pe care o vei purta cu una sau mai multe persoane. Pus n faa faptului mplinit realizezi c ai emoii, pe care uneori nu tii cum s le controlezi i din teama de a nu avea momente stnjenitoare de linite, rspunzi ct de repede poi la ntrebarea care i este adresat. De cele mai multe ori se ntmpl s nu fii mulumit de informaia pe care ai transmis-o. La fel ca i mine, te sftuiesc s i iei zece secunde, s tragi aer adnd n piept, s i formulezi n minte nite idei, pe care ulterior s le exprimi. Unii spun c principalul i cel mai important lucru pe care l ai de fcut nainte unui interviu este s te pregteti. De exemplu, s caui informaii despre top 99 cele mai des ntrebri formulate de angajator. Eu cred c poate fi un exerciiu util, de auto-cunoatere i de ctigare a ncrederii n tine. Te sftuiesc, ns s nu duci la extrem acest exerciiu i s nu nvei nite ntrebri pe de rost. i spun c exist posibilitatea s i pcleti pe recruiterii nceptori, dar ce te faci cnd ntlneti o vulpe btrn, care i citete foarte bine inteniile i ncepe s te scoat din rutina rspunsurilor prestabilite? Suntem amndoi contieni c unul dintre riscuri este s te pierzi i s nu obii, poate, job-ul viselor tale. Eu consider c lucrul cel mai important pe care ar trebui s l faci pe parcursul unui interviu este s ai un scop bine stabilit: s descoperi dac acel job este potrivit pentru tine. S fii ct se poate de sincer cu tine i cu intervievatorul tu, avnd mereu n minte trei idei : (1)Pot s ndeplinesc sarcinile pe acest post n mod performant?, (2) mi va plcea compania i mediul de lucru? i (3) Care este motivaia mea de a lucra n aceast firm?. Nefiind cinstit cu tine i asumi, din nou, un risc. Te nhami ntr-o companie nou n care vei ajunge s nu fii un performer i s nu te integrezi. n felul acesta vei fi ntr-o continu cutare a unui loc de munc. Un alt mit despre cum s te prezini la un interviu este inuta. n articolele

Andreea Prvu

andreea.parvu@endava.com Recruiter n cadrul Endava i trainer specializat n dezvoltarea abilitilor si competeneelor de leadership, comunicare i munc n echip

32

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

de specialitate (nu c acesta nu ar fi unul) spune c trebuie s te mbraci elegant, pentru a face o impresie ct mai bun. Mai este menionat i c machiajul (n cazul femeilor) i parfumul (n ambele cazuri) n exces poate atrage atenia interlocutorului ntr-un sens negativ. Dac este s fim oneti unii cu alii, consider c n orice mprejurri machiajul excesiv poate atrage atenia ntr-un sens negativ. Am apreciat ntotdeauna persoanele ct mai naturale. Dac tu ca individ nu foloseti machiaj, atunci de ce s l aplici n situaiile n care participi la un interviu ? Nu sunt de acord cu exagerrile i contientizez c i ali recruteri gndesc la fel. Revenind la mbrcminte, eu sunt de prere c dac aplici pentru postul de Director Vnzri i Marketing i te prezini la interviu, atunci este important i chiar relevant s pori costum. Dar, dac discutm de un mediu mai relaxant (cum este n majoritatea companiilor de IT), atunci poi adopta stilul smart casual. tiu c este un concept des folosit, dar poate c, uneori, este greu de neles. Smart casual: un fel de combinaie ntre elegant i uzual. O combinaie reuit poate fi o pereche de blugi i o cma (n cazul brbailor) i o fust semi-elegant sau o pereche de pantaloni semi elegani i o cma (n cazul femeilor). Consider c este suficient s ai o mbrcminte curat i decent, deoarece esenial este ce ai de spus n cele 45-60 minute pe care le vei petrece impreun cu recruiterul. Te sftuiesc n schimb s ai cei apte ani de acas pe tot parcursul interviului. S fii respectuos, nainte de orice. S dai mna ferm cu recruiterul, chiar dac e femeie (s nu o strngi ns foarte tare). nchide-i telefonul mobil i uit de ceas. De cele mai multe ori este bine s clarifici nc de la nceput cu recruiterul ct va dura discuia. Uitndu-te la ceas, ari nerbdare i dorina de a se termina ct mai repede. Adic, n cuvinte ct mai simple, transmii intervievatorului o lips de interes pentru job i o motivaie sczut. Totodat, ce mai face parte din codul bunelor maniere este evitarea gesturile exagerate. Este extrem de important s-i corelezi limbajul verbal cu cel non-verbal. Studiaz puin nainte ce nseamn s ai o poziie deschis i una nchis. Poate fi un plus s cunoti importana pe care gesturile, mimica i postura corpului o pot avea n cadrul comunicrii interpersonale. Limbajul non-verbal este un element semnificativ

n crearea unei imagini n ochii celorlali. Recruiterii experimentai interpreteaz gesturile, ajungnd s cunoasc persoana cu care discut chiar nainte ca aceasta s nceap s vorbeasc. Aadar, adopt o postur relaxat, dar ferm i fii sigur pe rspunsurile oferite. Iar la final, salut i mulumete. Pn s ajungi totui la un interviu mai ai civa pai pe care trebuie s i parcurgi. Primul este s ai un CV care s pun n eviden experiena i competenele pe care le ai pentru a face fa acelui job. Iar cel de-al doilea este s i faci un brand personal. Acesta din urm i va fi mai de folos pe parcursul primului contact pe care l vei avea cu intervievatorul. Cum ar zice Caragiale Ce este acela un CV? . Curriculum Vitae pe scurt sau Cursul Vieii. Ce ai fcut tu pn acum i ce i doreti pe viitor.. Este Cartea ta de Vizit n faa angajatorului. i, ca orice carte de vizit, CV-ul trebuie personalizat astfel nct s atrag atenia celui care o s aib un prim contact cu el. Ca recruiter am observat c un CV atractiv ndeplinete dou mari criterii (1) capteaz atenia nc de la nceput (spre exemplu, am vzut, pentru un post de marketing, un CV extrem de inovativ, sub forma unui afi publicitar; este ct se poate de evident creativitatea aplicantului, fiind atu-ul cutat pentru o astfel de poziie); (2) s fie clar i s urmreasc un fir rou. Bineneles, urmeaz ntrebarea fireasc: ce nseamn acel fir rou? Mai jos sunt cei ase pai pe care este indicat s i urmreti: Informaii personale Obiectivul n carier Reuite profesionale Experiena profesional Educaia formal i informal Competene. Abiliti. Cunotine. S le analizm pe rnd, pentru a avea, att eu, ct i tu, cititorule, aceeai viziune asupra lucrurilor. Informaiile personale intereseaz orice recruiter sunt: numele (evident este necesar s se cunoasc identitatea persoanei cu care se discut), localitatea de provenien i datele tale de contact. Restul: adresa exact, sexul, vrsta, numrul la pantofi etc. sunt mai puin relevante. i te ntreb acum: de ce s ocupe atta amar de spaiu? Obiectivul n carier. Mi s-a ntmplat zilele trecute s m amuz copios la citirea unui CV, vznd c respectivul i-a fixat ca obiectiv in carier Chelner barman

.... agent paza...si altele, cu dorina acerb exprimat n CV de a ajunge departe. Departe? unde? a fost prima mea reacie n condiiile n care persoana aplica pe un post de java developer. Eu nc nu am gsit asemnarea ntre barman/agent de paz/chelner i developer. Poate au i ei un cod secret, pe care l dezvolt n vreun fel sau altul. Am dat acest exemplu, care ntradevr e dus la extrem, pentru a sublinia importana liniaritii ntre obiectivul n carier i poziia pe care ai aplicat. i mai dau un sfat, formuleaz-i obiectivul ct se poate de SMART (Specific, Measurable, Achievable, Realistic, Timelined). Celor care nu au auzit de acest concept, v dau un exemplu simplu S devin Project Manager n urmtorii cinci ani , ntr-o companie de IT cu peste 100 de angajai. Reuite profesionale. Sunt informaii care ar fi indicat s apar n orice CV. Indiferent de postul pe care aplici, rezultatele i performanele tale conteaz. Cu att mai distinctiv este n IT. Dac oferi detalii despre proiectele n care ai fost implicat i tehnologiile cu care ai lucrat, recruiter-ul va putea mai uor s schieze profilul tu tehnic. Mai mult dect att, se poate compara amploarea proiectelor i a rezultatelor pe care le-ai avut tu cu cele ale altor candidai. Utilizeaz aceast seciune n CV, pentru c marea majoritate nu o fac i atunci apare nc un element distinctiv care atrage atenia. Experiena profesional. Aceast seciune ncepe cu cel mai recent job i continu cu cele relevante pentru poziia pe care aplici. Vrei un post de Java Senior, nu vd de ce mi-ai trece n CV, practic n timpul facultii la Cantina studeneasc. ntre cele dou poziii nu exist nicio conexiune. ncarci CV-ul fr vreun rezultat favorabil ie. Cu ct este mai detaliat experiena profesional, cu att este mai semnificativ i orice recruiter ajunge s analizeze CV-ul pentru urmtorul pas n procesul de selecie i anume interviul. Educaia formal i informal. Am vzut CV-uri care aveau n aceast parte a CV-ului inclusiv coala general i materiile studiate acolo. Te ncurajez s i treci studiile superioare i dac i doreti n mod deosebit, trece i liceul absolvit. Pe lng studii, laud-te cu toate certificrile obinute, fie c sunt tehnice (SCJP, MCSD), sau traininguri soft (leadership si comunicare) la care ai participat. Asta demonstreaz c eti orientat spre propria
www.todaysoftmag.ro | nr. 2/2012

33

HR

Pregtirea unui interviu

nvare i ai dobndit nite abiliti. Competene. Abiliti. Cunotine. Aici poi expune pe rnd competenele dobndite fie pe parcursul trainingurilor, fie pur i simplu on the job. n domeniul IT este simplu, enumeri tehnologiile i framework-urile cu care ai lucrat. Ceea ce este util i ceea ce te poate diferenia fa de ali aplicani este s precizezi perioada de cnd lucrezi cu ele. Amintete-i c n aceast seciune un rol important l au i cunotinele de limb strin. Recomand s le menionezi doar pe cele al cror nivel este cel puin intermediar. Majoritatea articolelor cu acest subiect sunt ceva de genul 76 de lucuri pe care s nu le faci la un interviu. Nu am vrut s i spun ce s faci i ce nu, dar am considerat de bun sim ca fiecare intervievat s aib ct de ct o idee depre ce nseamn pregtirea pentru un interviu. n final, v

recomand s fii voi niv/nsev pe tot relaxai, care nu vin cu o fi de interviu, parcursul discuiei. S nu prezentai lucruri dar care, cu siguran, au nite competene/ neadevrate, pentru c, la urma urmei, comportamente pe care le evalueaz. angajatorul va descoperi personalitatea fieMult succes! cruia i poate va constata c nu este ceea ce se potrivete culturii organizaionale a Un recruiter 3.0. companiei. Da, poate suna clieistic, dar un lucru incontestabil este c fiecare individ influeneaz aceast cultur ntr-un fel sau altul. n final, cnd acceptai un nou loc de munc, s simiti acea conexiune cu compania i mai ales cu superiorul direct. E important s fii pe aceeai lungime de und. De asta cel mai bine este s nu ezii n a adresa ntrebri, pentru a-i clarifica toate aspectele dorite. Grij mare la gradul de familiaritate, pentru c la urma urmei interviul este o discuie formal. Acesta poate avea loc ntr-un cadru informal sau poate avei ocazia s ntlnii recruiter-i mai

34

nr. 2/2012 | www.todaysoftmag.ro

I T a l e n t - m a x i m i z e p o t e n t i a l

Cine suntem?
ITalent este o companie care investete n potenialul studenilor de la universitile tehnice,

att seciile din cadrul Universitii Babe Bolyai ct i din cadrul Universitii Tehnice. Suntem pionieri pe aceastni, deoarece credem cu trie c investiia n dezvoltarea unor competene va avea un impact pozitiv n mediul de business clujean.

Programe de excelen
ITalent Academyeste un program de excelencare ofer traininguristudenilor cu scopul de adobndi abiliti de orientare ctre persoane (ITalent People Focus), orientare ctre sarcini (ITalent Task Focus), precum i acumulare de cunotine tehnice prin intermediul unor internshipuri (ITalent Technical)n cadrul marilor companii IT din Cluj.

Leadership Team management CommunicaMon Change management and Accountability

ITalent Task Focus


Team work Project management Time management Change management and Accountability Internship program

ITalent People Focus

ITalent Technical

Program evenimente

Aprilie

Inscriere pentru ITalent Academy

Mai

Selecie parMcipani academie Sesiuni de training

Iunie

Sesiuni de training ITalent Academy closing

Iulie- Septembrie

Programe internship n companii de IT din Cluj

Partener: Contact: info@italent.ro

diverse

Facei cunotin cu Gogu!

ogu este un personaj amuzant, cinic pe alocuri, un introvertit pentru care monologul interior reprezint o alternativ la viaa real. Cu ajutorul lui Gogu, analizm diferite ipostaze din viaa managerului de proiect i a echipei sale i sugerm soluii uor de neles i aplicat. Cum ar spune Gogu...aproape de bun sim. V invitm s-l urmrii pe Gogu i s-i trimitei sugestiile voastre. Lui Gogu i se strnse stomacul instantaneu. Revzu valorile i mai citi o dat emailul n sperana deart c ceva, undeva, se schimba, c poate n-a neles corect mesajul. n paralel ns mintea lui prelucra informaia primit i construia primele scenarii de rspuns. Mai bine spus ncerca s construiasc scenarii cci niciunul dintre cele ce-i treceau prin minte nu era aplicabil. n special cel n care duhul din lampa ddea timpul napoi sau cel n care devenea invizibil pentru efu. - Oh, Doamne... oftatul ii scpa fr voie. - Probleme, Gogule? Tresri, uitase de prezena lui Miu. Mormi n barba: - Nimic, obinuitele probleme... Simea ns dureros de acut ct de neobinuit era problema pe care o avea acum. Recapitula irul aciunilor n ideea de a identifica punctul de start al dezastrului. Filmul evenimentelor ncepu s se deruleze n mintea lui: sosirea invitaiei de participare la licitaie, construirea argumentrii participrii cu beneficiile aferente. Ce fericit o s fie Mi sa-mi dea acum peste nas! iar apoi prezentarea n cadru larg. Retri mndria simit atunci cnd efu i-a trasat lui aceast sarcin (sunt sigur Gogule c te vei descurca n pregatirea ofertei finale, evident ai tot suportul nostru). Ha-ha, na mndrie acum se apostrofa singur. Apoi nelinitea resimit cnd s-a vzut n faa formularului pentru ofert, fr s stie sigur cum i de unde s l apuce; satisfacia de dup ntalnirea organizata de el pentru stabilirea soluiei i a alocrii sarcinilor (nu s-a descurcat ru aici, efu arta mulumit, iar fiecare i-a nteles bine sarcina/responsabilitatea) Apoi iar nelinite pn cnd au venit primele rspunsuri de la colegi, satisfacia documentului final, nervii cauzai de documentele de eligibilitate, printerul care a czut evident n cel mai prost moment i uurarea dup trimiterea ofertei i primirea confirmrii. Se pomeni zmbind, dup care se gratula singur: Zmbete, Gogule, c n-ai s mai zmbeti mult timp de-acu-nainte... Derulase filmul mult prea repede, trecuse peste momentul dezastrului fr s l identifice. Ca i atunci, de altfel. Devenise mult prea arogant, prea ii merseser

Simona Bonghez, Ph.D.

simona.bonghez@smartprojects.ro Speaker, trainer i consultant n managementul proiectelor, partener al TSP(smartprojects.ro) Cred cu trie n puterea jocului i a metaforei i mi place la nebunie ca sesiunile mele de training s fie distractive i interactive, n aa fel nct participanii s acumuleze informaiile ntr-o manier ct mai plcut

36

nr. 2/2012 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

lucrurile struna iar el, n loc s devin precaut, czuse prad delsarii. i aduse aminte: vzu n minte momentul n care era n faa excelului. Introdusese toate sesiunile de instruire, adugase preurile, a inserat coloana nou pentru cheltuieli adiionale legate de transport i cazare... - Of, Doamne!!! i n-a actualizat formula n coloana de total... - Probleme, Gogule, mh? Iar lsase oftatul s-i scape. De data asta ins raspunse: - Doar ce-am fost declarati ctigtori la licitaie. - He i s up e r v e s t e , s r i M i u . Nedumerirea i fcu ns imediat loc pe faa lui: care e problema? - Am dat-o n bar. Am greit preurile totale n ofert. n linitea lasat, stomacul i se strnse i mai tare, avea prima confirmare a gravitii problemei pe care o cauzase. Vocea lui Miu abia se auzi: - Ct e pierderea? - N-am calculat, abia ce-am primit emailul i am realizat ca lipsete ceva. n mod ciudat nu pierderea sau valoarea pierderii l afectase, ci faptul c o asemenea eroare a putut sa-i scape lui, cel ordonat, structurat, obsesiv perfecionist. i cu tabieturi, da asta n-are a face, gndi el. El care are standarde atat de nalte, care le cere celor din jur aceeai minuiozitate de care d dovada el. M rog, ddea dovad, c de acum... Un sentiment de ruine i de neputin l npdi. Revenir gndurile dinainte, duhul din lamp, omul invizibil. Sau mcar de s-ar putea ascunde undeva. Subit il fulger singura ieire posibil din situaia creat: demisia. Incerc s se mbrbteze singur: Asta e, tu i-ai fcut-o, arat c ai coloana vertical, c nelegi gravitatea situaiei i eti capabil s ii asumi responsabilitatea. Ridic privirea ctre Miu care continua s-l priveasc parc fr a-l nelege. Probabil c n mintea lui se intreaba cum oi fi reusit?! Rspunse: - M uit i calculez acum. Se aez, dar nu deschise excelul cu pricina, ci un document nou cu antetul companiei pe care scrise mare, pocnind demn tastatura: Demisie Remarc, intr-o doara, c nu mai are stomacul strns, n schimb un gust amar i invadase gura. Ii plcea s lucreze aici. Nu vroia s plece. Dar nu exista alt opiune. Hmm, i proiectul la care lucra acum, doar ce se pusese pe picioare, rezultatele

se artau mai bune decat se ateptaser. Contribuise i el la asta. Se crisp la auzul sunetului telefonului. efu. Ce s-i spun? Rspunse automat. - Gogule, eti tare biete, ai dovedit-o cu prisosin. Nu c unii dintre noi n-ar fi fost convini de asta. Vocea efului rsuna plin de optimism, de bun dispoziie. Gogu nghii n sec: - efu, putem sta de vorb cteva minute? Vin eu la matale. - Cnd m iei tu cu matale nu prea e a buna. Ce s-a ntmplat? Nemaiateptnd detaliile, poate nelegnd i din ton, efu adug: Ajung la firm n 2 ore, trec pe la tine s te iau. Super treab, Gogule! adaug nainte de a nchide. Ha-ha, super ntradevar, adug Gogu n sinea lui cu amrciune. Are timp s ii scrie demisia. Deschise totui excelul cu oarece urma de speran n suflet, poate totui valoarea nu e atat de mare. Mcar pierderile financiare s fie acceptabile cci lovitura psihologic era greu de ndurat, iar iminenta ntlnire cu efu nu avea darul s atenueze cu nimic impactul. Cnd efu bg capul pe u, aproape ii pru mai ru de zmbetul efului dect de poziia ingrat n care se afla el. Demisia era n plic, plicul n buzunarul sacoului, excelul cu calculele pierderii i opiunile de reducere a impactului n faa lui. Lua foaia i il urma pe efu. l puse la curent imediat ce au intrat n birou. Dei ii repetase textul de cteva ori, cuvintele i-au ieit greu, de parc n-ar fi vrut s-l prseasc. Nu era o veste uor de dat, dar nici de primit. efu sttea cu excelul n fa de cteva minute bune n momentul n care vorbi: - N-avem cum s acoperim diferena n totalitate, chiar dac punem n aplicare toate sugestiile tale. Varianta discuiei cu clientul n-a exclude-o, dei sansele sunt mici. Era destul de clar specificaia privind erorile de calcul: valorile de la total prevaleaz. Vocea era calm, abtut. Gogu ar fi vrut ca el s strige, s-l ocrasc, s-i reproeze fel de fel, s-l amenine cu datul afar. i-atunci el ar fi scos demisia, s-i arate c nu e nevoie s fie dat afar, ci c ii d el demisia: un triumf amar... Numai ca efu nu apelase la ameninri. i ceru detalii legate de una dintre opiunile propuse de Gogu, discutaser alternativele, ba chiar stabiliser o ntlnire cu clientul. Dup aproape doua ore, nc nu era dat afar i

nici semne nu se artau, iar el nu tia ce s fac cu demisia. Dup nca o ora, aveau un plan cu cap i coada care, dac le iesea, diminua pierderile n mod considerabil. Dar i cu un efort considerabil... - Ok, Gogule, ne vedem mine diminea s vedem ce ne iese din toate astea ncheie efu dup ce mai trecuser nca o data n revist fiecare aciune planificat. Gogu ins nu se mica. Demisia parca l ardea n buzunar numai ca scenariul nchipuit de el nu-i permitea s o scoat: trebuia s fie dat afr i-abia atunci demisia avea s fie nmnat cu demnitate. - Gogule?! efu nu inelegea ce era cu stana de piatr n faa lui. - Aaaa... hmm... aaa... Cuvintele nu ieeau i pace. - Zi Gogule, crezi c a mai rmas ceva? - Pai... hm... eu... Sunt concediat, nu?! Era mai mult o afirmatie dect ntrebare, iar tonul era uor sfidtor, chiar revendicator. - Auzi Gogule, nu crezi c am cheltuit prea mult ca s te dau acum afara? - Nu ineleg... Gocu fuse luat prin surprindere. Ce vrei s spui? - Ia zi Gogule, crezi c mai faci vreodat o asemenea eroare ca i-acum? - Oh, Doamne, cum s repet aa ceva? Niciodata! Sub nici o form! - Pi vezi, Gogule? ntradevr ne cost ceva lecia asta, dar e o lecie nvat. Crezi c mai vreau s dau bani i altdat, s mai trecem o data prin toata trenia asta?!

www.todaysoftmag.ro | nr. 2/2012

37

Workshop Managementul conflictelor cu Simona Bonghez


Imaginai-v ct de puternice ar putea fi relaiile pe care le avei dac ai nelege cu adevrat ce i stimuleaz pe ceilali - att cnd lucrurile merg bine ct i atunci cnd exist conflicte i opoziie

V invitm s petrecem mpreun o zi de descoperiri: ce st la baza comportamentului celor din jurul nostru, ce i face s ticie, ce determin reaciile lor n diverse situaii. Vom nva s le interpretm i s gestionm astfel relaiile noastre, inclusiv conflictele. Va fi o zi ncrcat, dar plin de bun dispoziie, deschis doar celor ce sunt gata s exploreze zone mai puin convenionale... Instrumentul pus la dispoziia participanilor le va oferi o cale de acces spre ceea ce ne motiveaz, pe noi i pe cei din jurul nostru i i va ajuta s comunice ntr-o manier prin care s obin rezultatele dorite. Se numete SDI (Strength Deployment Inventory, n romn Inventarul Punctelor Forte Personale) i reprezint o suit de teste psihometrice dar i o metodologie practic ce ne poate oferi puterea de a ne mbunti relaiile i de a gestiona n mod mai eficient conflictul. Workshop-ul se va desfura n Bucureti 17 martie, Cluj 4 aprilie i Timioara 27 aprilie (intervalul orar 9.30 16.30). Taxa de participare la acest workshop este de 400 lei + TVA (include pauza de cafea i prnzul) iar numrul de locuri este limitat. Detalii i nscrieri: training@smartprojects.ro.

38

nr. 2/2012 | www.todaysoftmag.ro

sponsor

powered by

You might also like