Today Software Magazine

45
Nº 1/2012 .NET Performance Interviu - echipa românească finalistă Microsoft Imagine Cup De la o idee la un produs Compensarea creativă Startups - Mintaka Research Informaţia, de la teorie la strategii ale spaţiului public

description

Ideea a pornit de la faptul că fiind o comunitate numeroasă în Cluj, precum și în celelalte mari orașe din România, programatori sunt conectați profesional în marea majoritate a timpului la evenimentele din cadrul firmei. Studiul tehnologiilor sau a limbajelor noi se desfășoară individual, folosind date globale, lipsind informațiile și trendurile locale, o modalitate prin care aflăm părerile celor din jurul nostru.

Transcript of Today Software Magazine

Page 1: Today Software Magazine

Nº 1/2012

.NET Performance

Interviu - echipa româneascăfinalistă Microsoft Imagine Cup

De la o idee la un produs

Compensarea creativă

Startups - Mintaka Research

Informaţia, de la teorie la strategii ale spaţiului public

Page 2: Today Software Magazine
Page 3: Today Software Magazine

6Performanţa

în aplicaţiile .NETFlaviu Măţan

14Problemaefectelor

secundareOvidiu Deac

16The Good, the Bad

and teh Ugly Ovidiu Deac

22Interviu cu echipa

românească finalistăMicrosoft Imagine Cup

Marius Mornea

26Startup

Mintaka ResearchMarius Mornea

30De la o ideela un produsOvidiu Măţan

33CompensareacreativăIoana Fane

365 diferenţe dintreun şef şi un liderAristotel Dascăl

3810 vs. 1700Presto - Allegro manon troppoAurel Popârţac

40Informaţia, de la teorie la strategii ale spaţiului publicSebastian Big

Page 4: Today Software Magazine

4 no. 1/2012 | www.todaysoftmag.ro

Conectareapunctelor

Salut,

Am plăcerea sa vă prezint primul număr 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 orașe din România, programatori sunt conectați profesional în marea majoritate a timpului la evenimentele din cadrul firmei. Studiul tehnologiilor sau a limbajelor noi se desfășoară individual, folosind date globale, lipsind informațiile și trendurile locale, o modalitate prin care aflăm părerile celor din jurul nostru.

Al doilea punct de la care am pornit este absența companiilor românești care dezvoltă produse proprii. Este un paradox faptul că 99% dintre acestea execută doar task-uri de outsourcing sau servicii locale ale unor multinaționale. Pentru a duce o idee la capăt și a crea un produs competitiv este nevoie de multă muncă, profesional-ism, dedicație. Probabil este nevoie de un mic imbold, motivare și sprijin, iar TSM va fi un aliat. Tot ce vă cerem este să ne spuneți despre startup-ul vostru iar noi vom aloca un spațiu pentru el, în secțiunea dedicată.

Al treilea scop al revistei este de a publica rezultatele celor câțiva care reprezintă elita din domeniu. În fiecare număr va apărea un interviu cu o persoană sau o echipa care a obținut rezultate remarcabile.

Vom crea un grup de profesioniști în domeniu care vor deveni cunoscuți prin publicarea constantă în cadrul revistei. Avem deja o parte din ei dar numărul lor va crește în viitor. Dacă crezi că ai ceva de spus, dă-ne un semn sau trimite-ne un exem-plu de articol iar noi îl vom publica într-unul din numerele viitoare. Vom încerca să acoperim toate ariile de activități implicate, începând cu software development, QA, automation și până la management/HR. O particularitate este secțiunea de filozofie. Adunând toate aceste lucruri, scopul nostru final este de a avea o revistă pentru pro-gramatori, o lectură plăcută și interesantă, care, să sperăm, va naște întrebări și va învăța lucruri noi. Lansăm și o invitație de a comenta articolele pe site-ul nostru și de a lua parte la concursurile organizate.

Lansarea primului număr al revistei în format tipărit și online, de astăzi, 6 feb-ruarie, în cadrul evenimentului Gemini Solutions Open Day, reprezintă primul pas, urmând ca în următoarea perioada să își facă apariția versiunea în limba engleză disponibilă pe Apple Store și Android Market.

editorial

Ovidiu Măţan, PMP

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

Page 5: Today Software Magazine

5www.todaysoftmag.ro | no. 1/2012

Redacţie

Fondator / Editor in chief: Ovidiu Mățan / [email protected] designer / Editor (filozofie): Sebastian Big / [email protected]

Graphic designer: Dan Hădărău / [email protected] (limbaje de programare): Ovidiu Deac / [email protected]

Editor (startups și interviuri): Marius Mornea / [email protected]: Ioana Fane / [email protected]

Colaborator: Flaviu Mățan / [email protected]: Aurel Popârţac / [email protected]

Colaborator: Aristotel Dascal / [email protected]: Romulus Pașca / [email protected]

Adresa de [email protected]

+40749152170

www.todaysoftmag.rowww.facebook.com/todaysoftmag

twitter.com/todaysoftmag

ISSN 2284-6360

Page 6: Today Software Magazine

6 no. 1/2012 | www.todaysoftmag.ro

Performanţa în aplicaţiile .NET

Flaviu Măţan

Principal Software Engineer at Ixia

Dinamica modernă a dezvoltării de aplicaţii software cu focus pe livrări frecvente de cod funcţional face ca performanţa să fie un aspect adesea trecut cu vederea.

Cu toate că abordarea de genul “fă-l să meargă întâi după aceea refactorizam” are avantaje demonstrate cum ar fi adaptarea uşoara şi rapidă la modificările de cerinţe, ea deschide uşa adesea codului scris neglijent care afectează performanţa într-un mod negativ.

Fie că este inclusă din start în ciclul de dezvoltare, sau este cauzată de situaţii cum ar fi descoperirea de operaţii foarte lente sau o degradare abruptă de performanţa în anumite scenarii (ex. creşterea numărului de puncte de intrare cum ar fi numărul de useri care folosesc un sistem etc.) sau ca un pas premergator unui task de scalabil-itate, măsurarea performanţei aplicaţiilor devine un pas din ce în ce mai important în viaţa unei aplicaţii.

Acesta este primul dintr-o serie de articole despre performanţa în aplicaţiile .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 câteva surse comune de degradare de performanţa precum şi posibile soluţii la aceste probleme.

Alegerea profiler-ului potrivit Detectarea problemelor de performanţă ale unei aplicaţii se poate face prin diferite metode, de la caz la caz, începând cu folosirea ceasului de mână pentru a măsura timpul de execuţie al unor operaţii, adăugarea de timere în cod în jurul operaţiilor suspecte de probleme de performanţă şi logarea acestora în fişiere pâna la folosirea aplicaţiilor dedicate, aşa-zisele profiler-e, care furnizează date complexe colectate la rularea aplicaţiei pe baza cărora programatorii pot să identifice zonele cu probleme reale de performanţă cu un efort relativ mic. Prima variantă este folosită cu succes de către managementul superior pentru evaluarea aplicaţiei dpdv al performanţei. A doua variantă în care se folosesc timer-e presarăte prin codul sursa funcţionează bine atunci când problema de performanţa este ştiută şi relativ locali-zata ş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 prob-lema.

În prima parte a acestei serii de articole dedicate performanţei în aplicaţiile .NET vom discuta despre a treia variantă de investigare, cea în care se folosesc aplicaţii de tip performance profiler deoarece acestea pun la dispozitia programa-torilor date şi unelte ce facilitează identificarea, fixarea şi reevaluarea problemelor

programare

Page 7: Today Software Magazine

7www.todaysoftmag.ro | no. 1/2012

de performanţa. Î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 aplicaţii .NET şi anume ANTS Performance Profiler de la Redgate respectiv dotTrace Performance de la Jet-Brains. Cautarea în google dupa „.net per-formance profiler” va întoarce cele două profiler-e în primele 2 rezultate.

Le vom evalua în funcţie de o serie de criterii între care: uşurinţa în folosire, acurateţea măsuratorilor, analiza rezultate-lor, preţ etc.

1. Uşurinţa în folosire Ambele aplicaţii sunt foarte similare

în ce priveste partea de inițiere a sesiunii de profiling.

Fiecare oferă posibilitatea de a alege tipul aplicaţiei de analizat (standalone, sil-verlight, 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. Majori-tatea sunt prezente sub o denumire sau alta în ambele aplicaţii:

1. Modul de profiling: Sampling - este o metoda de măsurare de mica acurateţe prin care o data la un anumit interval de timp se suspendă toate thread-urile aplicaţiei analizate şi profiler-ul obtine call stack-ul fiecărui 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 aplicaţia anali-zata, aceasta funcţionand foarte apropiat de performanţele ei normale. Dezavantajele sunt acurateţea mică a măsurătorilor şi lipsa hitcount-ului pentru funcţii. Opțiunea este prezentă în ambele profiler-e.

Tracing sau la nivel de metoda - aceasta este cea mai folosita metoda în care măsuratorile se fac pe baza notificărilor venite din partea CLR (Common Language Runtime) la intrarea respectiv ieșirea din funcţii.

Avantajele includ o acurateţe foarte

Initiere sesiune profiling pentru aplicatii standalone, ANTS Performance Profiler 6.3

Initiere sesiune profiling pentru aplicatii standalone, dotTrace Performance 4.5.1

Page 8: Today Software Magazine

8 no. 1/2012 | www.todaysoftmag.ro

mare a măsurării timpului petrecut în funcţii şi prezenta hitcount-ului pentru toate funcţiile.

Dezavantajul major este că influentează într-o măsura destul de mare performanţa aplicaţiei analizate.Opțiunea este prezenta în ambele profiler-e.

Notă: ANTS Performance Profiler are o optiune (activa by default) prin care se ajustează automat durata funcţiilor scăzând influenta estimată a profiler-ului asupra ex-ecutiei acestor funcţii.

La nivel de linie - acest mod pro-duce cele mai detaliate rezultate ce conțin informații legate de durata şi hitcount la nivel de linie de cod executată. Principalul dezavantaj este influenta majora adusă aplicaţiei analizate. Optiunea este prezenta în ambele profiler-e.

2. Metoda de măsurare: Wall time - reprezintă timpul total

scurs între intrarea şi iesirea dintr-o funcţie. Acest mod înregistrează inclusiv timpul în care thread-ul îl petrece în operaţii de sleep, wait, join etc.

CPU time (sau thread time) - în acest mod se înregistrează doar timpul în care un thread consuma efectiv procesor. Tim-pul petrecut în operaţii de sleep, wait, join nu sunt incluse în măsurătoarea finala a funcţiei.

3. Alte opțiuni Ajustarea timpilor pentru a compensa

influenta profiler-ului - daca opțiunea este activă, din durata măsurată a funcţiilor se scade automat durata estimată a influenței profiler-ului asupra executiei.

Nota asupra notatiei din tabel: Da* în-seamna preferința autorului între cele două oferte.

Obtinerea rezultatelor Cele două applicații au moduri diferite pen-tru a obtine datele de profiling între două momente de timp: ANTS Performance Pro-filer 6.3 are notiunea de timeline (linie a tim-pului), iar dotTrace Performance folosește noțiunea de snapshot.

ANTS Profiler timeline Timeline-ul trebuie să recunoaștem că este un control sofisticat şi spectaculos.

Acesta se actualizează în timp real pe măsura ce aplicaţia analizată rulează şi ofera informatii cum ar fi graficul încărcării procesorului, citiri/scrieri I/O, excepții şi evenimente UI ce au avut loc pe parcursul rularii.

Timeline-ul este interactiv, permițând selectarea de ferestre, zoom in/out, click pe exceptii şi evenimente pentru a obține informatii adiționale despre acesta cât şi salvarea selecțiilor (ferestrelor) sub forma de bookmark-uri.

Ferestre Selectarea unei ferestre pe timeline va actu-aliza datele colectate din fereastra de analiza pe intervalul determinat de fereastra. Fere-strele se pot construi astfel încât să cuprin-da o anumita operaţie, un spike CPU sau intreaga fereastra.

Selectarea unei ferestre în jurul unei anumite operaţii poate fi mai complicată decât pare, deoarece presupune memorar-ea/identificarea punctului în care a început operaţia. Succesiunea de acțiuni ar fi după cum urmeaza: suntem pe cale să executam o operaţie în aplicaţia analizată pentru care dorim să colectăm date de profiling,

marcăm timeline-ul (vizual sau cu o fereas-tra temporara de ex.) chiar înainte de a por-ni operaţia, dăm drumul la operaţie, la fi-nalul acesteia trasam fereastra de la punctul de pornire stabilit anterior pâna la sfârșitul timeline-ului (dacă marcarea punctului de început s-a făcut folosind o fereastra temporară, aceasta se poate extinde pâna 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-uriAcestea se salvează împreună cu salvarea datelor de profiling. Bookmark-urile sunt foarte utile atunci când vrem să revenim asupra unor rezultate de profiling salvate anterior şi dorim să revedem datele de profiling pentru anumite operaţii sau zone interesante. În absenta bookmark-urilor ar trebui să refacem selectiile (ferestrele) corespunzătoare operaţiilor căutate pe baza informatiilor din timeline (grafic CPU, evenimente etc.). Folosind bookmark-uri pentru a marca ferestrele relevante la mo-mentul î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 re-zolvat problema asta folosind notiunea de “snapshot” care structurează în mod auto-

Performanţa în aplicaţiile .NET

ANTS Performance Profiler 6.3

dotTrace Perfor-mance 4.5.1

Sampling Da Da

La nivel de metoda Da Da

La nivel de metoda (doar module cu cod sursa) Da Nu

La nivel de linie Da Da

La nivel de linie (doar module cu cod sursa) Da Nu

Ajustarea timpilor pentru a elimina influenta estimata a profiler-ului

Da Da

Wall time Da Da

Thread time Da Da

Tabela cu optiunile disponibile pentru cele doua profiler-e

programare

Page 9: Today Software Magazine

9www.todaysoftmag.ro | no. 1/2012

mat datele colectate pe intervale stabilite de către 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 operaţii bine delimitate

- colectarea de date este activa pe tot parcursul rularii (influentand performanţa aplicaţiei analizate).

dotTrace snapshot dotTrace Performance are un mod mai simplu de colectare a datelor sub forma de capturi (snapshot-uri). Astfel programa-torul 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 performanţei aplicaţiei analizate (notă: Impactul asupra aplicaţiei analizate în perioadele în care nu exista snapshot ac-tiv nu sunt zero. Procesul este instrumentat şi toate hook-urile active, doar colectarea şi structurarea datelor de profiling este sista-ta).

- colectarea de date pentru anumite operaţii se face usor (start/stop snapshot)

Dezavantaje: - snapshot-urile nu pot fi extinse sau

restranse (ca şi la timeline) 2. Analiza rezultatelorAmbele aplicaţii pun la dispoziția utilizato-

rului un arsenal de funcţionalități care să fa-ciliteze gasirea problemelor de performanţe ale aplicaţiilor analizate.

Exista elemente de bază, comune celor două profiler-e cum ar fi folosirea aceluiasi set de metrici (numar de apeluri, durata me-todelor incluzând sau nu duratele funcţiilor apelate în cadrul lor), evidențierea 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, posibili-tatile de căutare şi adnotare etc.

2.1 Moduri de vizualizare al rezul-tatelor

Grupate per thread Ambele aplicaţii afișează 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 (funcţii, durata, hitcount) cat şi al continu-tului, cele două profilere afisând aproxima-tiv acelasi stack (aceeași succesiune de me-tode).

Definiții: Call stacks - pentru fiecare thread sunt în-registrate toate call stack-urile exercitate de-a lungul executiei în cadrul acelui thread. Notă: ambele profiler-e filtrează me-todele 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 ape-late de aceasta. Notă: La dotTrace acest procentaj apare in-totdeauna î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 pro-cent, 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 arbores-centa doar ANTS Performance Profiler are această coloana.

Timpul impreuna cu metodele apelate (time with children) - vezi descrierea de la Procent mai sus.

Selectare sectiune din timeline pentru a obtine datele pentru intervalul respectiv

start colectare date

stop colectare date

Page 10: Today Software Magazine

10 no. 1/2012 | www.todaysoftmag.ro

Hitcount - reprezintă de câte 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 lângă modul default cu grupare per thread, sub forma arborescentă prezentat mai sus, fiecare profiler mai are şi alte mo-duri de prezentare/grupare al funcţiilor din rezultate.

Flat List Ambele au modul flat list în care funcţiile nu mai sunt grupate după vreun criteriu (cum ar fi per thread), ci sunt listate şi sortate după un anumit crtiteriu (ex. descrescător după durata, hitcount, nume). În acest mod se pot afla funcţiile 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 apărea 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 funcţie suspectă vom dori să “săpam” pâna ajungem la cauza prin-cipala a duratei acelei metode. În modul ar-borescent per thread se permite navigarea în jos deschizând rând pe rând funcţiile apelate.

Este o operaţie foarte comună ce poate deveni frustrantă dacă trebuie să mergem “din click în click” mai ales în situațiile î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 funcţia selectata.

Din păcate, în dotTrace Performance 4.5.1 nu exista o astfel de opțiune fiind nevoit să transpiri ceva mai mult pentru a ajunge jos, la baza stack-ului.

În ANTS Performance Profiler 6.3 pentru o anumită funcţie putem deschide modul grafic de reprezentare arborelui de apeluri avand metoda de pornire ca şi rădăcina.

Acest mod de vizualizare oferit de pro-filer-ul de la ANTS este unul care pe langa ca arată foarte bine, este şi foarte util în gasirea problemelor de performanţa. în plus este şi foare prietenos dpdv al modului de folosire, expandarea unui nod în funcţiile apelate din acesta facandu-se cu un singur click.

Modul grafic este lansat dintr-una din-tre celelalte două vizualizari (cel grupat per thread respectiv cel de tip lista) prin selec-tarea unei metode şi alegerea reprezentarii de tip call graph din meniul contextual. Pornind de la funcţia selectata, arborele de apeluri de metode poate fi expandat atat în jos inspre funcţiile apelate cat şi în sus afisand metodele apelante.

O optiune foarte utila va expanda au-tomat în jos arborele celor mai costisitoare funcţii 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 de-cat în varianta de vizualizare arborescenta

Performanţa în aplicaţiile .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

programare

Page 11: Today Software Magazine

11www.todaysoftmag.ro | no. 1/2012

rezultatele de profiling în modul flat list, dotTrace Performance 4.5.1

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

Modul grafic (doar la ANTS)

Page 12: Today Software Magazine

12 no. 1/2012 | www.todaysoftmag.ro

per thread. Adică metode care apar în ar-borele grafic de funcţii 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 aces-tei variante de afisare este faptul că există optiunea de a exporta graficul în format pdf sau imagine oferind un mod foarte facil de a împărtăși 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 informații şi duc în mod normal la aceleasi rezultate. Varianta de la ANTS face totuși arborele de apeluri mai usor de navigat (mai ales în cazul unor ierarhii stufoase) prin op-tiunile de “expandare cale costisitoare” şi posibilitatea de zoom in/out oferită.

Căutarea Cautarea unei metode este o funcţie destul de folosita pe parcursul analizei rezultatelor de profiling în special atunci când stim ex-act ce metoda urmarim sau când dorim să vedem efectele optimizărilor efectuate asu-pra anumitor metode.

La acest capitol dotTrace sta mai bine oferind un control de search avansat care prezintă o lista de sugestii de metode pe

măsura ce se tastează numele funcţiei cau-tate:

ANTS a preferat un control simplist, fără sugestii, fără cautare bazată pe names-pace.

Comparare de rezultate Doar dotTrace Performance 4.5.1

oferă posibilitatea de a compara rezultatele obținute în două sesiuni de profiling diferite prin funcţia de comparare a două snapshot-uri.

Este o funcţionalitate 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 ușor de inter-pretat ar trebui ca cele două snapshot-uri să fie cât mai apropiate dpdv al succesiunii de apeluri precum şi al numărului de apeluri.

În conditii optime rezultatul com-paratiei poate fi foarte util în a determina efectele unei eventuale optimizari asupra performanţei.

Posibilitati de adnotare/marcareO alta funcţionalitate oferită doar de dot-Trace Performance este cea de adnotare/marcare a metodelor. Utilizatorul poate adăuga comentarii pentru anumite metode şi poate scoate în evidență< o anumita me-toda prin schimbarea formatarii şi culorii.

Doar profiler-ul de la JetBrains ofera o astfel de funcţionalitate prin intermediul funcţiei de Adjust Time din meniul contex-tual pentru o metodă. Ajustarea se poate face reducand durata de la 100% la un pro-cent care reprezintă durata estimată a me-todei în urma unei eventuale optimizări. Ajustarea se poate aplica doar la stack-ul curent sau la toate stack-urile în care apare metoda respectivă.

3. Afectarea performanţei aplicaţiei analizate Ambele profiler-e influențează aplicaţia pe care o analizează în funcţie de modul de pro-filing folosit atat în termeni de performanţa cat şi de memorie.

În tabelul din dreapta se gasesc măsuratori de performanţa facute asupra unei aplicaţii de test (aplicaţia Demo din kitul de dotTrace Performance 4.5.1)

Din măsuratorile din tabel se pot trage câteva concluzii evidente:

- în modul sampling ambele profiler-e influentează nesemnificativ aplicaţia anali-zata

- în modul tracing (sau la nivel de me-toda) rularea cu dotTrace este durează ceva mai mult decat cu ANTS.

- cu modul de profiling la nivel de me-toda lucrurile stau foarte diferit, rularea cu dotTrace fiind de mai bine de 3 ori mai len-ta. De notat faptul ca se pot aplica filtre prin care se specifica ce module/clase/funcţii sunt incluse sau excluse din analiza la nivel de linie.

- urmatoarele două moduri sunt dis-ponibile doar la dotTrace Performance Pro-filer şi sunt foarte importante atunci când se doreste analiza unei anumite operaţii. În acest scenariu se poate opta pentru pornirea aplicaţiei în profiler fără însă a porni colec-tarea de date de profiling. Acest lucru face ca aplicaţia analizată să se “miște” mult mai bine (in modul tracing fiind semnificativ mai rapid decat ANTS). Avantajul acestui mod este şi mai evident atunci când pâna să se ajungă să se execute operaţia dorita au loc niste operaţii costisitoare ca timp de proc-esare (deschiderea unui fișier mare).

Influența asupra memoriei folosite de catre procesul analizat este şi ea semnifica-

Performanţa în aplicaţiile .NET

ANTS Performance Profiler 6.3

dotTrace Perfor-mance 4.5.1

Afisare rezultate arborescenta per thread Da* Da

Afisare rezultate de tip lista Da Da

Capabilitati de formatare si adnotare metode Nu Da

Drill down la nivel de metoda Da* Da

Cautare Da Da*

Comparare de rezultate Nu Da

Filtrare metode cu impact neglijabil Da Da

Posibilitatea exportarii rezultatelor in formate usor de transportat

Da Nu

Ajustarea duratei unei metode pentru a simula o optimizare

Nu Da

programare

Page 13: Today Software Magazine

13www.todaysoftmag.ro | no. 1/2012

tiva putând să ajungă la până de 3 ori mai mare decat în varianta fără profiler atașat. Asta inseamnă că profiling-ul aplicaţiilor mari consumatoare de memorie se poate termina cu excepții de tip Out Of Memory. Amble profilere au influență asupra memo-riei apropiata. O alta influență (nedocu-mentata) pe care profiler-ele o au asupra aplicaţiilor 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 până atunci nu s-au manifestat.

4. Complexitatea aplicaţiilor analizate Din experienta cu ambele profiler-e pot spune ca ANTS Performance Profiler 6.3 este mai limitat decât dotTrace Performance 4.5.1 în sensul că la anliza unor aplicaţii 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 interacțiunea utilizatorului.

De asemnea, în cazul aplicaţiilor complexe, profiler-ul de la ANTS ajunge câteodată să nu mai afiseze corect contro-alele din interfața (afisand un X roșu mare). A trebuit să recurg la dotTrace pentru a face profiling pe o astfel de aplicaţie.

5. Alte Criterii Profiling I/O şi SQL

- doar la ANTS Performance Profiler 6.3. Funcţionalitatea este oferita doar pen-tru sisteme de operare mai noi decat Win-dows XP şi doar în varianta Professional Portabilitatea rezultatelor şi analiza ulte-rioara

- ANTS oferă posibilitatea de a exporta un set intreg de rezultate de profiling în for-matele html şi xml. Se poate de asemenea exporta reprezentarea grafică a arborelui unei metode

- dacă se dorește transportarea rezul-tatelor î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 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 Perfor-mance 4.5.1 nu are din păcate opțiuni de atașare. Integrare cu Visual Studio

- ambele profilere se integrează cu Vis-ual Studio permitând lansarea sesiunii de profiling direct din IDE

6. Concluzie ANTS Performance Profiler 6.3 - 17 puncte dotTrace Performance 4.5 - 16 puncte

Ambele profiler-e vă vor ajuta cu suc-

ces să rezolvați problemele de performanţă din aplicaţiile dumneavoastra. Fiecare are puncte ei forte care nu se găsesc la cealaltă şi oferă funcţionalitatea de bază la nivele egale.

În funcţie de specificul aplicaţiei de analizat va veti putea orienta către una sau către cealaltă. Sfatul meu este să le incercati pe amândouă 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 locațiile de mai jos: dotTrace Performance Profiler 4.5: http://www.jetbrains.com/profiler/download/in-dex.html ANTS Performance Profiler 6.3: http://www.red-gate.com/products/dotnet-devel-opment/ants-performance-profiler/

Tipul Operatiei analizate fara profiler atasat: 10sANTS Performance Profiler 6.3

dotTrace Perfor-mance 4.5.1

Sampling 10,1 sec 11,7 sec

Nivel de metoda 50 sec 1:13 min

Nivel de linie 4:20 min 14:38 min

Nivel de metoda (fara colectare de date) N/A 36 sec

Nivel de linie (fara colectare de date) N/A 7:08 min

Influența asupra aplicaţiei analizate în diferitele moduri de profiling

ANTS Performance Profiler 6.3

dotTrace Perfor-mance 4.5.1

Profiling I/O si SQL Da Nu

Portabilitatea rezultatelor si analiza ulterioara Da Da*

Export html/xml al intregului rezultat Da Nu

Abilitatea de atasare la un proces Da Nu

Integrare cu Visual Studio Da Da*

Pret 595 EUR 569 EUR

Page 14: Today Software Magazine

14 no. 1/2012 | www.todaysoftmag.ro

Problemaefectelorsecundare

Ovidiu Deac

este un consultant software in-dependent specializat în meto-de de dezvoltare agile şi limbaje funcţionale.

În timpul liber practică înotul, alpinismul şi motocrossul.

Cunoscută şi sub acronimul OOP, programarea obiectuală a fost introdusă în anii ‘60, cu apariţia limbajului Simula67. E paradigma folosită de majoritatea firmelor de software. Limbaje cum ar fi Java, C#, C++, Python, Ruby sunt în topul preferinţele iar stilul de lucru “orientat pe obiecte” este cel mai popular.

OOP este o paradigma imperativă adică programul descrie felul în care se mod-ifica starea sistemului pe parcursul rulării aplicaţiei. Sistemul este modelat prin clase de obiecte. Fiecare clasa descrie ce variabile de stare au obiectele de tipul respectiv, ce proprietăţi au şi ce acţiuni putem face asupra lor. Prin încapsulare ascundem de-taliile de implementare şi astfel utilizatorul clasei este interesat exclusiv de interfaţa expusă de clasa respectivă. Putem modela astfel toate lucrurile din jurul nostru. Pare o abordare foarte naturală, dar totuşi sunt câteva probleme majore cu aceasta.

Problemele pornesc de la faptul că, în afara metodelor constante, funcţiile membru produc efecte secundare pentru ca ele modifica starea obiectului pe care sunt apelate sau stările altor obiecte la care au acces. Majoritatea codului OOP este scris astfel.

O funcţie ar trebui să returneze o valoare dar uneori aceasta produce efecte secundare care pot fi: modificarea unor structuri de date din afara funcţiei, interacţiune cu sistemul de operare/maşina virtuală (creare de fişiere, procese sau fire de execuţie), alocare sau dealocare de resurse, aruncarea excepţiilor etc.

O funcţie care nu produce efecte secundare şi nu e influenţată de exterior se numeşte “funcţie pură” si rezultatul ei depinde exclusiv de parametrii de intrare.

În cele ce urmează voi discuta despre problemele puse de funcţiile “impure” şi voi încerca sa arăt avantajele construirii aplicatiilor in principal pe funcţiilor pure.

TestareaVariabilele globale mutabile folosite în cod sunt, în general, o sursa de probleme. In-diferent ca ele sunt simple variabile globale sau obiecte singleton, în esenţă reprezintă acelaşi lucru: date mutabile accesibile din mai multe locuri. Acest cod este foarte greu de testat şi de înţeles pentru ca valoarea unei variabile se poate schimba pe neaşteptate. Astfel pot apărea nenumărate căi de execuţie care nu sunt evidente şi pe care pentru a le putea înţelege trebuie sa parcurgem cod din afara funcţiei respective.

Mai mult, putem spune că, în general, o funcţie care are efecte secundare este greu de testat deoarece comportamentul sistemului depinde de ordinea în care sunt produse efectele secundare deci pentru a testa funcţia trebuie sa o testăm în toate scenariile posibile în care ar putea fi apelată alături de celelalte funcţii care produc efecte secundare de tipul respectiv.

Îmbunătăţirea testabilităţii sistemului se poate face folosind predominant funcţii pure. Acestea sunt de multe ori trivial de testat pentru că nu necesita un set-

programare

Page 15: Today Software Magazine

15www.todaysoftmag.ro | no. 1/2012

up/teardown pentru că nu depind de com-ponente externe. Rezultatul produs depinde exclusiv de parametrii de intrare.

ParalelismulÎn momentul în care un obiect este accesat concurent din mai multe fire de execuţie avem nevoie de un mecanism de sin-cronizare.

Ideal ar fi ca firele de execuţie să fie total independente, altfel sincronizarea va face ca sistemul sa nu fie folosit la capaci-tate maximă. Orice interacţiune între ele încetineşte sistemul. Alta problema este coerenţa cache-urilor în cazul în care pro-cesoare diferite împart date mutabile. Mai mult, dacă avem un sistem distribuit prob-lema e şi mai dificilă deoarece costurile de sincronizare sunt foarte mari.

Un alt aspect este dificultatea de a scrie şi de a înţelege un cod care rulează pe mai multe fire de execuţie. Bugurile de sin-cronizare sunt poate cele mai dificile fiind sunt de multe ori surprinzătoare şi greu de reprodus.

Ideal ar fi ca obiectele folosite din mai multe fire de execuţie sa fie imutabile iar datele transmise thread-ului prin mesaje as-incrone. Astfel programatorul nu se loveşte de complexitatea lucrului cu primitivele de sincronizare ci lucrează la un nivel mai înalt şi mai uşor de înţeles.

Paternul acesta este cunoscut sub nu-mele de “thread pool pattern”. Fiecare work-er-thread primeşte un mesaj care descrie jobul pe care îl are de făcut, şi returnează un rezultat pe care îl pune în alta coada. Este esenţial 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 stand-ard a limbajului folosit, problemele noas-tre sunt rezolvate. Putem scrie relativ uşor o aplicaţie paralelă sau una distribuită, datorită în primul rând faptului ca worker-ul nostru nu produce efecte secundare. El produce doar un rezultat.

Să mergem mai departe şi să presu-punem 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-

siv faptul că nu trebuie sincronizate firele de executie constituie un avantaj important.Execuţia asincronăÎn multe situaţii avem nevoie să executăm o anumită secvenţă asincron. Apelul asincron va primi pe lângă parametrii normali şi o funcţie 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ă operaţiile.

Ordinea este importantă tocmai din cauza faptului ca funcţiile 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ă cât durează calculul şi nici ordinea în care se fac calculele respective atâta timp cât rezul-tatele sunt disponibile când e nevoie de ele. Astfel în cazul unui apel asincron obţinem un rezultat de tip “promisiune” (future) care va fi folosit probabil pentru calculul unui alt future etc.

OptimizareaTeoria spune ca optimizarea ar trebui făcută după ce funcţionalitatea dorită e implementată dar unele optimizări sunt foarte dificil de făcut dacă codul scris se bazează pe efecte secundare.

În urma măsurătorilor tragem con-cluzia că se justifică sa apelăm o funcţie f în paralel. Dacă implementarea funcţia f este pură schimbarea din execuţie secvenţială în execuţie paralelă este mult mai simple comparativ cu situatia cand f produce efecte secundare. De asemenea, funcţiile pure ne dau posibilitatea de schimba relativ uşor anumite calcule din sincron în asincron faze târzii ale dezvoltării aplicaţiei.

Pe lângă paralelizare şi execuţie asincronă putem face uşor şi alte optimizări cum ar fi execuţie lazy sau memoizare.

Execuţia “lazy”În unele situaţii dorim să nu executăm un anumit calcul decât dacă este într-adevăr nevoie de acesta, de exemplu încărcarea unui modul să fie facută doar la nevoie (adică “evaluare lazy”).

Dacă încărcarea modulului produce efecte secundare aceasta optimizare poate fi dificil sau chiar imposibil de făcut.

În concluzie pentru a face un anu-mit calcul lazy în fazele târzii ale scrierii aplicaţiei, mai exact în faza de optimizare, este esenţial ca acesta sa nu producă efecte secundare deci calculul respectiv să fie făcut de o funcţie pură.

MemoizareaO alta optimizare frecvent întâlnită este “memoizarea”. Aceasta se aplică în cazuri în care o anumită funcţie e apelată de multe ori cu aceeaşi parametrii. Memoizarea se face prin stocarea rezultatelor calculate şi la apelul următor făcut cu aceeaşi parametrii în loc să refacem calculul returnăm rezul-tatul calculat anterior. Aceasta optimizare poate fi convenabilă în situaţiile în care apelurile se fac repetat cu un anumit set de parametrii iar căutarea rezultatului între re-zultatele calculate anterior este considerabil mai rapidă decât calculul respectiv.

Dacă funcţia care face calculul cu pricina are efecte secundare memoizarea nu se poate face. În schimb în cazul unei funcţii pure aceasta este aproape trivială.

ConcluzieProblema programării orientate obiect vine de la filozofia ei că obiectele îşi modifica starea în timp. Aplicaţiile sunt construite în mare parte pe funcţii care produc efecte se-cundare, întregul concept de efect secundar fiind tratat superficial în OOP şi în progra-marea imperativă în general.

Dacă s-ar da atenţie mai mare efectelor secundare produse de funcţii codul rezultat ar fi mai simplu, mai robust, mai uşor de pa-ralelizat şi de optimizat.

În articolele următoare din serie vom discuta despre programarea funcţională care diferă de programarea imperativă toc-mai prin felul în care abordează problema efectelor secundare.

Page 16: Today Software Magazine

16 no. 1/2012 | www.todaysoftmag.ro

The Good, the Bad and the Ugly

Ovidiu Deac

este un consultant software in-dependent specializat în meto-de de dezvoltare agile şi limbaje funcţionale.

În timpul liber practică înotul, alpinismul şi motocrossul.

Această serie de articole se vrea o comparație între diverse limbaje de progra-mare. În fiecare număr al revistei voi incerca să acopar un spectru cât mai larg și să arăt mici probleme rezolvate în limbaje diferite. Problemele alese vor fi relativ simple, scopul fiind sa ne concentrăm asupra posibilitaților diferitelor limbaje com-parându-le intre ele. Chiar dacă sintaxa unui limbaj sau altul vă este nefamiliară, ideea este să intelegeți modul de abordare al problemei, specific fiecărui limbaj în parte. Astfel le putem pune în balanța plusurile și minusurile.

În numărul acesta vom rezolva problema folosind Java, Python 3 și Haskell. Alegerea limbajelor a fost facută astfel încât 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, fără îndoială, un limbaj de referință.

Al doilea limbaj pe care îl vom folosi astăzi este Python 3, care cu toate că este tot un limbaj imperativ, prin faptul că e dynamic-typed și prin tehnicile de progra-mare funcțională pe care ni le pune la dispoziție, combinate cu cele orientate-obiect ne dă o perspectiva diferită.

Al treilea pe listă, fără sa fie cel din urmă, este Haskell. Acesta e totul și cu totul diferit de celelalte două. În primul rând este un limbaj pur funcțional, efectele secundare produse de funcții fiind specificate în tipul acestora. Apoi este un lim-baj static-typed dar cu type-inference. Aceasta înseamnă ca în majoritatea cazurilor declarațiile de tipuri pot lipsi.

ProblemaSă se scrie un interpretor de comenzi minimal care să citească de la standard input comenzi și să afișeze rezultatul lor. Comenzile acceptate sunt ls și cat

ls• listează conținutul directorului• afișează un mesaj de eroare dacă primește mai mult de un parametru• dacă nu primește parametrii listează directorul curent

cat• - dacă nu primește nici un parametru afișează mesaj de eroare• - dacă primește unul sau mai mulți parametrii afișează conținutul fișierelor

primite astfel fișier1:... fișier2:...

Programul se va termina când utilizatorul apasă Ctrl+C sau când va închide fișierul de intrare (Ctrl+Z pe windows respectiv Ctrl+D pe Linux)

programare

Page 17: Today Software Magazine

17www.todaysoftmag.ro | no. 1/2012

JavaUrmează 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 lipsește doar secțiunea 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 următoare este necesară deoarece biblioteca standard nu are o funcție care să facă join la o lista de String. Funcții similare există în biblioteci third-party dar m-am limitat doar la biblioteca standard.

Page 18: Today Software Magazine

18 no. 1/2012 | www.todaysoftmag.ro

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ă interfața 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 + “’”; } }}

The Good, the Bad and the Uglyprogramare

Page 19: Today Software Magazine

19www.todaysoftmag.ro | no. 1/2012

Python 3Implementarea î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 fe-lul î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 puțin clare.

În primul rând, pentru că e un script executabil fișierul incepe cu #! ca orice script linux executabil. Astfel scriptul îl putem rula din linie de comandă în felul următor: $ ./shell.py

...iar interpretorul de comenzi va știi că la rularea scriputul trebuie să folosească python3 instalat pe mașina respectiva.

#!/usr/bin/env python3

PROMPT = “>”Mai jos e funcția main care iterează peste liniile din stdin. Observați că funcția prompt este inner în cadrul main, deoarece este singurul loc în care e folosită. Pentru a evita coliziunile de nume, e bine să limităm scopul funcțiilor.

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 jos funcția split_cmd returnează un tuplu cu două valori care sunt despachetate de către apelator. În continuare se face o căutare în dicționarul CMD_MAP după numele comenzii. Dacă acesta e găsit în CMD_MAP se obține funcția 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)

Funcția ls primește *args ceea ce înseamnă că variabila args este un tuplu și va conține un număr variabil de elemente, care vor fi parametrii cu care a fost apelata funcția.

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) Funcția join a clasei string, care e apelată mai sus, unește 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}

Mai sus CMD_MAP este un dicționar în care cu cheia “ls” e aso-ciata funcția ls iar cu cheia “cat” e asociată funcția cat. Se vede că funcțiile sunt folosite ca și niște variabile normale. În momentul în care sunt apelate se folosește sintaxa “nume_functie(param1, param2, param3)”.

try: main()except KeyboardInterrupt: print() exit(1)

Codul de mai sus face apelul la funcția main și tratează Ctrl+C și returnează codul 1 dacă s-a ieșit cu Ctrl+C. Faptul că l-am pus în afara funcției main e doar o chestie de preferințe. Eu prefer sț lu-crez așa pentru că funcția exit închide programul imediat și prefer să limitez folosirea lui exit în afara funcției main

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

Page 20: Today Software Magazine

20 no. 1/2012 | www.todaysoftmag.ro

Codul Haskell rezultat conține cca 1200 caractere împărțite 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ă conțină o funcție main:

module Main where

import System.IOimport Data.Listimport Data.String.Utilsimport System.Directory

Aceasta e funcția main, care are implicit tipul “IO () adica nu returnează nimic ci doar produce efecte secundare de tip IO”.

După cum se vede funcția este o înșiruire de acţiuni, separate prin unul dintre operatorii >> sau >>=. Diferența intre cei doi operatori este că >>= ia rezultatul acțiunii anterioare și îl pasează acțiunii următoare ca și parametru de intrare, în stil “pipeline”. Deci mai jos spunem că funcția main se obține prin compunerea funcțiilor următoare, putStrLn, prompt, getLines, mapM_, putStrLn. Având în vedere că acestea sunt “actiuni”, deci produc efecte secundare, operatorii >> respectiv >>= le compun astfel încât să țină seama de ordinea de execuție.

O funcție interesantă care apare în main este funcția getLines. Ea nu primește zero parametrii și returnează o listă de linii citite de la tastatură. E foarte important faptul ca, că majoritatea funcțiilor din haskell, sunt funcții “lazy”. Aceasta înseamnă că nu așteaptă să citeasca toate liniile din stdin ci fiecare linie citita e dată mai departe pentru procesare.

Ar mai fi de comentat asupra funcției mapM_. Aceasta este o funcție din familia map și primește doi parametrii: o acțiune și o listă de obiecte. Acțiunea este executată pentru fiecare element din listă. Primul parametru al funcției mapM este funcția process iar al doilea este listă de linii returnată de getLines.

main = putStrLn “Ctrl+C to exit” >> prompt >> getLines >>= mapM_ process >> putStrLn “”

Mai jos e declarată funcția process ca fiind o compunere de funcții. Sintaxa run.word.strip, exact ca și compunerea din matematică, înseamnă că funcția strip se apelează cu un parametru de intrare , funcția words se apelează cu rezultatul returnat de strip iar apoi funcția run se apelează cu rezultatul returnat de words.

Funcția process nu are nici un tip declarat, dar fiind o functie compusă tipul se poate deduce ușor. Primește la intrare aceiași parametrii ca funcția strip și returnează ce returnează funcția run. În concluzie process primește un string și nu returnează nici o

The Good, the Bad and the Uglyprogramare

valoare pentru ca run are tipul “IO ()”. În schimb știm că are un efect de tip IO. Deci semnătura funcției process este “process :: String -> IO ()”. În cod, pentru ca nu am considerat că e nevoie de semnatură pentru a înțelege funcția am ales să nu o declar și să las compilatorul să facă inferența de tipuri.

process = run.words.strip

Funcția getLines se compune oarecum asemănător cu funcția main. Diferența este că de data aceasta avem funcția lines, care e o funcție pură, pe care o apelăm peste rezultatul unei acţiuni, funcția getLines. Funcția getContents, fiind o funcție cu efecte de tip IO se execută “în monada IO”. Rezultatul ei nu poate fi pasat funcției lines pentru că aceasta este în afara monadei IO, fiind o funcție pura. Pentru a putea face apelul compunem funcția lines cu funcția return, obtinând astfel o funcție în monada IO care poate primi rezultatul funcției getContents.

getLines = getContents >>= (return.lines)prompt = putStr “>” >> hFlush stdout

După cum se vede pentru funcția run am considerat că semnat-ura ei ar face codul mai ușor lizibil așa că funcția e insoțită de declarația de tip.

run :: [String] -> IO ()run cmd = execute cmd >>= putStrLn >> prompt

Funcția joinLines, după cum se vede primește un parametru de tip listă de String și returnează un string. Totuși în declarația functiei nu apare nici un parametru. Motivul este faptul că funcția join primește doi parametrii. Primul dintre ei este separatorul și al doi-lea este lista de șiruri care sunt alăturate. Daca join este apelată partial cu un singur parametru obținem o funcție care așteaptă al doilea parametru și apoi face apelul efectiv la join.

joinLines :: [String] -> StringjoinLines = join “\n”

Mai jos e definita funcția “execute” printr-o serie de ecuații care acoperă diverse condiții de apelare a funcției. Sintaxa aceasta se poate folosi ca alternativă la instructiunea if. Așadar, dacă para-metrul apelat se potrivește cu unul dintre cele 3 pattern-uri se va executa ecuația corespunzătoare. După cum se vede, avem 3 cazuri: în care primul element din lista este “ls”, situația în care primul element este “cat” și restul.

execute :: [String] -> IO Stringexecute (“ls”:params) = ls paramsexecute (“cat”:params) = cat paramsexecute _other = return “Bad command”

Funcția ls se definește la fel ca execuție, cu mai multe ecuaţiile. 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ă ecuaţiile sunt încercate în ordine ecuaţia a treia este executată doar când celelalte doua nu s-au potrivit.

Page 21: Today Software Magazine

21www.todaysoftmag.ro | no. 1/2012

Ar mai fi de notat funcția catch care primeste doi parametrii: o functie de executat și un handler de excepții. Ea executa funcția și în caz ca s-a aruncat o eroare de tip IOError execută handlerul. În cazul nostru handlerul este o funcție anonimă, numita și “funcție lambda”. Sintaxa pentru definirea funcțiilor lambda este “\ param1, param2, ...,paramN -> cod”. Deoarece nu ne interesează ce excepție s-a prins parametrul de intrare este _ls :: [String] -> IO Stringls [] = ls [“.”]ls [dir] = catch (getDirectoryContents dir >>= return.joinLines.sort) (\_ -> return $ “Could not read ‘” ++ dir ++ “’.”)ls (dir:extraParams) = return “Too many parameters.”

În funcţia cat, fiind mai complexă avem nevoie sa definim nişte funcţii locale sau funcţii “inner”. Acestea sunt definite în clauza where. Blocul where este delimitat tot prin indentare. După cum se vede și funcţiile inner pot avea la rândul lor blocuri where.Funcţiile inner au acces la toate numele definite în namespace-ul funcţiei părinte. Astfel funcţia formatOutput are acces la parametrul path al funcţiei părinte catOneFile. De asemenea ar putea avea acces și la parametrul files al funcţiei bunic cat la nevoie.cat :: [String] -> IO Stringcat [] = 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

ÎncheiereAștept ca cititorii să trimită părerea lor pe email la [email protected], să comenteze și să voteze pentru fiecare soluție cu unul dintre cele trei tipuri de voturi: good, bad, ugly.

Page 22: Today Software Magazine

22 no. 1/2012 | www.todaysoftmag.ro

Interviuechipa românească finalistă Microsoft Imagine Cup

Rubrica „Interviu” din primul număr al revistei ne-a dat ocazia să întâlnim şi să cunoaştem mai bine o echipă de tineri studenţi clujeni, campioni naţionali şi finalişti internaţionali în competiţia Microsoft Imagine Cup. Numele echipei este Simplex, membrii ei sunt Alina Călin, Andrei Cantea, Andrei Dascălu, Cosmin Mi-haiu şi mentorul acestora Lect. Dr. Dan Suciu. Pe parcursul a două întâlniri, am discutat ce înseamnă această competiţie, cum au ajuns să participe, ce au realizat și cine i-a susţinut, au împărtăşit momente memorabile, întâlniri impresionante, modul în care au crescut personal şi profesional. Mai mult, am avut ocazia să ve-dem o demonstraţie a proiectului lor şi să le descoperim latura de dezvoltatori şi antreprenori, aflaţi la început de drum, hotărâţi să concretizeze iniţiativa lor într-un produs real pe piaţă.

Acest articol îşi propune să prezinte succint competiţia şi experienţa Imagine Cup, urmând să insistăm mai mult pe detalii despre proiect, planurile de viitor şi evoluţia către mediul de business. Dacă doriţi să aflaţi mai multe, vă invităm să ii urmăriţi mai pe larg într-un interviu video la adresa: www.todaysoftmag.ro

Imagine Cup este cea mai mare competiţie internaţională pentru studenţi, organizată de către Microsoft şi are scopul declarat: „Imagine a world where tech-nology helps solve the toughest problems” (eng. „Imaginează-ţi o lume în care tehnologia ajută la rezolvarea celor mai grele probleme”). Aflată la a noua ediţie, impresionează prin dimensiune: 358.000 de studenţi participanţi din 183 de ţări/regiuni, dintre care peste 400 de finalişti din 70 de ţări.

România este o prezentă de tradiţie, iar anul acesta a ocupat locul cinci în lume, ca şi număr, cu peste 800 de participanţi, împărţiţi pe secţiuni: 120 participanţi (IT Challenge); 3 echipe (Digital Media); 4 echipe (Embedded Development); 3 echipe (Windows Phone 7); 3 echipe (Game Design). Nu doar numărul, ci şi performanţele de anii trecuţi: Software Design - echipa Sytech - aur în 2009; IT Challenge - Cos-min 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 ediţia 2011, iar acestea au confirmat cu bronz – echipa En-deavour_Design (Emmbedded Development), aur echipa M.N.A (Digital Media) şi un loc în primele 6 finaliste din runda finală a secţiunii principale a competiţiei, Software Design, pentru echipa Simplex.

Prezenţa şi performanţele constante se datorează excelentei promovări făcută de Microsoft la nivel naţional prin programul academic, susţinerii din interiorul universităţilor prin implicarea mentorilor şi în primul rând nivelului, ridicat cali-tativ, impus de echipele participante. După cum declarau şi membrii echipei Sim-plex: “chiar a fost bine organizat concursul local [..] şi multe echipe erau încura-jate să participe” (Andrei Cantea), “faza naţională a impus un standard destul de

interviu

Marius Mornea

Fost senior software develo-per in cadrul Nokia, în prezent fondatorul platformei Mintaka Research

Page 23: Today Software Magazine

23www.todaysoftmag.ro | no. 1/2012

ridicat” (Andrei Dascălu), “echipa de pe locul doi a fost poate mai bună decât alte echipe de la mondiale” (Andrei Cantea), iar feedback-ul constant din partea juriului şi mentorului, care prin sfaturile sale i-a aju-tat “să nu luăm chiar toate deciziile greşite” (Cosmin Mihaiu), construiesc o atmosferă ce încurajează performanţa şi calitatea, in-grediente ce vor asigura cu siguranţă suc-cese viitoare.

Sunt succese ce merită tot efortul de-pus, ne asigură membrii echipei Simplex, care ne povestesc entuziasmaţi câteva din momentele memorabile ale experienței. Pornind de la aterizarea la New York şi ca-zarea la hotelul Mariot din Times Square (toate aspectele logistice fiind asigurate de către Microsoft), pană la întâlnirea cu Steve Balmer (CEO Microsoft), căruia cei patru au avut norocul să ii facă o demonstraţie personală a proiectului, interacţiunea cu alte nume mari din industrie (Jonathan Perera, fost GM Microsoft, actualmente VP Adobe), cina şi drumul cu limuzina în com-pania altor doi VP Microsoft, dar şi recom-pense materiale (câte un Windows Phone 7 şi o licenţă BizSpark menită să susţină startup-urile cu toate produsele Microsoft necesare), premiile de 25000$, 15000$ şi 5000$ pentru locurile 1, 2, 3. O experiență bogată în trăiri şi amintiri unice, ce i-a aju-tat să crească foarte mult atât individual, cât şi ca echipă.

Cu toate acestea, experienţa Imagine Cup nu se termină odată cu competiţia, din contră pare să fie abia primul pas. Să aruncăm în continuare o privire mai detaliată asupra aplicaţiei şi asupra paşilor următori:Ce este MIRA?„Medical Interactive Recovery Assistant” (eng. Asistent Medical de Interactiv de Re-cuperare) cu care vrem să ajutăm persoane care suferă de handicap locomotor tem-porar, persoane care de exemplu au avut un atac cerebral, sau o fractură a mâinii, a unui membru, să treacă prin perioada de recuperare, de redobândire a reflexelor şi a mişcărilor care într-o vreme erau foarte simple, mult mai uşor şi mai interactiv. Pen-tru asta am folosit un device (eng. dispozi-tiv) nou, la vremea respectivă, de la Micro-soft, şi anume Kinect, cu care să îl implicăm

pe utilizator, practic un pacient, în jocuri simple, dar cu scop de recuperare.” Cosmin Mihaiu

„MIRA de fapt este compusă din două părţi, partea destinată doctorului şi partea destinată pacienţilor care se recuperează. Doctorul, are următoarele beneficii prin această aplicaţie : managementul pacienţilor, managementul programărilor şi cea mai importantă parte sunt statisticile, prin care poate să vadă evoluţia pacienţilor. Când vine pacientul să se recupereze, doc-torul îi porneşte o aplicaţie şi pacientul se joacă, dar în acelaşi timp face exerciţii de recuperare. Pacientul poate nici nu observă, dar se stochează fiecare mişcare şi asa doc-torul poate să vadă evoluţia.” Andrei Dascălu

Competiţia s-a terminat, dar voi ce planuri de viitor aveţi cu aplicaţia? Alter-native ar fi ca şi plan de carieră: să începeţi pe cont propriu (să faceţi o firmă), să vă angajaţi la o firmă pe plan local, să mergeţi undeva afară, cu Imagine Cup pe CV aţi putea face şi asta.. cam ce alegeţi voi să faceţi?

„La finala mondială s-a ridicat între-barea asta, [..] ce facem? Era îndrumătorul nostru, domnul Dan Suciu cu noi, mai erau şi alte persoane, şi am ajuns la un moment dat să avem discuţia că: acuma ne putem angaja, să stăm doi ani într-o companie, vedem cam cum stau lucrurile, şi după aia dacă nu ne convine ne reîntâlnim, ne facem un business, noi pe cont propriu.. sau a doua variantă, să începem să facem un startup, să ne dezvoltăm produsul, să îl lansăm pe piaţă, să vedem ce se întâmplă. Majoritatea persoanelor au zis că <<sunteţi la vârsta la care vă puteţi permite să faceţi asta, adică acuma ii vremea să riscaţi, că nu aveţi nimic de pierdut>>” Cosmin Mihaiu

„Am zis că încercăm, să vedem ce iese. Acum muncim ca să ajungem pană la prima versiune, să intrăm în faza de testare clinică, să vedem ce impact are aplicaţia as-upra pacienţilor, să vedem dacă întradevăr din statistici reiese o evoluţie în recuper-area lor şi dacă ne iese continuăm, dacă nu urmăm un alt drum. [..] Bineînţeles suntem motivaţi şi acuma, mai ales că de vreo două săptămâni am şi testat aplicaţia pentru vreo

două zile, la un spital din Bucureşti, şi chi-ar am fost motivaţi să vedem multi copii jucându-se şi fiind fericiţi” Andrei Dascălu

Pomeneaţi de teste clinice, voi aveţi nevoie de o validare din partea medicilor ca să dovediţi că merge procesul. Ce feed-back aveţi pană acuma?

„Feedback pozitiv, [..] toţi doctorii sau kinetoterapeuții ne-au dat feedback pozi-tiv şi ne-au spus că suntem pe drumul cel bun. [..] toţi au fost plăcut surprinşi şi ne-au dat feedback ce ar avea nevoie, ce să mai facem în plus. Microsoft România nu ne-a uitat după faza naţională şi ne susţine, şi prin intermediul lor am ajuns la centrul de recuperare din Bucureşti. Avem norocul că şi acolo este un doctor, Adrian Oprea, care este foarte entuziasmat de soluţia noastră şi ne ajută. Vrea să ajungem departe cu ea şi cu el tot vorbim şi colaborăm, 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 uităm că spitalul chiar a primit din partea Microsoft România un laptop şi un Kinect, şi am instalat progra-mul nostru, pe dispozitivul respectiv, ur-mând ca ei să înceapă recuperarea.” Andrei Dascălu

În ideea în care ştiu că alţi câştigători au avut ocazia să prezinte: preşedintelui, parlamentului european, etc, mă întrebam dacă similar aţi fost la conferinţe de presă sau alte asemenea ocazii?

„Imediat după ce ne-am întors de la Imagine Cup am fost contactaţi de presa din România, am apărut şi la ProTV şi la TVR, dar la începutul lui decembrie Mi-crosoft România a organizat o conferinţă: „Competiţia în IT”, la care au venit şi per-soane din politică, angajate la guvern, şi s-a vorbit foarte mult despre competiţia IT în România, iar noi am fost o aplicaţie practică, o demonstraţie a faptului că încă există idei software care pleacă din România, nu vin din străinătate” Cosmin Mihaiu.

Pe când v-aţi planificat să aveţi un re-

Page 24: Today Software Magazine

24 no. 1/2012 | www.todaysoftmag.ro

lease (eng. lansare pe piaţă)?„Când simţim că am ajuns la un produs

care poate fi întradevăr pus în spitale pentru recuperare [..] noi susținem că în toamnă să putem intra pe piaţă.” Cosmin Mihaiu

Sună bine şi experienţa, sună bine şi dezvoltarea ulterioară, se pare că v-aţi găsit o preocupare pentru următorii ani, cel puţin [..] aveţi sfaturi pentru studenţii care vin din urmă, către următoarele generaţii?

„Merită! Da! Definitiv! Noi anul trecut pe vremea asta ştiam că vrem să participăm, nu neapărat să ajungem să avem un pro-dus în care să credem 100% că va ajuta o mulţime de oameni, ci vroiam să ajungem la New York.” Cosmin Mihaiu

„Să avem ceva în istoria noastră de studenţi, să nu creadă că am trecut prin facultate şi nu am făcut nimic. Am zis că încercăm.” Andrei Dascălu

„Exact! Și în timp ce dezvolţi aplicaţia, şi cu Caregamer a fost asa, şi cu MIRA a fost așa, în timp ce o dezvolţi să ajungi să crezi în ea.. să crezi că aplicaţia 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 ajutăm cu ceva sfaturi, care abilităţi le-aţi dezvoltat între timp sau le-aţi folosit cel mai mult în competiţie?

„În competiţia Imagine Cup ei pot să înveţe ce înseamnă echipa, ce înseamnă competiţia, 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ă competiţia înveţi să crezi în ideile tale şi te motivează ca să ţi le pui în practică.” Andrei Dascălu

„Imagine Cup prin definiţie e un con-curs care iţi dezvoltă toate abilităţile, lucrul în echipă, trebuie să ştii să faci o prezentare, trebuie să ştii cum să lucrezi, să iţi organizezi timpul, pentru că cu siguranţă cel mai mare inamic al concursului e timpul. Niciodată nu reuşeşti să dezvolţi aplicaţia așa cum vrei şi să iţi ajungă şi timpul, şi atunci trebuie să începi să iţi gestionezi priorităţile ast-fel încât să te încadrezi în timpul necesar pentru fiecare deadline. [..] Ajungi efectiv să te gândeşti şi din punct de vedere busi-ness, pentru că la urma urmei tu trebuie să

iţi prezinţi ideea în faţa unor persoane care ştiu ce înseamnă business, atât din punct de vedere IT, cât şi din punct de vedere al unui startup. Deci pe toate planurile ajungi să lu-crezi.” Cosmin Mihaiu

Care ar fi cele mai importante trei lu-cruri la care trebuie să fie atenţi sau să şi le pregătească cel mai bine?

„Locul trei pun timpul, trebuie ges-tionat cumva să iţi impui toate lucrurile şi să treci prin toate la timpul lor. Trebuie să creadă în soluţie, dacă unul din membrii nu crede în soluţie, atunci toată echipa poate să cadă, pentru că toţi trebuie să lucreze ca o echipa. E ca la o maşină cu patru roți, dacă o roata nu există.. degeaba.” Cosmin Mihaiu

„Prezentarea are cea mai mare influență asupra juriului, 80% din notă este prezentarea.” Andrei Dascălu

„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 făcută bine.” Andrei Cantea

Ce v-a unit ca o echipă?„Faptul că suntem toţi diverşi. 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ă fără să se discute cu ceilalţi. Am lucrat şi vom lucra în continuare ca o echipă, pen-tru că până acum asta ne-a adus succesul şi nu are rost să renunţăm la ea.” Cosmin Mi-haiu

Până la urmă asta e Imagine Cup, se formează echipe care pot să rămână şi în viitor să dezvolte şi alte aplicaţii de succes. Sperăm!” Andrei Dascălu

„Credinţa!” Andrei Cantea

In concluzie Imagine Cup este oca-zia perfectă de a face cunoştinţă cu lumea de business, de a construi o echipă şi de a învăţa cum să duci la capăt un proiect în care crezi şi pe care ai ocazia să îl prezinţi în faţa unor nume mari din industrie. Mai mult, ulterior interviului, am aflat de pe blogul competiţiei, că Microsoft lansează programul Imagine Cup Grants, care cu un buget de 3 milioane de dolari, pe următorii 3 ani de zile, îşi propune să susţină finan-

ciar startup-uri din rândul proiectelor final-iste. Patru echipe au primit deja finanţare şi au avut ocazia să îşi prezinte proiectele într-o întâlnire cu Bill Gates şi Brad Smith. De aceea recomandăm tuturor studenţilor să profite de această ocazie, Imagine Cup dovedindu-se în egală măsură o experiență minunată, dar şi o rampă de lansare în carieră şi mediul de afaceri.

Interviu echipa românească finalistă Microsoft Imagine Cup

programare

Page 25: Today Software Magazine

25www.todaysoftmag.ro | no. 1/2012

Page 26: Today Software Magazine

26 no. 1/2012 | www.todaysoftmag.ro

StartUpsMintaka Research

Mintaka Research este, pe scurt, o platformă colaborativă online de cercetare şi dezvoltare interdisciplinară, având scopul declarat de a reuni cercetarea, mediul de afaceri şi educaţia într-un efort comun şi de a oferii servicii menite sa faciliteze cooperarea, construirea de relaţii şi comunicarea între competenţe din medii şi do-menii 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 împărtăşi cunoştinţele acumulate cu mediul academic şi cel de afaceri, asigurând în acest fel atât continuitate, cât şi noi oportunităţi de a introduce inovaţiile 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 înţelege mai bine conceptul începem cu ideile de la care a pornit totul şi contextul în care au luat naştere acestea.

Prima idee a plecat de la o nevoie deseori întâlnită în mediul de afaceri IT: nevoia de specialişti. Aceştia sunt o resursă care ridică o serie de dificultăţi manage-riale: în primul rând costul financiar ridicat şi durata extinsa necesară recrutării sau pregătirii lor (în cazul în care piaţa muncii nu oferă resurse în domeniul de interes); în al doilea rând nivelul de utilizare fluctuant (în general specialiştii sunt necesari în faza de concepţie şi arhitectură, precum şi în soluţii de optimizare şi performantă), perioadele de angajament maxim alternând cu perioade lipsite de activitate. Ca ur-mare a acestor dificultăţi predomină două abordări: angajarea/pregătirea unui spe-cialist şi folosirea lui pe durate scurte la capacitate maximă, în rest fiind alocat pe activităţi de rutină; sau asumarea rolului de specialist de către un membru al echipei, ceea ce duce de cele mai multe ori la creşterea duratei necesare şi o scădere a nive-lului calitativ. O a treia soluţie, mai puţin prezentă pe piaţa locală, este antrenarea specialiştilor în servicii de consultantă, lucru ce duce la soluţionarea dificultăţilor de mai sus atât din perspectiva angajatorului cât şi al specialistului. Fără a intra într-o dezbatere, presupunem că lipsa serviciilor de consultantă se datorează atât nivelului de maturitate relativ scăzut al pieţei, cât şi caracterului predominat executoriu al unui mediu IT dominat de outsourcing. Rezultatul este o lipsă de specialişti pe piaţa muncii, fie datorită blocării lor în poziţii fixe, lipsite de vizibilitate, fie exodului aces-tora ca urmare a cererii locale fluctuante comparativ cu alte pieţe. În acest context a luat naştere prima idee şi anume crearea unei structuri care să permită atât localiza-rea cât şi mobilitatea specialiştilor pe piaţa locală.

Evoluţia ideii spre soluţii practice de atingere a celor două obiective ne-a con-dus la: crearea unei comunităţi de specialişti, pentru a reuşi localizarea acestora şi la crearea unui cadru ce sa permită mobilitatea şi stabilizarea la un nivel constant al angajamentului.

Marius Mornea

Fost senior software develo-per in cadrul Nokia, în prezent fondatorul platformei Mintaka Research

startups

Page 27: Today Software Magazine

27www.todaysoftmag.ro | no. 1/2012

În cazul primei soluţii, există semne pozitive în mediul local prin existenţa şi apariţia de noi iniţiative similare cum ar fi: TJUG (Transylvania Java User Group), GTUG Cluj-Napoca (Google Technolo-gies User Group), RTC (Romanian Test-ing Community), AgileWorks Romania, Semantic Web meetup group, Today Soft-ware Magazine etc. Merită menţionate şi iniţiative exterioare mediului ITC, cum ar fi cele două organizaţii TEDx înfiinţate pe plan local. Toate aceste organizaţii confirmă nevoia şi deschiderea mediului local spre comunităţi ce să permită colaborarea şi împărtăşirea cunoştinţelor de nivel înalt, specializate.

A doua soluţie se dovedeşte un pic mai dificilă din cauza lipsei unei cereri con-stante de competente de nivel înalt. Aceste fluctuaţii au ca efect atât absenţa unui venit constant cât şi dificultăţi în menţinerea nivelului ridicat de pregătire al specialis-tului. Cu alte cuvinte trebuie găsită o mo-dalitate de ocupare a timpilor morţi dintre proiecte. Propunerea noastră este implicar-ea în cercetare, iar pentru argumentarea ei prezentăm mai jos contextul şi formularea celei de a doua idei.

Cercetarea în ultimul deceniu în România a cunoscut evoluţii spectacu-loase, de la încercări de revigorare o dată cu aderarea la strategiile europene de cer-cetare de la Barcelona 2002, urmate de formalizarea unor abordări unitare la Lisa-bona 2005, cu efecte pozitive pe plan local în perioada 2007-2008, până la reduceri drastice în perioada de criză şi modificări birocratice ce fac greu accesibile o mare parte din fonduri. Drept urmare a perio-adei de aliniere europeană a luat naştere în România o generaţie de cercetători cu rezultate reale, nivel ridicat de specializare şi contracte internaţionale. Cu toate acestea exista o dependentă mult prea mare intre cercetare şi educaţie, implicit intre cerc-etare şi mediul politic. Cercetarea privată este la un nivel scăzut, cu câteva excepţii producţia de IP (Proprietate Intelectuala) fiind redusă, statisticile europene arătând o evoluţie a investiţiilor în cercetare în anul 2008 în funcţie de provenienţă: busi-ness 45.4%→23.3%, guvern 47.6%→70.1%, străine 5.5%→4.0%. Rezultatul este blocarea

unei întregi generaţii de specialişti într-un mediu care prin natura hibridă, cercetare/educaţie, împiedică concentrarea asupra cercetării, de cele mai multe ori calitatea am-belor activităţi fiind afectată, dar şi printr-o birocraţie excesivă scade mobilitatea specialiştilor legându-i de mediul academic şi instituţiile statului. Cu toate acestea există şi iniţiative 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 birocraţie, politică şi separat de procesul educational, pentru a permite fo-calizarea exclusiv pe cercetare şi atingerea potenţialului maxim. În acest context ia naştere a doua idee şi anume crearea unui centru de cercetare privat care să ofere un mediu propice cercetării şi să se consti-tuie ca o alternativă instituţiilor statului, permiţând în acelaşi timp atât cercetătorilor din mediul academic, cât şi specialiştilor din mediul privat să colaboreze pe diferite proiecte ocupând timpii morţi generaţi de fluctuaţia cererii pe piaţă. Rolul centru-lui este atragerea de proiecte şi investiţii, atât din mediul de afaceri, cât şi finanţare europeană sau guvernamentală, permiţând colaborarea orientată spre proiect şi fa-vorizând astfel mobilitatea şi evitând blo-carea resurselor în poziţii fixe.

Ultima idee este legată de educaţie şi rolul ei în asigurarea continuităţii. În condiţiile în care primele două concepte se ocupă de identificarea şi implicarea specialiştilor existenţi, se pune problema în ce măsură competenţele existente pe piaţă acoperă cererea, atât ca spectru cât şi volum. Prin urmare este necesară o im-plicare activă în procesul de educaţie prin împărtăşirea experientei acumulate şi prin eforturi active de a îmbogăţi mediul aca-demic cu activităţi extracurriculare sau chi-ar găsirea unor modalităţi de mapare a pro-gramei de învăţământ pe nevoile din mediul de afaceri. Aceasta ramură oferă posibili-tatea specialiştilor de a colabora cu mediul academic pentru a creste nivelul calitativ al materialului didactic şi implicit interesul şi performanţele studenţilor. La un nivel mult mai practic iniţiative similare există imple-mentate cu succes, de exemplu institutul Hagenberg din Austria sau compania Neu-

soft, au făcut un pas mai departe înfiinţând instituţii de învăţământ superior al căror rol este de a produce specialişti direct mapaţi pe nevoile de cercetare şi business cerute de către cele două organizaţii.

Cele trei idei de mai sus reunite alcătuiesc contextul în care a luat naştere, iar după rafinări 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 susţine comu-nitatea şi a răspunde nevoilor unui grup ţintă heterogen, atât din punct de vedere al mediului de provenienţă, cât chiar şi geo-grafic, oferim o platformă online care va conţine un set de unelte şi servicii împărţite în patru mari categorii: comunitate, canale de comunicare, depozit de cunoştinţe şi sci-entometrie. Conţinutul este divizat în două: accesibil tuturor sau restricţionat pe bază de utilizator. În continuare prezentăm cele patru mari categorii.

ComunitateaAceastă componentă de business se ocupă cu toate serviciile şi tipurile de interacţiune necesare comunităţii. Blocul de bază este colecţia de competente: o bază de date în care sunt centralizate toate competentele accesibile prin intermediul platformei. Baza de date se va construi prin agregarea informaţiei din profilurile tuturor colabo-ratorilor, plecând de la specialişti individu-ali, pană la echipe sau organizaţii. Compe-tentele sunt clasificate pe baza mai multor criterii: cercetare (domeniu, tehnologie, fundamentală, aplicată), dezvoltare (do-meniu, tehnologie, capacitate), comunicare (canale, audienţă), business (finanţe, HR, management), etc.

Modelul de business: fiecare utilizator poate accesa colecţia de competenţe şi fo-losind o unealtă poate constitui o echipă de competenţe menită să colaboreze pentru îndeplinirea unui obiectiv comun. Dacă co-munitatea are disponibile resursele pentru a atinge obiectivul, utilizatorul poate finaliza

Page 28: Today Software Magazine

28 no. 1/2012 | www.todaysoftmag.ro

echipa prin definirea detaliată a obiectivu-lui şi publicarea acestuia sub forma unui proiect în cadrul comunităţii. Toţi ceilalţi utilizatori, care au în profil competentele necesare proiectului, vor fi notificaţi de către sistem, având opţiunea să îşi arate interesul. Când toate poziţiile sunt ocu-pate, iniţiatorul proiectului şi colabora-torii înscrişi, vor semna un document de colaborare prin care stabilesc termenii şi condiţiile. Odată finalizat acordul, fiecare membru implicat va putea să vadă datele de contact ale celorlalţi membrii ai echipei şi proiectul poate fi demarat. Acest model de colaborare generic, orientat pe competenţe, permite o mare varietate de interacţiuni şi maximizarea implicării tuturor resurselor pentru a atinge toate căile descrise în dia-grama Venn.

Canalele de comunicareAceasta componentă de business este compusă dintr-un set de unelte ce facilitează comunicarea. Spre deosebire de competen-tele de comunicare din cadrul comunităţii, ce deservesc individual proiecte, setul de in-strumente din această secţiune este disponi-bil tuturor utilizatorilor, atât individual cât şi echipelor care colaborează pe proiecte, şi au ca scop principal creşterea vizibilităţii, promovarea diferitelor iniţiative, rezultate sau realizări şi permit comunicarea deschisă între toţi membrii comunităţii. Având în vedere că aceste servicii sunt oferite de platformă, nu de comunitate, ele vor fi dis-ponibile gratis în interiorul comunităţii, dar promovarea externă şi canalele naţionale sau internaţionale (guvern, asociaţii şi organizaţii internaţionale) vor fi disponi-bile contra unui preţ fix sau doar utiliza-torilor cu pachete contra cost. Cele mai importante canale, cu rol strategic, menite sa ofere avantaje competitive sunt: guverna-mentale (METCS#, ANCS#, UEFISCDI#), centre internaţionale (Hagenberg), asociaţii internaţionale (ACM, IEEE, RSA).Cele mai importante canale, cu rol strategic, menite să ofere avantaje competitive sunt: guverna-mentale (METCS1, ANCS2, UEFISCDI3), centre internaţionale (Hagenberg), asociaţii internaţionale (ACM, IEEE, RSA).

Depozitul de cunoştinţe

Îndeplineşte rolul de stocare şi acces la cunoştinţe disponibile atât comunităţii, cât şi clienţilor externi. Conţinutul poate proveni atât din comunitate, cât şi acumu-lat intern de platformă, dar în ambele ca-zuri are ca şi trăsătură comună faptul că se află în proprietatea intelectuală a Mintaka Research, fiind organizat în categoriile: ar-ticole, prototipuri, procese, metodologii, patente, pachete de training etc. Acce-sul va fi împărţit pe nivele, plecând de la conţinut liber accesibil, chiar open source, pană la conţinut cu acces plătit sau accesi-bil doar intern. Exemple de conţinut pus la dispoziţie: un glosar de metodologii de cercetare şi o colecţie de tehnici şi procese de management al tehnologiilor. Acestea se constituie în două dintre punctele forte, cu rol strategic, în care organizaţia îşi pro-pune sa investească. Cu toate că depozitul de cunoştinţe nu este un scop în sine, el fiind rezultatul unui proces cumulativ con-tinuu, o dată ce va depăşi o masă critică se va declanşa un alt proces de capitalizare format din două componente principale: prima cu rol de consultanţă şi transfer de cunoştinţe, iar a doua cu rol de a cauta noi aplicaţii şi noi posibilităţi de dezvoltare şi parteneriate în industrie. Cele două com-ponente se vor uni într-un efort comun de a reinvesti cunoştinţele acumulate înapoi în mediul de afaceri.

ScientometrieAceasta componentă este responsabilă cu măsurarea şi analiza tuturor iniţiativelor ştiinţifice. De la simple operaţii de revi-zuire ale articolelor, pană la măsurări şi compararea rezultatelor cu standardele din industrie, analiza impactului, metrici şi bibliometrie. Serviciile se împart şi în acest caz în funcţie de provenienţă (comunitate, platforma, servicii externe), nivel de pres-tigiu (intern, universităţi locale, evaluare naţională sau internaţională), rezultând într-o plajă adaptată de preturi. Exista două abordări principale: în primul rând o ofertă substanţială de servicii gratuite, cu rol în promovarea şi asigurarea unui nivel înalt de calitate în cadrul comunităţii, atât indi-vidual cât şi colectiv; iar în al doilea rând o oferta de servicii de nivel înalt, ce asigură metrici şi evaluări obiective celor mai

exigente proiecte, disponibile contra cost iniţiativelor de dimensiuni mari. Pentru implementarea acestor servicii vom căuta parteneriate cu CENAPOSS# şi organizaţia non-profit Ad Astra, ambele desfăşurând eforturi în domeniu.

Echipa de cercetareÎn afară de efortul construirii comunităţii şi al platformei cu oferta de servicii, intenţionăm să constituim şi o echipa de cercetare al cărei principal obiect de in-teres va fi: Autonomic Computing (software autonom). Acest lucru ne va permite să devenim un membru al comunităţii, con-tribuind la creşterea, testarea serviciilor şi în acelaşi timp asigurând o sursă de venit necesară susţinerii şi creşterii platformei. Pe lângă cercetarea în sine, această ramură a organizaţiei aderă la filozofia generală de promovare şi stabilire de noi standarde înalte în comunitatea locală de cercetare şi îndeplineşte acest obiectiv prin crearea unui mediu independent de cercetare. Credem că cercetarea ar trebui sa aibă oc-azia de a se desfăşura complet independ-ent de instituţiile de învăţământ superior, câştigând astfel focus şi libertate, scăpând de birocraţia excesivă a sistemului de stat. De asemenea creează un ecosistem compet-itiv în care succesul se bazează pe calitatea cercetării şi capacitatea de a atrage finanţare, eliminând dependenţa fată de bugetul, po-liticile şi politica guvernamentală.

În concluzie dorim să construim o platformă ce oferă:

- posibilitatea creării de echipe de competente dintr-o gamă variată de disci-pline, din diferite domenii,

- facilitând accesul la canale de comu-nicare cu instituţii guvernamentale, pro-grame europene şi parteneri din mediul de afaceri pentru a accesa finanţare,

- asigurând suport continuu pe toată durata de viată a proiectului în oricare din domeniile: Managementul Tehnologiilor, Metodologii de Cercetare, Proprietate In-telectuala;

- dar şi ajutor practic în: revizuirea şi evaluarea rezultatelor, alocarea de resurse din comunitate în caz de urgentă, etc;

StartUp Mintaka Researchstartups

Page 29: Today Software Magazine

29www.todaysoftmag.ro | no. 1/2012

- în final intermediind contactul cu asociaţii internaţionale precum: IEEE, ACM, RSA pentru a face vizibile rezultatele şi a le împărtăşii cu restul lumii.

În încheiere am dori să ne depărtăm de aspectele practice ale implementării iniţiativei şi să prezentăm câteva din motivaţiile uşor filozofice. În primul rând am dori să schimbăm mentalitatea generală conform căreia cercetătorii, sau chiar şi specialiştii sunt percepuţi ca şi indivizi retraşi în laboratoare obscure, manevrând instrumente şi formule complicate. Istoria arată că majoritatea oamenilor de ştiinţă de calibru colaborau, interacţionau şi dezbăteau activ cu cei din jurul lor şi erau de cele mai multe ori figuri publice. Până şi Albert Einstein, prezentat de multe ori ca o apariţie surprinzătoare din anonimat pe scena ştiinţifică, revoluţionând fizica

din senin, a format împreună cu un grup restrâns de prieteni (printre care Maurice Solovine, un tânăr student român şi Conrad Habicht, un matematician elveţian) Olym-pia Academy, o adunare informală care se întâlnea regulat şi discuta ultimele desco-periri ştiinţifice, lucrări proprii sau chiar filozofie şi literatură. Asta avea loc cu doi ani înainte de anul denumit „anul miracu-los” marcat de publicarea celor mai vestite lucrări ale lui. Cu alte cuvinte inovaţia şi descoperirile provin în aceeaşi măsură 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, educaţie şi mediul de afaceri, iar iniţiativa noastră îşi propune să o adreseze prin promovarea efortului co-laborativ intre specialiştii din diferite do-menii şi medii, colaborare ce poate aduce creştere individuală pentru fiecare parte

implicată, dar şi noi tipuri de interacţiuni şi oportunităţi de creştere comună. Vrem să construim o comunitate activă de specialişti şi să promovăm: parteneriate cu mediul de afaceri local pentru a aplica ultimele tehnologii în efortul de a îmbunătăţii viata de zi cu zi; parteneriate cu sistemul educa-tional pentru a creste calitatea procesului de învăţământ, a îmbogăţii programa şi a creste interesul şi motivarea studenţilor, asigurând în acest fel continuitatea comunităţii; part-eneriate intre specialiştii din domenii dif-erite pentru a crea noi oportunităţi şi plus valoare, prin combinarea şi complementa-rea competentelor. Credem că există deschi-derea şi dorinţa pentru a realiza cele de mai sus şi suntem încrezători că vom găsi part-eneri şi colaboratori cu care să construim comunitatea şi cu care să împărţim acelaşi set de valori.

Page 30: Today Software Magazine

30 no. 1/2012 | www.todaysoftmag.ro

De la o ideela un produs

Avem cu toții idei inovative despre cum să facem lumea din jurul nostru mai bună si bineînțeles cum am putea avea niste beneficii de pe urma lor. Din păcate exista un drum lung de la ideea initiala si până 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 eficienți. 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 multinațională, scopul nostru fiind de a fi simplifica procesul și de a-l adapta nevoilor practice. Înce-pem seria noastră cu un exemplu luat din actualitate: rețelele sociale.

Ideea iniţialăCrearea unei reţele sociale in care oamenii din vecinătatea noastră iși publică servici-ile, evenimente sau pot să vândă diverse lucruri. In felul acesta, fiecare va putea să îşi cunoască mai bine vecinii, sa participe si sa fie informaţi de evenimentele din cadrul comunităţii. De asemenea vor avea o legatură mai bună cu autoritățiile locale.

SumarEnumerăm mai jos ansamblul de procese ce va fi aplicat, cu comentariul că uneori unele dintre procese se întrepătrund.

Viziunea companiei - Viziunea de dezvoltare a companiei, in fucție de aceasta este definită și strategia firmei.Business case - Documentul de justificare a investiției. Aprobarea acestuia este obliga-torie înainte de a trece la pașii următori.Market requirements (MRD) - Contine elementele de marketing ce vor susține produsul. Va include planul pentru reclame, materiale promoționale si strategia de distribuție a produsului pe diferite canale.Use cases - Definirea modului in care produsul va interacționa cu utilizatorii și a pașilor de funcționareFeatures matrix - Matricea capabilităților produsului. Este foarte utila pentru compa-rarea acestuia cu diferite alte produse existente si pentru poziționarea sa.Product roadmap - Planul de dezvoltare a produsului pe termen scurt (1 an) si lung (5 ani). In funcție de modificările pieței, a preferințelor utilizatorilor sau alte constrângeri interne/externe, acesta va suferi modificări pentru a reflecta noua stare a lucrurilor. Servește ca și imagine de ansamblu asupra posibilei evoluții a produsului în intervalul următor.Product requirements (PRD) - Bazat pe Marketing Requirements(MRD) și con-siderând use case-urile definite, setează requirements-urile produsului, stabilește

management

Ovidiu Măţan, PMP

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

Page 31: Today Software Magazine

31www.todaysoftmag.ro | no. 1/2012

framework-ul în care acesta va funcționa, asteptările in ceea ce provește performanța, scalalbilitatea si securitatea acestuia. Reprezintă specificațiile pe baza cărora echipa de dezvoltare va implementa produ-sul.Poziționarea produsului - Poziționarea pro-dusului pe piață relativ la oferta existentă considerând features matrix.Pricing model - Definirea prețului produsu-lui in funcție de poziționarea acestuiaLaunch plan - Planul de lansare a produsului pe piațăDezvoltarea de noi produse - Modul în care planificăm lansarea urmatoarelor pro-duse, benificiind acum de piata produsului deja lansat, de skill-urile și competențele ex-istente.

ViziuneaCrearea de produse si servicii noi au sens atâ-ta timp cât se știe unde se vrea să se ajungă. Strategia de dezvoltare a unui produs are sens daca urmarește viziunea companiei iar acestă viziune trebuie sa țină cont de evoluția tehnologiei și a pieței. Ca să va dau un ex-emplu, până la momentul lansării iPhone-ului, Nokia era lider-ul telefoanelor mobile si a smartphone-urilor. Viziunea lor nu in-cludea interactiunea tactila cu ecranul tel-efonului, aceasta era făcută doar cu ajutorul unui pen. Lansarea iPhone-ului la începutul lui 2007 si marele său success au schimbat piața. Problema pentru Nokia a fost viteza de reacție care a durat câțiva ani, suficient de mult astfel încât sa devină necompetitivi pe piața de smartphone-uri. Pentru revenirea pe piață sacrificiile făcute au fost uriașe și aici mă refer la renunțarea dezvoltarii sistemului de operare Symbian si trecerea la Windows Mobile.

O greșeală frecventă este confuzia intre viziune si strategie. Strategia se definește în funcție de viziunea companiei. În continu-are vom trece prin principalele strategii de definire a viziunii:

1. Viziunea 20/20- Termenul vine de la tes-tul de măsurare a acuității 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,

această viziune înseamnă ca sunt foarte clari pașii ce trebuiesc parcurși pentru a ajunge de la starea actuală la cea dorită având o foarte bună înțelegere a evoluției tehnologice si a oportunităților de pe piață

2. Viziunea periferica - Compania este mai mult interesată de trend-urile din jurul ei, de noile oportunități, mai mult decât alte com-panii. În anii 1970-1980, Wang Laboratories, produceau calculatoare desktop pentru pro-cesarea 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 oportunități viitoare care nu sunt văzute de către concureți. Exemplificăm prin produse-le 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 întrebări la care trebuie răspuns:1. Unde vrem sa mergem?2. Cum vom ajunge acolo?3. De ce vom avea succes?

Revenind la exemplul nostru, defin-im viziunea astfel: Recunoastem evoluția rețelelor sociale iar prin produsele noastre vom crea un ecosistem de comunicare pentru comunitățile locale. Vom folosi cunoștințele noastre actuale pentru a crea produse accesi-bile tuturor. Rețelele sociale vor avea un nou înțeles, integrand viața reală în cea virtuală.

Business CaseAcest document reprezintă baza proiectului nostru, definește noului produs și va fi fo-losit ca și referință pentru urmatoarele docu-mente. In practică vom avea un document și o prezentare pentru etapa de aprobare a proiectului.

Conform PMBOK, business case-ul este documentul ce contine informația necesară pentru a se putea lua o decizie legată de investiția în acest proiect. În mod normal, există în cadrul său o analiză cost beneficii pentru justificarea proiectul. În final, totul se reduce la analiza potențialului profit, ținând cont de riscurile implicate în implementarea,

vânazarea și mentenanța produsului. Busi-ness case-ul este creat ca urmare a uneia sau mai multe din următoarele cerințe:

- cererea pieței- nevoi organizaționale- cererea unui client- avans tehnologic- cereri legale- impact ecologic- nevoi sociale

Business case-ul este revizuit periodic pentru a verifica ca proiectul continuă să urmărească scopul inițial, de asemenea se va urmări faptul ca produsul sau serviciul final este încă necesar. Este greșit 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 State-ment of Work (SOW), acesta descrie pro-dusele și serviciile ce vor fi livrate. În cazul în care implementarea se va face de către o altă companie, documentul servește ca și bază legală pentru serviciile ce vor fi livrate. În practică, contractul și SOW-ul sunt documentele principale, pe baza cărora se agreează începerea lucrului la un proiect.

Revenind la business case, pentru scri-erea 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 com-paniei. Un foarte bun exemplu îl puteți gasi aici http://www.blackblot.com/files/pmtk/Blackblot_PMTK_Evaluation_40/PMTK/PMTK_Product_Marketing/Business_Case/PMTK_Business_Case_40.pdf

Simplificând structura pattern-ului este recomandabil să se pună accept pe următoarele aspecte:

• Sumar executiv - va conține data încep-eri proiectului, prinicipalii stakeholderi ce vor beneficia de pe urma proiectu-lui, costurile totale și costurile pe ter-men scurt (6 luni), data de finalizare a proiectului

• Descrierea proiectului și încadrarea acestuia în cadrul larg al tehnologiei și a pieței existente

• Scopul - definirea clară a scopului

Page 32: Today Software Magazine

32 no. 1/2012 | www.todaysoftmag.ro

proiectului prin evidențierea a 3 dintre cele mai importante aspecte

• Obiectivele pe termen scurt si lung• Return of investment (ROI) - ben-

eficiile interne/externe a implementării proiectului

• Modul de implementarea proiectului incluzând resursele ce vor fi folosite pentru aceasta

• Costul implementării (vezi exemplul)• Durata estimată a proiectului• Analiza de risc• Pașii următori care vor urma aprobării

proiectului• Materialul de backup va conține 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 lu-cru, detalii referitoare la milestone-urile proiectului, modalitățile de comunicare în cadrul proiectului, modul de publi-care 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 Estima-rea corectă a duratei unui proiect, analiza riscului, analiza de pieța, modalități de lucru în cadrul proiectului și stabilirea scopului pe termen lung și scurt.

În următorul număr vom analiza un ex-emplu de business case pentru cazul nostru. Vă încurajez să scrieți un business case pen-tru exemplul nostru iar în articolul următor vor fi analizate. Adresa de email pe care le puteți trimite este [email protected]

De la o idee la un produsmanagement

Page 33: Today Software Magazine

33www.todaysoftmag.ro | no. 1/2012

Compensareacreativă

Ioana Fane

HR Specialist UllinkCluj Napoca

Conceptul de bază al managementului compensării este destul de simp-lu: angajații îndeplinesc sarcini pentru angajator, iar companiile plătesc salariile angajaţilor pentru obiectivele realizate. În consecinţă, compensarea este un schimb sau o tranzacţie, de care ambele părţi - angajator şi angajat - beneficiaza: ambele părţi primesc ceva pentru a oferi ceva. Cu toate acestea, beneficiile, implică mult mai mult decât această tranzacţie simplă. Din punctul de vedere al angajatorului, compensarea este o problemă atât de accesibilitate cat si de motivare a angajaţilor.

Efectul perioadei de criză a inceput sa fie simțit in anul 2009, când majoritatea companiilor de IT au făcut trecerea de la acordarea unui salariu fix mai atractiv, la a-și îndrepta atenția asupra dezvoltării și creării unor pachete de compensații și beneficii cât mai atractive pentru exterior dar și cu menirea de a menține actualii angajați motivați.

Aceste pachete - care sunt de multe ori AS - ul din mâneca oricarui specialist de resurse umane, trebuie gândite si adaptate pe nevoile personale ale angajatului și apoi implementate, in funcție de bugetul acordat din partea managementului com-paniei.

Pachetul de compensații si beneficii este acel subiect transparent și cu o mai mare vizibilitate in cadrul ofertei de angajare și asta nu doar datorită înclinației spre un beneficiu non - financiar, dar și datorită unei prognoze de stagnare a economiei si implicit a salariilor.

Din perspectiva companiilor este mai la indemână și mai ieftin sa iși păstreze angajații in interiorul companiei și să încerce sa își adapteze politicile de motivare la nevoile acestora, decât sa angajeze și să instruiasca alți noi angajați.

In stabilirea politicilor de beneficii și de motivare a angajaților companiile iau in calcul mai multe repere:

• Pachetele de beneficii oferite de companiile similare angajaților lor;• Cuantumul valoric al beneficiilor oferite pe piață;• Numarul total al angajaților;• Ponderea pe nivelurile ierarhice;• Facilitățile fiscale de care beneficiază;• Media de vârstă in cadrul companiei.

Există mai multe moduri de a măsura succesul unui antreprenor: prin numărul de idei noi lansate, veniturile şi profiturile obţinute, precum şi modul în care el sau ea serveşte o industrie sau o comunitate. Dar poate că cel mai important din-tre acestea este impactul pe care antreprenorul este în măsură să il exercite asupra vieţii angajaţilor. Dincolo de recompense tangibile, cum ar fi plata și cele intangibile cum ar fi consilierea, un manager poate creiona profund viaţa unui angajat, prin

HR

Page 34: Today Software Magazine

34 no. 1/2012 | www.todaysoftmag.ro

furnizarea unui pachet generos de beneficii. Într-adevăr, mulţi antreprenori recunosc că efectul pe care îl au asupra vieţii angajaților este unul dintre aspectele, cele mai pline de satisfacţii.

De asemenea, are potenţialul 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 pa-chete de beneficii nu sunt ieftine şi costurile pot creşte exponenţial atunci cand compa-nia se extinde. În plus, odată ce compania ofera un beneficiu, este ciudat să-l anuleze odata ce economia se află in scădere.

Altfel spus, în cazul în care o companie in IT&C devine cunoscută pentru oferirea de prestaţii bune, în general, este mai uşor să recruteze angajaţi talentaţi şi va putea ve-dea chiar şi unele efecte secundare pozitive cu privire la marketing și vanzari.

Cum sa negociați dvs. cel mai bun pa-chet de compensare?

Toate aspectele legate de fiecare ofertă de locuri de muncă sunt negociabile. Ne-gocierea salariului şi al altor beneficii este o abilitate vitală pe care toţi profesioniştii IT de succes trebuie să o posede. Cheia pentru negocieri de succes este că trebuie sa ințelegeti care sunt priorităţile, nevoile şi apoi să poată fi legată și de nevoile anga-jatorului.

Domeniul IT&C aduce cu sine o discrepanță intre cererea enormă pe piața de specialitate și calitatea & cantitatea oferită de sistemul de invățământ din România. Drept urmare salariile sunt mult peste nive-lul altor industrii de pe piata românească iar pachetele devin indrăznețe și încearcă să alunge orice urmă de insatisfacție din partea unui angajat, sa îi creeze un mod de viață modern și relaxant.

Firmele mici oferă un pachet sa-larial mai generos decat cele de dimensiuni mari sau multinaționale. Lipsa notorietații 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 com-paniile de IT sunt cele mai creative și mai generoase.

Deși pachetele salariale și de ben-

eficii sunt din ce in ce mai complexe, performanțele angajaților și rezultatele muncii potențialilor candidați sunt în scădere. Se întâmplă asa datorită fluctuației de personal crescute, care determină scăderea performanțelor individuale și organizaționale și posibilitatea angajaților de a se specializa.

Este cunoscut faptul că timpul minim in care un angajat ajunge sa performeze la maximum este de 1 an. Mulți dintre spe-cialistii din industrie devin deja atenți la noi oferte și locuri de muncă, imediat după această perioadă.

Unele companii se situează sub media pieței ca nivel salarial și angajează persoane tinere, care acceptă un salariu scăzut față de nivelului pieței, dar au siguranța faptului că trainingurile oferite din partea angajaților seniori sau certificările suportate de com-panie, le vor da posibilitatea de a se lansa în carieră și vor putea deveni în curând acel candidat pe care toate companiile îl doresc. De asemenea poziționarea deasupra mediei salariale a pieței, va determina îndreptarea HR-ului către candidați cu experiență, care au rezultate promițătoare încă de la începu-tul angajării.

Intrebarea rămâne cum s-ar putea minimiza disproporția intre compensațiile angajaților vechi in cadrul companiei, care s-au dezvoltat mai lent și angajații nou veniți, care in mod firesc au salariul la nive-lul actual al pieței. Este bine stiut faptul că, in momentul negocierii și evaluării salari-ilor, managerii nu iau in considerare nivelul pieței la nivel local sau national ci doar nive-lul salariilor din interiorul firmei. O analiză sumară a costurilor arată însă că fluctuația de personal aduce cu sine costuri de trei ori mai mari: costul recrutarii, cel al pierderii din productivitate și cel al specializării si trainingului noului angajat.

Trebuie sa recunoastem că benefici-ile acordate de către companii in vederea motivării propriilor angajați reprezintă pe de altă parte, instrumente de management al personalului care sunt și în interesul an-gajatorului.

Iată cateva exemple de beneficii acor-date de companii in domeniul IT&C din Romania, angajaților:

1. tichetele de masă - instrumente de motivare, in altă formă decat bănească, ce sunt scutite de taxe;

2. prima de vacanță - care poate varia între jumătate de salariu și un salariu întreg;

3. prima de sărbători (sărbătorile Pascale si Crăciun) - care poate varia intre 0,25% și 100% din nivelul salarial net;

4. al 13 - lea salariu - acordat inaintea sărbătorilor de Revelion;

5. prima de ajutor - acodate tuturor angajaților la nașterea unui copil sau, in cazuri nefericite, la decesul unei rude de gradul I;

6. asigurări servicii medicale pentru angajați - cuantumul acestor asigurari poate varia si in funcție de pozitia ierarhica a an-gajatului respectiv;

7. asigurare medicală pentru membri familiei;

8. asigurari servicii stomatologice - și in acest caz cuantumul poate varia in func-tie de poziția ierarhică a angajatului respec-tiv;

9. asigurare de pensie facultativă;10. asigurare de viață;11. abonamente la centre de sport și

relaxare12. telefon și cartelă telefonică - ace-

stea sunt considerate beneficii in măsura in care limită alocată depăseste cuantumul necesar realizarii sarcinilor de serviciu - alt-fel este doar un instrument de lucru

13. programul flexibil de lucru - oferit de obicei angajațiilor aflati in pozitii mana-geriale evaluate mai degrabă pe baza rezul-tatelor, nu conform timpului petrecut efec-tiv la birou;

Pachetele de compensații și beneficii depind de structura afacerii, recrutarea angajaţilor, de retenţie,

motivaţie, performanţă, feedback și satisfactia la locul de munca. Compensarea este de obicei printre primele lucruri pe care potenţialii angajaţi il iau în considerare atunci când caută un nou loc de muncă.

In final, pentru angajaţi, pachetul de compensatii și beneficii este oglindirea nu numai a modului in care sunt remunerati cât și a modului in care sunt acestia evaluați de către angajator.

Compensarea CreativăHR

Page 35: Today Software Magazine

1 CALL FOR SPEAKERSRomania Testing Community is offering 2 slots, 30 minutes each, for domestic speakers to sharetheir experience to the Testing Community.

The event will take place on March 7th, 2012 at Hotel Opera Plaza, in Cluj Napoca.

2 VOTE THE BEST PRESENTATIONSend your proposal at [email protected] containing the Topic, the subject and ashort 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

3 THE MOMENT OF TRUTHFirst two, most voted topics will have the opportunity to step-up and hold the presentationin front of everyone.

Page 36: Today Software Magazine

36 no. 1/2012 | www.todaysoftmag.ro

5 diferenţe dintreun şef şi un lider

Am întâlnit până acum, în diverse circumstanţe şi organizaţii, manageri operaţionali şi manageri de proiect, însă doar unii într-adevăr emanau în jurul lor o aromă relaţională specială, atrăgătoare, motivantă, care făcea de dorit prezenţa lor. Aş vrea să prezint câteva din lucrurile intrate în reflexul unul lider şi care lipsesc de obicei sau sunt total opus abordate de către un manager poziţional (are funcţia de manager prin delegare oficială).

1. Liderul se prezintă ca parte din echipăSunt câteva expresii pe care sigur le-ai auzit, şi care direct sau subtil transmit o sepa-rare între manager şi subordonat, o treaptă pe care unii vor să o sublinieze ca semn al autorităţii lor într-o organizaţie. În general aceste expresii trag o linie  între man-ager şi echipă, managerul fiind văzut ca cel ce are cerinţele iar echipa constituită din cei ce execută cu stricteţe. 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 său, şi încurajează sugestiile şi expri-marea opiniilor faţă de munca oricăruia din echipă, inclusiv a sa. Liderul se supune aceluiaşi tratament ca toţi ceilalţi.Inclusiv aprecierea şi mulţumirea exprimată de manageri uneori întăreşte această ruptură, făcând echipa să simtă că a prestat servicii managerului, în loc să prez-inte reuşita ca fiind în egală masură datorată muncii comune a managerului cât şi a celorlalţi. De aceea în loc de un “mulţumesc pentru cât de bine v-aţi făcut treaba”  un lider spune “mă bucur că am reuşit împreună să ne atingem scopul”. Simţi diferenţa?

2. Liderul ascultă autenticŢi s-a întâmplat să simţi doar ca şi o formalitate evaluarea personală sau întâlnir-ile regulate de dezvoltare profesională cu managerul? Un lider ascultă atent şi îşi notează dorinţele tale, viziunea ta, pune întrebări cerând clarificări şi împreună cu tine face un plan de dezvoltare. Tot el, în mod proactiv, din dorinţa de a-şi dezvolta echipa, te intreabă regulat de progresul angajamentului luat de tine, şi îţi oferă tim-pul şi resursele de care dispune să te ajute. Un simplu manager dă din cap când tu povesteşti, aşteptând doar pauza când să îţi spună părerea lui. La orice abordare a problemelor pe care o vede greşită la tine te corectează spunând: “Dar nu trebuie să privesti aşa…”, ” dar tu eşti de vină…”, “dar tu trebuie să îţi dai interesul, să fii proac-tiv”. Deşi sunt sugestii bune în sine, aceasta este o abordare reactivă, care te inhibă, te face să te simţi acuzat mai degrabă decât încurajat. Liderul spune “dă-mi nişte exemple ca să înţeleg 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-

Aristotel Dascăl, PMP

Motivational speaker. Spiritual explorer.

management

Page 37: Today Software Magazine

37www.todaysoftmag.ro | no. 1/2012

patic, luându-te de la nivelul la care eşti, aşa cum eşti. Managerului îi place să se audă pe sine şi să arunce soluţiile ca pe nişte pastile.

3. Liderul oferă înainte să cearăUn manager poate să ceară în mod oficial executarea unor activităţi, fără a avea nicio relaţie cu echipa. Însă un lider ştie că per-soanele pe care le conduce au nevoie de o motivaţie, iar conform lui Maslow, în partea superioară a piramidei ierarhiei nevoilor personale se află imaginea de sine, şi chiar în vârf edificarea personală. Cu alte cuvinte liderul este văzut în mod constant interesat de înţelegerea şi satisfacerea nevoilor in-dividuale, oferă sprijin şi ascultă autentic înainte de a cere dedicare şi executare din partea echipei.

4. Liderul nu e ameninţat de succe-sul celorlalţiLiderul are o imagine de sine şi stimă de sine realistă şi solidă. Nu se identifică prin poziţia sa, ci prin abilităţile sale şi prin cât de eficient le practică. De aceea nu evită să facă o “munca de jos”, de executant când

asta ar creşte eficienţa proiectului la un moment dat. Ba chiar o consideră cheia în influenţa sa ca lider: a veni alături de echipă în munca de zi cu zi, şi a creşte abilităţile de conducere în cei din echipă care do-resc asta ( sau care au abilităţi dar nu sunt poate conştienţi de ele). Liderul încurajează creşterea vizibilităţii tale în organizaţie, nu se pune ca şi graniţă între tine şi potenţialul tău succes. Managerii sunt des speriaţi că dezvoltându-te le vei “fura” locul, dar liderul ştie că particularităţile lui îşi vor găsi mereu locul potrivit, şi se implică proactiv în dez-voltarea ta de dragul creşterii organizaţiei.

5. Liderul este urmat de bunăvoieCea mai evidentă modalitate prin care poţi recunoaşte un lider este că echipa sa îl urmează de bunăvoie. Îl citează, îi confirmă ideile şi principiile în discuţii chiar şi când acesta nu este prezent. Un simplu man-ager menţine o atmosferă încordată, rece, în care ceilalţi vorbesc doar forţaţi, şi în particular vorbesc cel mai des denigrator despre manager. Bineînţeles că urmezi cu entuziasm o viziune pe care ţi-ai însuşit-o,

care te împlineşte şi în procesul căreia şi tu te dezvolţi. Însă doar un lider poate insufla asta echipei sale.

Sunt 3 cărţi pe care le-aş sugera dacă consideri că ai nevoie să te dezvolţi ca şi lider. Personal le recomand a fi studiate în aceasta ordine:

Eficienta in 7 trepte, de Stephen Cov-ey (Învaţă să te raportezi corect la tine şi la cei din jurul tău, însuţindu-ţi principii sănătoase şi prioritizând activitaţi zilnice).

Cum să devii o persoană cu influenta, de Jim Dornan & John Maxwell (Prima şi cea mai relevantă calitate a unui lider este influenţa. Înţelege-o şi începe să o practici înainte de a conduce pe alţii).

Dezvoltă liderul din tine, de John Maxwell (Primii paşi în dezvoltarea unui caracter de lider însoţit de multe exemple practice).

Este o imprimare unică în caracter-ul tău, în abilităţile tale. Găseşte-o şi ex-ploreaz-o. După cum zicea Zig Ziglar: “Eşti singura persoană de pe pământ care poate folosi abilităţile tale”.

Page 38: Today Software Magazine

38 no. 1/2012 | www.todaysoftmag.ro

10 vs. 1700Presto - Allegroma non troppo

Muncind pe meleaguri îndepărtate patriei, peste o mare şi 5 ţări, aşa am început să meditez la chestiunea în cauză – vă rog staţi în tihnă! Obiectul muncii era, într-un mod destul de direct, răspândirea suitei de servicii online folosite cu drag comatic de către fraţii în suferinţă pe planetă. Mă refer la Google, Facebook, Twitter, Youtube, Picasa, Skype, şi prea multe altele. Chestiunea în cauză, aşadar, e capabilitatea omu-lui de a sta în continuu, în primul rând din punct de vedere emoţional, sub cascada frenetică de informaţie.

Umăr la umăr cu o ceată de “tehnicieni” aleşi pe sprânceană la început , am făcut pe dracu-n patru şi am “inovat” câtuşi de puţin - una din cerinţele de bază. Am inovat în sensul că după multă gândire şi planificare nu foarte asiduă am dezvoltat un pertinent, spun eu, sistem de operare pentru telefoane deştepte.

Clasic, soft-ul a fost instalat pe dispositive cu touchscreen şi aruncat pe piaţă. Capodopera era şi este dotată desigur cu un agregat de aplicaţii de comunicat cu şi informat pe ceilalţi. Ca să nu rămână lauda dezbracată, povestea lungă şi să înaintăm spre un sens, în ce a constat de fapt noutatea?

Pe langă construcţia de aplicaţii specifice pentru fiecare din furnizorii de ser-vicii pomeniţi mai sus, am integrat linia simplă proprie unui asemenea sistem – Telefon, Mesagerie, Galerie foto/video - cu serviciile oferite de furnizori. În funcţie de foloasele puse la dispozitie de aceştia, şi conturile create pe dispozitiv, stăpânul utilizator are la dispoziţie diverse şi diferite opţiuni.

De exemplu după crearea unor conturi Facebook, Youtube şi Skype, aplicaţiile care ajută la impărtaşirea informaţiei – ştiri, poze, video – oferă direct posibilitatea de upload pe Facebook sau Youtube, mesageria lucrează selectiv cu SMS, MMS, Skype şi Facebook, iar telefonul în aceeaşi manieră ofera servicii GSM şi Skype Call.

Detaliile menţionate nu importă într-atât de mult. Per ansamblu, “comunicarea” devine mai facilă; totul se întamplă mai rapid. Am făcut încă un pas spre “mai bine”; împuşcă, omoară, mănâncă funcţionează în continuare la parametri îmbunătăţiţi. The Show Must Go On!

În adâncul sufletului nu sunt un individ prea tehnic, aşa că o să descind subit înspre latura boemă a lucrurilor. Eram la o cabană, parţial din cauza trecerii dintre ani, şi mi s-a spus fără ocolişuri şi politeţuri de prisos că nu fac parte din generaţia “Smart”. Nu fac, deoarece nu folosesc un telefon deştept care să-mi permită să sub-scriu trend-ului informaţional.

Pe de-o parte hora convenabilă de “prieteni” blocaţi cu nasu-n plasa colorată. Pe de-o altă parte, întocmirea fişei detaliate a existenţei personale, folosind desigur diferitele condici online puse cu grijă la dispoziţia cetăţeanului de către fratele mai mare.

Aurel Popârţac

Programator,deţinător de micro afacere în IT

filozofie

Page 39: Today Software Magazine

39www.todaysoftmag.ro | no. 1/2012

Nu m-am supărat prea tare, deşi am fost catalogat ca înapoiat şi nu prea priceput “la internet şi din astea”. Am trecut uşor pes-te necaz doar ca să mă găsesc într-un altul în timpul porţiei săptămânale de otravă prin birturile oraşului. Amicul de lângă şi concubina dumnealui m-au ceartat de data asta pentru neparticiparea la o petrecere.

Vina, să mă înţelegeţi, era în totalitate la mine-n gospodărie – nu făceam parte din grupul căruia i s-a expediat invitaţia, ba chiar mai rău, nu aveam nici cont. Argu-mentarea deşi solidă – “Pe Facebook găseşti gagici şi poţi să afli tot ce se întâmplă la tine în oraş, chefuri publice/private, şi să ştii că de exemplu fetele care au venit, şi-au format o părere despre fiecare din baieţii de la party aşa… Şi când au venit ştiau deja cu cine vor să fie!” s.a.m.d. – prin tonul ei m-a făcut să mă simt puţin rătăcit prin peisaj. Am început mintal să concretizez, mai serios, cu liniuţă, de ce nu agreez aste forme de interacţionat cu realitatea.

Am continuat aşadar meditaţia. Miti-tel fiind, mă bucuram tare mult de pârâiaşul ce curgea pe uliţa de la ţară, de capătul de la deal al grădinii şi de lipsa concretului relativ la lucrările de dincolo munţilor la care nu prea era cu putinţă să ajung. Sentimentul era împărtăşit cu un grup restrâns de alţi 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ă sărbătorirea fastuoasă, dar intimă, a zilei de naştere a unui amic din timpurile prezente, primesc o altă informaţie. Respectivul îmi relatează existenta a 1700 de “prieteni” online. Gri-masa lui m-a scos din tăcere, iar replica mea de fiu de contabil a fost: “Omule, ai atâţia prieteni câţi au fost ieri la ziua ta si atâţia amici câţi ţi-or ura la mulţi ani daca iţi ştergi data de naştere de pe profil”.

În fine, lăcomia face parte din nat-ura umană, iar ciolanul nu trebuie să fie neapărat de porc. Nu am “autorizaţie de generalizare” şi nici nu ştiu de unde aş putea obţine aşa ceva, dar îmi permit sa fac unele mărunte observaţii. Pe prietenii mei, număraţi pe degete, ca pe o mică guerilla amicală de spartani, îi consider veritabili.

În fapt aceşti puţini oameni mă ajută să trec cu bine peste multele zile apatice şi transele urbane la care până la urmă, recu-nosc, mă supun eu însumi. Totuşi, şi în aces-te condiţii ajung cu greu să petrec cu fiecare dintre ei timpul necesar pentru schimbul in tihnă, darămite dacă m-aş mândri cu o mie, două… Cu toţii părem să ne grăbim unde-va, dar nu ştim unde. Dorim ceva, dar nu ştim ce. Citim foarte multe dar nu reţinem nimic. Acelaşi nimic ne marchează plim-barea de la o instituţie la alta. Experienţele sunt lipsite de sacru, iar până si frigul sau

căldura de afară nu mai creează nici o stare, decât probabil un disconfort pasager. Suntem obosiţi de artificial şi asta pe mulţi ne face să ne simţim prost.

Nu cred ca e sfârşitul lumii – sau cine ştie?! – aşadar până la urmă nu e o atât de mare dramă. Nici nu intenţionez să o lun-gesc cu apologetica comunicării ca necesi-tate umană vs. inversul sintagmei, dar din ce am înţeles până acum despre fenomen, e oricum greu de trăit in sihăstrie.

Cu sau fără calculatoare, şi o nebuloasă de servicii de nerămas singur, într-un mod sau altul, cred că o să ne descurcăm până la urmă. Totuşi, relativ la contactul interuman, cumva spontaneitatea, verbalitatea în cele mai multe dintre cazuri şi bineînţes limba-jul trupului sunt sarea şi piperul. Parcă de cele mai multe ori tastatura devine un scaun cu rotile pentru o societate de paralizaţi emoţional, iar telefoanele deştepte ne ajută sa ne purtăm perfuzia după noi.

E un fel de spital de nebuni, iar per-sonal simt nevoia să-mi aerisesc creierii. Decât să muncesc mai repede să pot să mă distrez mai repede, să mă odihnesc mai re-pede, şi tot aşa să şi trec apa intr-o zi, mai bine cu puţină iarbă, flori, copaci şi poveşti redundante despre un nimic plăcut. Mă duc la o plimbare!

Page 40: Today Software Magazine

40 no. 1/2012 | www.todaysoftmag.ro

Informaţia, de la teorie la strategii ale spaţiului public

Perspectiva conform căreia situarea de partea informaţiei înseamnă trium-ful formei asupra conţinutului subestimează importanţa comunicării şi a teoriei informaţiei în înţelegerea unui spaţiu public în care dinamicile informaţionale câştigă teren în faţa producţiei de semnificaţii. Post-structuralismul e una din teori-ile care surprinde şi anticipează această dezvoltare (primatul reţelelor de informaţie asupra reţelelor de semnificaţie) atunci când descrie modernitatea târzie ca fiind o civilizaţie a ”semnificanţilor flotanţi”, semne care au pierdut legătura cu reţelele de semnificaţie.

Semnificaţia nu a dispărut pur şi simplu în sfera informaţiei ci s-a multiplicat şi a proliferat în interfaţa în continuă schimbare a spaţiului public, dând naştere la noi clase, genuri, sexualităţi, etnii, rase etc. E din ce în ce mai prezent imperativul de a adapta această proliferare şi dispersie a semnificaţiei la o nouă dimensiune a spaţiului public contemporan, una care nu mai e structurată în jurul codificării şi decodificării de semnificaţie şi a articulării acesteia în practici sociale, ci e o dimen-siune supusă unui imperativ cu o dinamică de un alt ordin.

Acest imperativ proclamă faptul că o mai multă şi mai bună comunicare sânt soluţia ultimă a problemelor din spaţiul public şi că că dinamica specifică aces-tei comunicări are de-a face mai mult cu transparenţa unui ”spaţiu al circulaţiei” decât cu soliditatea unui ”spaţiu al locurilor”. Nu mai e vorba de semnificaţii care sânt codificate şi decodificate în texte ci de includere şi de excludere, conectare şi deconectare, război informaţional, noi forme de cunoaştere şi putere (de la relaţii publice la comunicare publică şi management al percepţiilor), care implică nu atât jocul semnificaţiilor cât dinamica de ansamblu a unui mediu informaţional deschis.

Ân cele ce urmează voi evalua felul în care conceptul de informaţie poate fi fo-losit in discuţia privitoare la spaţiul public. Voi porni de la teoria (post)structuralistă şi teoria informaţiei, arătând limitările amândurora în ceea ce priveşte conceptul de informaţie. Voi schiţa la final o perspectivă în care informaţia poate constitui o unealtă importantă în alcătuirea modulară a spaţiului public.

Producţia de semnificaţie şi informaţia alibiImportanţa informaţiei ca forţă subiacentă spaţiului public constituie o temă recurentă în discuţia de pe scena intelectuală încă din anii 60. Filosofi, soci-ologi şi economişti din diferite şcoli şi cu diferite orientări politice au încercat să surprindă valoarea informaţiei, atât ca marfă cât şi ca mod de producţie. în vreme ce economiştii vorbesc în special de rolul informaţiei în dinamica pieţii, filosofii şi sociologii resping de cele mai multe ori importanţa informaţiei ca factor definitoriu în schimbarea socială.

Sebastian Big

Pe la începutul filmului Matrix, după follow the rabbit, knock knock neo, Keanu le vinde bă-ieţilor şi fetelor un minidisc pe care îl ţine într-o carte numită „Simulacra and Simulation”.

Sebastian Big este autorul tra-ducerii acestei cărţi în limba română.

filozofie

Page 41: Today Software Magazine

41www.todaysoftmag.ro | no. 1/2012

Structuralismul afirmă că informaţia nu e decât un nivel de bază al semnificaţiei, furnizând condiţiile minime pentru emergenţa semnificaţiilor sociale. Din această perspectivă, informaţia e nivelul zero al semnificaţiei, o condiţie minimă a producţiei de semnificaţie. Pentru ca această teorie să fie funcţională, comu-nicarea trebuie să fie mai mult decât o simplă transmisie de informaţie, implicând şi reţele sociale şi culturale de semnificaţii, care mobilizează un întreg sistem cultural de referinţe. Informaţia e văzută ca un soi de alibi pentru comunicarea semnificaţiilor sociale, teren pe care au loc ”adevăratele” strategii ale spaţiul public.

Repetitivitatea şi mobilizarea neâncetată a identităţilor şi prejudecăţilor reciclate în procesul de producţie de semnificaţie suprasaturează spaţiul pub-lic, făcând dificil însă cu atât mai necesar un nou mod de raportare/comunicare în/cu acest spaţiu. Intervenţia în mediul informaţional nu înseamnă doar producţia de contrainformaţie ci şi o înţelegere a di-namicii difuzării informaţiei (deschiderea de noi canale, conexiuni transversale, gue-rilla informaţională etc.). Se pune prob-lema interacţiunii dintre transformările modurilor de producţie şi noile forme de cunoaştere şi putere în câmpul dinamicii informaţionale.

Din punct de vedere hermeneutic, semnificaţiile exprimate şi diseminate de cei care folosesc mediile oficiale nu sânt noi sau originale. Zona în care politicul şi socialul au suferit o mutaţie e aceea a tac-ticilor şi tehnicilor prin care e comunicată şi filtrată informaţia. De fiecare dată când o anumită informaţie e comunicată, e folosită o întreagă serie de tehnici şi tactici pentru care transmisia de semnificaţie e numai un obiectiv parţial al unei campanii mai largi. întregul spaţiu public a devenit obiectul unei reţele de metode, tactici şi strategii corespunzătoare hipermanagementului opiniei publice.

Nu e însă vorba doar de o metodă mai sofisticată de manipulare a publicu-lui de către o nouă rasă de ingineri sociali, cărora li se opun audienţe refractare sau semnificaţii contradictorii. Relaţia dintre profesioniştii comunicării şi audienţele lor

are loc într-un mediu specific, în care di-namica informaţiei are precedenţă în faţa dinamicii semnificaţiei. O înţelegere mai clară a informaţiei şi a dinamicii informaţiei e importantă în înţelegerea condiţiilor care cer o nouă raportare la spaţiul public, înţeles ca interacţiune între reţele de comunicare

Teoria informaţiei, de la canal la mediu informaţionalTeoria informaţiei, în special lucrar-ea lui Claude E. Shannon despre teoria matematică a comunicării oferă câteva desluşiri importante în legătură cu dinamica informaţiei. Lucrarea ”Teoria matematică a comunicării” a fost un punct de cotitură în teoria informaţiei, domeniu apărut prin convergenţa nou-născutei industrii a telecomunicaţiilor (telegraf, telefon, radio, televiziune) şi a aplicaţiilor ei militare (sis-teme de comandă şi control şi criptare), cu implicaţii în înţelegerea comunicării ca pro-ces fizic pe care dezvoltarea tehnologică se baza, reinventându-l.

Una din supoziţiile de bază ale teoriei informaţiei e aceea că informaţia nu poate fi definită decât ca un raport între semnal şi zgomot (paraziţi, bruiaj), descriere născută din necesitate tehnică. De fiecare dată când ceea ce denumim o informaţie e transmis de la un emiţător la un receptor, se pune prob-lema canalului, e necesar ca acea informaţie să fie transmisă cât mai acurat.

Canalul de comunicare nu are capaci-tatea de a recunoaşte existenţa sau lipsa semnificaţiei; el nu poate interpreta me-sajul. Mai mult, nu orice informaţie are semnificaţie. Dat fiind faptul că acel canal nu are capacitatea umană de a interpreta semnificaţie, el se bazează pe o formulă matematică ce îi permite să facă diferenţa între informaţie şi zgomot. Caracterul de informaţie îi e dat acesteia de existenţa unui pattern sau a unei frecvenţe care îi permite canalului să o deosebească de zgomot.

Pentru urechea umană, informaţia conţinută în biţii criptaţi sună a fluierături şi zgomote (sunetul modemului conectân-du-se la internet). Şi totuşi, atunci când există comunicare printr-un canal, acest zgomot conţine şi informaţie, un pattern sau o frecvenţă care pot fi codificate într-

un semnal, care la rândul lui poate fi codi-ficat în ceea ce va apărea pe monitor ca o pagină web. în acest sens, dacă acceptăm această teoria a informaţiei, ea nu implică semnificaţie ci doar patternuri statistice şi frecvenţe de modulare semnal-zgomot.

Shannon s-a ocupat de proble-ma modulării unui semnal cu şanse de supravieţuire în faţa efectelor zgomoto-lui care periclitează orice comunicare, a interferenţelor şi bruiajului care ameninţă să anuleze transmisia. El a ajuns să marcheze minimele condiţii ale comunicării. înainte ca ceva să fie comunicat, e nevoie de un ca-nal liber, ceea ce implică suspendarea zgo-motului exterior. Un canal liber e condiţia de bază a comunicării, în măsura în care scopul comunicării e transmiterea unui me-saj, indiferent de semnificaţie.

Acest scenariu se îndepărtează de concepţia modernă a comunicării, în care existenţa sferei publice garantează desfăşurarea transparentă a vieţii democrat-ice. Nu mai există un subiect care semnifică, nici măcar o audienţă; nu există o retorică ci un set minimal de patternuri, care reduce comunicarea la existenţa unui canal liber. Din perspectiva teoriei informaţiei, comu-nicarea nu e nici un argument raţional nici o experienţă antagonistă, bazată pe capaci-tatea unui vorbitor de a codifica/decodifica o semnificaţie presupus comună. Scopul fluxului de informaţie e stabilirea unui con-tact între emiţător şi receptor prin exclu-derea oricărei interferenţe.

Emiţătorii şi receptorii nu au o situ-are opozitorie, ca în concepţia jocului dia-lectic ci se presupune că se află de aceeaşi parte. Opoziţia dintre emiţător şi receptor nu mai e una subiectivă ci una obiectivă şi externă, care ia forma unui zgomot lipsit de semnificaţie. Problematica informaţională e legată de conceperea comunicării ca o chestiune operaţională dominată de im-perativele canalului şi nu de o exigenţă a semnificaţiei, a unei etici a adevărului sau a unei confruntări retorice.

Strategiile informaţionale se desfăşoară deci într-un mediu de comu-nicare instrumentalizat, redus la problema lui fundamentală (sau la condiţiile lui min-ime): realizarea cu succes a unui contact, suprimarea oricăror bruiaje şi filtrarea

Page 42: Today Software Magazine

42 no. 1/2012 | www.todaysoftmag.ro

oricărei parazitări a mesajului aflat în tran-zit. Nu există nimic implicit tehnologic aici, dacă prin tehnologie înţelegem un Frank-enstein tehnocrat care se întoarce împotriva creatorilor lui.

E vorba mai degrabă de tehnici şi mo-duri de cunoaştere şi putere care se între-taie printr-o varietate de medii şi canale pe terenul societăţii informaţiei. Strategiile de amplificare, încercarea de control sau de monopolizare a comunicării prin metode tradiţionale sânt subvertite de continua repoziţionare non-lineară a reacţiilor şi canalelor de transmisie ale publicului sau pur şi simplu de entropia socială, care face non-lineară transmisia mesajelor. Aceas-ta e una din limitările teoriei lui Shan-non. El porneşte de la o concepţie lineară a comunicării (modelată pe configuraţia tehnică a industriei telecomunicaţiilor din epocă) ce presupune un circuit simplu, care leagă un emiţător de un receptor printr-un canal de transmisie, a cărui simplitate şi lipsă de ramificaţii permite reducerea facilă a zgomotului şi neutralizarea bruiajelor.

Ce se întâmplă atunci când comu-nicarea nu e liniară, când informaţia 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ă mutaţii, se multiplică de la canal la canal, de la reţea la reţea? Ce se întâmplă atunci când nu se mai pune problema unui canal sau a unei colecţii de canale ci a unui mediu informaţional?

Dinamica realităţii, între reprezen-tare şi informaţieS-ar putea obiecta că relaţia dinamică din-tre informaţie şi realitate, semnal şi zgo-mot, patern şi hazard care animă mediul comunicării umane nu atinge problema esenţială a informaţiei ş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 informaţie şi că tehnicile de transmisie din mediul plin de zgomot al comunicării de azi au devenit extrem de complexe. Asta nu rezolvă însă problema relaţiei dintre emiţător şi recep-tor. Am putea obiecta şi că acest ceva de co-municat nu poate fi un simplu pattern ci, în

ultimă instanţă el trebuie să fie un mod de reprezentare a realităţii.

O ştire nu e în fond decât o anumită reprezentare a unui eveniment, transmisă unei audienţe. în această ordine de idei, putem spune că informaţia se supune în cele din urmă regulilor semnificării şi ale înţelegerii, cu alte cuvinte, că are o dimen-siune semantică, fiind supusă interpretării. O ştire poate fi analizată pe baza producţiei discursive a evenimentului reprezentat, aşa cum e codificată şi decodificată de producători pentru consumatori. Asta nu rezolvă însă problema relaţiei dintre informaţie şi realitate.

Conform abordărilor post-structur-aliste ale limbajului reprezentarea nu îşi trage semnificaţia din realitate ci din alte reprezentări, adică din ţesutul de moduri de semnificare din care se naşte înţelegerea comună a realităţii. Sfera publică este construită prin limbaj şi nu e de conceput sau accesibilă fără el. în acest context, con-ceptul de informaţie aduce o schimbare radicală; ca şi configuraţie de date el are legătură cu ceea ce reprezintă. Acest con-cept nu e specific doar teoriei comunicării ci şi fizicii, ştiinţelor naturii, ciberneticii.

Informaţia nu e o simplă reprezentare ci o tehnică de comprimare a datelor care ne uşurează interacţiunea cu indetermin-area şi complexitatea proceselor realităţii. Informaţia e întotdeauna, după formula lui Shannon, o măsură a incertitudinii în cunoaşterea unei stări, a unui proces sau a unui eveniment. Teoria matematică a comunicării presupune şi faptul că, fiind un mijloc statistic, informaţia e inerentă realităţii fizice, însă doar ca măsură a ire-ductibilei indertitudini care caracterizează cunoaşterea stărilor fizice.

Ântr-un sens tehnic şi ştiinţific, informaţia înseamnă reprezentarea unei stări fizice, care nu presupune însă existenţa unei relaţii de simplă asemănare între reprezentare şi stările pe care o asemenea informaţie le descrie. Această relaţie se clădeşte în termeni care subminează per-spectiva în care reprezentarea e o copie a realităţii. Aşa cum insistă Baudrillard, am ieşit demult din regimul originalului şi al copiei.

Teoria informaţiei confirmă faptul că o stare sau un element complex al realităţii care poate fi reprezentat printr-un număr sau o descriere (temperatură medie, identi-tate) nu are o relaţie deterministă sau lineară cu multiplicitatea de stări microscopice care o definesc (particulele şi viteza lor, diferitele singularităţi ale unei identităţi).

Informaţia descrie o distribuţie de probabilităţi (sau o serie de parametri) mai degrabă decât o proprietate esenţială care defineşte o fiinţă. Teoria informaţiei rezolvă problema acestei indeterminări (sau zgomot) printr-o compresie a datelor. La fel ca în astronomie şi fizică, tehnologia informaţiei are ca sarcină distilarea unor nu-mere prea mari pentru înţelegerea umană. Ele pot fi aduse la un nivel de înţelegere prin folosirea unei curbe matematice denumite logaritm natural. Ca tehnică de comprimare de date, teoria informaţiei foloseşte logarit-mul pentru a reduce incertitudinea, care nu e altceva decât un efect al magnitudinii datelor produse de realitate. El mediază în-tre o lume care poate fi pătrunsă de simţuri şi acele procese care sânt prea complexe pentru înţelegere, procese care se schimbă geometric sau exponenţial: probabilităţi, dobânzi, populaţii, conexiuni neuronale sau multitudinea de procese care au loc între indivizi în şi cu spaţiul public. Astfel logaritmul imită felul în care funcţionează simţurile umane.

Spaţiul public, între clişee propa-gandistice şi dinamici socialeFăcând posibilă înţelegerea magnitudinii şi a incertitudinii realităţii, informaţia ne deschide ochii asupra caracterului aproxi-mativ al oricărei cunoaşteri şi al oricărui fel de comunicare. Fie că e vorba de etern contradictoriile şi schimbătoarele sondaje ale opinie publice sau de bazele de date în continuă creştere, tehnologiile informaţiei contribuie la descrierea/recompunere a spaţiului public, comprimând variaţiile de gusturi, orare, direcţii, trecând peste auto-evidenţa şi suficienţa subiectului modern, trecând de la mase la populaţii de unităţi individuale de informaţie. Genul, rasa, sexualitatea nu mai sânt tratate ca fiind specifice unor subiecţi statici, observaţiile

Informaţia, de la teorie la strategii ale spaţiului public

filozofie

Page 43: Today Software Magazine

43www.todaysoftmag.ro | no. 1/2012

microvariaţiilor lor sânt recompuse pe o suprafaţă de modelare care se mişcă în rit-mul mişcărilor spaţiului public.

Asta nu înseamnă că identităţile, diferenţele şi reprezentările au devenit ire-levante sau şi-au pierdut puterea de identifi-care sau funcţia în spaţiul public, însă com-ponentele lor perimate sânt marcate sau neutralizate de tehnologiile informaţionale. Dimensiunea informaţională scoate la lumină vârtejul de singularităţi sau esenţe singulare, anomalii care merg mult mai de-parte decât jocul postmodern al identităţii şi al diferenţei. Informaţia operează cu reguli diferite de acelea ale semnificaţiei. Diferenţa nu mai e văzută ca relaţională şi structurală ci ca marcată de probabilistică şi incertitudine. Ea se aplică la procesele unei realităţi aflate într-o discontinuă transfor-mare.

Conceptul de informaţie surprinde dinamica realităţii şi a spaţiului public fără a face abstracţie de caracterul lor flu-id şi discontinuu. Ea implică o înţelegere nedeterministă şi nereducţionistă a pro-ceselor realităţii. Informaţia nu poate defini complet procesele realităţii, ea nu poate decât cuantifica unele din dimensiunele realităţii, spre deosebire de reprezentări, identităţi şi semnificaţie, care aruncă adevărate plase asupra jocului singularităţilor, comunicând un tip de informaţie nu atât neadevărat cât extrem de rudimentar, retrasând parcă în sens invers drumul de la mythos la logos.

Conceptul de informaţie nu are de oferit analizei spaţiului public doar o repu-nere în scenă mai nuanţată a relaţiei din-tre semne şi fluxurile realităţii ci o unealtă intuitivă şi pragmatică în mod imediat. Deşi munca specialiştilor în comunicare e una de modulare a acestui mediu de comunicare la comenzi economice şi politice, canalele pe care ei le trasează sânt deschise şi altor moduri de folosire, care nu ţin cont de re-spectivele comenzi. Suprafaţa zgomotoasă a comunicării, proliferarea confuziei care zdruncină şi reconfigurează asimetric spaţiul public nu se adresează unei mase statice servile ci unui spaţiu public proba-bilistic, discontinuu, supus unei schimbări din ce în ce mai rapide.

Conceptul de informaţie implică existenţa unor procese probabilistice şi

variabile care nu pot fi atât reprezentate cât observate şi experimentate. Dedesubtul peliculei de clişee propagandistice a căror diseminare e pusă în practică de specialiştii în comunicare clocoteşte o dinamică socială în continuă reconfigurare. Relaţia dintre dinamica informaţională şi comunicarea în spaţiul public a fost ocultată parţial de predominanţa mediilor de comunicare lineare în modernitate şi modernitatea târzie. Sântem obişnuiţi să considerăm co-municarea ca fiind ceva care ţine de mesaj (informaţie, semnificaţie, reprezentare) transmise de un emiţător către un receptor printr-un canal.

Am ajuns astfel să acordăm o importanţă nemeritată imaginilor mintale sau reprezentărilor comunicării, ca şi cum informaţia ar fi doar un alt nume pentru Ideile care curg dinspre un centru panoptic spre periferia unei majorităţi pasive, într-un spaţiu public static. Multiplicarea cana-lelor de comunicare şi a mediilor ne atrage însă atenţia asupra importanţei dinamicilor nonlineare în desfăşurarea interacţiunilor în spaţiul public. Nu există un loc în care informaţia să nu prolifereze, rezoneze, re-combine şi interfereze şi e din ce în ce mai clar că ea nu e nici semnificaţie nici formă imaterială.

Comunicarea de informaţie implică în-totdeauna rezolvarea unei tensiuni datorate incompatibilităţii dintre diferitele dimensi-uni ale unei parcele de realitate. Informaţia nu e un conţinut de comunicare ci un vec-tor, care determină direcţia unor viitoare actualizări. De aceea, orice comunicare de informaţie, aşa cum bine ştiu ciberneticienii e şi o formă de control a fluctuaţiilor unui mediu fizic instabil.

Informaţia nu face din receptor doar un subiect al acţiunii emiţătorului (ac-ceptare/ negociere/ respingere a unei semnificaţii) ci implică şi o sumă de para-metri cuantificabili de fluxul de informaţie, care au puterea de a provoca schimbări re-ale de stare. Nici o comunicare nu poate fi ruptă de efectul combinat al tensiunilor şi instabilităţilor; actul de a intra în contact nu poate fi redus la injectarea de informaţie în receptorii individuali, asta după ce, în pre-alabil, terenul a fost curăţat de zgomot.

Dimpotrivă, dimensiunea

informaţională a comunicării pare să im-plice un potenţial real de transformări dinamice, punerea în mişcare a unui proces de constituire la care nu au acces nici canalele media dirijate nici cinismul specialiştilor în relaţii publice. Strategiile informaţionale în spaţiul public au de-a face atât cu dezvoltarea formelor de cunoaştere cât şi cu aceea a formelor de putere, al căror teren de joacă nu e numai comunicarea ci şi evenimentul, care erupe din circuitul în-chis al comunicării. în acest sens, strategiile informaţionale implică nu doar interferenţa sau metisajul cultural ci şi analiza activă şi experimentarea unor tactici adecvate non-linearităţii fluxurilor de informaţie şi instabilităţii realităţii cu care au de-a face.

Page 44: Today Software Magazine
Page 45: Today Software Magazine

powered by