You are on page 1of 45

N 1/2012 .

NET Performance Interviu - echipa romneasc finalist Microsoft Imagine Cup De la o idee la un produs Compensarea creativ Startups - Mintaka Research Informaia, de la teorie la strategii ale spaiului public

6 Performana n aplicaiile .NET


Flaviu Man

30 De la o idee la un produs
Ovidiu Man

14 Problema efectelor secundare 16 The Good, the Bad and teh Ugly

33 Compensarea creativ
Ioana Fane

Ovidiu Deac

36 5 diferene dintre un ef i un lider


Aristotel Dascl

Ovidiu Deac

22 Interviu cu echipa romneasc finalist Microsoft Imagine Cup


Marius Mornea

38 10 vs. 1700 Presto - Allegro ma non troppo


Aurel Poprac

26 Startup Mintaka Research

Marius Mornea

40 Informaia, de la teorie la strategii ale spaiului public


Sebastian Big

editorial

Conectarea punctelor
Salut, Am plcerea sa v prezint primul numr al revistei Today Software Magazine, www.todaysoftmag.ro. Ideea a pornit de la faptul c fiind o comunitate numeroas n Cluj, precum i n celelalte mari orae din Romnia, programatori sunt conectai profesional n marea majoritate a timpului la evenimentele din cadrul firmei. Studiul tehnologiilor sau a limbajelor noi se desfoar individual, folosind date globale, lipsind informaiile i trendurile locale, o modalitate prin care aflm prerile celor din jurul nostru. Al doilea punct de la care am pornit este absena companiilor romneti care dezvolt produse proprii. Este un paradox faptul c 99% dintre acestea execut doar task-uri de outsourcing sau servicii locale ale unor multinaionale. Pentru a duce o idee la capt i a crea un produs competitiv este nevoie de mult munc, profesionalism, dedicaie. Probabil este nevoie de un mic imbold, motivare i sprijin, iar TSM va fi un aliat. Tot ce v cerem este s ne spunei despre startup-ul vostru iar noi vom aloca un spaiu pentru el, n seciunea dedicat. Al treilea scop al revistei este de a publica rezultatele celor civa care reprezint elita din domeniu. n fiecare numr va aprea un interviu cu o persoan sau o echipa care a obinut rezultate remarcabile. Vom crea un grup de profesioniti n domeniu care vor deveni cunoscui prin publicarea constant n cadrul revistei. Avem deja o parte din ei dar numrul lor va crete n viitor. Dac crezi c ai ceva de spus, d-ne un semn sau trimite-ne un exemplu de articol iar noi l vom publica ntr-unul din numerele viitoare. Vom ncerca s acoperim toate ariile de activiti implicate, ncepnd cu software development, QA, automation i pn la management/HR. O particularitate este seciunea de filozofie. Adunnd toate aceste lucruri, scopul nostru final este de a avea o revist pentru programatori, o lectur plcut i interesant, care, s sperm, va nate ntrebri i va nva lucruri noi. Lansm i o invitaie de a comenta articolele pe site-ul nostru i de a lua parte la concursurile organizate. Lansarea primului numr al revistei n format tiprit i online, de astzi, 6 februarie, n cadrul evenimentului Gemini Solutions Open Day, reprezint primul pas, urmnd ca n urmtoarea perioada s i fac apariia versiunea n limba englez disponibil pe Apple Store i Android Market.

Ovidiu Man, PMP


n prezent coordoneaz echipa Gemini Solutions Cluj, a fost timp de 3 ani Product Manager Nokia pentru serviciul de synchronizare al Ovi.com, fondator Today Software Magazine.

no. 1/2012 | www.todaysoftmag.ro

Redacie Fondator / Editor in chief: Ovidiu Man / ovidiu.matan@todaysoftmag.ro Graphic designer / Editor (filozofie): Sebastian Big / big.sebastian@todaysoftmag.ro Graphic designer: Dan Hdru / dan.hadarau@todaysoftmag.ro Editor (limbaje de programare): Ovidiu Deac / ovidiu.deac@todaysoftmag.ro Editor (startups i interviuri): Marius Mornea / marius.mornea@todaysoftmag.ro Colaborator: Ioana Fane / ioana.fane@todaysoftmag.ro Colaborator: Flaviu Man / flaviu.matan@todaysoftmag.ro Colaborator: Aurel Poprac / aurel.popartac@todaysoftmag.ro Colaborator: Aristotel Dascal / aristotel.dascal@todaysoftmag.ro Reviewer: Romulus Paca / romulus.pasca@todaysoftmag.ro Adresa de contact contact@todaysoftmag.ro +40749152170 www.todaysoftmag.ro www.facebook.com/todaysoftmag twitter.com/todaysoftmag ISSN 2284-6360

www.todaysoftmag.ro | no. 1/2012

programare

Performana n aplicaiile .NET


Dinamica modern a dezvoltrii de aplicaii software cu focus pe livrri frecvente de cod funcional face ca performana s fie un aspect adesea trecut cu vederea. Cu toate c abordarea de genul f-l s mearg nti dup aceea refactorizam are avantaje demonstrate cum ar fi adaptarea uoara i rapid la modificrile de cerine, ea deschide ua adesea codului scris neglijent care afecteaz performana ntr-un mod negativ. Fie c este inclus din start n ciclul de dezvoltare, sau este cauzat de situaii cum ar fi descoperirea de operaii foarte lente sau o degradare abrupt de performana n anumite scenarii (ex. creterea numrului de puncte de intrare cum ar fi numrul de useri care folosesc un sistem etc.) sau ca un pas premergator unui task de scalabilitate, msurarea performanei aplicaiilor devine un pas din ce n ce mai important n viaa unei aplicaii. Acesta este primul dintr-o serie de articole despre performana n aplicaiile .NET i acoper partea de alegere a profiler-ului potrivit. Al doilea articol din serie va fi un studiu de caz n care vor fi analizate cteva surse comune de degradare de performana precum i posibile soluii la aceste probleme.

Flaviu Man
Principal Software Engineer at Ixia

Detectarea problemelor de performan ale unei aplicaii se poate face prin diferite metode, de la caz la caz, ncepnd cu folosirea ceasului de mn pentru a msura timpul de execuie al unor operaii, adugarea de timere n cod n jurul operaiilor suspecte de probleme de performan i logarea acestora n fiiere pna la folosirea aplicaiilor dedicate, aa-zisele profiler-e, care furnizeaz date complexe colectate la rularea aplicaiei pe baza crora programatorii pot s identifice zonele cu probleme reale de performan cu un efort relativ mic. Prima variant este folosit cu succes de ctre managementul superior pentru evaluarea aplicaiei dpdv al performanei. A doua variant n care se folosesc timer-e presarte prin codul sursa funcioneaz bine atunci cnd problema de performana este tiut i relativ localizata i se vrea obtinerea mai exacta a cauzei acesteia. Procedeul este de obicei unul secvential, n mai multi pasi care duce ntr-un final la identificarea codului problema. n prima parte a acestei serii de articole dedicate performanei n aplicaiile .NET vom discuta despre a treia variant de investigare, cea n care se folosesc aplicaii de tip performance profiler deoarece acestea pun la dispozitia programatorilor date i unelte ce faciliteaz identificarea, fixarea i reevaluarea problemelor

Alegerea profiler-ului potrivit

no. 1/2012 | www.todaysoftmag.ro

de performana. n plus devii automat un programator cool, daca le folosesti. n continuare vom pune fa n fa dou dintre cele mai folosite profiler-e comerciale pentru aplicaii .NET i anume ANTS Performance Profiler de la Redgate respectiv dotTrace Performance de la JetBrains. Cautarea n google dupa .net performance profiler va ntoarce cele dou profiler-e n primele 2 rezultate. Le vom evalua n funcie de o serie de criterii ntre care: uurina n folosire, acurateea msuratorilor, analiza rezultatelor, pre etc.

1. Uurina n folosire

Ambele aplicaii sunt foarte similare n ce priveste partea de iniiere a sesiunii de profiling. Fiecare ofer posibilitatea de a alege tipul aplicaiei de analizat (standalone, silverlight, web etc.) i optiunile legate de nivelul de detaliu al datelor colectate (la nivel de linie, metoda sau sampling). n continuare sunt descrise cele mai importante optiuni de profiling. Majoritatea sunt prezente sub o denumire sau alta n ambele aplicaii: 1. Modul de profiling: Sampling - este o metoda de msurare de mica acuratee prin care o data la un anumit interval de timp se suspend toate threadurile aplicaiei analizate i profiler-ul obtine call stack-ul fiecrui thread. Pe baza call stackurilor colectate n timp profiler-ul va putea estima duratele apelurilor prezente n stack-uri la diferite momente de timp. Avantajul acestei metode este ca influenteaz cel mai putin aplicaia analizata, aceasta funcionand foarte apropiat de performanele ei normale. Dezavantajele sunt acurateea mic a msurtorilor i lipsa hitcount-ului pentru funcii. Opiunea este prezent n ambele profiler-e. Tracing sau la nivel de metoda aceasta este cea mai folosita metoda n care msuratorile se fac pe baza notificrilor venite din partea CLR (Common Language Runtime) la intrarea respectiv ieirea din funcii. Avantajele includ o acuratee foarte

Initiere sesiune profiling pentru aplicatii standalone, ANTS Performance Profiler 6.3

Initiere sesiune profiling pentru aplicatii standalone, dotTrace Performance 4.5.1

www.todaysoftmag.ro | no. 1/2012

programare

Performana n aplicaiile .NET

mare a msurrii timpului petrecut n funcii i prezenta hitcount-ului pentru toate funciile. Dezavantajul major este c influenteaz ntr-o msura destul de mare performana aplicaiei analizate.Opiunea este prezenta n ambele profiler-e. Not: ANTS Performance Profiler are o optiune (activa by default) prin care se ajusteaz automat durata funciilor scznd influenta estimat a profiler-ului asupra executiei acestor funcii. La nivel de linie - acest mod produce cele mai detaliate rezultate ce conin informaii legate de durata i hitcount la nivel de linie de cod executat. Principalul dezavantaj este influenta majora adus aplicaiei analizate. Optiunea este prezenta n ambele profiler-e. 2. Metoda de msurare: Wall time - reprezint timpul total scurs ntre intrarea i iesirea dintr-o funcie. Acest mod nregistreaz inclusiv timpul n care thread-ul l petrece n operaii de sleep, wait, join etc. CPU time (sau thread time) - n acest mod se nregistreaz doar timpul n care un thread consuma efectiv procesor. Timpul petrecut n operaii de sleep, wait, join nu sunt incluse n msurtoarea finala a funciei. 3. Alte opiuni Ajustarea timpilor pentru a compensa influenta profiler-ului - daca opiunea este activ, din durata msurat a funciilor se scade automat durata estimat a influenei profiler-ului asupra executiei. Nota asupra notatiei din tabel: Da* nseamna preferina autorului ntre cele dou oferte.

ANTS Profiler timeline

Timeline-ul trebuie s recunoatem c este un control sofisticat i spectaculos. Acesta se actualizeaz n timp real pe msura ce aplicaia analizat ruleaz i ofera informatii cum ar fi graficul ncrcrii procesorului, citiri/scrieri I/O, excepii i evenimente UI ce au avut loc pe parcursul rularii. Timeline-ul este interactiv, permind selectarea de ferestre, zoom in/out, click pe exceptii i evenimente pentru a obine informatii adiionale despre acesta ct i salvarea seleciilor (ferestrelor) sub forma de bookmark-uri.

marcm timeline-ul (vizual sau cu o fereastra temporara de ex.) chiar nainte de a porni operaia, dm drumul la operaie, la finalul acesteia trasam fereastra de la punctul de pornire stabilit anterior pna la sfritul timeline-ului (dac marcarea punctului de nceput s-a fcut folosind o fereastra temporar, aceasta se poate extinde pna la punctul final folosind mouse-ul). O singur fereastra poate fi selectat la un moment dat. Dimensiunea acesteia poate cuprinde orice subset din timeline.

Bookmark-uri

Ferestre

Selectarea unei ferestre pe timeline va actualiza datele colectate din fereastra de analiza pe intervalul determinat de fereastra. Ferestrele se pot construi astfel nct s cuprinda o anumita operaie, un spike CPU sau intreaga fereastra. Selectarea unei ferestre n jurul unei anumite operaii poate fi mai complicat dect pare, deoarece presupune memorarea/identificarea punctului n care a nceput operaia. Succesiunea de aciuni ar fi dup cum urmeaza: suntem pe cale s executam o operaie n aplicaia analizat pentru care dorim s colectm date de profiling,

Acestea se salveaz mpreun cu salvarea datelor de profiling. Bookmark-urile sunt foarte utile atunci cnd vrem s revenim asupra unor rezultate de profiling salvate anterior i dorim s revedem datele de profiling pentru anumite operaii sau zone interesante. n absenta bookmark-urilor ar trebui s refacem selectiile (ferestrele) corespunztoare operaiilor cutate pe baza informatiilor din timeline (grafic CPU, evenimente etc.). Folosind bookmark-uri pentru a marca ferestrele relevante la momentul n care le selectam pentru prima dat ne permite refacerea ferestrelor cu un singur click pe timeline n suprafata bookmark-ului. Cei de la JetBrains au rezolvat problema asta folosind notiunea de snapshot care structureaz n mod autoANTS Performance Profiler 6.3 dotTrace Performance 4.5.1 Da Da Nu Da Nu Da Da Da

Sampling La nivel de metoda La nivel de metoda (doar module cu cod sursa) La nivel de linie La nivel de linie (doar module cu cod sursa) Ajustarea timpilor pentru a elimina influenta estimata a profiler-ului Wall time Thread time

Da Da Da Da Da Da Da Da

Obtinerea rezultatelor

Cele dou applicaii au moduri diferite pentru a obtine datele de profiling ntre dou momente de timp: ANTS Performance Profiler 6.3 are notiunea de timeline (linie a timpului), iar dotTrace Performance folosete noiunea de snapshot.

Tabela cu optiunile disponibile pentru cele doua profiler-e

no. 1/2012 | www.todaysoftmag.ro

Selectare sectiune din timeline pentru a obtine datele pentru intervalul respectiv mat datele colectate pe intervale stabilite de ctre utilizator. Pro i Contra Avantajele timeline-ului includ: flexibilitate maxima n selectarea ferestrelor de timp de orice dimensiune, informatii aditionale gen exceptii i evenimente. Dintre dezavantaje: - greu de trasat ferestre n jurul unor operaii bine delimitate - colectarea de date este activa pe tot parcursul rularii (influentand performana aplicaiei analizate). rului un arsenal de funcionaliti care s faciliteze gasirea problemelor de performane ale aplicaiilor analizate. Exista elemente de baz, comune celor dou profiler-e cum ar fi folosirea aceluiasi set de metrici (numar de apeluri, durata metodelor incluznd sau nu duratele funciilor apelate n cadrul lor), evidenierea celor mai costisitoare metode, filtrarea metodelor cu impact foarte mic, mapare la codul sursa etc. i exist elemente distincte i utile de-o parte i de alta n ce priveste modurile de prezentare i grupare a metodelor, posibilitatile de cutare i adnotare etc.

Grupate per thread Ambele aplicaii afieaz by default stack trace-urile sub forma arborescenta, per thread, ordonate descendent dupa durata. Se poate observa ca cele dou reprezentari sunt similare dpdv al structurii informatilor (funcii, durata, hitcount) cat i al continutului, cele dou profilere afisnd aproximativ acelasi stack (aceeai succesiune de metode). Definiii: Call stacks - pentru fiecare thread sunt nregistrate toate call stack-urile exercitate de-a lungul executiei n cadrul acelui thread. Not: ambele profiler-e filtreaz metodele irelevante (cu durat foarte mica) din stack-urile afisate. Utilizatorul poate opta pentru suspendarea filtrarii n ambele cazuri. Procent - aportul unei metode la durata totala a thread-ului, exprimat n procente. Procentul metodei cuprinde durata acelei metode plus durata tuturor metodelor apelate de aceasta. Not: La dotTrace acest procentaj apare intotdeauna n afisarea arborescenta. n cazul profiler-ului de la ANTS exista o coloana care se numeste Time with children iar valorile ei pot fi exprimate la alegere n procent, milisecunde sau secunde. Timpul metodei (time) - reprezinta durata proprie a unei metode fara a lua n calcul i eventualele metode pe care le apeleaza. Not: n vizualizarea sub forma arborescenta doar ANTS Performance Profiler are aceast coloana. Timpul impreuna cu metodele apelate (time with children) - vezi descrierea de la Procent mai sus.

dotTrace snapshot

dotTrace Performance are un mod mai simplu de colectare a datelor sub forma de capturi (snapshot-uri). Astfel programatorul alege momentul exact n care ncepe colectarea datelor de profiling i momentul n care se opreste, rezultatul reprezentand un snapshot (captura). Un snapshot este de sine statator i nu poate fi combinat cu alte snapshoturi. Pro i Contra Avantaje: - colectarea datelor este activ doar pe durata capturii reducand astfel impactul asupra performanei aplicaiei analizate (not: Impactul asupra aplicaiei analizate n perioadele n care nu exista snapshot activ nu sunt zero. Procesul este instrumentat i toate hook-urile active, doar colectarea i structurarea datelor de profiling este sistata). - colectarea de date pentru anumite operaii se face usor (start/stop snapshot) Dezavantaje: - snapshot-urile nu pot fi extinse sau restranse (ca i la timeline)

2.1 Moduri de vizualizare al rezultatelor

start colectare date

2. Analiza rezultatelor

Ambele aplicaii pun la dispoziia utilizato-

stop colectare date

www.todaysoftmag.ro | no. 1/2012

programare

Performana n aplicaiile .NET

rezultatele de profiling sub forma arborescenta per thread, ANTS Performance Profiler 6.3

rezultatele de profiling sub forma arborescenta per thread, dotTrace Performance 4.5.1 Hitcount - reprezint de cte ori a fost apelat o metoda ntr-un anumit stack. Daca o metoda apare n stack-uri diferite ea va avea foarte probabil valori diferite. Pe lng modul default cu grupare per thread, sub forma arborescent prezentat mai sus, fiecare profiler mai are i alte moduri de prezentare/grupare al funciilor din rezultate. Flat List Ambele au modul flat list n care funciile nu mai sunt grupate dup vreun criteriu (cum ar fi per thread), ci sunt listate i sortate dup un anumit crtiteriu (ex. descresctor dup durata, hitcount, nume). n acest mod se pot afla funciile cele mai costisitoare dpdv a duratei i al apelurilor. Dac o anumita metoda este apelat n mai multe stack-uri (thread-uri), n vizualizarea flat list metoda va aprea o singura dat i va avea durata i numarul de apeluri cumulat pentru toate contextele n care este apelat.

2.2 Drill down

Odat identificat o funcie suspect vom dori s spam pna ajungem la cauza principala a duratei acelei metode. n modul arborescent per thread se permite navigarea n jos deschiznd rnd pe rnd funciile apelate. Este o operaie foarte comun ce poate deveni frustrant dac trebuie s mergem din click n click mai ales n situaiile n care stack-ul este foarte adanc. Cei de la ANTS au rezolvat simplu problema oferind o optiune de expandare automat a celei mai costisitoare cale din stack pornind de la funcia selectata. Din pcate, n dotTrace Performance 4.5.1 nu exista o astfel de opiune fiind nevoit s transpiri ceva mai mult pentru a ajunge jos, la baza stack-ului. n ANTS Performance Profiler 6.3 pentru o anumit funcie putem deschide modul grafic de reprezentare arborelui de apeluri avand metoda de pornire ca i rdcina.

Acest mod de vizualizare oferit de profiler-ul de la ANTS este unul care pe langa ca arat foarte bine, este i foarte util n gasirea problemelor de performana. n plus este i foare prietenos dpdv al modului de folosire, expandarea unui nod n funciile apelate din acesta facandu-se cu un singur click. Modul grafic este lansat dintr-una dintre celelalte dou vizualizari (cel grupat per thread respectiv cel de tip lista) prin selectarea unei metode i alegerea reprezentarii de tip call graph din meniul contextual. Pornind de la funcia selectata, arborele de apeluri de metode poate fi expandat atat n jos inspre funciile apelate cat i n sus afisand metodele apelante. O optiune foarte utila va expanda automat n jos arborele celor mai costisitoare funcii apelate permitand analiza celui mai costisitor sub-stack. Exista i n aceasta vizualizare filtrare asupra metodelor cu impact mic dpdv al timpului ocupat, dar este mai permisiv decat n varianta de vizualizare arborescenta

10

no. 1/2012 | www.todaysoftmag.ro

rezultatele de profiling n modul flat list, ANTS Performance Profiler 6.3

rezultatele de profiling n modul flat list, dotTrace Performance 4.5.1

Modul grafic (doar la ANTS)

www.todaysoftmag.ro | no. 1/2012

11

programare

Performana n aplicaiile .NET

per thread. Adic metode care apar n arborele grafic de funcii pot lipsi din varianta per thread. Acest lucru face ca de cele mai multe ori analiza s ajung n acest mod. Un alt aspect foarte important al acestei variante de afisare este faptul c exist optiunea de a exporta graficul n format pdf sau imagine oferind un mod foarte facil de a mprti rezultatele altor persoane. Echivalentul n dotTrace Performance ar deschiderea unei metode ntr-un tab nou, dedicat acesteia. Ambele abordari (si cea de la ANTS i cea de la JetBrains) prezint aceleasi informaii i duc n mod normal la aceleasi rezultate. Varianta de la ANTS face totui arborele de apeluri mai usor de navigat (mai ales n cazul unor ierarhii stufoase) prin optiunile de expandare cale costisitoare i posibilitatea de zoom in/out oferit. Cutarea Cautarea unei metode este o funcie destul de folosita pe parcursul analizei rezultatelor de profiling n special atunci cnd stim exact ce metoda urmarim sau cnd dorim s vedem efectele optimizrilor efectuate asupra anumitor metode. La acest capitol dotTrace sta mai bine oferind un control de search avansat care prezint o lista de sugestii de metode pe

msura ce se tasteaz numele funciei cautate: ANTS a preferat un control simplist, fr sugestii, fr cautare bazat pe namespace. Comparare de rezultate Doar dotTrace Performance 4.5.1 ofer posibilitatea de a compara rezultatele obinute n dou sesiuni de profiling diferite prin funcia de comparare a dou snapshoturi. Este o funcionalitate pe care trebuie s recunosc c am folosit-o foarte rar (o dat sau de dou ori) din cauz c pentru a avea o comparatie relevant i uor de interpretat ar trebui ca cele dou snapshot-uri s fie ct mai apropiate dpdv al succesiunii de apeluri precum i al numrului de apeluri. n conditii optime rezultatul comparatiei poate fi foarte util n a determina efectele unei eventuale optimizari asupra performanei. Posibilitati de adnotare/marcare O alta funcionalitate oferit doar de dotTrace Performance este cea de adnotare/ marcare a metodelor. Utilizatorul poate aduga comentarii pentru anumite metode i poate scoate n eviden< o anumita metoda prin schimbarea formatarii i culorii.
ANTS Performance Profiler 6.3 dotTrace Performance 4.5.1 Da Da Da Da Da* Da Da Nu Da

Doar profiler-ul de la JetBrains ofera o astfel de funcionalitate prin intermediul funciei de Adjust Time din meniul contextual pentru o metod. Ajustarea se poate face reducand durata de la 100% la un procent care reprezint durata estimat a metodei n urma unei eventuale optimizri. Ajustarea se poate aplica doar la stack-ul curent sau la toate stack-urile n care apare metoda respectiv.

3. Afectarea performanei aplicaiei analizate

Afisare rezultate arborescenta per thread Afisare rezultate de tip lista Capabilitati de formatare si adnotare metode Drill down la nivel de metoda Cautare Comparare de rezultate Filtrare metode cu impact neglijabil Posibilitatea exportarii rezultatelor in formate usor de transportat Ajustarea duratei unei metode pentru a simula o optimizare

Da* Da Nu Da* Da Nu Da Da Nu

Ambele profiler-e influeneaz aplicaia pe care o analizeaz n funcie de modul de profiling folosit atat n termeni de performana cat i de memorie. n tabelul din dreapta se gasesc msuratori de performana facute asupra unei aplicaii de test (aplicaia Demo din kitul de dotTrace Performance 4.5.1) Din msuratorile din tabel se pot trage cteva concluzii evidente: - n modul sampling ambele profiler-e influenteaz nesemnificativ aplicaia analizata - n modul tracing (sau la nivel de metoda) rularea cu dotTrace este dureaz ceva mai mult decat cu ANTS. - cu modul de profiling la nivel de metoda lucrurile stau foarte diferit, rularea cu dotTrace fiind de mai bine de 3 ori mai lenta. De notat faptul ca se pot aplica filtre prin care se specifica ce module/clase/funcii sunt incluse sau excluse din analiza la nivel de linie. - urmatoarele dou moduri sunt disponibile doar la dotTrace Performance Profiler i sunt foarte importante atunci cnd se doreste analiza unei anumite operaii. n acest scenariu se poate opta pentru pornirea aplicaiei n profiler fr ns a porni colectarea de date de profiling. Acest lucru face ca aplicaia analizat s se mite mult mai bine (in modul tracing fiind semnificativ mai rapid decat ANTS). Avantajul acestui mod este i mai evident atunci cnd pna s se ajung s se execute operaia dorita au loc niste operaii costisitoare ca timp de procesare (deschiderea unui fiier mare). Influena asupra memoriei folosite de catre procesul analizat este i ea semnifica-

12

no. 1/2012 | www.todaysoftmag.ro

tiva putnd s ajung la pn de 3 ori mai mare decat n varianta fr profiler ataat. Asta inseamn c profiling-ul aplicaiilor mari consumatoare de memorie se poate termina cu excepii de tip Out Of Memory. Amble profilere au influen asupra memoriei apropiata. O alta influen (nedocumentata) pe care profiler-ele o au asupra aplicaiilor analizate este asupra timing-ului threadurilor i anume, pot s scoat la iveala bug-uri de sincronizare de thread-uri (cum ar fi race conditions i dead locks) care pn atunci nu s-au manifestat.

Tipul Operatiei analizate fara profiler atasat: 10s Sampling Nivel de metoda Nivel de linie Nivel de metoda (fara colectare de date) Nivel de linie (fara colectare de date)

ANTS Performance Profiler 6.3 10,1 sec 50 sec 4:20 min N/A N/A

dotTrace Performance 4.5.1 11,7 sec 1:13 min 14:38 min 36 sec 7:08 min

Influena asupra aplicaiei analizate n diferitele moduri de profiling ANTS unde ntreaga sesiune de profiling se salveaz ntr-un singur fisier. Desigur c cele dou pot deveni echivalente n cazul n care avem un singur snapshot mare n cazul dotTrace ce corespunde intregii sesiuni de profiling. De obicei nu este cazul. Abilitatea de atasare la un proces - ANTS Performance Profiler 6.3 ofera optiunea atasarii la un proces ce ruleaz .NET Framework 4.0. dotTrace Performance 4.5.1 nu are din pcate opiuni de ataare. Integrare cu Visual Studio - ambele profilere se integreaz cu Visual Studio permitnd lansarea sesiunii de profiling direct din IDE ces s rezolvai problemele de performan din aplicaiile dumneavoastra. Fiecare are puncte ei forte care nu se gsesc la cealalt i ofer funcionalitatea de baz la nivele egale. n funcie de specificul aplicaiei de analizat va veti putea orienta ctre una sau ctre cealalt. Sfatul meu este s le incercati pe amndou pentru a va face o idee mai buna despre ce ofera fiecare i care vi s-ar potrivi cel mai bine. Puteti descarc versiunile trial pentru cele dou profiler-e de la locaiile de mai jos: dotTrace Performance Profiler 4.5: http:// www.jetbrains.com/profiler/download/index.html ANTS Performance Profiler 6.3: http:// www.red-gate.com/products/dotnet-development/ants-performance-profiler/

4. Complexitatea aplicaiilor analizate

Din experienta cu ambele profiler-e pot spune ca ANTS Performance Profiler 6.3 este mai limitat dect dotTrace Performance 4.5.1 n sensul c la anliza unor aplicaii desktop foarte complexe (din punct de vedere a memoriei consumate i utilizare CPU), interfata utilizator (n special partea de timeline) raspunde din ce n ce mai greu la interaciunea utilizatorului. De asemnea, n cazul aplicaiilor complexe, profiler-ul de la ANTS ajunge cteodat s nu mai afiseze corect controalele din interfaa (afisand un X rou mare). A trebuit s recurg la dotTrace pentru a face profiling pe o astfel de aplicaie.

5. Alte Criterii

6. Concluzie

Profiling I/O i SQL - doar la ANTS Performance Profiler 6.3. Funcionalitatea este oferita doar pentru sisteme de operare mai noi decat Windows XP i doar n varianta Professional Portabilitatea rezultatelor i analiza ulterioara - ANTS ofer posibilitatea de a exporta un set intreg de rezultate de profiling n formatele html i xml. Se poate de asemenea exporta reprezentarea grafic a arborelui unei metode - dac se dorete transportarea rezultatelor n formatul binar pentru a putea fi deschise pe alte masini, probabil c acesta va fi mai usor pentru rezultatele obtinute cu dotTrace deoarece fiecare snapshot se salveaz n fisier separat spre deosebire de

ANTS Performance Profiler 6.3 - 17 puncte dotTrace Performance 4.5 - 16 puncte Ambele profiler-e v vor ajuta cu suc-

ANTS Performance Profiler 6.3 Profiling I/O si SQL Portabilitatea rezultatelor si analiza ulterioara Export html/xml al intregului rezultat Abilitatea de atasare la un proces Integrare cu Visual Studio Pret Da Da Da Da Da 595 EUR

dotTrace Performance 4.5.1 Nu Da* Nu Nu Da* 569 EUR

www.todaysoftmag.ro | no. 1/2012

13

programare

Problema efectelor secundare


Cunoscut i sub acronimul OOP, programarea obiectual a fost introdus n anii 60, cu apariia limbajului Simula67. E paradigma folosit de majoritatea firmelor de software. Limbaje cum ar fi Java, C#, C++, Python, Ruby sunt n topul preferinele iar stilul de lucru orientat pe obiecte este cel mai popular. OOP este o paradigma imperativ adic programul descrie felul n care se modifica starea sistemului pe parcursul rulrii aplicaiei. Sistemul este modelat prin clase de obiecte. Fiecare clasa descrie ce variabile de stare au obiectele de tipul respectiv, ce proprieti au i ce aciuni putem face asupra lor. Prin ncapsulare ascundem detaliile de implementare i astfel utilizatorul clasei este interesat exclusiv de interfaa expus de clasa respectiv. Putem modela astfel toate lucrurile din jurul nostru. Pare o abordare foarte natural, dar totui sunt cteva probleme majore cu aceasta. Problemele pornesc de la faptul c, n afara metodelor constante, funciile membru produc efecte secundare pentru ca ele modifica starea obiectului pe care sunt apelate sau strile altor obiecte la care au acces. Majoritatea codului OOP este scris astfel. O funcie ar trebui s returneze o valoare dar uneori aceasta produce efecte secundare care pot fi: modificarea unor structuri de date din afara funciei, interaciune cu sistemul de operare/maina virtual (creare de fiiere, procese sau fire de execuie), alocare sau dealocare de resurse, aruncarea excepiilor etc. O funcie care nu produce efecte secundare i nu e influenat de exterior se numete funcie pur si rezultatul ei depinde exclusiv de parametrii de intrare. n cele ce urmeaz voi discuta despre problemele puse de funciile impure i voi ncerca sa art avantajele construirii aplicatiilor in principal pe funciilor pure.

Ovidiu Deac
este un consultant software independent specializat n metode de dezvoltare agile i limbaje funcionale. n timpul liber practic notul, alpinismul i motocrossul.

Testarea

Variabilele globale mutabile folosite n cod sunt, n general, o sursa de probleme. Indiferent ca ele sunt simple variabile globale sau obiecte singleton, n esen reprezint acelai lucru: date mutabile accesibile din mai multe locuri. Acest cod este foarte greu de testat i de neles pentru ca valoarea unei variabile se poate schimba pe neateptate. Astfel pot aprea nenumrate ci de execuie care nu sunt evidente i pe care pentru a le putea nelege trebuie sa parcurgem cod din afara funciei respective. Mai mult, putem spune c, n general, o funcie care are efecte secundare este greu de testat deoarece comportamentul sistemului depinde de ordinea n care sunt produse efectele secundare deci pentru a testa funcia trebuie sa o testm n toate scenariile posibile n care ar putea fi apelat alturi de celelalte funcii care produc efecte secundare de tipul respectiv. mbuntirea testabilitii sistemului se poate face folosind predominant funcii pure. Acestea sunt de multe ori trivial de testat pentru c nu necesita un set-

14

no. 1/2012 | www.todaysoftmag.ro

up/teardown pentru c nu depind de componente externe. Rezultatul produs depinde exclusiv de parametrii de intrare.

siv faptul c nu trebuie sincronizate firele de executie constituie un avantaj important.

Execuia asincron

Paralelismul

n momentul n care un obiect este accesat concurent din mai multe fire de execuie avem nevoie de un mecanism de sincronizare. Ideal ar fi ca firele de execuie s fie total independente, altfel sincronizarea va face ca sistemul sa nu fie folosit la capacitate maxim. Orice interaciune ntre ele ncetinete sistemul. Alta problema este coerena cache-urilor n cazul n care procesoare diferite mpart date mutabile. Mai mult, dac avem un sistem distribuit problema e i mai dificil deoarece costurile de sincronizare sunt foarte mari. Un alt aspect este dificultatea de a scrie i de a nelege un cod care ruleaz pe mai multe fire de execuie. Bugurile de sincronizare sunt poate cele mai dificile fiind sunt de multe ori surprinztoare i greu de reprodus. Ideal ar fi ca obiectele folosite din mai multe fire de execuie sa fie imutabile iar datele transmise thread-ului prin mesaje asincrone. Astfel programatorul nu se lovete de complexitatea lucrului cu primitivele de sincronizare ci lucreaz la un nivel mai nalt i mai uor de neles. Paternul acesta este cunoscut sub numele de thread pool pattern. Fiecare worker-thread primete un mesaj care descrie jobul pe care l are de fcut, i returneaz un rezultat pe care l pune n alta coada. Este esenial ca thread-ul sa nu modifice date din exterior ci sa produc un rezultat pe care s l pun ntr-o coada de rezultate. Folosind o coada de mesaje standard a limbajului folosit, problemele noastre sunt rezolvate. Putem scrie relativ uor o aplicaie paralel sau una distribuit, datorit n primul rnd faptului ca workerul nostru nu produce efecte secundare. El produce doar un rezultat. S mergem mai departe i s presupunem ca worker-ul respectiv are acces n exterior doar la date imutabile. Asta nseamn ca la pornire i poate face o copie a datelor respective nu va avea nevoie de sincronizare. Referitor la paralelismul ma-

n multe situaii avem nevoie s executm o anumit secven asincron. Apelul asincron va primi pe lng parametrii normali i o funcie care va procesa rezultatele. Acest stil de lucru este destul de dificil n paradigma imperativ. Problema vine de la faptul ca n stilul imperativ e foarte important ordinea n care se execut operaiile. Ordinea este important tocmai din cauza faptului ca funciile cu care se lucreaz au efecte secundare iar ordinea n care sunt produse efectele secundare e important. n lipsa efectelor secundare problema se transforma n a stabili felul n care datele depind unele de altele. Nu ne intereseaz ct dureaz calculul i nici ordinea n care se fac calculele respective atta timp ct rezultatele sunt disponibile cnd e nevoie de ele. Astfel n cazul unui apel asincron obinem un rezultat de tip promisiune (future) care va fi folosit probabil pentru calculul unui alt future etc.

Dac ncrcarea modulului produce efecte secundare aceasta optimizare poate fi dificil sau chiar imposibil de fcut. n concluzie pentru a face un anumit calcul lazy n fazele trzii ale scrierii aplicaiei, mai exact n faza de optimizare, este esenial ca acesta sa nu produc efecte secundare deci calculul respectiv s fie fcut de o funcie pur. Memoizarea O alta optimizare frecvent ntlnit este memoizarea. Aceasta se aplic n cazuri n care o anumit funcie e apelat de multe ori cu aceeai parametrii. Memoizarea se face prin stocarea rezultatelor calculate i la apelul urmtor fcut cu aceeai parametrii n loc s refacem calculul returnm rezultatul calculat anterior. Aceasta optimizare poate fi convenabil n situaiile n care apelurile se fac repetat cu un anumit set de parametrii iar cutarea rezultatului ntre rezultatele calculate anterior este considerabil mai rapid dect calculul respectiv. Dac funcia care face calculul cu pricina are efecte secundare memoizarea nu se poate face. n schimb n cazul unei funcii pure aceasta este aproape trivial.

Optimizarea

Teoria spune ca optimizarea ar trebui fcut dup ce funcionalitatea dorit e implementat dar unele optimizri sunt foarte dificil de fcut dac codul scris se bazeaz pe efecte secundare. n urma msurtorilor tragem concluzia c se justific sa apelm o funcie f n paralel. Dac implementarea funcia f este pur schimbarea din execuie secvenial n execuie paralel este mult mai simple comparativ cu situatia cand f produce efecte secundare. De asemenea, funciile pure ne dau posibilitatea de schimba relativ uor anumite calcule din sincron n asincron faze trzii ale dezvoltrii aplicaiei. Pe lng paralelizare i execuie asincron putem face uor i alte optimizri cum ar fi execuie lazy sau memoizare. Execuia lazy n unele situaii dorim s nu executm un anumit calcul dect dac este ntr-adevr nevoie de acesta, de exemplu ncrcarea unui modul s fie facut doar la nevoie (adic evaluare lazy).

Concluzie

Problema programrii orientate obiect vine de la filozofia ei c obiectele i modifica starea n timp. Aplicaiile sunt construite n mare parte pe funcii care produc efecte secundare, ntregul concept de efect secundar fiind tratat superficial n OOP i n programarea imperativ n general. Dac s-ar da atenie mai mare efectelor secundare produse de funcii codul rezultat ar fi mai simplu, mai robust, mai uor de paralelizat i de optimizat. n articolele urmtoare din serie vom discuta despre programarea funcional care difer de programarea imperativ tocmai prin felul n care abordeaz problema efectelor secundare.

www.todaysoftmag.ro | no. 1/2012

15

programare

The Good, the Bad and the Ugly


Aceast serie de articole se vrea o comparaie ntre diverse limbaje de programare. n fiecare numr al revistei voi incerca s acopar un spectru ct mai larg i s art mici probleme rezolvate n limbaje diferite. Problemele alese vor fi relativ simple, scopul fiind sa ne concentrm asupra posibilitailor diferitelor limbaje comparndu-le intre ele. Chiar dac sintaxa unui limbaj sau altul v este nefamiliar, ideea este s intelegei modul de abordare al problemei, specific fiecrui limbaj n parte. Astfel le putem pune n balana plusurile i minusurile. n numrul acesta vom rezolva problema folosind Java, Python 3 i Haskell. Alegerea limbajelor a fost facut astfel nct s fie cat mai diferite. Primul dintre ele este Java, un limbaj imperativ orientat-obiect, static typed. Este poate cel mai folosit limbaj n momentul de fa i, fr ndoial, un limbaj de referin. Al doilea limbaj pe care l vom folosi astzi este Python 3, care cu toate c este tot un limbaj imperativ, prin faptul c e dynamic-typed i prin tehnicile de programare funcional pe care ni le pune la dispoziie, combinate cu cele orientate-obiect ne d o perspectiva diferit. Al treilea pe list, fr sa fie cel din urm, este Haskell. Acesta e totul i cu totul diferit de celelalte dou. n primul rnd este un limbaj pur funcional, efectele secundare produse de funcii fiind specificate n tipul acestora. Apoi este un limbaj static-typed dar cu type-inference. Aceasta nseamn ca n majoritatea cazurilor declaraiile de tipuri pot lipsi.

Ovidiu Deac
este un consultant software independent specializat n metode de dezvoltare agile i limbaje funcionale. n timpul liber practic notul, alpinismul i motocrossul.

Problema

S se scrie un interpretor de comenzi minimal care s citeasc de la standard input comenzi i s afieze rezultatul lor. Comenzile acceptate sunt ls i cat ls


cat

listeaz coninutul directorului afieaz un mesaj de eroare dac primete mai mult de un parametru dac nu primete parametrii listeaz directorul curent - dac nu primete nici un parametru afieaz mesaj de eroare - dac primete unul sau mai muli parametrii afieaz coninutul fiierelor primite astfel fiier1:... fiier2:...

Programul se va termina cnd utilizatorul apas Ctrl+C sau cnd va nchide fiierul de intrare (Ctrl+Z pe windows respectiv Ctrl+D pe Linux)

16

no. 1/2012 | www.todaysoftmag.ro

Java

Urmeaz implementarea problemei folosind Java. Codul are cca 3000 de caractere pe 110 linii. A fost rulat pe Ubuntu Linux 11.10, folosind openjdk 1.6.0 cu comanda
$ javac Shell.java && java Shell

Fiind un limbaj foarte cunoscut, comentariile referitoare la sintax nu cred ca sunt necesare. Urmeaz codul sursa din care lipsete doar seciunea import.

public class Shell { public static void main(final String[] args) { try { final BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s; System.out.print(>); while ((s = in.readLine()) != null && s.length() != 0) { try { final String output = execute(s); System.out.println(output); } catch(Exception ex) { System.out.println(ex.getMessage()); } System.out.print(>); } System.out.println(); } catch (IOException ex) { System.err.println(ex); }

private static Map<String, Command> CMD_MAP; static { final Map<String, Command> tmpMap = new HashMap<String, Command>(); tmpMap.put(ls, new Ls()); tmpMap.put(cat, new Cat()); CMD_MAP = Collections.unmodifiableMap(tmpMap); } private static String execute(final String cmd) { final String[] splitCmd = cmd.split( ); final String cmdName = splitCmd[0]; if (!CMD_MAP.containsKey(cmdName) ) { throw new RuntimeException(Bad command: + cmdName); } else { final Command commandObject = CMD_MAP.get(cmdName); final String[] params = Arrays.copyOfRange(splitCmd, 1, splitCmd.length); return commandObject.execute(params); } }

Clasa urmtoare este necesar deoarece biblioteca standard nu are o funcie care s fac join la o lista de String. Funcii similare exist n biblioteci third-party dar m-am limitat doar la biblioteca standard.

www.todaysoftmag.ro | no. 1/2012

17

programare

The Good, the Bad and the Ugly

class Util { public static String join(final Object[] items, final String sep) { final StringBuilder sb = new StringBuilder(); int index = 0; for (final Object item: items) { sb.append(item.toString()); if (++index < items.length) { sb.append(\n); } } return sb.toString(); } }

Mai jos urmeaz interfaa Command i implementarea ei pentru ls respectiv cat.


interface Command { public String execute(String[] params); } class Ls implements Command { @Override public String execute(final String[] params) { if (params.length > 1) { throw new RuntimeException(Too many parameters); } else if (params.length == 0) { return executeImpl(.); } else { return executeImpl(params[0]); } } private String executeImpl(String dir) { final String[] files = new File(dir).list(); return Util.join(files, \n); }

class Cat implements Command { @Override public String execute(final String[] params) { final List<String> list = new LinkedList<String>(); if (params.length == 0) { throw new RuntimeException(No files to cat.); } for (final String file: params) { list.add(catOneFile(file)); } } return Util.join(list.toArray(), \n);

private String catOneFile(final String file) { try { final String contents = new Scanner( new File(file) ).useDelimiter(\\Z).next(); return file + :\n + contents; } catch (Exception ex) { return Could not open file + file + ; } }

18

no. 1/2012 | www.todaysoftmag.ro

Implementarea n Python a fost rulat cu CPython 3.2.2 i are cca 1250 de caractere pe 65 de linii. Am ales versiunea 3 a limbajului doar pentru a promova ultima versiune. Codul este n mare parte compatibil cu versiunea 2.7, singura diferen important fiind felul n care se face citirea din stdin n bucla for line n stdin. Urmeaz codul cu comentarii n zonele n care am considerat ca sunt expresii sintactice mai puin clare. n primul rnd, pentru c e un script executabil fiierul incepe cu #! ca orice script linux executabil. Astfel scriptul l putem rula din linie de comand n felul urmtor:
$ ./shell.py

Python 3

Funcia ls primete *args ceea ce nseamn c variabila args este un tuplu i va conine un numr variabil de elemente, care vor fi parametrii cu care a fost apelata funcia.
def ls(*args): from os import listdir if not args: return ls(.) elif len(args) > 1: raise Exception(Too many parameters) else: dir_content = listdir(args[0]) return \n.join(dir_content)

Funcia join a clasei string, care e apelat mai sus, unete o list de stringuri folosind un separator dat. Exemplu: ,.join([a, b, c]) va returna a,b,c
def cat(*path_list): if not path_list: raise Exception(No files to cat.) def cat_one_file(path): try: with open(path) as f: content = f.read() return %s:\n%s % (path, content) except: return Could not open file %s % path contents = [cat_one_file(path) for path in path_list] return \n.join(contents) CMD_MAP = {ls: ls, cat: cat}

...iar interpretorul de comenzi va tii c la rularea scriputul trebuie s foloseasc python3 instalat pe maina respectiva.
#!/usr/bin/env python3

PROMPT = > Mai jos e funcia main care itereaz peste liniile din stdin. Observai c funcia prompt este inner n cadrul main, deoarece este singurul loc n care e folosit. Pentru a evita coliziunile de nume, e bine s limitm scopul funciilor.
def main(): from sys import stdout,stdin def prompt(): print (PROMPT, end=) stdout.flush() print(Ctrl+C to exit) prompt() for cmd in stdin: try: print(execute(cmd)) except Exception as ex: print(ex) prompt() print()

Mai sus CMD_MAP este un dicionar n care cu cheia ls e asociata funcia ls iar cu cheia cat e asociat funcia cat. Se vede c funciile sunt folosite ca i nite variabile normale. n momentul n care sunt apelate se folosete sintaxa nume_functie(param1, param2, param3).
try: main() except KeyboardInterrupt: print() exit(1)

Mai jos funcia split_cmd returneaz un tuplu cu dou valori care sunt despachetate de ctre apelator. n continuare se face o cutare n dicionarul CMD_MAP dup numele comenzii. Dac acesta e gsit n CMD_MAP se obine funcia care e apelat cu parametrii comenzii i se returneaz valoarea rezultat.
def execute(cmd): def split_cmd(): cmd_parts = cmd.split() return cmd_parts[0], cmd_parts[1:] command_name, params = split_cmd() if command_name in CMD_MAP: command_function = CMD_MAP[command_name] return command_function (*params) else: raise Exception(Bad command: %s % command_name)

Codul de mai sus face apelul la funcia main i trateaz Ctrl+C i returneaz codul 1 dac s-a ieit cu Ctrl+C. Faptul c l-am pus n afara funciei main e doar o chestie de preferine. Eu prefer s lucrez aa pentru c funcia exit nchide programul imediat i prefer s limitez folosirea lui exit n afara funciei main

Haskell

Codul Haskell a fost scris folosind Glasgow Haskell Compilator GHC 7.0.3 pe Ubuntu Linux. Acesta se poate instala foarte uor folosind comanda ...iar ca editor am folosit Geany care se instaleaz
$sudo apt-get install geany $sudo apt-get install haskell-platform

www.todaysoftmag.ro | no. 1/2012

19

programare

The Good, the Bad and the Ugly

Codul Haskell rezultat conine cca 1200 caractere mprite pe 45 linii de cod. n continuare urmeaz codul, pe care l voi explica unde voi considera c e nevoie. Pentru a genera un executabil compilatorul are nevoie de un modul Main care s conin o funcie main:
module Main where import import import import System.IO Data.List Data.String.Utils System.Directory

valoare pentru ca run are tipul IO (). n schimb tim c are un efect de tip IO. Deci semntura funciei process este process :: String -> IO (). n cod, pentru ca nu am considerat c e nevoie de semnatur pentru a nelege funcia am ales s nu o declar i s las compilatorul s fac inferena de tipuri.
process = run.words.strip

Aceasta e funcia main, care are implicit tipul IO () adica nu returneaz nimic ci doar produce efecte secundare de tip IO. Dup cum se vede funcia este o niruire de aciuni, separate prin unul dintre operatorii >> sau >>=. Diferena intre cei doi operatori este c >>= ia rezultatul aciunii anterioare i l paseaz aciunii urmtoare ca i parametru de intrare, n stil pipeline. Deci mai jos spunem c funcia main se obine prin compunerea funciilor urmtoare, putStrLn, prompt, getLines, mapM_, putStrLn. Avnd n vedere c acestea sunt actiuni, deci produc efecte secundare, operatorii >> respectiv >>= le compun astfel nct s in seama de ordinea de execuie. O funcie interesant care apare n main este funcia getLines. Ea nu primete zero parametrii i returneaz o list de linii citite de la tastatur. E foarte important faptul ca, c majoritatea funciilor din haskell, sunt funcii lazy. Aceasta nseamn c nu ateapt s citeasca toate liniile din stdin ci fiecare linie citita e dat mai departe pentru procesare. Ar mai fi de comentat asupra funciei mapM_. Aceasta este o funcie din familia map i primete doi parametrii: o aciune i o list de obiecte. Aciunea este executat pentru fiecare element din list. Primul parametru al funciei mapM este funcia process iar al doilea este list de linii returnat de getLines.
main = putStrLn Ctrl+C to exit >> prompt >> getLines >>= mapM_ process >> putStrLn

Funcia getLines se compune oarecum asemntor cu funcia main. Diferena este c de data aceasta avem funcia lines, care e o funcie pur, pe care o apelm peste rezultatul unei aciuni, funcia getLines. Funcia getContents, fiind o funcie cu efecte de tip IO se execut n monada IO. Rezultatul ei nu poate fi pasat funciei lines pentru c aceasta este n afara monadei IO, fiind o funcie pura. Pentru a putea face apelul compunem funcia lines cu funcia return, obtinnd astfel o funcie n monada IO care poate primi rezultatul funciei getContents.
getLines = getContents >>= (return.lines) prompt = putStr > >> hFlush stdout

Dup cum se vede pentru funcia run am considerat c semnatura ei ar face codul mai uor lizibil aa c funcia e insoit de declaraia de tip.
run :: [String] -> IO () run cmd = execute cmd >>= putStrLn >> prompt

Funcia joinLines, dup cum se vede primete un parametru de tip list de String i returneaz un string. Totui n declaraia functiei nu apare nici un parametru. Motivul este faptul c funcia join primete doi parametrii. Primul dintre ei este separatorul i al doilea este lista de iruri care sunt alturate. Daca join este apelat partial cu un singur parametru obinem o funcie care ateapt al doilea parametru i apoi face apelul efectiv la join.
joinLines :: [String] -> String joinLines = join \n

Mai jos e definita funcia execute printr-o serie de ecuaii care acoper diverse condiii de apelare a funciei. Sintaxa aceasta se poate folosi ca alternativ la instructiunea if. Aadar, dac parametrul apelat se potrivete cu unul dintre cele 3 pattern-uri se va executa ecuaia corespunztoare. Dup cum se vede, avem 3 cazuri: n care primul element din lista este ls, situaia n care primul element este cat i restul.
execute execute execute execute :: [String] -> IO String (ls:params) = ls params (cat:params) = cat params _other = return Bad command

Mai jos e declarat funcia process ca fiind o compunere de funcii. Sintaxa run.word.strip, exact ca i compunerea din matematic, nseamn c funcia strip se apeleaz cu un parametru de intrare , funcia words se apeleaz cu rezultatul returnat de strip iar apoi funcia run se apeleaz cu rezultatul returnat de words. Funcia process nu are nici un tip declarat, dar fiind o functie compus tipul se poate deduce uor. Primete la intrare aceiai parametrii ca funcia strip i returneaz ce returneaz funcia run. n concluzie process primete un string i nu returneaz nici o

Funcia ls se definete la fel ca execuie, cu mai multe ecuaiile. Cazul n care e apelat cu o lista goal, cazul n care e apelat cu o lista cu un singur element i cazul n care e apelat cu mai mult de un element. Pentru c ecuaiile sunt ncercate n ordine ecuaia a treia este executat doar cnd celelalte doua nu s-au potrivit.

20

no. 1/2012 | www.todaysoftmag.ro

Ar mai fi de notat funcia catch care primeste doi parametrii: o functie de executat i un handler de excepii. Ea executa funcia i n caz ca s-a aruncat o eroare de tip IOError execut handlerul. n cazul nostru handlerul este o funcie anonim, numita i funcie lambda. Sintaxa pentru definirea funciilor lambda este \ param1, param2, ...,paramN -> cod. Deoarece nu ne intereseaz ce excepie s-a prins parametrul de intrare este _
ls :: [String] -> IO String ls [] = ls [.] ls [dir] = catch (getDirectoryContents dir >>= return.joinLines.sort) (\_ -> return $ Could not read ++ dir ++ .) ls (dir:extraParams) = return Too many parameters.

n funcia cat, fiind mai complex avem nevoie sa definim nite funcii locale sau funcii inner. Acestea sunt definite n clauza where. Blocul where este delimitat tot prin indentare. Dup cum se vede i funciile inner pot avea la rndul lor blocuri where. Funciile inner au acces la toate numele definite n namespace-ul funciei printe. Astfel funcia formatOutput are acces la parametrul path al funciei printe catOneFile. De asemenea ar putea avea acces i la parametrul files al funciei bunic cat la nevoie.
cat :: [String] -> IO String cat [] = return No files to cat. cat files = mapM catOneFile files >>= return.joinLines where catOneFile :: String -> IO String catOneFile path = catch (readFile path >>= return.formatOutput) (\_ -> return $ Could not open file ++ path ++ .) where formatOutput content = path ++ :\n ++ content

ncheiere

Atept ca cititorii s trimit prerea lor pe email la ovidiu.deac@todaysoftmag.ro, s comenteze i s voteze pentru fiecare soluie cu unul dintre cele trei tipuri de voturi: good, bad, ugly.

www.todaysoftmag.ro | no. 1/2012

21

interviu

Interviu echipa romneasc finalist Microsoft Imagine Cup


Rubrica Interviu din primul numr al revistei ne-a dat ocazia s ntlnim i s cunoatem mai bine o echip de tineri studeni clujeni, campioni naionali i finaliti internaionali n competiia Microsoft Imagine Cup. Numele echipei este Simplex, membrii ei sunt Alina Clin, Andrei Cantea, Andrei Dasclu, Cosmin Mihaiu i mentorul acestora Lect. Dr. Dan Suciu. Pe parcursul a dou ntlniri, am discutat ce nseamn aceast competiie, cum au ajuns s participe, ce au realizat i cine i-a susinut, au mprtit momente memorabile, ntlniri impresionante, modul n care au crescut personal i profesional. Mai mult, am avut ocazia s vedem o demonstraie a proiectului lor i s le descoperim latura de dezvoltatori i antreprenori, aflai la nceput de drum, hotri s concretizeze iniiativa lor ntr-un produs real pe pia. Acest articol i propune s prezinte succint competiia i experiena Imagine Cup, urmnd s insistm mai mult pe detalii despre proiect, planurile de viitor i evoluia ctre mediul de business. Dac dorii s aflai mai multe, v invitm s ii urmrii mai pe larg ntr-un interviu video la adresa: www.todaysoftmag.ro Imagine Cup este cea mai mare competiie internaional pentru studeni, organizat de ctre Microsoft i are scopul declarat: Imagine a world where technology helps solve the toughest problems (eng. Imagineaz-i o lume n care tehnologia ajut la rezolvarea celor mai grele probleme). Aflat la a noua ediie, impresioneaz prin dimensiune: 358.000 de studeni participani din 183 de ri/ regiuni, dintre care peste 400 de finaliti din 70 de ri. Romnia este o prezent de tradiie, iar anul acesta a ocupat locul cinci n lume, ca i numr, cu peste 800 de participani, mprii pe seciuni: 120 participani (IT Challenge); 3 echipe (Digital Media); 4 echipe (Embedded Development); 3 echipe (Windows Phone 7); 3 echipe (Game Design). Nu doar numrul, ci i performanele de anii trecui: Software Design - echipa Sytech - aur n 2009; IT Challenge - Cosmin Ilie: bronz n 2007, argint n 2008 i aur n 2009 - Valy Greavu - argint n 2006; Embedded Development - Echipa Aether - argint n 2007, au recomandat echipele din ara noastr pentru ediia 2011, iar acestea au confirmat cu bronz echipa Endeavour_Design (Emmbedded Development), aur echipa M.N.A (Digital Media) i un loc n primele 6 finaliste din runda final a seciunii principale a competiiei, Software Design, pentru echipa Simplex. Prezena i performanele constante se datoreaz excelentei promovri fcut de Microsoft la nivel naional prin programul academic, susinerii din interiorul universitilor prin implicarea mentorilor i n primul rnd nivelului, ridicat calitativ, impus de echipele participante. Dup cum declarau i membrii echipei Simplex: chiar a fost bine organizat concursul local [..] i multe echipe erau ncurajate s participe (Andrei Cantea), faza naional a impus un standard destul de

Marius Mornea
Fost senior software developer in cadrul Nokia, n prezent fondatorul platformei Mintaka Research

22

no. 1/2012 | www.todaysoftmag.ro

ridicat (Andrei Dasclu), echipa de pe locul doi a fost poate mai bun dect alte echipe de la mondiale (Andrei Cantea), iar feedback-ul constant din partea juriului i mentorului, care prin sfaturile sale i-a ajutat s nu lum chiar toate deciziile greite (Cosmin Mihaiu), construiesc o atmosfer ce ncurajeaz performana i calitatea, ingrediente ce vor asigura cu siguran succese viitoare. Sunt succese ce merit tot efortul depus, ne asigur membrii echipei Simplex, care ne povestesc entuziasmai cteva din momentele memorabile ale experienei. Pornind de la aterizarea la New York i cazarea la hotelul Mariot din Times Square (toate aspectele logistice fiind asigurate de ctre Microsoft), pan la ntlnirea cu Steve Balmer (CEO Microsoft), cruia cei patru au avut norocul s ii fac o demonstraie personal a proiectului, interaciunea cu alte nume mari din industrie (Jonathan Perera, fost GM Microsoft, actualmente VP Adobe), cina i drumul cu limuzina n compania altor doi VP Microsoft, dar i recompense materiale (cte un Windows Phone 7 i o licen BizSpark menit s susin startup-urile cu toate produsele Microsoft necesare), premiile de 25000$, 15000$ i 5000$ pentru locurile 1, 2, 3. O experien bogat n triri i amintiri unice, ce i-a ajutat s creasc foarte mult att individual, ct i ca echip. Cu toate acestea, experiena Imagine Cup nu se termin odat cu competiia, din contr pare s fie abia primul pas. S aruncm n continuare o privire mai detaliat asupra aplicaiei i asupra pailor urmtori: Ce este MIRA? Medical Interactive Recovery Assistant (eng. Asistent Medical de Interactiv de Recuperare) cu care vrem s ajutm persoane care sufer de handicap locomotor temporar, persoane care de exemplu au avut un atac cerebral, sau o fractur a minii, a unui membru, s treac prin perioada de recuperare, de redobndire a reflexelor i a micrilor care ntr-o vreme erau foarte simple, mult mai uor i mai interactiv. Pentru asta am folosit un device (eng. dispozitiv) nou, la vremea respectiv, de la Microsoft, i anume Kinect, cu care s l implicm

pe utilizator, practic un pacient, n jocuri simple, dar cu scop de recuperare. Cosmin Mihaiu MIRA de fapt este compus din dou pri, partea destinat doctorului i partea destinat pacienilor care se recupereaz. Doctorul, are urmtoarele beneficii prin aceast aplicaie : managementul pacienilor, managementul programrilor i cea mai important parte sunt statisticile, prin care poate s vad evoluia pacienilor. Cnd vine pacientul s se recupereze, doctorul i pornete o aplicaie i pacientul se joac, dar n acelai timp face exerciii de recuperare. Pacientul poate nici nu observ, dar se stocheaz fiecare micare i asa doctorul poate s vad evoluia. Andrei Dasclu Competiia s-a terminat, dar voi ce planuri de viitor avei cu aplicaia? Alternative ar fi ca i plan de carier: s ncepei pe cont propriu (s facei o firm), s v angajai la o firm pe plan local, s mergei undeva afar, cu Imagine Cup pe CV ai putea face i asta.. cam ce alegei voi s facei? La finala mondial s-a ridicat ntrebarea asta, [..] ce facem? Era ndrumtorul nostru, domnul Dan Suciu cu noi, mai erau i alte persoane, i am ajuns la un moment dat s avem discuia c: acuma ne putem angaja, s stm doi ani ntr-o companie, vedem cam cum stau lucrurile, i dup aia dac nu ne convine ne rentlnim, ne facem un business, noi pe cont propriu.. sau a doua variant, s ncepem s facem un startup, s ne dezvoltm produsul, s l lansm pe pia, s vedem ce se ntmpl. Majoritatea persoanelor au zis c <<suntei la vrsta la care v putei permite s facei asta, adic acuma ii vremea s riscai, c nu avei nimic de pierdut>> Cosmin Mihaiu Am zis c ncercm, s vedem ce iese. Acum muncim ca s ajungem pan la prima versiune, s intrm n faza de testare clinic, s vedem ce impact are aplicaia asupra pacienilor, s vedem dac ntradevr din statistici reiese o evoluie n recuperarea lor i dac ne iese continum, dac nu urmm un alt drum. [..] Bineneles suntem motivai i acuma, mai ales c de vreo dou sptmni am i testat aplicaia pentru vreo

dou zile, la un spital din Bucureti, i chiar am fost motivai s vedem multi copii jucndu-se i fiind fericii Andrei Dasclu Pomeneai de teste clinice, voi avei nevoie de o validare din partea medicilor ca s dovedii c merge procesul. Ce feedback avei pan acuma? Feedback pozitiv, [..] toi doctorii sau kinetoterapeuii ne-au dat feedback pozitiv i ne-au spus c suntem pe drumul cel bun. [..] toi au fost plcut surprini i neau dat feedback ce ar avea nevoie, ce s mai facem n plus. Microsoft Romnia nu ne-a uitat dup faza naional i ne susine, i prin intermediul lor am ajuns la centrul de recuperare din Bucureti. Avem norocul c i acolo este un doctor, Adrian Oprea, care este foarte entuziasmat de soluia noastr i ne ajut. Vrea s ajungem departe cu ea i cu el tot vorbim i colaborm, iar pentru c avem o persoan care ne ajut nu vrem s trecem la mai multe spitale, pentru c s-ar putea s primim prea mult feedback i s nu facem nimic. Cosmin Mihaiu Si s nu uitm c spitalul chiar a primit din partea Microsoft Romnia un laptop i un Kinect, i am instalat programul nostru, pe dispozitivul respectiv, urmnd ca ei s nceap recuperarea. Andrei Dasclu n ideea n care tiu c ali ctigtori au avut ocazia s prezinte: preedintelui, parlamentului european, etc, m ntrebam dac similar ai fost la conferine de pres sau alte asemenea ocazii? Imediat dup ce ne-am ntors de la Imagine Cup am fost contactai de presa din Romnia, am aprut i la ProTV i la TVR, dar la nceputul lui decembrie Microsoft Romnia a organizat o conferin: Competiia n IT, la care au venit i persoane din politic, angajate la guvern, i s-a vorbit foarte mult despre competiia IT n Romnia, iar noi am fost o aplicaie practic, o demonstraie a faptului c nc exist idei software care pleac din Romnia, nu vin din strintate Cosmin Mihaiu.

Pe cnd v-ai planificat s avei un re-

www.todaysoftmag.ro | no. 1/2012

23

programare

Interviu echipa romneasc finalist Microsoft Imagine Cup

lease (eng. lansare pe pia)? Cnd simim c am ajuns la un produs care poate fi ntradevr pus n spitale pentru recuperare [..] noi susinem c n toamn s putem intra pe pia. Cosmin Mihaiu Sun bine i experiena, sun bine i dezvoltarea ulterioar, se pare c v-ai gsit o preocupare pentru urmtorii ani, cel puin [..] avei sfaturi pentru studenii care vin din urm, ctre urmtoarele generaii? Merit! Da! Definitiv! Noi anul trecut pe vremea asta tiam c vrem s participm, nu neaprat s ajungem s avem un produs n care s credem 100% c va ajuta o mulime de oameni, ci vroiam s ajungem la New York. Cosmin Mihaiu S avem ceva n istoria noastr de studeni, s nu cread c am trecut prin facultate i nu am fcut nimic. Am zis c ncercm. Andrei Dasclu Exact! i n timp ce dezvoli aplicaia, i cu Caregamer a fost asa, i cu MIRA a fost aa, n timp ce o dezvoli s ajungi s crezi n ea.. s crezi c aplicaia ta poate avea un impact.[..] Dup aia scopul s-a schimbat i s ajungem s ne punem produsul pe pia. Cosmin Mihaiu i n afar de faptul c merit, putem s ii ajutm cu ceva sfaturi, care abiliti le-ai dezvoltat ntre timp sau le-ai folosit cel mai mult n competiie? n competiia Imagine Cup ei pot s nvee ce nseamn echipa, ce nseamn competiia, ce nseamn prezentarea, pot s descopere fel de fel de medii de dezvoltare pe care pot s le foloseasc n viitor, n carier, i de asemenea prin toat competiia nvei s crezi n ideile tale i te motiveaz ca s i le pui n practic. Andrei Dasclu Imagine Cup prin definiie e un concurs care ii dezvolt toate abilitile, lucrul n echip, trebuie s tii s faci o prezentare, trebuie s tii cum s lucrezi, s ii organizezi timpul, pentru c cu siguran cel mai mare inamic al concursului e timpul. Niciodat nu reueti s dezvoli aplicaia aa cum vrei i s ii ajung i timpul, i atunci trebuie s ncepi s ii gestionezi prioritile astfel nct s te ncadrezi n timpul necesar pentru fiecare deadline. [..] Ajungi efectiv s te gndeti i din punct de vedere business, pentru c la urma urmei tu trebuie s

ii prezini ideea n faa unor persoane care tiu ce nseamn business, att din punct de vedere IT, ct i din punct de vedere al unui startup. Deci pe toate planurile ajungi s lucrezi. Cosmin Mihaiu Care ar fi cele mai importante trei lucruri la care trebuie s fie ateni sau s i le pregteasc cel mai bine? Locul trei pun timpul, trebuie gestionat cumva s ii impui toate lucrurile i s treci prin toate la timpul lor. Trebuie s cread n soluie, dac unul din membrii nu crede n soluie, atunci toat echipa poate s cad, pentru c toi trebuie s lucreze ca o echipa. E ca la o main cu patru roi, dac o roata nu exist.. degeaba. Cosmin Mihaiu Prezentarea are cea mai mare influen asupra juriului, 80% din not este prezentarea. Andrei Dasclu Ii ciudat pentru c ii tehnic produsul, ntr-un fel poate ii nedrept, dar juriul nu ii tot timpul tehnic i dac vii cu detalii despre algoritmi nu prea ii surprinzi bine, trebuie s vi cu prezentarea fcut bine. Andrei Cantea Ce v-a unit ca o echip? Faptul c suntem toi diveri. Fiecare are ceva din domeniul lui la care ii bun i cred c, de fapt nu cred.. tiu c nici una din deciziile majore ale proiectului nu a fost luat fr s se discute cu ceilali. Am lucrat i vom lucra n continuare ca o echip, pentru c pn acum asta ne-a adus succesul i nu are rost s renunm la ea. Cosmin Mihaiu Pn la urm asta e Imagine Cup, se formeaz echipe care pot s rmn i n viitor s dezvolte i alte aplicaii de succes. Sperm! Andrei Dasclu Credina! Andrei Cantea In concluzie Imagine Cup este ocazia perfect de a face cunotin cu lumea de business, de a construi o echip i de a nva cum s duci la capt un proiect n care crezi i pe care ai ocazia s l prezini n faa unor nume mari din industrie. Mai mult, ulterior interviului, am aflat de pe blogul competiiei, c Microsoft lanseaz programul Imagine Cup Grants, care cu un buget de 3 milioane de dolari, pe urmtorii 3 ani de zile, i propune s susin finan-

ciar startup-uri din rndul proiectelor finaliste. Patru echipe au primit deja finanare i au avut ocazia s i prezinte proiectele ntr-o ntlnire cu Bill Gates i Brad Smith. De aceea recomandm tuturor studenilor s profite de aceast ocazie, Imagine Cup dovedindu-se n egal msur o experien minunat, dar i o ramp de lansare n carier i mediul de afaceri.

24

no. 1/2012 | www.todaysoftmag.ro

www.todaysoftmag.ro | no. 1/2012

25

startups

StartUps Mintaka Research


Mintaka Research este, pe scurt, o platform colaborativ online de cercetare i dezvoltare interdisciplinar, avnd scopul declarat de a reuni cercetarea, mediul de afaceri i educaia ntr-un efort comun i de a oferii servicii menite sa faciliteze cooperarea, construirea de relaii i comunicarea ntre competene din medii i domenii diferite. Scopul principal este de a construi o comunitate de cercetare i un set de unelte care permit inovarea n diferite domenii, dar i posibilitatea de a mprti cunotinele acumulate cu mediul academic i cel de afaceri, asigurnd n acest fel att continuitate, ct i noi oportuniti de a introduce inovaiile din cercetare n viata de zi cu zi. Filozofia centrala este promovarea efortului colaborativ, n locul celui individual, ajutat de un set de unelte i servicii care permit abordarea unor proiecte tot mai grele i crearea de plus valoare. Pentru a nelege mai bine conceptul ncepem cu ideile de la care a pornit totul i contextul n care au luat natere acestea. Prima idee a plecat de la o nevoie deseori ntlnit n mediul de afaceri IT: nevoia de specialiti. Acetia sunt o resurs care ridic o serie de dificulti manageriale: n primul rnd costul financiar ridicat i durata extinsa necesar recrutrii sau pregtirii lor (n cazul n care piaa muncii nu ofer resurse n domeniul de interes); n al doilea rnd nivelul de utilizare fluctuant (n general specialitii sunt necesari n faza de concepie i arhitectur, precum i n soluii de optimizare i performant), perioadele de angajament maxim alternnd cu perioade lipsite de activitate. Ca urmare a acestor dificulti predomin dou abordri: angajarea/pregtirea unui specialist i folosirea lui pe durate scurte la capacitate maxim, n rest fiind alocat pe activiti de rutin; sau asumarea rolului de specialist de ctre un membru al echipei, ceea ce duce de cele mai multe ori la creterea duratei necesare i o scdere a nivelului calitativ. O a treia soluie, mai puin prezent pe piaa local, este antrenarea specialitilor n servicii de consultant, lucru ce duce la soluionarea dificultilor de mai sus att din perspectiva angajatorului ct i al specialistului. Fr a intra ntr-o dezbatere, presupunem c lipsa serviciilor de consultant se datoreaz att nivelului de maturitate relativ sczut al pieei, ct i caracterului predominat executoriu al unui mediu IT dominat de outsourcing. Rezultatul este o lips de specialiti pe piaa muncii, fie datorit blocrii lor n poziii fixe, lipsite de vizibilitate, fie exodului acestora ca urmare a cererii locale fluctuante comparativ cu alte piee. n acest context a luat natere prima idee i anume crearea unei structuri care s permit att localizarea ct i mobilitatea specialitilor pe piaa local. Evoluia ideii spre soluii practice de atingere a celor dou obiective ne-a condus la: crearea unei comuniti de specialiti, pentru a reui localizarea acestora i la crearea unui cadru ce sa permit mobilitatea i stabilizarea la un nivel constant al angajamentului.

Marius Mornea
Fost senior software developer in cadrul Nokia, n prezent fondatorul platformei Mintaka Research

26

no. 1/2012 | www.todaysoftmag.ro

n cazul primei soluii, exist semne pozitive n mediul local prin existena i apariia de noi iniiative similare cum ar fi: TJUG (Transylvania Java User Group), GTUG Cluj-Napoca (Google Technologies User Group), RTC (Romanian Testing Community), AgileWorks Romania, Semantic Web meetup group, Today Software Magazine etc. Merit menionate i iniiative exterioare mediului ITC, cum ar fi cele dou organizaii TEDx nfiinate pe plan local. Toate aceste organizaii confirm nevoia i deschiderea mediului local spre comuniti ce s permit colaborarea i mprtirea cunotinelor de nivel nalt, specializate. A doua soluie se dovedete un pic mai dificil din cauza lipsei unei cereri constante de competente de nivel nalt. Aceste fluctuaii au ca efect att absena unui venit constant ct i dificulti n meninerea nivelului ridicat de pregtire al specialistului. Cu alte cuvinte trebuie gsit o modalitate de ocupare a timpilor mori dintre proiecte. Propunerea noastr este implicarea n cercetare, iar pentru argumentarea ei prezentm mai jos contextul i formularea celei de a doua idei. Cercetarea n ultimul deceniu n Romnia a cunoscut evoluii spectaculoase, de la ncercri de revigorare o dat cu aderarea la strategiile europene de cercetare de la Barcelona 2002, urmate de formalizarea unor abordri unitare la Lisabona 2005, cu efecte pozitive pe plan local n perioada 2007-2008, pn la reduceri drastice n perioada de criz i modificri birocratice ce fac greu accesibile o mare parte din fonduri. Drept urmare a perioadei de aliniere european a luat natere n Romnia o generaie de cercettori cu rezultate reale, nivel ridicat de specializare i contracte internaionale. Cu toate acestea exista o dependent mult prea mare intre cercetare i educaie, implicit intre cercetare i mediul politic. Cercetarea privat este la un nivel sczut, cu cteva excepii producia de IP (Proprietate Intelectuala) fiind redus, statisticile europene artnd o evoluie a investiiilor n cercetare n anul 2008 n funcie de provenien: business 45.4%23.3%, guvern 47.6%70.1%, strine 5.5%4.0%. Rezultatul este blocarea

unei ntregi generaii de specialiti ntr-un mediu care prin natura hibrid, cercetare/ educaie, mpiedic concentrarea asupra cercetrii, de cele mai multe ori calitatea ambelor activiti fiind afectat, dar i printro birocraie excesiv scade mobilitatea specialitilor legndu-i de mediul academic i instituiile statului. Cu toate acestea exist i iniiative private precum: Coneural, RIST (Romanian Institute of Technology), Ad Astra, etc; ce ncearc s ofere o alternativ privat i s creeze un mediu de cercetare lipsit de birocraie, politic i separat de procesul educational, pentru a permite focalizarea exclusiv pe cercetare i atingerea potenialului maxim. n acest context ia natere a doua idee i anume crearea unui centru de cercetare privat care s ofere un mediu propice cercetrii i s se constituie ca o alternativ instituiilor statului, permind n acelai timp att cercettorilor din mediul academic, ct i specialitilor din mediul privat s colaboreze pe diferite proiecte ocupnd timpii mori generai de fluctuaia cererii pe pia. Rolul centrului este atragerea de proiecte i investiii, att din mediul de afaceri, ct i finanare european sau guvernamental, permind colaborarea orientat spre proiect i favoriznd astfel mobilitatea i evitnd blocarea resurselor n poziii fixe. Ultima idee este legat de educaie i rolul ei n asigurarea continuitii. n condiiile n care primele dou concepte se ocup de identificarea i implicarea specialitilor existeni, se pune problema n ce msur competenele existente pe pia acoper cererea, att ca spectru ct i volum. Prin urmare este necesar o implicare activ n procesul de educaie prin mprtirea experientei acumulate i prin eforturi active de a mbogi mediul academic cu activiti extracurriculare sau chiar gsirea unor modaliti de mapare a programei de nvmnt pe nevoile din mediul de afaceri. Aceasta ramur ofer posibilitatea specialitilor de a colabora cu mediul academic pentru a creste nivelul calitativ al materialului didactic i implicit interesul i performanele studenilor. La un nivel mult mai practic iniiative similare exist implementate cu succes, de exemplu institutul Hagenberg din Austria sau compania Neu-

soft, au fcut un pas mai departe nfiinnd instituii de nvmnt superior al cror rol este de a produce specialiti direct mapai pe nevoile de cercetare i business cerute de ctre cele dou organizaii. Cele trei idei de mai sus reunite alctuiesc contextul n care a luat natere, iar dup rafinri succesive, a ajuns n forma actual conceptul de platform colaborativ de cercetare i dezvoltare interdisciplinar. n continuare vom arunca o privire asupra ofertei de servicii, organizarea i rolul lor n cadrul platformei.

Platforma

n practic, pentru a putea susine comunitatea i a rspunde nevoilor unui grup int heterogen, att din punct de vedere al mediului de provenien, ct chiar i geografic, oferim o platform online care va conine un set de unelte i servicii mprite n patru mari categorii: comunitate, canale de comunicare, depozit de cunotine i scientometrie. Coninutul este divizat n dou: accesibil tuturor sau restricionat pe baz de utilizator. n continuare prezentm cele patru mari categorii. Comunitatea Aceast component de business se ocup cu toate serviciile i tipurile de interaciune necesare comunitii. Blocul de baz este colecia de competente: o baz de date n care sunt centralizate toate competentele accesibile prin intermediul platformei. Baza de date se va construi prin agregarea informaiei din profilurile tuturor colaboratorilor, plecnd de la specialiti individuali, pan la echipe sau organizaii. Competentele sunt clasificate pe baza mai multor criterii: cercetare (domeniu, tehnologie, fundamental, aplicat), dezvoltare (domeniu, tehnologie, capacitate), comunicare (canale, audien), business (finane, HR, management), etc. Modelul de business: fiecare utilizator poate accesa colecia de competene i folosind o unealt poate constitui o echip de competene menit s colaboreze pentru ndeplinirea unui obiectiv comun. Dac comunitatea are disponibile resursele pentru a atinge obiectivul, utilizatorul poate finaliza
www.todaysoftmag.ro | no. 1/2012

27

startups

StartUp Mintaka Research

echipa prin definirea detaliat a obiectivului i publicarea acestuia sub forma unui proiect n cadrul comunitii. Toi ceilali utilizatori, care au n profil competentele necesare proiectului, vor fi notificai de ctre sistem, avnd opiunea s i arate interesul. Cnd toate poziiile sunt ocupate, iniiatorul proiectului i colaboratorii nscrii, vor semna un document de colaborare prin care stabilesc termenii i condiiile. Odat finalizat acordul, fiecare membru implicat va putea s vad datele de contact ale celorlali membrii ai echipei i proiectul poate fi demarat. Acest model de colaborare generic, orientat pe competene, permite o mare varietate de interaciuni i maximizarea implicrii tuturor resurselor pentru a atinge toate cile descrise n diagrama Venn. Canalele de comunicare Aceasta component de business este compus dintr-un set de unelte ce faciliteaz comunicarea. Spre deosebire de competentele de comunicare din cadrul comunitii, ce deservesc individual proiecte, setul de instrumente din aceast seciune este disponibil tuturor utilizatorilor, att individual ct i echipelor care colaboreaz pe proiecte, i au ca scop principal creterea vizibilitii, promovarea diferitelor iniiative, rezultate sau realizri i permit comunicarea deschis ntre toi membrii comunitii. Avnd n vedere c aceste servicii sunt oferite de platform, nu de comunitate, ele vor fi disponibile gratis n interiorul comunitii, dar promovarea extern i canalele naionale sau internaionale (guvern, asociaii i organizaii internaionale) vor fi disponibile contra unui pre fix sau doar utilizatorilor cu pachete contra cost. Cele mai importante canale, cu rol strategic, menite sa ofere avantaje competitive sunt: guvernamentale (METCS#, ANCS#, UEFISCDI#), centre internaionale (Hagenberg), asociaii internaionale (ACM, IEEE, RSA).Cele mai importante canale, cu rol strategic, menite s ofere avantaje competitive sunt: guvernamentale (METCS1, ANCS2, UEFISCDI3), centre internaionale (Hagenberg), asociaii internaionale (ACM, IEEE, RSA). Depozitul de cunotine

ndeplinete rolul de stocare i acces la cunotine disponibile att comunitii, ct i clienilor externi. Coninutul poate proveni att din comunitate, ct i acumulat intern de platform, dar n ambele cazuri are ca i trstur comun faptul c se afl n proprietatea intelectual a Mintaka Research, fiind organizat n categoriile: articole, prototipuri, procese, metodologii, patente, pachete de training etc. Accesul va fi mprit pe nivele, plecnd de la coninut liber accesibil, chiar open source, pan la coninut cu acces pltit sau accesibil doar intern. Exemple de coninut pus la dispoziie: un glosar de metodologii de cercetare i o colecie de tehnici i procese de management al tehnologiilor. Acestea se constituie n dou dintre punctele forte, cu rol strategic, n care organizaia i propune sa investeasc. Cu toate c depozitul de cunotine nu este un scop n sine, el fiind rezultatul unui proces cumulativ continuu, o dat ce va depi o mas critic se va declana un alt proces de capitalizare format din dou componente principale: prima cu rol de consultan i transfer de cunotine, iar a doua cu rol de a cauta noi aplicaii i noi posibiliti de dezvoltare i parteneriate n industrie. Cele dou componente se vor uni ntr-un efort comun de a reinvesti cunotinele acumulate napoi n mediul de afaceri. Scientometrie Aceasta component este responsabil cu msurarea i analiza tuturor iniiativelor tiinifice. De la simple operaii de revizuire ale articolelor, pan la msurri i compararea rezultatelor cu standardele din industrie, analiza impactului, metrici i bibliometrie. Serviciile se mpart i n acest caz n funcie de provenien (comunitate, platforma, servicii externe), nivel de prestigiu (intern, universiti locale, evaluare naional sau internaional), rezultnd ntr-o plaj adaptat de preturi. Exista dou abordri principale: n primul rnd o ofert substanial de servicii gratuite, cu rol n promovarea i asigurarea unui nivel nalt de calitate n cadrul comunitii, att individual ct i colectiv; iar n al doilea rnd o oferta de servicii de nivel nalt, ce asigur metrici i evaluri obiective celor mai

exigente proiecte, disponibile contra cost iniiativelor de dimensiuni mari. Pentru implementarea acestor servicii vom cuta parteneriate cu CENAPOSS# i organizaia non-profit Ad Astra, ambele desfurnd eforturi n domeniu.

Echipa de cercetare

n afar de efortul construirii comunitii i al platformei cu oferta de servicii, intenionm s constituim i o echipa de cercetare al crei principal obiect de interes va fi: Autonomic Computing (software autonom). Acest lucru ne va permite s devenim un membru al comunitii, contribuind la creterea, testarea serviciilor i n acelai timp asigurnd o surs de venit necesar susinerii i creterii platformei. Pe lng cercetarea n sine, aceast ramur a organizaiei ader la filozofia general de promovare i stabilire de noi standarde nalte n comunitatea local de cercetare i ndeplinete acest obiectiv prin crearea unui mediu independent de cercetare. Credem c cercetarea ar trebui sa aib ocazia de a se desfura complet independent de instituiile de nvmnt superior, ctignd astfel focus i libertate, scpnd de birocraia excesiv a sistemului de stat. De asemenea creeaz un ecosistem competitiv n care succesul se bazeaz pe calitatea cercetrii i capacitatea de a atrage finanare, eliminnd dependena fat de bugetul, politicile i politica guvernamental. n concluzie dorim s construim o platform ce ofer: - posibilitatea crerii de echipe de competente dintr-o gam variat de discipline, din diferite domenii, - facilitnd accesul la canale de comunicare cu instituii guvernamentale, programe europene i parteneri din mediul de afaceri pentru a accesa finanare, - asigurnd suport continuu pe toat durata de viat a proiectului n oricare din domeniile: Managementul Tehnologiilor, Metodologii de Cercetare, Proprietate Intelectuala; - dar i ajutor practic n: revizuirea i evaluarea rezultatelor, alocarea de resurse din comunitate n caz de urgent, etc;

28

no. 1/2012 | www.todaysoftmag.ro

- n final intermediind contactul cu asociaii internaionale precum: IEEE, ACM, RSA pentru a face vizibile rezultatele i a le mprtii cu restul lumii. n ncheiere am dori s ne deprtm de aspectele practice ale implementrii iniiativei i s prezentm cteva din motivaiile uor filozofice. n primul rnd am dori s schimbm mentalitatea general conform creia cercettorii, sau chiar i specialitii sunt percepui ca i indivizi retrai n laboratoare obscure, manevrnd instrumente i formule complicate. Istoria arat c majoritatea oamenilor de tiin de calibru colaborau, interacionau i dezbteau activ cu cei din jurul lor i erau de cele mai multe ori figuri publice. Pn i Albert Einstein, prezentat de multe ori ca o apariie surprinztoare din anonimat pe scena tiinific, revoluionnd fizica

din senin, a format mpreun cu un grup restrns de prieteni (printre care Maurice Solovine, un tnr student romn i Conrad Habicht, un matematician elveian) Olympia Academy, o adunare informal care se ntlnea regulat i discuta ultimele descoperiri tiinifice, lucrri proprii sau chiar filozofie i literatur. Asta avea loc cu doi ani nainte de anul denumit anul miraculos marcat de publicarea celor mai vestite lucrri ale lui. Cu alte cuvinte inovaia i descoperirile provin n aceeai msur din munc solitar, dar i din colaborarea i schimbul de idei i rezultate. n momentul de fa exist o bre n comunicarea ntre mediul de cercetare, educaie i mediul de afaceri, iar iniiativa noastr i propune s o adreseze prin promovarea efortului colaborativ intre specialitii din diferite domenii i medii, colaborare ce poate aduce cretere individual pentru fiecare parte

implicat, dar i noi tipuri de interaciuni i oportuniti de cretere comun. Vrem s construim o comunitate activ de specialiti i s promovm: parteneriate cu mediul de afaceri local pentru a aplica ultimele tehnologii n efortul de a mbuntii viata de zi cu zi; parteneriate cu sistemul educational pentru a creste calitatea procesului de nvmnt, a mbogii programa i a creste interesul i motivarea studenilor, asigurnd n acest fel continuitatea comunitii; parteneriate intre specialitii din domenii diferite pentru a crea noi oportuniti i plus valoare, prin combinarea i complementarea competentelor. Credem c exist deschiderea i dorina pentru a realiza cele de mai sus i suntem ncreztori c vom gsi parteneri i colaboratori cu care s construim comunitatea i cu care s mprim acelai set de valori.

www.todaysoftmag.ro | no. 1/2012

29

management

De la o idee la un produs
Avem cu toii idei inovative despre cum s facem lumea din jurul nostru mai bun si bineneles cum am putea avea niste beneficii de pe urma lor. Din pcate exista un drum lung de la ideea initiala si pn la lansarea unui produs sau serviciu pe pia. n seria de articole pe care o ncep acum, vom trece peste acest proces i va fi prezentat modul n care putem fi eficieni. Target-ul principal vor fi companiile mici care vor sa lanseze un produs sau chiar persoanele individuale care vor sa porneasc o afacere. Nu vom acoperi toate etapele si aprobarile care au loc intr-o companie multinaional, scopul nostru fiind de a fi simplifica procesul i de a-l adapta nevoilor practice. ncepem seria noastr cu un exemplu luat din actualitate: reelele sociale.

Ideea iniial

Ovidiu Man, PMP


n prezent coordoneaz echipa Gemini Solutions Cluj, a fost timp de 3 ani Product Manager Nokia pentru serviciul de synchronizare al Ovi.com, fondator Today Software Magazine.

Crearea unei reele sociale in care oamenii din vecintatea noastr ii public serviciile, evenimente sau pot s vnd diverse lucruri. In felul acesta, fiecare va putea s i cunoasc mai bine vecinii, sa participe si sa fie informai de evenimentele din cadrul comunitii. De asemenea vor avea o legatur mai bun cu autoritiile locale. Sumar Enumerm mai jos ansamblul de procese ce va fi aplicat, cu comentariul c uneori unele dintre procese se ntreptrund. Viziunea companiei - Viziunea de dezvoltare a companiei, in fucie de aceasta este definit i strategia firmei. Business case - Documentul de justificare a investiiei. Aprobarea acestuia este obligatorie nainte de a trece la paii urmtori. Market requirements (MRD) - Contine elementele de marketing ce vor susine produsul. Va include planul pentru reclame, materiale promoionale si strategia de distribuie a produsului pe diferite canale. Use cases - Definirea modului in care produsul va interaciona cu utilizatorii i a pailor de funcionare Features matrix - Matricea capabilitilor produsului. Este foarte utila pentru compararea acestuia cu diferite alte produse existente si pentru poziionarea sa. Product roadmap - Planul de dezvoltare a produsului pe termen scurt (1 an) si lung (5 ani). In funcie de modificrile pieei, a preferinelor utilizatorilor sau alte constrngeri interne/externe, acesta va suferi modificri pentru a reflecta noua stare a lucrurilor. Servete ca i imagine de ansamblu asupra posibilei evoluii a produsului n intervalul urmtor. Product requirements (PRD) - Bazat pe Marketing Requirements(MRD) i considernd use case-urile definite, seteaz requirements-urile produsului, stabilete

30

no. 1/2012 | www.todaysoftmag.ro

framework-ul n care acesta va funciona, asteptrile in ceea ce provete performana, scalalbilitatea si securitatea acestuia. Reprezint specificaiile pe baza crora echipa de dezvoltare va implementa produsul. Poziionarea produsului - Poziionarea produsului pe pia relativ la oferta existent considernd features matrix. Pricing model - Definirea preului produsului in funcie de poziionarea acestuia Launch plan - Planul de lansare a produsului pe pia Dezvoltarea de noi produse - Modul n care planificm lansarea urmatoarelor produse, benificiind acum de piata produsului deja lansat, de skill-urile i competenele existente.

aceast viziune nseamn ca sunt foarte clari paii ce trebuiesc parcuri pentru a ajunge de la starea actual la cea dorit avnd o foarte bun nelegere a evoluiei tehnologice si a oportunitilor de pe pia 2. Viziunea periferica - Compania este mai mult interesat de trend-urile din jurul ei, de noile oportuniti, mai mult dect alte companii. n anii 1970-1980, Wang Laboratories, produceau calculatoare desktop pentru procesarea testului iar lipsa viziunii periferice i-a adus falimentul in anii 90 din cauza c a ignorat trend-ul PC creat de IBM. 3. Clarviziune - Capabilitatea de a vedea oportuniti viitoare care nu sunt vzute de ctre concurei. Exemplificm prin produsele Apple iPhone/iPod sau viziunea lui Bill Gates de a crea software pentru PC-uri. Pentru crearea unor produse de succes, este necesar ca viziunea companiei s aiba focus, s fie clar, s fie complet i s poate fi implementat. Sunt 3 ntrebri la care trebuie rspuns: 1. Unde vrem sa mergem? 2. Cum vom ajunge acolo? 3. De ce vom avea succes? Revenind la exemplul nostru, definim viziunea astfel: Recunoastem evoluia reelelor sociale iar prin produsele noastre vom crea un ecosistem de comunicare pentru comunitile locale. Vom folosi cunotinele noastre actuale pentru a crea produse accesibile tuturor. Reelele sociale vor avea un nou neles, integrand viaa real n cea virtual.

vnazarea i mentenana produsului. Business case-ul este creat ca urmare a uneia sau mai multe din urmtoarele cerine: - cererea pieei - nevoi organizaionale - cererea unui client - avans tehnologic - cereri legale - impact ecologic - nevoi sociale Business case-ul este revizuit periodic pentru a verifica ca proiectul continu s urmreasc scopul iniial, de asemenea se va urmri faptul ca produsul sau serviciul final este nc necesar. Este greit s spunem c odat terminat, business case-ul este pus pe un raft. Un alt document care poate fi creat nainte de nceperea unui proiect este Statement of Work (SOW), acesta descrie produsele i serviciile ce vor fi livrate. n cazul n care implementarea se va face de ctre o alt companie, documentul servete ca i baz legal pentru serviciile ce vor fi livrate. n practic, contractul i SOW-ul sunt documentele principale, pe baza crora se agreeaz nceperea lucrului la un proiect. Revenind la business case, pentru scrierea acestuia este recomandat folosirea unui template i/sau dac este disponibil, folosirea ca i exemplu al unui business case de la un alt proiect aprobat din cadrul companiei. Un foarte bun exemplu l putei gasi aici http://www.blackblot.com/files/pmtk/ Blackblot_PMTK_Evaluation_40/PMTK/ PMTK_Product_Marketing/Business_Case/ PMTK_Business_Case_40.pdf Simplificnd structura pattern-ului este recomandabil s se pun accept pe urmtoarele aspecte:

Crearea de produse si servicii noi au sens atta timp ct se tie unde se vrea s se ajung. Strategia de dezvoltare a unui produs are sens daca urmarete viziunea companiei iar acest viziune trebuie sa in cont de evoluia tehnologiei i a pieei. Ca s va dau un exemplu, pn la momentul lansrii iPhoneului, Nokia era lider-ul telefoanelor mobile si a smartphone-urilor. Viziunea lor nu includea interactiunea tactila cu ecranul telefonului, aceasta era fcut doar cu ajutorul unui pen. Lansarea iPhone-ului la nceputul lui 2007 si marele su success au schimbat piaa. Problema pentru Nokia a fost viteza de reacie care a durat civa ani, suficient de mult astfel nct sa devin necompetitivi pe piaa de smartphone-uri. Pentru revenirea pe pia sacrificiile fcute au fost uriae i aici m refer la renunarea dezvoltarii sistemului de operare Symbian si trecerea la Windows Mobile. O greeal frecvent este confuzia intre viziune si strategie. Strategia se definete n funcie de viziunea companiei. n continuare vom trece prin principalele strategii de definire a viziunii: 1. Viziunea 20/20- Termenul vine de la testul de msurare a acuitii vizuale (http:// www.allaboutvision.com/eye-test/) bazat pe ablonul creat de doctorul Hermann Snellen n 1860 i reprezint citirea acestuia de la 20 picioare //6 metrii. Pentru o companie IT,

Viziunea

Acest document reprezint baza proiectului nostru, definete noului produs i va fi folosit ca i referin pentru urmatoarele documente. In practic vom avea un document i o prezentare pentru etapa de aprobare a proiectului. Conform PMBOK, business caseul este documentul ce contine informaia necesar pentru a se putea lua o decizie legat de investiia n acest proiect. n mod normal, exist n cadrul su o analiz cost beneficii pentru justificarea proiectul. n final, totul se reduce la analiza potenialului profit, innd cont de riscurile implicate n implementarea,

Business Case

Sumar executiv - va conine data nceperi proiectului, prinicipalii stakeholderi ce vor beneficia de pe urma proiectului, costurile totale i costurile pe termen scurt (6 luni), data de finalizare a proiectului Descrierea proiectului i ncadrarea acestuia n cadrul larg al tehnologiei i a pieei existente Scopul - definirea clar a scopului

www.todaysoftmag.ro | no. 1/2012

31

management

De la o idee la un produs

proiectului prin evidenierea a 3 dintre cele mai importante aspecte Obiectivele pe termen scurt si lung Return of investment (ROI) - beneficiile interne/externe a implementrii proiectului Modul de implementarea proiectului incluznd resursele ce vor fi folosite pentru aceasta Costul implementrii (vezi exemplul) Durata estimat a proiectului Analiza de risc Paii urmtori care vor urma aprobrii proiectului Materialul de backup va conine toate detaliile proiectului care nu au fost prezentate n documentul principal, dar care pot fi referite pentru un nivel mai mare de detalii. Aici pot fi incluse de exemplu, detalii legate de costurile proiectului, pentru a justifica un anu-

mit furnizor de servicii, modul de lucru, detalii referitoare la milestone-urile proiectului, modalitile de comunicare n cadrul proiectului, modul de publicare a status-ului proiectului etc. Multe din punctele de mai sus, pot face subiectul unui nou articol, iar n timp vom ncerca s acoperi subiecte cum ar fi Estimarea corect a duratei unui proiect, analiza riscului, analiza de piea, modaliti de lucru n cadrul proiectului i stabilirea scopului pe termen lung i scurt. n urmtorul numr vom analiza un exemplu de business case pentru cazul nostru. V ncurajez s scriei un business case pentru exemplul nostru iar n articolul urmtor vor fi analizate. Adresa de email pe care le putei trimite este ovidiu.matan@todaysoftmag.ro

32

no. 1/2012 | www.todaysoftmag.ro

HR

Compensarea creativ
Conceptul de baz al managementului compensrii este destul de simplu: angajaii ndeplinesc sarcini pentru angajator, iar companiile pltesc salariile angajailor pentru obiectivele realizate. n consecin, compensarea este un schimb sau o tranzacie, de care ambele pri - angajator i angajat - beneficiaza: ambele pri primesc ceva pentru a oferi ceva. Cu toate acestea, beneficiile, implic mult mai mult dect aceast tranzacie simpl. Din punctul de vedere al angajatorului, compensarea este o problem att de accesibilitate cat si de motivare a angajailor. Efectul perioadei de criz a inceput sa fie simit in anul 2009, cnd majoritatea companiilor de IT au fcut trecerea de la acordarea unui salariu fix mai atractiv, la a-i ndrepta atenia asupra dezvoltrii i crerii unor pachete de compensaii i beneficii ct mai atractive pentru exterior dar i cu menirea de a menine actualii angajai motivai. Aceste pachete - care sunt de multe ori AS - ul din mneca oricarui specialist de resurse umane, trebuie gndite si adaptate pe nevoile personale ale angajatului i apoi implementate, in funcie de bugetul acordat din partea managementului companiei. Pachetul de compensaii si beneficii este acel subiect transparent i cu o mai mare vizibilitate in cadrul ofertei de angajare i asta nu doar datorit nclinaiei spre un beneficiu non - financiar, dar i datorit unei prognoze de stagnare a economiei si implicit a salariilor. Din perspectiva companiilor este mai la indemn i mai ieftin sa ii pstreze angajaii in interiorul companiei i s ncerce sa i adapteze politicile de motivare la nevoile acestora, dect sa angajeze i s instruiasca ali noi angajai. In stabilirea politicilor de beneficii i de motivare a angajailor companiile iau in calcul mai multe repere:

Ioana Fane
HR Specialist Ullink Cluj Napoca

Pachetele de beneficii oferite de companiile similare angajailor lor; Cuantumul valoric al beneficiilor oferite pe pia; Numarul total al angajailor; Ponderea pe nivelurile ierarhice; Facilitile fiscale de care beneficiaz; Media de vrst in cadrul companiei.

Exist mai multe moduri de a msura succesul unui antreprenor: prin numrul de idei noi lansate, veniturile i profiturile obinute, precum i modul n care el sau ea servete o industrie sau o comunitate. Dar poate c cel mai important dintre acestea este impactul pe care antreprenorul este n msur s il exercite asupra vieii angajailor. Dincolo de recompense tangibile, cum ar fi plata i cele intangibile cum ar fi consilierea, un manager poate creiona profund viaa unui angajat, prin

www.todaysoftmag.ro | no. 1/2012

33

HR

Compensarea Creativ

furnizarea unui pachet generos de beneficii. ntr-adevr, muli antreprenori recunosc c efectul pe care l au asupra vieii angajailor este unul dintre aspectele, cele mai pline de satisfacii. De asemenea, are potenialul de ne ine treji noaptea. Asta pentru c, n scopul de a oferi beneficii generoase, trebuie s fie practicat in primul rand o planificare financiar riguroas. Cele mai multe pachete de beneficii nu sunt ieftine i costurile pot crete exponenial atunci cand compania se extinde. n plus, odat ce compania ofera un beneficiu, este ciudat s-l anuleze odata ce economia se afl in scdere. Altfel spus, n cazul n care o companie in IT&C devine cunoscut pentru oferirea de prestaii bune, n general, este mai uor s recruteze angajai talentai i va putea vedea chiar i unele efecte secundare pozitive cu privire la marketing i vanzari. Cum sa negociai dvs. cel mai bun pachet de compensare? Toate aspectele legate de fiecare ofert de locuri de munc sunt negociabile. Negocierea salariului i al altor beneficii este o abilitate vital pe care toi profesionitii IT de succes trebuie s o posede. Cheia pentru negocieri de succes este c trebuie sa inelegeti care sunt prioritile, nevoile i apoi s poat fi legat i de nevoile angajatorului. Domeniul IT&C aduce cu sine o discrepan intre cererea enorm pe piaa de specialitate i calitatea & cantitatea oferit de sistemul de invmnt din Romnia. Drept urmare salariile sunt mult peste nivelul altor industrii de pe piata romneasc iar pachetele devin indrznee i ncearc s alunge orice urm de insatisfacie din partea unui angajat, sa i creeze un mod de via modern i relaxant. Firmele mici ofer un pachet salarial mai generos decat cele de dimensiuni mari sau multinaionale. Lipsa notorietaii brand-ului i lipsa unor sisteme riguroase in elaborarea pachetului de salarii si beneficii, le ofera posibilitatea sa fie mult mai flexibile i mai atractive pentru piata de recrutare. Pe de alta parte, pachetul de beneficii in companiile de IT sunt cele mai creative i mai generoase. Dei pachetele salariale i de ben-

eficii sunt din ce in ce mai complexe, performanele angajailor i rezultatele muncii potenialilor candidai sunt n scdere. Se ntmpl asa datorit fluctuaiei de personal crescute, care determin scderea performanelor individuale i organizaionale i posibilitatea angajailor de a se specializa. Este cunoscut faptul c timpul minim in care un angajat ajunge sa performeze la maximum este de 1 an. Muli dintre specialistii din industrie devin deja ateni la noi oferte i locuri de munc, imediat dup aceast perioad. Unele companii se situeaz sub media pieei ca nivel salarial i angajeaz persoane tinere, care accept un salariu sczut fa de nivelului pieei, dar au sigurana faptului c trainingurile oferite din partea angajailor seniori sau certificrile suportate de companie, le vor da posibilitatea de a se lansa n carier i vor putea deveni n curnd acel candidat pe care toate companiile l doresc. De asemenea poziionarea deasupra mediei salariale a pieei, va determina ndreptarea HR-ului ctre candidai cu experien, care au rezultate promitoare nc de la nceputul angajrii. Intrebarea rmne cum s-ar putea minimiza disproporia intre compensaiile angajailor vechi in cadrul companiei, care s-au dezvoltat mai lent i angajaii nou venii, care in mod firesc au salariul la nivelul actual al pieei. Este bine stiut faptul c, in momentul negocierii i evalurii salariilor, managerii nu iau in considerare nivelul pieei la nivel local sau national ci doar nivelul salariilor din interiorul firmei. O analiz sumar a costurilor arat ns c fluctuaia de personal aduce cu sine costuri de trei ori mai mari: costul recrutarii, cel al pierderii din productivitate i cel al specializrii si trainingului noului angajat. Trebuie sa recunoastem c beneficiile acordate de ctre companii in vederea motivrii propriilor angajai reprezint pe de alt parte, instrumente de management al personalului care sunt i n interesul angajatorului. Iat cateva exemple de beneficii acordate de companii in domeniul IT&C din Romania, angajailor:

1. tichetele de mas - instrumente de motivare, in alt form decat bneasc, ce sunt scutite de taxe; 2. prima de vacan - care poate varia ntre jumtate de salariu i un salariu ntreg; 3. prima de srbtori (srbtorile Pascale si Crciun) - care poate varia intre 0,25% i 100% din nivelul salarial net; 4. al 13 - lea salariu - acordat inaintea srbtorilor de Revelion; 5. prima de ajutor - acodate tuturor angajailor la naterea unui copil sau, in cazuri nefericite, la decesul unei rude de gradul I; 6. asigurri servicii medicale pentru angajai - cuantumul acestor asigurari poate varia si in funcie de pozitia ierarhica a angajatului respectiv; 7. asigurare medical pentru membri familiei; 8. asigurari servicii stomatologice - i in acest caz cuantumul poate varia in functie de poziia ierarhic a angajatului respectiv; 9. asigurare de pensie facultativ; 10. asigurare de via; 11. abonamente la centre de sport i relaxare 12. telefon i cartel telefonic - acestea sunt considerate beneficii in msura in care limit alocat depseste cuantumul necesar realizarii sarcinilor de serviciu - altfel este doar un instrument de lucru 13. programul flexibil de lucru - oferit de obicei angajaiilor aflati in pozitii manageriale evaluate mai degrab pe baza rezultatelor, nu conform timpului petrecut efectiv la birou; Pachetele de compensaii i beneficii depind de structura afacerii, recrutarea angajailor, de retenie, motivaie, performan, feedback i satisfactia la locul de munca. Compensarea este de obicei printre primele lucruri pe care potenialii angajai il iau n considerare atunci cnd caut un nou loc de munc. In final, pentru angajai, pachetul de compensatii i beneficii este oglindirea nu numai a modului in care sunt remunerati ct i a modului in care sunt acestia evaluai de ctre angajator.

34

no. 1/2012 | www.todaysoftmag.ro

1 2 3

CALL FOR SPEAKERS


Romania Testing Community is offering 2 slots, 30 minutes each, for domestic speakers to share their experience to the Testing Community. The event will take place on March 7th, 2012 at Hotel Opera Plaza, in Cluj Napoca.

VOTE THE BEST PRESENTATION


Send your proposal at CONTACT@ROMANIATESTING.RO containing the Topic, the subject and a short description of what you want to present. All submissions will be available for voting on Romanian Testing Community site. Deadline for submitting your presentation is February 22nd, 2012. The voting starts on February 23rd and ends on the 1st of March

THE MOMENT OF TRUTH


First two, most voted topics will have the opportunity to step-up and hold the presentation in front of everyone.

management

5 diferene dintre un ef i un lider


Am ntlnit pn acum, n diverse circumstane i organizaii, manageri operaionali i manageri de proiect, ns doar unii ntr-adevr emanau n jurul lor o arom relaional special, atrgtoare, motivant, care fcea de dorit prezena lor. A vrea s prezint cteva din lucrurile intrate n reflexul unul lider i care lipsesc de obicei sau sunt total opus abordate de ctre un manager poziional (are funcia de manager prin delegare oficial).

1. Liderul se prezint ca parte din echip

Aristotel Dascl, PMP


Motivational speaker. Spiritual explorer.

Sunt cteva expresii pe care sigur le-ai auzit, i care direct sau subtil transmit o separare ntre manager i subordonat, o treapt pe care unii vor s o sublinieze ca semn al autoritii lor ntr-o organizaie. n general aceste expresii trag o linie ntre manager i echip, managerul fiind vzut ca cel ce are cerinele iar echipa constituit din cei ce execut cu strictee. Expresii de genul: Tu trebuie s i vezi de treaba ta, Deocamdat eu sunt la conducere a c faci cum i spun eu, dar i altele, exemplific aceast ruptur ntre manager i echip. Liderul prezint un proiect ca o munc comun, n care fiecare i are rolul su, i ncurajeaz sugestiile i exprimarea opiniilor fa de munca oricruia din echip, inclusiv a sa. Liderul se supune aceluiai tratament ca toi ceilali. Inclusiv aprecierea i mulumirea exprimat de manageri uneori ntrete aceast ruptur, fcnd echipa s simt c a prestat servicii managerului, n loc s prezinte reuita ca fiind n egal masur datorat muncii comune a managerului ct i a celorlali. De aceea n loc de un mulumesc pentru ct de bine v-ai fcut treaba un lider spune m bucur c am reuit mpreun s ne atingem scopul. Simi diferena?

2. Liderul ascult autentic

i s-a ntmplat s simi doar ca i o formalitate evaluarea personal sau ntlnirile regulate de dezvoltare profesional cu managerul? Un lider ascult atent i i noteaz dorinele tale, viziunea ta, pune ntrebri cernd clarificri i mpreun cu tine face un plan de dezvoltare. Tot el, n mod proactiv, din dorina de a-i dezvolta echipa, te intreab regulat de progresul angajamentului luat de tine, i i ofer timpul i resursele de care dispune s te ajute. Un simplu manager d din cap cnd tu povesteti, ateptnd doar pauza cnd s i spun prerea lui. La orice abordare a problemelor pe care o vede greit la tine te corecteaz spunnd: Dar nu trebuie s privesti aa, dar tu eti de vin, dar tu trebuie s i dai interesul, s fii proactiv. Dei sunt sugestii bune n sine, aceasta este o abordare reactiv, care te inhib, te face s te simi acuzat mai degrab dect ncurajat. Liderul spune d-mi nite exemple ca s neleg mai bine i hai s facem mpreun un plan, managerul spune f o list cu ce crezi c trebuie schimbat la tine i hai apoi la mine. Liderul este em-

36

no. 1/2012 | www.todaysoftmag.ro

patic, lundu-te de la nivelul la care eti, aa cum eti. Managerului i place s se aud pe sine i s arunce soluiile ca pe nite pastile.

3. Liderul ofer nainte s cear

Un manager poate s cear n mod oficial executarea unor activiti, fr a avea nicio relaie cu echipa. ns un lider tie c persoanele pe care le conduce au nevoie de o motivaie, iar conform luiMaslow, n partea superioar a piramidei ierarhiei nevoilor personale se afl imaginea de sine, i chiar n vrf edificarea personal. Cu alte cuvinte liderul este vzut n mod constant interesat de nelegerea i satisfacerea nevoilor individuale, ofer sprijin i ascult autentic nainte de a cere dedicare i executare din partea echipei.

asta ar crete eficiena proiectului la un moment dat. Ba chiar o consider cheia n influena sa ca lider: a veni alturi de echip n munca de zi cu zi, i a crete abilitile de conducere n cei din echip care doresc asta ( sau care au abiliti dar nu sunt poate contieni de ele). Liderul ncurajeaz creterea vizibilitii tale n organizaie, nu se pune ca i grani ntre tine i potenialul tu succes. Managerii sunt des speriai c dezvoltndu-te le vei fura locul, dar liderul tie c particularitile lui i vor gsi mereu locul potrivit, i se implic proactiv n dezvoltarea ta de dragul creterii organizaiei.

5. Liderul este urmat de bunvoie

Liderul are o imagine de sine i stim de sine realist i solid. Nu se identific prin poziia sa, ci prin abilitile sale i prin ct de eficient le practic. De aceea nu evit s fac o munca de jos, de executant cnd

4. Liderul nu e ameninat de succesul celorlali

Cea mai evident modalitate prin care poi recunoate un lider este c echipa sa l urmeaz de bunvoie. l citeaz, i confirm ideile i principiile n discuii chiar i cnd acesta nu este prezent. Un simplu manager menine o atmosfer ncordat, rece, n care ceilali vorbesc doar forai, i n particular vorbesc cel mai des denigrator despre manager. Bineneles c urmezi cu entuziasm o viziune pe care i-ai nsuit-o,

care te mplinete i n procesul creia i tu te dezvoli. ns doar un lider poate insufla asta echipei sale. Sunt 3 cri pe care le-a sugera dac consideri c ai nevoie s te dezvoli ca i lider. Personal le recomand a fi studiate n aceasta ordine: Eficienta in 7 trepte, de Stephen Covey (nva s te raportezi corect la tine i la cei din jurul tu, nsuindu-i principii sntoase i prioritiznd activitai zilnice). Cum s devii o persoan cu influenta, de Jim Dornan & John Maxwell (Prima i cea mai relevant calitate a unui lider este influena. nelege-o i ncepe s o practici nainte de a conduce pe alii). Dezvolt liderul din tine, de John Maxwell (Primii pai n dezvoltarea unui caracter de lider nsoit de multe exemple practice). Este o imprimare unic n caracterul tu, n abilitile tale. Gsete-o i exploreaz-o. Dup cum zicea Zig Ziglar: Eti singura persoan de pe pmnt care poate folosi abilitile tale.

www.todaysoftmag.ro | no. 1/2012

37

filozofie

10 vs. 1700 Presto - Allegro ma non troppo


Muncind pe meleaguri ndeprtate patriei, peste o mare i 5 ri, aa am nceput s meditez la chestiunea n cauz v rog stai n tihn! Obiectul muncii era, ntr-un mod destul de direct, rspndirea suitei de servicii online folosite cu drag comatic de ctre fraii n suferin pe planet. M refer la Google, Facebook, Twitter, Youtube, Picasa, Skype, i prea multe altele. Chestiunea n cauz, aadar, e capabilitatea omului de a sta n continuu, n primul rnd din punct de vedere emoional, sub cascada frenetic de informaie. Umr la umr cu o ceat de tehnicieni alei pe sprncean la nceput , am fcut pe dracu-n patru i am inovat ctui de puin - una din cerinele de baz. Am inovat n sensul c dup mult gndire i planificare nu foarte asidu am dezvoltat un pertinent, spun eu, sistem de operare pentru telefoane detepte. Clasic, soft-ul a fost instalat pe dispositive cu touchscreen i aruncat pe pia. Capodopera era i este dotat desigur cu un agregat de aplicaii de comunicat cu i informat pe ceilali. Ca s nu rmn lauda dezbracat, povestea lung i s naintm spre un sens, n ce a constat de fapt noutatea? Pe lang construcia de aplicaii specifice pentru fiecare din furnizorii de servicii pomenii mai sus, am integrat linia simpl proprie unui asemenea sistem Telefon, Mesagerie, Galerie foto/video - cu serviciile oferite de furnizori. n funcie de foloasele puse la dispozitie de acetia, i conturile create pe dispozitiv, stpnul utilizator are la dispoziie diverse i diferite opiuni. De exemplu dup crearea unor conturi Facebook, Youtube i Skype, aplicaiile care ajut la imprtairea informaiei tiri, poze, video ofer direct posibilitatea de upload pe Facebook sau Youtube, mesageria lucreaz selectiv cu SMS, MMS, Skype i Facebook, iar telefonul n aceeai manier ofera servicii GSM i Skype Call. Detaliile menionate nu import ntr-att de mult. Per ansamblu, comunicarea devine mai facil; totul se ntampl mai rapid. Am fcut nc un pas spre mai bine; mpuc, omoar, mnnc funcioneaz n continuare la parametri mbuntii. The Show Must Go On! n adncul sufletului nu sunt un individ prea tehnic, aa c o s descind subit nspre latura boem a lucrurilor. Eram la o caban, parial din cauza trecerii dintre ani, i mi s-a spus fr ocoliuri i politeuri de prisos c nu fac parte din generaia Smart. Nu fac, deoarece nu folosesc un telefon detept care s-mi permit s subscriu trend-ului informaional. Pe de-o parte hora convenabil de prieteni blocai cu nasu-n plasa colorat. Pe de-o alt parte, ntocmirea fiei detaliate a existenei personale, folosind desigur diferitele condici online puse cu grij la dispoziia ceteanului de ctre fratele mai mare.

Aurel Poprac
Programator,deintor de micro afacere n IT

38

no. 1/2012 | www.todaysoftmag.ro

Nu m-am suprat prea tare, dei am fost catalogat ca napoiat i nu prea priceput la internet i din astea. Am trecut uor peste necaz doar ca s m gsesc ntr-un altul n timpul poriei sptmnale de otrav prin birturile oraului. Amicul de lng i concubina dumnealui m-au ceartat de data asta pentru neparticiparea la o petrecere. Vina, s m nelegei, era n totalitate la mine-n gospodrie nu fceam parte din grupul cruia i s-a expediat invitaia, ba chiar mai ru, nu aveam nici cont. Argumentarea dei solid Pe Facebook gseti gagici i poi s afli tot ce se ntmpl la tine n ora, chefuri publice/private, i s tii c de exemplu fetele care au venit, i-au format o prere despre fiecare din baieii de la party aa i cnd au venit tiau deja cu cine vor s fie! s.a.m.d. prin tonul ei m-a fcut s m simt puin rtcit prin peisaj. Am nceput mintal s concretizez, mai serios, cu liniu, de ce nu agreez aste forme de interacionat cu realitatea. Am continuat aadar meditaia. Mititel fiind, m bucuram tare mult de priaul ce curgea pe ulia de la ar, de captul de la deal al grdinii i de lipsa concretului relativ la lucrrile de dincolo munilor la care nu prea era cu putin s ajung. Sentimentul era mprtit cu un grup restrns de ali feciori i fecioare care purtau cu vrednicie titulatura de prieteni; s fi fost vreo 10.

n contrast cu tabloul de mai sus, anul trecut, cald toamn, dup srbtorirea fastuoas, dar intim, a zilei de natere a unui amic din timpurile prezente, primesc o alt informaie. Respectivul mi relateaz existenta a 1700 de prieteni online. Grimasa lui m-a scos din tcere, iar replica mea de fiu de contabil a fost: Omule, ai atia prieteni ci au fost ieri la ziua ta si atia amici ci i-or ura la muli ani daca ii tergi data de natere de pe profil. n fine, lcomia face parte din natura uman, iar ciolanul nu trebuie s fie neaprat de porc. Nu am autorizaie de generalizare i nici nu tiu de unde a putea obine aa ceva, dar mi permit sa fac unele mrunte observaii. Pe prietenii mei, numrai pe degete, ca pe o mic guerilla amical de spartani, i consider veritabili. n fapt aceti puini oameni m ajut s trec cu bine peste multele zile apatice i transele urbane la care pn la urm, recunosc, m supun eu nsumi. Totui, i n aceste condiii ajung cu greu s petrec cu fiecare dintre ei timpul necesar pentru schimbul in tihn, darmite dac m-a mndri cu o mie, dou Cu toii prem s ne grbim undeva, dar nu tim unde. Dorim ceva, dar nu tim ce. Citim foarte multe dar nu reinem nimic. Acelai nimic ne marcheaz plimbarea de la o instituie la alta. Experienele sunt lipsite de sacru, iar pn si frigul sau

cldura de afar nu mai creeaz nici o stare, dect probabil un disconfort pasager. Suntem obosii de artificial i asta pe muli ne face s ne simim prost. Nu cred ca e sfritul lumii sau cine tie?! aadar pn la urm nu e o att de mare dram. Nici nu intenionez s o lungesc cu apologetica comunicrii ca necesitate uman vs. inversul sintagmei, dar din ce am neles pn acum despre fenomen, e oricum greu de trit in sihstrie. Cu sau fr calculatoare, i o nebuloas de servicii de nermas singur, ntr-un mod sau altul, cred c o s ne descurcm pn la urm. Totui, relativ la contactul interuman, cumva spontaneitatea, verbalitatea n cele mai multe dintre cazuri i binenes limbajul trupului sunt sarea i piperul. Parc de cele mai multe ori tastatura devine un scaun cu rotile pentru o societate de paralizai emoional, iar telefoanele detepte ne ajut sa ne purtm perfuzia dup noi. E un fel de spital de nebuni, iar personal simt nevoia s-mi aerisesc creierii. Dect s muncesc mai repede s pot s m distrez mai repede, s m odihnesc mai repede, i tot aa s i trec apa intr-o zi, mai bine cu puin iarb, flori, copaci i poveti redundante despre un nimic plcut. M duc la o plimbare!

www.todaysoftmag.ro | no. 1/2012

39

filozofie

Informaia, de la teorie la strategii ale spaiului public


Perspectiva conform creia situarea de partea informaiei nseamn triumful formei asupra coninutului subestimeaz importana comunicrii i a teoriei informaiei n nelegerea unui spaiu public n care dinamicile informaionale ctig teren n faa produciei de semnificaii. Post-structuralismul e una din teoriile care surprinde i anticipeaz aceast dezvoltare (primatul reelelor de informaie asupra reelelor de semnificaie) atunci cnd descrie modernitatea trzie ca fiind o civilizaie a semnificanilor flotani, semne care au pierdut legtura cu reelele de semnificaie. Semnificaia nu a disprut pur i simplu n sfera informaiei ci s-a multiplicat i a proliferat n interfaa n continu schimbare a spaiului public, dnd natere la noi clase, genuri, sexualiti, etnii, rase etc. E din ce n ce mai prezent imperativul de a adapta aceast proliferare i dispersie a semnificaiei la o nou dimensiune a spaiului public contemporan, una care nu mai e structurat n jurul codificrii i decodificrii de semnificaie i a articulrii acesteia n practici sociale, ci e o dimensiune supus unui imperativ cu o dinamic de un alt ordin. Acest imperativ proclam faptul c o mai mult i mai bun comunicare snt soluia ultim a problemelor din spaiul public i c c dinamica specific acestei comunicri are de-a face mai mult cu transparena unui spaiu al circulaiei dect cu soliditatea unui spaiu al locurilor. Nu mai e vorba de semnificaii care snt codificate i decodificate n texte ci de includere i de excludere, conectare i deconectare, rzboi informaional, noi forme de cunoatere i putere (de la relaii publice la comunicare public i management al percepiilor), care implic nu att jocul semnificaiilor ct dinamica de ansamblu a unui mediu informaional deschis. n cele ce urmeaz voi evalua felul n care conceptul de informaie poate fi folosit in discuia privitoare la spaiul public. Voi porni de la teoria (post)structuralist i teoria informaiei, artnd limitrile amndurora n ceea ce privete conceptul de informaie. Voi schia la final o perspectiv n care informaia poate constitui o unealt important n alctuirea modular a spaiului public.

Sebastian Big
Pe la nceputul filmului Matrix, dup follow the rabbit, knock knock neo, Keanu le vinde bieilor i fetelor un minidisc pe care l ine ntr-o carte numit Simulacra and Simulation. Sebastian Big este autorul traducerii acestei cri n limba romn.

Producia de semnificaie i informaia alibi

Importana informaiei ca for subiacent spaiului public constituie o tem recurent n discuia de pe scena intelectual nc din anii 60. Filosofi, sociologi i economiti din diferite coli i cu diferite orientri politice au ncercat s surprind valoarea informaiei, att ca marf ct i ca mod de producie. n vreme ce economitii vorbesc n special de rolul informaiei n dinamica pieii, filosofii i sociologii resping de cele mai multe ori importana informaiei ca factor definitoriu n schimbarea social.

40

no. 1/2012 | www.todaysoftmag.ro

Structuralismul afirm c informaia nu e dect un nivel de baz al semnificaiei, furniznd condiiile minime pentru emergena semnificaiilor sociale. Din aceast perspectiv, informaia e nivelul zero al semnificaiei, o condiie minim a produciei de semnificaie. Pentru ca aceast teorie s fie funcional, comunicarea trebuie s fie mai mult dect o simpl transmisie de informaie, implicnd i reele sociale i culturale de semnificaii, care mobilizeaz un ntreg sistem cultural de referine. Informaia e vzut ca un soi de alibi pentru comunicarea semnificaiilor sociale, teren pe care au loc adevratele strategii ale spaiul public. Repetitivitatea i mobilizarea nencetat a identitilor i prejudecilor reciclate n procesul de producie de semnificaie suprasatureaz spaiul public, fcnd dificil ns cu att mai necesar un nou mod de raportare/comunicare n/ cu acest spaiu. Intervenia n mediul informaional nu nseamn doar producia de contrainformaie ci i o nelegere a dinamicii difuzrii informaiei (deschiderea de noi canale, conexiuni transversale, guerilla informaional etc.). Se pune problema interaciunii dintre transformrile modurilor de producie i noile forme de cunoatere i putere n cmpul dinamicii informaionale. Din punct de vedere hermeneutic, semnificaiile exprimate i diseminate de cei care folosesc mediile oficiale nu snt noi sau originale. Zona n care politicul i socialul au suferit o mutaie e aceea a tacticilor i tehnicilor prin care e comunicat i filtrat informaia. De fiecare dat cnd o anumit informaie e comunicat, e folosit o ntreag serie de tehnici i tactici pentru care transmisia de semnificaie e numai un obiectiv parial al unei campanii mai largi. ntregul spaiu public a devenit obiectul unei reele de metode, tactici i strategii corespunztoare hipermanagementului opiniei publice. Nu e ns vorba doar de o metod mai sofisticat de manipulare a publicului de ctre o nou ras de ingineri sociali, crora li se opun audiene refractare sau semnificaii contradictorii. Relaia dintre profesionitii comunicrii i audienele lor

are loc ntr-un mediu specific, n care dinamica informaiei are preceden n faa dinamicii semnificaiei. O nelegere mai clar a informaiei i a dinamicii informaiei e important n nelegerea condiiilor care cer o nou raportare la spaiul public, neles ca interaciune ntre reele de comunicare

Teoria informaiei, de la canal la mediu informaional

Teoria informaiei, n special lucrarea lui Claude E. Shannon despre teoria matematic a comunicrii ofer cteva desluiri importante n legtur cu dinamica informaiei. Lucrarea Teoria matematic a comunicrii a fost un punct de cotitur n teoria informaiei, domeniu aprut prin convergena nou-nscutei industrii a telecomunicaiilor (telegraf, telefon, radio, televiziune) i a aplicaiilor ei militare (sisteme de comand i control i criptare), cu implicaii n nelegerea comunicrii ca proces fizic pe care dezvoltarea tehnologic se baza, reinventndu-l. Una din supoziiile de baz ale teoriei informaiei e aceea c informaia nu poate fi definit dect ca un raport ntre semnal i zgomot (parazii, bruiaj), descriere nscut din necesitate tehnic. De fiecare dat cnd ceea ce denumim o informaie e transmis de la un emitor la un receptor, se pune problema canalului, e necesar ca acea informaie s fie transmis ct mai acurat. Canalul de comunicare nu are capacitatea de a recunoate existena sau lipsa semnificaiei; el nu poate interpreta mesajul. Mai mult, nu orice informaie are semnificaie. Dat fiind faptul c acel canal nu are capacitatea uman de a interpreta semnificaie, el se bazeaz pe o formul matematic ce i permite s fac diferena ntre informaie i zgomot. Caracterul de informaie i e dat acesteia de existena unui pattern sau a unei frecvene care i permite canalului s o deosebeasc de zgomot. Pentru urechea uman, informaia coninut n biii criptai sun a fluierturi i zgomote (sunetul modemului conectndu-se la internet). i totui, atunci cnd exist comunicare printr-un canal, acest zgomot conine i informaie, un pattern sau o frecven care pot fi codificate ntr-

un semnal, care la rndul lui poate fi codificat n ceea ce va aprea pe monitor ca o pagin web. n acest sens, dac acceptm aceast teoria a informaiei, ea nu implic semnificaie ci doar patternuri statistice i frecvene de modulare semnal-zgomot. Shannon s-a ocupat de problema modulrii unui semnal cu anse de supravieuire n faa efectelor zgomotolui care pericliteaz orice comunicare, a interferenelor i bruiajului care amenin s anuleze transmisia. El a ajuns s marcheze minimele condiii ale comunicrii. nainte ca ceva s fie comunicat, e nevoie de un canal liber, ceea ce implic suspendarea zgomotului exterior. Un canal liber e condiia de baz a comunicrii, n msura n care scopul comunicrii e transmiterea unui mesaj, indiferent de semnificaie. Acest scenariu se ndeprteaz de concepia modern a comunicrii, n care existena sferei publice garanteaz desfurarea transparent a vieii democratice. Nu mai exist un subiect care semnific, nici mcar o audien; nu exist o retoric ci un set minimal de patternuri, care reduce comunicarea la existena unui canal liber. Din perspectiva teoriei informaiei, comunicarea nu e nici un argument raional nici o experien antagonist, bazat pe capacitatea unui vorbitor de a codifica/decodifica o semnificaie presupus comun. Scopul fluxului de informaie e stabilirea unui contact ntre emitor i receptor prin excluderea oricrei interferene. Emitorii i receptorii nu au o situare opozitorie, ca n concepia jocului dialectic ci se presupune c se afl de aceeai parte. Opoziia dintre emitor i receptor nu mai e una subiectiv ci una obiectiv i extern, care ia forma unui zgomot lipsit de semnificaie. Problematica informaional e legat de conceperea comunicrii ca o chestiune operaional dominat de imperativele canalului i nu de o exigen a semnificaiei, a unei etici a adevrului sau a unei confruntri retorice. Strategiile informaionale se desfoar deci ntr-un mediu de comunicare instrumentalizat, redus la problema lui fundamental (sau la condiiile lui minime): realizarea cu succes a unui contact, suprimarea oricror bruiaje i filtrarea

www.todaysoftmag.ro | no. 1/2012

41

filozofie

Informaia, de la teorie la strategii ale spaiului public

oricrei parazitri a mesajului aflat n tranzit. Nu exist nimic implicit tehnologic aici, dac prin tehnologie nelegem un Frankenstein tehnocrat care se ntoarce mpotriva creatorilor lui. E vorba mai degrab de tehnici i moduri de cunoatere i putere care se ntretaie printr-o varietate de medii i canale pe terenul societii informaiei. Strategiile de amplificare, ncercarea de control sau de monopolizare a comunicrii prin metode tradiionale snt subvertite de continua repoziionare non-linear a reaciilor i canalelor de transmisie ale publicului sau pur i simplu de entropia social, care face non-linear transmisia mesajelor. Aceasta e una din limitrile teoriei lui Shannon. El pornete de la o concepie linear a comunicrii (modelat pe configuraia tehnic a industriei telecomunicaiilor din epoc) ce presupune un circuit simplu, care leag un emitor de un receptor printr-un canal de transmisie, a crui simplitate i lips de ramificaii permite reducerea facil a zgomotului i neutralizarea bruiajelor. Ce se ntmpl atunci cnd comunicarea nu e liniar, cnd informaia nu e transmis simplu printr-un canal de la un punct A la un punct B, ci se transform ntr-un flux care circul liber ntre noduri, sufer mutaii, se multiplic de la canal la canal, de la reea la reea? Ce se ntmpl atunci cnd nu se mai pune problema unui canal sau a unei colecii de canale ci a unui mediu informaional?

Dinamica realitii, ntre reprezentare i informaie

S-ar putea obiecta c relaia dinamic dintre informaie i realitate, semnal i zgomot, patern i hazard care anim mediul comunicrii umane nu atinge problema esenial a informaiei i a caracterului ei real. Nu e dificil de observat c felul n care este gestionat sfera public implic o grij fundamental pentru accesul la informaie i c tehnicile de transmisie din mediul plin de zgomot al comunicrii de azi au devenit extrem de complexe. Asta nu rezolv ns problema relaiei dintre emitor i receptor. Am putea obiecta i c acest ceva de comunicat nu poate fi un simplu pattern ci, n

ultim instan el trebuie s fie un mod de reprezentare a realitii. O tire nu e n fond dect o anumit reprezentare a unui eveniment, transmis unei audiene. n aceast ordine de idei, putem spune c informaia se supune n cele din urm regulilor semnificrii i ale nelegerii, cu alte cuvinte, c are o dimensiune semantic, fiind supus interpretrii. O tire poate fi analizat pe baza produciei discursive a evenimentului reprezentat, aa cum e codificat i decodificat de productori pentru consumatori. Asta nu rezolv ns problema relaiei dintre informaie i realitate. Conform abordrilor post-structuraliste ale limbajului reprezentarea nu i trage semnificaia din realitate ci din alte reprezentri, adic din esutul de moduri de semnificare din care se nate nelegerea comun a realitii. Sfera public este construit prin limbaj i nu e de conceput sau accesibil fr el. n acest context, conceptul de informaie aduce o schimbare radical; ca i configuraie de date el are legtur cu ceea ce reprezint. Acest concept nu e specific doar teoriei comunicrii ci i fizicii, tiinelor naturii, ciberneticii. Informaia nu e o simpl reprezentare ci o tehnic de comprimare a datelor care ne uureaz interaciunea cu indeterminarea i complexitatea proceselor realitii. Informaia e ntotdeauna, dup formula lui Shannon, o msur a incertitudinii n cunoaterea unei stri, a unui proces sau a unui eveniment. Teoria matematic a comunicrii presupune i faptul c, fiind un mijloc statistic, informaia e inerent realitii fizice, ns doar ca msur a ireductibilei indertitudini care caracterizeaz cunoaterea strilor fizice. ntr-un sens tehnic i tiinific, informaia nseamn reprezentarea unei stri fizice, care nu presupune ns existena unei relaii de simpl asemnare ntre reprezentare i strile pe care o asemenea informaie le descrie. Aceast relaie se cldete n termeni care submineaz perspectiva n care reprezentarea e o copie a realitii. Aa cum insist Baudrillard, am ieit demult din regimul originalului i al copiei.

Teoria informaiei confirm faptul c o stare sau un element complex al realitii care poate fi reprezentat printr-un numr sau o descriere (temperatur medie, identitate) nu are o relaie determinist sau linear cu multiplicitatea de stri microscopice care o definesc (particulele i viteza lor, diferitele singulariti ale unei identiti). Informaia descrie o distribuie de probabiliti (sau o serie de parametri) mai degrab dect o proprietate esenial care definete o fiin. Teoria informaiei rezolv problema acestei indeterminri (sau zgomot) printr-o compresie a datelor. La fel ca n astronomie i fizic, tehnologia informaiei are ca sarcin distilarea unor numere prea mari pentru nelegerea uman. Ele pot fi aduse la un nivel de nelegere prin folosirea unei curbe matematice denumite logaritm natural. Ca tehnic de comprimare de date, teoria informaiei folosete logaritmul pentru a reduce incertitudinea, care nu e altceva dect un efect al magnitudinii datelor produse de realitate. El mediaz ntre o lume care poate fi ptruns de simuri i acele procese care snt prea complexe pentru nelegere, procese care se schimb geometric sau exponenial: probabiliti, dobnzi, populaii, conexiuni neuronale sau multitudinea de procese care au loc ntre indivizi n i cu spaiul public. Astfel logaritmul imit felul n care funcioneaz simurile umane.

Spaiul public, ntre cliee propagandistice i dinamici sociale

Fcnd posibil nelegerea magnitudinii i a incertitudinii realitii, informaia ne deschide ochii asupra caracterului aproximativ al oricrei cunoateri i al oricrui fel de comunicare. Fie c e vorba de etern contradictoriile i schimbtoarele sondaje ale opinie publice sau de bazele de date n continu cretere, tehnologiile informaiei contribuie la descrierea/recompunere a spaiului public, comprimnd variaiile de gusturi, orare, direcii, trecnd peste autoevidena i suficiena subiectului modern, trecnd de la mase la populaii de uniti individuale de informaie. Genul, rasa, sexualitatea nu mai snt tratate ca fiind specifice unor subieci statici, observaiile

42

no. 1/2012 | www.todaysoftmag.ro

microvariaiilor lor snt recompuse pe o suprafa de modelare care se mic n ritmul micrilor spaiului public. Asta nu nseamn c identitile, diferenele i reprezentrile au devenit irelevante sau i-au pierdut puterea de identificare sau funcia n spaiul public, ns componentele lor perimate snt marcate sau neutralizate de tehnologiile informaionale. Dimensiunea informaional scoate la lumin vrtejul de singulariti sau esene singulare, anomalii care merg mult mai departe dect jocul postmodern al identitii i al diferenei. Informaia opereaz cu reguli diferite de acelea ale semnificaiei. Diferena nu mai e vzut ca relaional i structural ci ca marcat de probabilistic i incertitudine. Ea se aplic la procesele unei realiti aflate ntr-o discontinu transformare. Conceptul de informaie surprinde dinamica realitii i a spaiului public fr a face abstracie de caracterul lor fluid i discontinuu. Ea implic o nelegere nedeterminist i nereducionist a proceselor realitii. Informaia nu poate defini complet procesele realitii, ea nu poate dect cuantifica unele din dimensiunele realitii, spre deosebire de reprezentri, identiti i semnificaie, care arunc adevrate plase asupra jocului singularitilor, comunicnd un tip de informaie nu att neadevrat ct extrem de rudimentar, retrasnd parc n sens invers drumul de la mythos la logos. Conceptul de informaie nu are de oferit analizei spaiului public doar o repunere n scen mai nuanat a relaiei dintre semne i fluxurile realitii ci o unealt intuitiv i pragmatic n mod imediat. Dei munca specialitilor n comunicare e una de modulare a acestui mediu de comunicare la comenzi economice i politice, canalele pe care ei le traseaz snt deschise i altor moduri de folosire, care nu in cont de respectivele comenzi. Suprafaa zgomotoas a comunicrii, proliferarea confuziei care zdruncin i reconfigureaz asimetric spaiul public nu se adreseaz unei mase statice servile ci unui spaiu public probabilistic, discontinuu, supus unei schimbri din ce n ce mai rapide. Conceptul de informaie implic existena unor procese probabilistice i

variabile care nu pot fi att reprezentate ct observate i experimentate. Dedesubtul peliculei de cliee propagandistice a cror diseminare e pus n practic de specialitii n comunicare clocotete o dinamic social n continu reconfigurare. Relaia dintre dinamica informaional i comunicarea n spaiul public a fost ocultat parial de predominana mediilor de comunicare lineare n modernitate i modernitatea trzie. Sntem obinuii s considerm comunicarea ca fiind ceva care ine de mesaj (informaie, semnificaie, reprezentare) transmise de un emitor ctre un receptor printr-un canal. Am ajuns astfel s acordm o importan nemeritat imaginilor mintale sau reprezentrilor comunicrii, ca i cum informaia ar fi doar un alt nume pentru Ideile care curg dinspre un centru panoptic spre periferia unei majoriti pasive, ntrun spaiu public static. Multiplicarea canalelor de comunicare i a mediilor ne atrage ns atenia asupra importanei dinamicilor nonlineare n desfurarea interaciunilor n spaiul public. Nu exist un loc n care informaia s nu prolifereze, rezoneze, recombine i interfereze i e din ce n ce mai clar c ea nu e nici semnificaie nici form imaterial. Comunicarea de informaie implic ntotdeauna rezolvarea unei tensiuni datorate incompatibilitii dintre diferitele dimensiuni ale unei parcele de realitate. Informaia nu e un coninut de comunicare ci un vector, care determin direcia unor viitoare actualizri. De aceea, orice comunicare de informaie, aa cum bine tiu ciberneticienii e i o form de control a fluctuaiilor unui mediu fizic instabil. Informaia nu face din receptor doar un subiect al aciunii emitorului (acceptare/ negociere/ respingere a unei semnificaii) ci implic i o sum de parametri cuantificabili de fluxul de informaie, care au puterea de a provoca schimbri reale de stare. Nici o comunicare nu poate fi rupt de efectul combinat al tensiunilor i instabilitilor; actul de a intra n contact nu poate fi redus la injectarea de informaie n receptorii individuali, asta dup ce, n prealabil, terenul a fost curat de zgomot. Dimpotriv, dimensiunea

informaional a comunicrii pare s implice un potenial real de transformri dinamice, punerea n micare a unui proces de constituire la care nu au acces nici canalele media dirijate nici cinismul specialitilor n relaii publice. Strategiile informaionale n spaiul public au de-a face att cu dezvoltarea formelor de cunoatere ct i cu aceea a formelor de putere, al cror teren de joac nu e numai comunicarea ci i evenimentul, care erupe din circuitul nchis al comunicrii. n acest sens, strategiile informaionale implic nu doar interferena sau metisajul cultural ci i analiza activ i experimentarea unor tactici adecvate non-linearitii fluxurilor de informaie i instabilitii realitii cu care au de-a face.

www.todaysoftmag.ro | no. 1/2012

43

powered by

You might also like