Numarul 44 - Februarie 2016 - Today Software Magazine

Page 1

No. 36 June ••www.todaysoftmag.ro ••www.todaysoftmag.com Nr. 44 • www.todaysoftmag.ro • www.todaysoftmag.com No. 36••Februarie June2015 20152016 www.todaysoftmag.ro www.todaysoftmag.com

TSM

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

e Haos, meme și tipare d design software

r web Testarea serviciilo I folosind SOAP U

Harmony in Cross-Browser Testing Harta testării Provocari în scenarii Dev/Test/DevOps şi cum ne poate ajuta Microsoft Azure Adoptarea unei culturi DevOps Using Machine Learning in Revenue Management De la business la implementare. Cum alegem CRMul?

Composer si Packagist – Vedetele PHP-ului Siguranţa psihologică și coeziunea de echipă Ce pregateste statul roman pentru domeniul IT&C’ ? Cum răspundem în 2030 la întrebarea ”Ce faci astăzi?” Gogu și sofismele


Testează-ți abilitățile

programez.ro

În curând


7 Metode moderne de invocare a muzei Emilia Mățan

8 Soluții inspirate pentru orașe inteligente Cristina Juc & Cristina Tare

11 Armonie în Cross-Browser Testing Roxana Soporan

13 Testarea serviciilor web folosind SOAP UI Ioana Luțaș

16 Harta testării Claudiu Draghia

18 Crearea unui Microsoft Band Tile pentru a direcționa notificările de stare a construcției Radu Vunvulea

21 Adoptarea unei culturi DevOps Claudiu Demian

24 Haos, meme și tipare de design software Ariel Pontes

27 Utilizarea Machine Learning în gestionarea veniturilor Marius Radu

30 TFS ca platformă de colaborare (II) Dorin Cazan

33 De la Business la implementare. Cum alegem CRMul Georgiana Gligor

35 Composer și Packagist, vedetele PHP-ului Radu Murzea și Cătălin Criste

38 Care sunt provocările în scenarii Dev/Test/DevOps şi cum ne poate ajuta Microsoft Azure Mihai Tătăran

41 Siguranţa psihologică și coeziunea de echipă Ștefania Duica

45 Calculul salarial în 2016 Delia Mircea

47 Ce pregateste statul roman pentru domeniul IT&C? Ioana Varga

49 Echilibrul viață-muncă și generațiile pieței muncii. Cum răspundem în 2030 la întrebarea ”Ce faci astăzi?” Florentina Șipețean

51 Gogu și sofismele Simona Bonghez


editorial

A

cum patru ani, în luna februarie am lansat revista Today Software Magazine alături de un grup de prieteni. Astăzi ne bucurăm să fim o referință în domeniu, cu peste 700 de articole disponibile în română și engleză și aproape 400 de autori diferiți. Mulțumim colaboratorilor, cititorilor pentru interesul crescut și companiilor care susțin acest proiect: Gemini Solutions, ISDC, 3Pillar Gobal, Endava, Fortech, Accesa, Betfair, Yardi, Accenture, Telenav, Mozaic Works, VE Interactive, Siemens, Colors in projects. Vă promitem să o ținem tot așa și să investim la fel de multă pasiune! Ovidiu Măţan

ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine

Pasiunea pe care o ai sau nu trebuie să o ai dacă ești programator a reprezentat un subiect interesant de discuție la evenimentul de lansare din luna ianuarie. Inevitabil s-a ajuns la tabere pro sau contra unei perspective, dar și la perspective echilibrate. A fi programator doar pentru a-ți asigura venituri rezonabile și nu neapărat din pasiune este un mod de a te raporta la o profesie pe care mulți îl consideră justificat într-o societate în eternă criză ca a noastră. Punctul meu de vedere este în favoarea pasiunii. Cred că veniturile sunt un factor important, dar nu ar trebui să definească o direcție de dezvoltare personală. Ca argumente care să susțină punctul meu de vedere stau și diverse articole pe teme motivaționale publicate în TSM. Fără pasiunea pentru programare, fără plăcerea de a descoperi soluții la probleme, de a te bucura de aplicarea ultimelor tehnologii este greu de continuat într-un mediu foarte concurențial. Personal, după câțiva ani de activitate care a pus accent mai mult pe management și antreprenoriat, am avut oportunitatea de a mă întoarce la programare. Este o plăcere pe care probabil nu o poți echivala cu nici o altă activitate iar satisfacția este pe măsură. Vă sfătuiesc așadar să faceți la rândul vostru ceea ce vă place sau să vă întrebați la finalul zilei dacă asta este ceea ce vă place să faceți cu adevărat. Tema principală a acestui număr este testarea, așa cum reiese din seria de articole subordonate acestei teme: Harmony in Cross – Browsing Testing, Testarea serviciilor web folosind SOAP UI, Harta testării și Care sunt provocările în scenarii Dev/Test/DevOps şi cum ne poate ajuta Microsoft Azure. Continuăm cu Haos, meme și tipare de design software, un articol interesant despre Memetică, o știință despre propagarea ideilor și influența acestora asupra noastră. Utilizarea machine learning în îmbunătățirea afacerilor arată posibilul impact pozitiv de folosire a tehnologiilor big data în analiza businessurilor. Continuăm cu o analiză și o evaluare a CRM-urilor (Customer Relationship Management) existente la ora actuală: De la business la implementare. Cum alegem CRM-ul. Crearea unui Microsoft Band Tile pentru a direcționa notificările de stare a construcției prezintă o soluție de notificare a echipei de dezvoltare software despre faptul că a căzut un test de integrare direct pe dispozitivul Microsoft Band 2. Finalizăm acest număr cu două articole din zona de contabilitate, un domeniu care demonstrează un interes crescut din partea cititorilor: Calculul salarial în 2016 și Ce pregătește statul roman pentru domeniul IT&C’ ? Încheiem acest număr cu o nouă apariție a personajului comic care vine cu informații interesante din zona de managementului proiectelor: Gogu !

Vă dorim lectură plăcută !!!

Ovidiu Măţan

Founder Today Software Magazine

4

nr. 44/2016, www.todaysoftmag.ro


Redacţia Today Software Magazine Fondator / Editor in chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com

Lista autorilor Delia Mircea delia@contzilla.ro @Contzilla.ro

System Administrator @ Yardi Romania

Emilia Mățan emilia.matan@todaysoftmag.com

Ariel Pontes ariel.pontes@3pillarglobal.com

Copyright Corector @Today Software Magazine

Python Developer @3 Pillar Global

Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com Traducător: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Contabil : Delia Mircea delia.mircea@todaysoftmag.com Programator junior: Alexandru Diniș alexandru.dinis@todaysoftmag.com Marketing și tehnoredactor: Ana-Maria Bivol anamaria.bivol@todaysoftmag.com Tipar realizat de Daisler Print House

Claudiu Demian claudiu.demian@yardi.com

Cristina Juc cristinajuc@gmail.com Organizatoare @ Startup Weekend Cluj

Marius Radu marius.radu@fortech.ro Software Developer @Fortech

Cristina Tare cristinatare@gmail.com

Dorin Cazan dorin.cazan@siemens.com

Organizatoare @ Startup Weekend Cluj

Service specialist @Siemens

Roxana Soporan Roxana.Soporan@isdc.eu

Georgiana Gligor gb@tekkie.ro

Tester @ ISDC

Owner @Tekkie Consulting

Ioana Luțaș ioanal@bissoft.ro

Radu Murzea rmurzea@pentalog.fr

QA Engineer @ Bissoft

PHP Developer @Pentalog

Produs de

Today Software Solutions SRL str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com

www.todaysoftmag.ro www.facebook.com/todaysoftmag twitter.com/todaysoftmag

Claudiu Draghia claudiu.draghia @capgemini.com

ISSN 2284 – 6352

Quality Manager @Capgemini

Copyright Today Software Magazine Reproducerea parțială sau totală a articolelor din revista Today Software Magazine fără acordul redacției este strict interzisă. www.todaysoftmag.ro www.todaysoftmag.com

Cătălin Criste ccriste@pentalog.fr PHP Developer @Pentalog

Mihai Tătăran mihai.tataran@avaelgo.ro

Radu Vunvulea radu.vunvulea@iquestgroup.com

Microsoft MVP, Co-organizator @ITCamp Avaelgo

Senior Software Engineer @iQuest

Ștefania Duica Stefania.Duica@endava.com

Florentina Șipețean florentina@happy-employees.com Consulting Manager @Azimut Happy Employees

IT Recruiter @Endava

Ioana Varga ioana.varga@aiconsulting.ro Expert contabil Managing Partner @ A&I Consulting

Simona Bonghez simona.bonghez @colorsinprojects.ro Speaker, trainer și consultant @Owner of Colors in Projects

www.todaysoftmag.ro | nr. 44/februarie ,2016

5


startup-uri

Startup-uri

Room planner

beta.programez.ro

O soluție de planificare a spațiului 3D, foarte utilă din perspectiva aranjării obiectelor în casă. Ușor de utilizat, aceasta oferă utilizatorului ca în câteva minute să își testeze modul în care va fi decorat apartamentul sau casa și să se plimbe efectiv prin ea. Toate acestea fără a se instala aplicații complexe și de asemenea gratuit. Acest produs a fost construit de către Arxia și lansat ca public beta în această lună.

Programez.ro este o soluție care dă utilizatorului posibilitatea de a-și testa cunoștințele online fără a aplica obligatoriu la un job. Prin rezolvarea acestor teste, cel implicat poate să-și evalueze nivelul competențelor și să-și construiască un profil profesional validat. De asemenea, programez.ro oferă companiilor ocazia de a-și eficientiza procesul de selectare a candidaților, prin recuperarea unui timp pe care în mod obișnuit l-ar fi consumat în desfășurarea de interviuri. Programez.ro este un proiect Today Software Magazine.

Link: http://roomplanner3d.planningwiz.com/

Link: beta.programez.ro

DeviceHub.net

Rocketbook Wave

DeviceHub.net este un serviciu cloud care ajută utilizatorii să obțină date de la dispozitivele IoT connectate la internet. Prin procesarea datelor primite de la senzori se pot realiza notificări, automatizarea proceselor în domenii precum: agricultura, transport, smart cities, case inteligente, medical și multe altele. Există librării pentru integrarea cu API-ul REST în Phyton, C++ și PHP.

Rocketbook este o combinație de carnețel și un pix special plus un serviciu cloud de comunicare cu principalele aplicații de documente precum Google Drive, Evernote sau OneNote. Utilizatorul realizează schițe care sunt automat publicate în aplicațiile specifice ale utilizatorului iar în funcție de simbolurile adăugate desenate se pot lua diferite acțiuni. Odată umplut, carnetul poate fi șters prin introducerea acestuia într-un cuptor cu microunde.

Link: devicehub.net

Link: https://www.kickstarter.com/projects/642311833/rocketbook-wavecloud-connected-microwavable-noteb?ref=category_popular

6

nr. 44/februarie, 2016 | www.todaysoftmag.ro


educație

TODAY SOFTWARE MAGAZINE

Metode moderne de invocare a muzei

D

e multe ori, când vrem să scriem un text, amânăm momentul justificându-ne prin lipsa inspirației. Asemenea poeților antici, ne gândim că nu ar strica să invocăm solemn vreo muză. O facem, dar muzele cunosc cel mai bine graca veche și latina, așa că nu mai insistăm. Apoi ne amintim de seara petrecută cu amicii la bere, când aceștia ne-au dat calificativul ,, genial” pentru prestația avută la ultimul banc pe care l-am spus. Stăm la pândă sperând să mai detectăm măcar un licăr din genialitatea de care te-au asigurat atunci. suscite curiozitatea. După ce am decis asupra subiectului, vrem ca ideile cu privire la acesta să fie originale. Cum depistăm în toată avalanșa de idei pe care le avem pe acelea care sunt inedite și pertinente? O metodă eficientă care ne ajută să trecem peste starea de blocaj sau de pasivitate și să reactivăm tot ceea ce cunoaștem despre subiectul ales, este scrierea liberă.

Paul Cezanne (1839 – 1906) – Sărutul muzei

Degeaba! Ideile tot nu ne vin. Nu ne mai rămâne să avem și noi ca geniile romantice decât întunecatul pesimism. Dar ca trăitori în mileniul trei, suntem oameni practici și după ce am citit dintr-o suflare cartea cu un posibil titlu ,, Cum să devii fericit și eficient în trei pași”, începem să gândim pozitiv și căutăm soluții. Dacă nu intenționăm să realizăm un studiu consistent centrat pe o temă generală căruia să-i acordăm timp îndelungat de cercetare, ci avem de redactat un text care să se încadreze într-un număr limitat de pagini sau caractere, este de preferat să evităm subiectele cu teme mari. Așa reducem riscul unei abordări superficiale și incomplete, precum și riscul de a stagna la etapa de introducere sau la o perspectivă exclusiv descriptivă.

Timp de 10-15 minute, scriem un scurt text cu toate ideile ce ne vin în minte despre subiect, fără a fi atent la ordinea lor și fără a ne preocupa neapărat de corectitudinea exprimării. Inspirată din dicteul automat al poeților avangardiști care-l foloseau ca principiu de creație, scrierea liberă are avantajul de a scoate la suprafață din colțurile memoriei, asocieri surprinzătoare de idei, precum și cunoștințe pe care nu bănuiam că le deținem. Rețeaua de idei sau pânza de păianjen este o altă metodă care, prin apelul la scheme, reprezentări grafice sau dispuneri în rețea, evidențiază mobilitatea conexiunilor între idei, modul cum se grupează în jurul unor concepte cheie sau cum se generează una pe alta.

notă sau o observație pe marginea unui paragraf citit, învingându-ne astfel teama de a scrie și de ane exprima propriul punct de vedere. Aceste câteva metode expuse au rolul de a ne învinge teama în fața paginii albe sau a ecranului și de a ne ajuta să imprimăm o notă de autenticitate textului scris de noi, dar nu ne garantează calitatea științifică a conținutului. Aceasta este condiționată de seriozitatea și consecvența cu care autorul se documentează , studiază bibliografia științifică anexată subiectului sau de experiența pe care o deține în domeniul abordat.

Emilia Mățan emilia.matan@todaysoftmag.com Copyright & Corector @Today Software Magazine

Soluția la pana de idei poate fi și consultarea agendei de idei, adică să ne uităm în acel carnețel pe care îl purtăm tot timpul la noi și în care ne notăm ideile inspirate. Se știe că multe dintre mărețele idei s-au născut nu neapărat în fața unui birou ci te miri unde: de la mărul lui Newton și cada lui Arhimede la concertul unde Kandinsky are revelația picturii abstracte. Așadar, când suntem în mașină, vedem un film, citim o carte, conversăm sau ne certăm s-ar putea ca muza să apară neinvitată Așadar, în loc de ,, Limbajul Java” sau și să ne aducă vreo idee interesantă. ,, Procesele în programare”, un subiect mai mic de tipul ,, Stand-up meeting” sau Dacă nu avem o agendă de idei, atunci ,, Librăriile de treading în Java” are mai să ne facem una! De asemenea, este bine multe șanse să devină atrăgător sau să să valorificăm orice impuls de a face o www.todaysoftmag.ro | nr. 44/februarie, 2016

7


evenimente

Soluții inspirate pentru orașe inteligente

L

umea în care trăim este în continuă mișcare. Totul crește și se dezvoltă zilnic, cu o viteză amețitoare. Este incredibil modul în care reușim să găsim noi modalități de utilizare a aplicațiilor mobile pentru a ne face viața de zi cu zi mai ușoară.

Cristina Juc cristinajuc@gmail.com Organizatoare @ Startup Weekend Cluj

Cristina Tare cristinatare@gmail.com Organizatoare @ Startup Weekend Cluj

Oare vă amintiți de “The Jetsons”, familia ce locuiește într-un oraș utopic, unde mașinile zburătoare sunt la ordinea zilei, extratereștrii și hologramele sunt o apariție comună, iar casele și aparatele electronice sunt controlate prin simpla apăsare a unor butoane? Ceea ce era de domeniul fantasticului în anii ‘60 începe să devină realitate. The Internet of Things a schimbat multe dintre lucrurile cu care eram obișnuiți cândva. Avem mașini inteligente, care pornesc și pot fi controlate cu ajutorul unor aplicații mobile. Călăuzele auditive sunt de mare ajutor pentru cei cu dificultăți de vedere, ajutându-i să navigheze mai ușor, atât în spațiul propriei locuinței, cât și în exterior. Veșnica întrebare legată de ”Ce vom mânca la cină?” și-a găsit răspunsul tot în aplicațiile mobile, iar acum ai restaurante întregi la distanță de un singur click.

începutul. De vreme ce există încă atât de multe zone neexplorate în acest domeniu, Startup Weekend Cluj organizează în această primăvară o ediție special care are ca subiect orașele inteligente - Smart Cities. Dacă îți dorești să schimbi modul în care trăim și interacționăm unul cu celălalt, acesta este locul în care trebuie să vii. Contribuie la soluționarea problemelor, dezvoltă soluții inteligente pentru orașe și locuitorii acestora. Indiferent dacă îți dorești o casă operabilă digital, noi modalități de gestionare a domeniului sănătății, un mod accesibil de abordare a dezvoltării economice, pentru toate acestea există spațiul potrivit pentru dezvoltare și evoluție, la Startup Weekend Cluj - ediția Smart Cities.

Imaginează-ți că într-o zi fiecare întreConsiderați că acestea sunt soluții bare va avea un răspuns, fiecare problemă inteligente? Noi credem că este doar va fi de domeniul trecutului. Depinde

8

nr. 44/2016, www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE

doar de noi dacă ne dorim această realitate. Cerul este limita pentru ceea ce poate fi făcut. De fapt, cerul nu mai reprezintă o limită și nici imaginația, pentru că atunci cănd o aduci în interiorul unei echipe, potențialul ei crește exponențial. Spațiul verde și activitățile de recreere, străzile și clădirile, transportul, sportul, sănătatea, cultura, educația - sunt atât de multe domenii în care îți poți contribui cu experiență și cunoștințe. Edițiile precedente de Startup Weekend Cluj au strâns peste 450 oameni curioși și dornici să învețe în timp ce lucrează la împlinirea unui vis, 139 de idei care și-au găsit locul pentru a fi ascultate, 57 de echipe care au lucrat împreună, ghidați de peste 50 mentori captivanți și inspiratory. Mai bine de 70 de comunități și parteneri media ne-au ajutat să creăm și răspândim o atmosferă frumoasă.

soluții inspirate, care vor contribui la dezvoltarea unor orașe inteligente. Mai multe detalii și noutăți poți găsi pe pagina noastră de Facebook1, sau ne poți urmări pe Twitter: @SWCluj și #SWCluj. Iar pentru orice întrebare, sau sugestie, ne poți scrie la cluj@ startupweekend.org.

1

www.facebook.com/StartupWeekendCluj

Pentru a fi sigur că ești primul care află cine vor fi mentorii care vor ajuta echipele anul acesta, dar și pentru a fi la curent cu toate anunțurile ulterioare, asigură-te că ești alături de noi. Cea de-a V-a ediție Startup Weekend Cluj - Smart Cities, va avea loc în perioada 8-10 aprilie 2016, în incinta Spherik Accelerator, str. Gării nr. 21. Noi venim cu spațiul, resurse, mentori extraordinari și-ți oferim oportunitatea de-a cunoaște oameni pasionați și interesați de-a învăța și de-a produce o schimbare în bine. Ce aduci tu? Entuziasm, creativitate, energie și dorința de-a găsi

www.todaysoftmag.ro | nr. 44/februarie 2016

9


comunități

Comunităţi și Evenimente Lansarea numărului 44 al Today Software Magazine Februarie 23 (Cluj) - Ora 18:00 ISDC România

Today Software Magazine Comunitate construită în jurul revistei TSM. facebook.com/todaysoftmag facebook.com/groups/todaysoftmag/ meetup.com/todaysoftmag youtube.com/todaysoftmag Data înfiinţării: 06.02.2012 Nr. membri: 2977

Fighting Terrorism with Django, Big Data and NLP

24 februarie (Cluj) - Ora 6:45 meetup.com/RoP y thon-Cluj/e vents /228917042/ Organizator: RoPython - Cluj O comunitate Python care dorește să aducă împreună pasionații acestui limbaj. meetup.com/RoPython-Cluj/

Microarchitectures for Small Android Applications & Post-MWC Round Table

29 februarie (Timișoara) - Ora 6:30 Loc. Startup Hub Timisoara meetup.com/TiMoDev/events/229023544/ Organizatori: Timisoara Mobile Development Group Comunitatea programatorilor mobile din Timișoara meetup.com/TiMoDev/

Agile Mammoths Games

Martie 11 (Cluj) - Ora 9:00 Loc: Grand Hotel Italia colorsinprojects.ro/evenimente/?tab=1 Organizator: Colors in projects Este o companie axată pe training-uri de project management. Simona Bonghez, cea care conduce Colors in projects, este

10

cunoscută publicului TSM prin seria de articole Gogu.

Meetup #47 - Making AllegiantAir.com accessible

2 martie (Cluj) - Ora 6:30 meetup.com/Tabara-de-Testare-Cluj/ events/228972479/ Organizator: Tabăra de testare Tabăra de Testare este o comunitate formată din testeri și alți profesioniști din industria IT care, în cadrul unor întâlniri informale lunare, împărtășesc din cunoștințele proprii și învață din experiențele profesionale ale celorlalți membri. www.meetup.com/Tabara-de-Testare-Cluj/

Agile Talks #X

9 martie (București) - Ora 6:45 meetup.com/The-BucharestAg ile-S of tware-Meetup-Group/ events/226301564/ Organizator: Agile Works Comunitatea programatorilor interesați de metodologii Agile meetup.com/The-Bucharest-AgileSoftware-Meetup-Group/

Share IT

10 martie (Cluj) - Ora 6:00 http://www.share-it.ro Organizator: Betfair România www.betfair.com

Cluj Innovation Days

31 martie - 1 aprilie (Cluj) - Ora 9:00 Universitatea de medicină și farmacie Iuliu Hatieganu clujinnovationdays.com Organizator: Cluj IT Cluster Organizație care cuprinde majoritatea companiilor de IT clujene și nu numai.

nr. 44/februarie, 2016 | www.todaysoftmag.ro

Innovation Labs 2016 Cluj Hackathon

12 martie - 13 martie (Cluj) - Ora 9:00 Loc. Impact Hub Cluj-Napoca www.facebook.com/ events/1066711880060381/ Organizatori: Innovation Labs și Simplon

Startup Weekend Cluj Smart Cities Edition

Aprilie 8-10 (Cluj) - Ora 18:00 Str. Gării nr. 21, 400267 Cluj-Napoca www.up.co/communities/romania/cluj/ startup-weekend/8696 Startup Europe Week Comunitatea a fost creată cu scopul de a reuni toate regiunile europene printr-un program de startup.


TODAY SOFTWARE MAGAZINE testare

testare

Armonie în Cross-Browser Testing

A

nul 2016 începe în forţă. Cred că toţi ne gândim la planuri, obiective şi viitor, mai ales lucrând într-un domeniu atât de dinamic. În ceea ce priveşte testarea aplicaţiilor software pe ramura web, se poate observa în mod clar o evoluţie.

Oamenii au început să aibă şi să simtă nevoia de a accesa o aplicaţie web nu numai de pe desktop, ci şi de pe o tabletă, un telefon mobil sau de pe calculatorul mamei de acasă, fără a avea parte de surprize majore în folosirea acesteia. După cum se poate observa, tocmai am menţionat câteva exemple de dispozitive cu diferite sisteme de operare, browsere sau chiar versiuni ale acestora. Aşadar, privind din perspectiva utilizatorului obişnuit sau chiar al clientului pentru care dezvoltăm o aplicaţie web, ca testeri sau programatori trebuie să ne întrebam: ce putem face să ne asigurăm că aplicaţia pe care o testăm nu are defecte, iar utilizatorul să poată naviga fericit? În cele ce urmează în acest articol am încercat să evidenţiez importanţa calităţii testing-ului pe mai multe platforme, precum şi rapiditatea plus uşurinţa cu care putem realiza acest lucru.

ca site-urile responsive să fie clasate mai sus în căutări, faţă de cele destinate doar pentru desktop. Azi sunt zeci de modele de smartphones şi tablete, sistemele de operare şi browserele venind cu tot mai multe îmbunătăţiri. S-a produs o creștere a masei de utilizatori, având așteptări tot mai mari din partea software-ului. Mai mult decât atât, nu toată lumea este la ultimul update al sistemului de operare sau al versiunii de browser. Aici intervin dificultăţile. În mod natural, de aici vin şi cererile clienţilor noştri legate de multitudinea de combinaţii de sisteme de operare (Windows, iOS, Android), devices (pentru care nu am suficiente degete la mâini să le enumăr) şi browsere (de la Chrome, şi până la IE8 şi noul Edge). Bineînţeles ţinând cont de faptul că pe majoritatea dintre acestea, aplicaţia trebuie să funcţioneze “aproape perfect”. Când ne gândim la testare, trebuie să ne gândim în primul rând, la calitate. Aplicaţia ar trebui să fie rapidă, intuitivă, să respecte anumite guidelines, fără că utilizatorul să simtă o diferenţă majoră între mijloacele de interacţiune, fie că este vorba despre o tabletă sau un calculator.

Fig. 1: Browsers

Dacă aţi citit articolul lui Ovidiu Măţan din TSM#43, “Previziuni pentru 2016”, ştiţi că Vlad Derdeicea declara faptul că există o evoluţie rapidă a deviceurilor mobile şi se aşteaptă ca în anul 2016 traficul mobil să fie egal cu cel de pe desktop. Eu am motive să menţionez că deja l-a şi depăşit, dacă ne uităm la ultimele rezultate. Aceasta înseamnă că vom avea mai multe site-uri responsive, întrucât companiile caută variante responsive şi chiar aplicaţii custom. Putem trage destul de uşor concluzia că interactivitatea multi-dispozitiv (responsive Web design) este în creştere. Inclusiv Google a decis

Fig. 2: Multitudinea combinațiilor de OS și browsers

Testarea pe o multitudine de devices, versiuni diferite de browsere sau sisteme de operare este o provocare de multe ori. Este nevoie de o strategie foarte bine pusă la punct, procesul fiind unul mai îndelungat, pentru ca noi ca testeri sau ca dezvoltatori să realizăm acest lucru cât mai bine într-un timp cât mai scurt. Spre

exemplu, funcţionalităţile se pot grupa astfel încât să nu fii nevoit să schimbi atât de mult platformele, în special în re-testing, când e nevoie să retestăm bug-urile fixate. Defectele care fac parte dintr-un anumit cloud de issues, nu neapărat din acelaşi User Story, pot fi retestate împreună pe aceeaşi platformă. Un exemplu pot fi bug-urile găsite pe Internet Explorer sau Safari. De multe ori acest proces poate părea extenuant și poate uneori, inutil, însă atunci când simţiti acest lucru vă recomand să vă puneţi următoarea întrebare: dacă aplicaţia pentru care faceţi development sau testing ar fi a voastră, cât interes aţi acorda testării cross-browser? Răspunzând la întrebarea de mai sus, am devenit motivată să caut soluţii. Iniţial, soluţia la această problemă am găsit-o în maşini virtuale. Acestea se pot descărca. Se alege o maşină virtuală (care va rula un anumit sistem de operare si un browser), apoi o platformă de virtualizare (VirtualBox, VMWare, etc) şi se descarcă un zip cu tot pachetul. Există intrucţiuni de instalare, iar procesul este destul de simplu. Problema este că durează extrem de mult, iar aceste maşini virtuale expiră după 90 de zile, sau pur şi simplu se pierde conexiunea la maşină din cauza unor erori, fiind nevoie ca procesul să fie reluat ulterior. Aceste maşini sunt destinate atât întrepriderilor cât şi utilizării acasă. Există diferite tipuri de maşini virtuale, fiecare cu funcţii diferite. Acestea asigură un substitut complet pentru o maşină reală care dispune de funcţiile necesare pentru executarea unui testing complet. Cu toate că sunt o alegere bună, nu găsim acel balans, acea armonie între calitatea şi rapiditatea tastării. Aşa că am trecut la o altă variantă. O altă soluţie recomandată este testarea prin intermediul unui tool online. Ca exemple avem BrowserStack, Sauce Labs, Browser Shots, Browserling, IE tester etc.

www.todaysoftmag.ro | nr. 44/februarie, 2016

11


testare Armonie în Cross-Browser Testing Eu personal am folosit BrowserStack (https://www.browserstack.com). Acesta este un cross-browser testing tool pentru testarea website-urilor publice şi servere securizate, care se află într-o infrastructură de tip cloud. Se pretează nu numai pentru testarea manuală, dar şi pentru Automation Testing folosind Selenium sau suite automate de test JavaScript. Folosind acest tool, veţi avea acces instant la mai mult de 700 de combinaţii de sisteme de operare și browsere reale, rulând pe desktop şi mobile. Este sub forma unui subscription, iar acesta depinde de pachetul pe care doriţi să îl folosiţi. Pentru început puteţi să îl folosiţi gratuit şi să vedeţi dacă se pretează nevoilor voastre

• Debugging: developer tools este pre-instalat (Firebug, Yslow, Microsoft Script debugger etc.); • Mobile: suport de la cele mai vechi la cele mai noi emulatoare mobile; • Visual: capturarea de screenshots per URL; • Visual: responsive design testing – generare de screenshots la rezoluţia actuală a device-ului; Pentru mobile devices se poate folosi atât portrait view cât şi landscape; • Portabilitate: sugestii cross-browser testing bazate pe statistici globale ale utilizării; • Local testing: se pot testa servere interne via BrowserStack utilizând o conexiune securizată; • Conexiune: atunci când sesiunea de testing este creată, maşina virtuală porneşte cu setările default (fără cache, cookies, istoric, descărcări, parole salvate etc.); • Acces: 100% up-time, acces instant. Marile avantaje ale acestor tipuri de tool-uri pentru o companie sunt următoarele: • Nu există niciun cost legat de achiziţii hardware; • Nu există niciun cost pentru menţinerea şi întreţinerea maşinilor virtuale sau timp petrecut în instalarea lor; • Nicun cost legat de infrastructură.

Fig. 3: BrowserStack tool

Avantajele acestui tool ar fi următoarele: • nu este nevoie de instalare, BrowserStack se accesează printr-un simplu link în browser; • micşorarea timpului de testing, viteză în testare; • rapiditate nu doar în switch-urile dintre browsere, dar şi între platforme (sisteme de operare); • accesul se face extrem de rapid, se pot salva în browser maşinile şi browserele pe care le accesaţi cel mai des; • experienţă nativă; • responsiveness: redimensionare în fereastra de browser; • suport pentru emulatoare de mobile; • oferă suport pentru Automation testing (Selenium, JavaScript). Funcţionalităţi: • Automation: integrarea dintre Selenium WebDriver și BrowserStack tool;

12

nr. 44/februarie 2016 | www.todaysoftmag.ro

Consider că folosind acest tip de tool am găsit o armonie între calitate- pentru că am reuşit să testez pe platformele prioritare, must-haves şi rapiditatea de a mă mișca în switch-ul dintre ele. La final pot garanta că avem într-adevăr un produs calitativ şi eficient. În cele din urmă, omul este predispus greşelilor şi testarea exhaustivă este foarte puţin probabilă, excepție făcând aplicaţiile mici. Acesta este principiul numărul doi al testării. De aceea, trebuie să ținem cont cu atât mai mult de celelate cinci principii: testarea evidenţiază prezenţa defectelor, necesitatea testării în fazele incipiente, testarea cluster-elor de defecte, “Pesticide Paradox”, faptul că testarea este dependentă contextual. În cele din urmă trebuie să ne asigurăm că facem tot posibilul să găsim defectele pe majoritatea platformelor, pentru ca în final, interacţiunea cu utilizatorul să fie cu succes, iar sistemul să răspundă cerinţelor şi nevoilor utilizatorilor pe oricare dintre platforme. Roxana Soporan Roxana.Soporan@isdc.eu Tester @ ISDC


testare

Testarea serviciilor web folosind SOAP UI

Î

Ioana Luțaș ioanal@bissoft.ro QA Engineer @ Bissoft

n acest articol voi prezenta pe scurt cum se poate acoperi testarea funcţională a serviciilor web folosind aplicaţia SOAP UI şi Groovy Script. Testarea serviciilor web este realizată folosind ori modelul cascadă, în care outputul unui pas de test este inputul pasului următor, ori modelul ce presupune o conexiune la DB şi prelucrarea datelor stocate în fişier Excel. Testele realizate sunt incluse într-un sistem de build automat folosind Maven. În urmă execuţiei testelor se trimite pe email raportul de execuţie ce conţine statusul pentru fiecare metodă din serviciile testate.

Scurtă prezentare a SOAP UI Într-o aplicaţie orientată pe servicii, serviciile web sunt slab cuplate, astfel încât, odată ce un serviciu este implementat, acesta poate fi testat independent de celelalte. Dacă o aplicaţie este expusă atât pe web cât pe mobile, testarea serviciilor se realizează o singură dată, validarea UI fiind realizată ulterior pentru web, respectiv mobile. Serviciile web comunică între ele dar şi cu alte aplicaţii prin transmiterea de mesaje. Simple Object Access Protocol (SOAP) este un standard frecvent utilizat pentru transmiterea mesajelor. Un mesaj SOAP este un document XML ce prezintă structura de mai jos: • SOAP envelope este elementul care conţine toate nodurile dintr-un mesaj. Identifică şi versiunea de SOAP – SOAP 1.1 sau SOAP 1.2 • SOAP header este un element opţional

care conţine meta-informaţie (instrucţiuni de procesare a mesajului, date de securitate, informaţii de adresă). • SOAP body este elementul care conţine mesajul propriu-zis. Web Service Description Language (WSDL) este un format XML care descrie serviciile web ca un set de puncte de access care procesează mesaje, structura acestuia fiind împărţită in Types, Message, Port Type si Binding. SOAP UI este o aplicaţie free şi open source, parte din suita de aplicaţii dezvolate de SmartBear Software1, ce poate fi folosită pentru testarea serviciilor web. Există şi versiune contra cost a aplicaţiei, care oferă intefaţă bazată pe formulare cât şi opţiuni suplimentare de testare. SOAP UI poate fi folosit pentru: • Testarea serviciilor SOAP şi REST. Pe baza contractului se generează request-uri default cu date prepopulate. Când se adaugă un WSDL, SOAP UI scanează toate SOAP bindings care apar în WSDL şi găseşte metodele expuse de către serviciu. 1

http://smartbear.com

www.todaysoftmag.ro | nr. 44/februarie, 2016

13


testare Testarea serviciilor web folosind SOAP UI Generează apoi request-urile aferente acestor metode, corespunzător schemei XML a serviciului. • Testare funcţională, de integrare, de performanţă, de securitate folosind acelaşi mediu de testare. • Simularea serviciilor. • Integrarea de scripting folosind Groovy Script sau JavaScript. • Refactorizare WSDL – modificare automată a testelor existente pentru a fi la zi cu noua versiune a contractului. • Se integrează cu alte aplicaţii, inclusiv cu cele de integrare continuă. Există plugin-uri pentru Maven, Intellij IDEA, Eclipse, JBoss, NetBeans. • Se pot genera rapoarte de execuţie, cu diferite metrici. Selectând opțiunea de Test Coverage, SOAP UI permite analiza gradului de acoperire a elementelor contractului, prin testele funcţionale create. • Fiind dezvoltat în Java, rulează pe diferite tipuri de sisteme de operare. • Execuţia testelor din interfaţă sau din linie de comandă.

mai întâi apelăm metoda Create. Rezultatul generat de metoda Create devine intrare pentru metoda Update. Ultima operaţie va fi cea de ştergere a datelor inserate în baza de date. Răspunsul returnat de către metoda Update este validat, prin crearea de multiple assert-uri pe elementele din răspuns. Se efectuează multiple validări – conţinutul elementului este cel aşteptat, data întoarsă este de un anumit tip ( exemplu datetime), dacă un anumit element este obligatoriu, dacă se întoarce un anumit cod se eroare şi mesajul aferent codului de eroare, dacă se respectă lungimea maximă pentru un anumit câmp, dacă se permit caractere speciale. Pentru a pune în practică abordarea cascadă, folosind Groovy Script, am creat o serie de metode ajutătoare care sunt apelate în cadrul test case-urilor. Aceste metode ajutătoare generează test case-uri tipizate pentru toate metodele unui serviciu, generează date de un anumit tip, copiază datele din răspuns într-un pas de tipul Properties (câmp - valoare), copiază date dintr-un pas în altul, creează validări mai complexe, etc. .

Când se creează un proiect SOAP UI, acestuia I se ataşează unul sau mai multe contracte. Când se încarcă contractul, se vor încărca toate metodele expuse de pe acel serviciu şi se pot crea request-uri default pentru fiecare metodă în parte.

Imaginea 3 – Abordarea Cascadă

Imaginea 1 – Încărcarea contractului

Abordarea cascadă pentru testarea funcţională a serviciilor web În cadrul firmei folosim intens SOAP UI, versiunea Ready! API – SOAP UI NG, pentru testarea funcţională a servicilor web. Testele sunt organizate în Proiecte. Un proiect poate avea mai multe suite de teste (Test suites). O suită poate avea mai multe Test cases. Fiecare Test case conţine Test steps. Prin test steps organizăm logica de validare a unei anumite funcţionalităţi dintr-un serviciu web.

SOAP UI execută Test case-urile secvenţial. Organizând testele în ordinea dorită, ne asigurăm că la fiecare execuţie datele de test sunt unice şi nealterate. Dacă primul test, cel de creare element, eşuează, , toate testele ulterioare vor eşua. Pentru a avea un grad mare de acoperire a elementelor din contract, se trimite request-ul cu toate elementele având date valide şi se crează assert-uri pe fiecare element din răspuns. În funcţie de validarea dorită, se selectează unul din assert-urile standard sau folosind Groovy Script se pot crea assert-uri mai complexe. Pentru validarea conţinutului datelor din răspuns, comparăm datele generate şi stocate într-un pas de tipul Properties cu cele întoarse în răspuns. După fiecare execuţie se pot genera rapoarte de execuţie, conţinând toatele metodele executate, câte teste au trecut, câte au eşuat, care este cauza pentru care au eşuat, care este rata de acoperire a elementelor din contract.

Testarea folosind conexiunea la DB

Imaginea 2 – Exemplu de request, response şi assert pe response

Pentru a ne asigura că datele de test sunt unice la fiecare execuţie a testelor, una din abordările folosite este testarea in cascadă. Dacă se doreşte validarea metodei Update de exemplu,

14

nr. 44/februarie 2016 | www.todaysoftmag.ro

În funcţie de specificul proiectului, poate fi necesară inserarea sau ştergerea direct din baza de date. În acest sens, folosim Setup script şi Tear down script existente în fiecare Test case. Datele de intrare şi cele de validare a răspunsului sunt organizate într-un fişier Excel. Funcţiile Groovy necesare pentru stabilirea conexiunii la DB, pentru manipulare date, pentru ştergere conexiune, sunt grupate într-un fiser groovy script. Pentru a putea accesa baza de date din cadrul SOAP UI este nevoie de driver-ul ojdbc6 .jar. Driver-ul trebuie copiat în locaţia directorInstalareSOAPUI \ jre\lib\ext. Pentru ca execuţia testelor să fie foarte rapidă, fiecare metodă care se testează are propriul fişier cu date de test. Pentru un serviciu vom avea atâtea fişiere Excel câte metode sunt pe serviciu.


TODAY SOFTWARE MAGAZINE În urmă execuţiei testelor se trimite un email care conţine raportul execuţiei testelor. În acest fel avem un feedback rapid şi constant privitor la codul implementat. Un exemplu de raport primit pe email este prezentat în figura de mai jos. Emailul conţine statusul per fiecare serviciu/per fiecare metodă din serviciu, cât şi link-uri către raport general şi de coverage pentru fiecare serviciu în parte.

Imaginea 4 – Testare folosind conexiunea la DB

În partea de setup se iniţializează conexiunea la DB şi se setează conexiunea pe context pentru a putea fi folosită ulterior în cadrul aceluiaşi Test case. Se citesc datele din fişierul Excel şi se inserează în DB. Se execută paşii următori din test case– încărcarea datelor necesare validării răspunsului, efectuarea de request-uri, validarea răspunsului. În partea de Tear down script, ultimul pas executat din Test case, se utilizează conexiunea existentă la DB dacă e disponibilă, dacă nu este disponibilă se creează o conexiune nouă. Se citesc din fişierul Excel datele ce trebuie şterse din DB şi se efectuează ştergerea din baza de date. Se şterge conexiunea creată pentru accesul la baza de date.

Imaginea 7 – Raport de execuţie primit pe Email

Imagine 8 - Exemplu raport de acoperire

Imagine 5 – Setup script

Integrarea testelor SOAP UI într-un sistem de build automat Testele SOAP UI sunt salvate în format XML. Aceste teste leam integrat într-un sistem de build automat, utilizând Jenkins. Există un job configurat să execute testele automat, ori de câte ori se face build pentru codul comis. Testele sunt executate pe o maşină configurată pentru testare. Pentru integrarea în Jenkins am utilizat Maven.

Imaginea 6 – Jenkins job -comnada Maven pentru execuţia testelor

www.todaysoftmag.ro | nr. 44/februarie 2016

15


testare

Harta testării

M

i-am petrecut ultimii zece ani din viață în industria IT. Am început ca tester și chiar dacă mi-am petrecut ultimii câțiva ani drept Manager de Calitate, mă consider însă un tester. În experiența mea de tester am remarcat o anumită percepție asupra condiției testerului, care tinde să-i minimalizeze rolul acestuia.

Claudiu Draghia claudiu.draghia @capgemini.com Quality Manager @Capgemini

16

nr. 44/2016, www.todaysoftmag.ro

Acest mod de a-l percepe pe tester aparține de obicei acelor manageri care cred adesea că oricine poate testa aplicații, cauzând abordări superficiale în ceea ce privește asigurarea calității. Dincolo de faptul că a nu recunoaște că profesia de tester este una solicitantă și meritorie îi face pe testeri să se simtă neapreciați, în ciuda muncii lor grele, această atitudine se răsfrânge în mod negativ asupra nivelului calității în industria IT. ” Care mai e rostul testării dacă tot sfârșim prin a avea bug-uri în producție?” Simțeam nevoia să fac ceva în legătură cu asta, așa că am început să desenez. Trebuia să îmi pun pe hârtie gândurile, experiențele, cunoștințele mele de testare software, deoarece doream ca ceilalți oameni să vadă ceea ce văd eu. Am muncit oricând am avut puțin timp liber și, după câteva luni, am reușit să pun ceva laolaltă. Prima încercare a fost stângace și, ca să mă exprim frumos, urâtă ca naiba, să spun adevărul. Imediat ce prima schiță a fost gata, am început să mă uit la desenul meu ca la o hartă. O hartă care dezvăluia semnificații, o hartă care conecta puncte ce reprezintă zonele principale ale testării software. A fost nevoie de puțină ajustare și șlefuire dar, după alte câteva săptămâni, aveam în sfârșit ceva de arătat lumii. Am cumpărat un domeniu și am încărcat harta în format digital. O puteți vedea la

http://thetestingmap.org/. ”Harta crescuse atât de mult în aria de acoperire și conținut, dar încă era o picătură de apă într-un ocean. Drept urmare, a crescut și ambiția mea.” Am început să caut mai multe informații pe web. Pe cât de dificil ar putea suna asta (și a fost), am reușit să găsesc numeroase articole relevante dedesubtul grămezii mari de spam și reclame. Mi-am făcut propriul meu motor de căutare Google, care efectua căutări numai în website-urile de testare software. Pe măsură ce harta continua să crească în dimensiune, am descoperit o comunitate surprinzătoare de testeri care îmi împărtășeau entuziasmul și pasiunea pentru această meserie. Am găsit multe website-uri și bloguri scrise de către testeri care erau dispuși să împărtășească cunoașterea lor în mod gratuit. Existau atât de multe informații utile încât am început să le leg prin link de zone ale hărții. Citeam cu frenezie, aproximativ 50 de articole pe săptămână, timp de mai multe luni, doar ca să văd dacă subiectul postării de pe blog putea fi inclus pe hartă. În cele din urmă, am fost obligat să construiesc o nouă pagină web unde puteam citi articolele și apoi să le includ în Harta testării. Puteți găsi pagina la http:// softwaretestingblogs.thetestingmap.org/. Acum să parcurgem împreună principalele zone ale hărții.


TODAY SOFTWARE MAGAZINE Procese și activități. Avem nevoie de reguli și regulamente, dar, pe de altă parte, după cum spune Barry Schwartz: regulile nu vor putea să ghideze oamenii prin situații complexe sau neclare. Problemele din lumea reală sunt adesea ambigue sau prost definite, iar contextul se schimbă mereu. Găsirea unei balanțe este cheia pentru a avea un proces bun. Metodologie. Testerii ar trebui să știe ce teste să ruleze și tehnicile pe care le au la dispoziție, și când să le adapteze. Utilizarea metodologiei. Uneori metodologia nu le acoperă pe toate. Ar putea să existe cazuri particulare și, în această situație, zona aceasta este încă în construcție. Dar am început să creez câteva exerciții de testare care, cred eu, îi vor ajuta mult pe testeri. Principiile testării. Fără principii, nu am avea ghidare. Adevărul este că nimeni nu este de acord cu privire la principiile care au prioritate. Este o discuție deschisă, așa că vă puteți alege favoritul. Activități de sprijin. Testarea este o parte vie și care evoluează a ciclului de viață al dezvoltării. Nu este sarea pe care o împrăștii peste omleta ta după ce ai scos-o din tigaie, ci mai degrabă amestecarea și atenția continuă pe care i-o acorzi pe durata întregului proces de gătire. Instrumente. Efortul și câștigul fiecărei meserii. Un pictor bun este unul care știe cum să își adapteze pensulele la dispoziția sa și la cerințele picturii. Tehnologia. Considerăm că este necesară o fundație de aptitudini tehnice. Cei mai buni șoferi sunt adesea și buni mecanici, deoarece ei înțeleg cum funcționează o mașină și de ce este nevoie pentru ca o mașină să aibă performanțe.

Resurse de învățare. Nu există o biblie a testării sau vreun manual sau colegiu unde să înveți testarea. Resursele sunt încă dispersate și, drept urmare, testerii trebuie să fie mereu atenți la apariția noilor informații. Social. Testarea este un nou meșteșug. Multe cunoștințe sunt împărtășite prin evenimente sociale (precum întâlnirile). Cea mai cunoscută întâlnire locală este Tabăra de Testare. Istorie. Joris Meerts și contribuțiile suplimentare ale lui Dorothy Graham, au reușit să redacteze o minunată istorie a testării. Deci, la ce folosește harta? În primul rând, ar putea fi utilizată drept un ghid în demersul tău de a deveni un tester mai bun. Sau ai putea avea o discuție rapidă în care participanții aleg un subiect și vorbesc despre el timp de cinci minute. În ultimul rând, ai putea încerca să o arăți oamenilor care consideră că testarea software poate fi făcută de către oricine și să vezi ce opinie au. Așadar, tu cum ai utiliza-o?

Aptitudini soft. Testarea are loc adesea într-un context care implică oameni. Astfel, testerii trebuie să știe cum să lucreze cu oamenii.

www.todaysoftmag.ro | nr. 44/februarie 2016

17


programare

Crearea unui Microsoft Band Tile pentru a direcționa notificările de stare a construcției

A

nul trecut, Microsoft a lansat Microsoft Band 2. Este foarte puternic cu mulți senzori și o autonomie a bateriei care îmi oferă două zile de energie.

Privire generală

care îl afișezi în tile. Încearcă să te concentrezi pe conținutul pe Dar ceea ce mă impresionează este partea de software și care dorești să îl afișezi. Trebuie să identifici conținutul care poate ușurința cu care poți dezvolta un tile (o aplicație custom) pentru îmbunătăți viața proprietarului de bandă. acesta. Nu trebuie să înveți C# pentru că poți crea ușor un tile Deoarece numărul de tile-uri pe care le poți instala pe bandă direct din browser.1 este limitat, ar trebui să ai în vedere faptul că acel client va păstra numai tile-urile cele mai importante, care îi aduc informațiile despre dispozitivul său de care are nevoie cu adevărat. Altfel, tile-ul tău va fi doar un alt tile, pe care nimeni nu îl utilizează sau nu îl păstrează mai mult de 5 minute. Orice dezvoltator poate crea un tile și poate direcționa conținut spre Microsoft Band, în doar 2 sau 3 minute. Dar numai ideile bune și conținutul util vor ajunge pe dispozitivele clienților.

Echipa noastră Fiecare dezvoltator din echipa din care fac parte a primit anul trecut un Microsoft Band 2. Am început să facem glume pe tema asta, cum că am multiplicat numărul de Microsoft Bands în Acesta îți va permite să obții conținut din web și să îl Cluj-Napoca de aproape zece ori mai mult. Echipa nu este atât direcționezi spre tile-ul tău. În acest fel poți ușor integra aplicația de numeroasă, dar la acel moment în Cluj-Napoca știam doar o ta în band! Rapid și ușor. singură persoană cu band.

Ideea Am început să mă gândesc la ceea ce am putea face cu bandul. În cele din urmă am ajuns la o soluție simplă, pe care o voi descrie de la un capăt la altul în partea care urmează în articolul meu.

Direcționarea notificărilor de modificare a statusului dezvoltării spre band

Un alt aspect grozav este modul cum pui în folosință și partajezi tile-urile. Nu este nevoie să le direcționezi în magazin, să le validezi și așa mai departe. Nu. Ești liber să partajezi tile cu oricine. Doar încarcă-l într-o locație specifică și partajează URL-ul cu prietenii tăi prin mail sau web. Telefonul poate detecta tile în mod automat și îl poate deschide utilizând aplicația Microsoft Band.

Informația este puterea Pentru clienți, lucrul cel mai important este conținutul pe 1 https://developer.microsoftband.com/WebTile.

18

nr. 44/februarie, 2016 | www.todaysoftmag.ro

Ideea este simplă. Noi ne păstrăm codul sursă pe TFS Online (Visual Studio Online) și TFS 2015 la locație. Avem diferiți agenți de dezvoltare pe Azure și în rețeaua privată a companiei noastre (la locație) care construiesc soluția noastră, rulează teste pe unități, extrag diferiți parametri și pun în folosință aplicația în mod automat pe medii diferite. Scopul principal este să înștiințeze cât mai curând posibil echipa de dezvoltare de faptul că a picat construcția.


TODAY SOFTWARE MAGAZINE Privire de ansamblu asupra blocajelor și arhitecturii Scopul principal este acela de a direcționa o notificare înspre band în momentul în care construcția eșuează. Ideea este simplă, dar avem nevoie să găsim o soluție pentru a putea să trimitem o notificare către band fără a trebui să înmagazinăm TFS User Credentials (Datele de identificare ale utilizatorului).

Nu există nicio modalitate de a depozita datele de identificare pe band și a cerceta serverul de control sursă. O soluție posibilă este să dezvoltăm o aplicație pentru telefon care să direcționeze aceste notificări. Dar, așteptați… noi nu suntem dezvoltatori de mobile și fiecare dintre noi avem tipuri diferite de telefoane – iPhone, Windows Phone și Android. S-ar putea să meargă, dar efortul de dezvoltare este prea costisitor. Am putea să scriem o aplicație mobile cross platform, dar până să o lansăm în magazin, se va pierde interesul și oportunitatea de moment.

rezolvată cu ușurință. Deoarece CI este disponibil publicului, noi trebuie să înregistrăm în aplicația noastră web un nume de utilizator și o parolă care să poată fi utilizată pentru a interoga starea construcției în legătură cu modificările. Dar pentru serverul nostru CI de la locație, s-ar putea să avem o problemă. Serverul CI de la locație nu este disponibil publicului. Aceasta înseamnă că nu putem interoga serverul nostru pentru a verifica starea construcției de pe internet. Haideți să ne folosim imaginația.

Care este acțiunea implicită făcută de un server CI atunci când o construcție eșuează, cu excepția schimbării de culoare? Acțiunea cea mai obișnuită este să trimită un email unuia sau mai multor utilizatori. Aceasta este cheia noastră pentru a putea accesa o notificare de schimbare de status.

RSS Feed (Intrare RSS) O soluție mai simplă este să expunem un RSS feed / o intrare RSS cu notificările de modificare a statusului construcției. De fiecare dată, când se modifică starea construcției, un conținut nou va fi disponibil pe Serverul RSS. Tile-ul care rulează pe band va detecta noul conținut și va înștiința utilizatorul.

În acest moment am rezolvat numai o parte din problemă. Avem un punct terminal web care poate fi utilizat de către tile pentru a accesa o intrare RSS. Canalul de alimentare RSS poate fi folosit de către band pentru a obține notificările de modificare a statusului construcției.

Direcționarea notificărilor Acum, noi trebuie să găsim o cale de a direcționa modificarea stării construcției de la serverul CI către aplicația noastră web. Acest lucru este puțin mai înșelător și vă rog să ignorați orice tip de probleme de securitate care vor fi doar menționate, nu și acoperite. Pentru Visual Studio Team Services, problema poate fi

Aparatul CI va trimite o notificare către serverul nostru de mail. În mod normal, un Mail server este accesibil publicului de pe internet. Aplicația noastră web RSS va trebui să înregistreze datele de identificare pentru email. Chiar dacă soluția va funcționa și ar putea fi utilizată cu succes, noi trebuie să avem în minte că: • Datele de identificare vor fi înregistrate de către Web App. • Informațiile confidențiale (Build Status) vor fi disponibile publicului pe un terminal web care poate fi utilizat de oricine. • Orice persoană care are tile-ul vostru va putea să vadă notificările de schimbare de status ale construcției (construcțiilor). Toate aceste puncte trebuie să fie discutate cu grupul de securitate al companiei voastre. Nu ar trebui niciodată să implementați o astfel de soluție fără a avea acordul lor.

Implementarea

Notificarea prin email TFS Soluția este aplicabilă pentru versiunea mai veche a TFS, de asemenea. Pașii și mostrele de mai jos sunt pentru Visual Studio Online și TFS 2015. Va trebui să definiți o alertă care să trimită o notificare prin www.todaysoftmag.ro | nr. 44/februarie 2016

19


programare

pentru construcții diferite.

Crearea unui Microsoft Band Tile pentru a direcționa notificările de stare a construcției email în momentul în care calitatea construcției se modifică. În funcție de nevoile voastre, puteți utiliza același cont pentru a trimite notificări

Găzduirea aplicației noastre web Putem găzdui aplicația noastră web drept o Web App în Azure. Nivelul gratuit va fi suficient pentru a ne juca puțin. Url-ul aplicației mele web va fi asta2. Statusul construcției va fi găsit pe hartă aici3.

Verificarea emailurilor noi Există diferite biblioteci care te pot ajuta să îți accesezi serverul email. Tu ar trebui să decizi ce tip de bibliotecă vrei să folosești în funcție de tipul serverului email. Dacă utilizezi Outlook sau Exchange Server, atunci poate ai vrea să folosești biblioteca EWS. Pentru un cont Gmail, s-ar putea să ai nevoie de un client POP3 și un purser MIME precum OpenPOP.NET. În exemplul de mai jos, puteți vedea cum se poate primi un mesaj, folosind biblioteca OpenPOP.NET. POPClient client = new POPClient(); client.Connect(„pop.gmail.com”, 995, true); client.Authenticate(„radu.vunvulea.sample@gmail.com”, „Hahaha”); var count = client.GetMessageCount(); Message message = client.GetMessage(count);

Subiectul poate fi accesat în felul următor: ‚message.Headers. Subject’. Expunerea notificărilor drept intrare RSS Următorul pas este să expunem noile notificări drept intrări RSS. Acest lucru poate fi făcut în 10 minute, dacă utilizăm APIController. Nu avem nevoie să implementăm o intrare RSS și să dispunem în serie conținutul. Acest lucru este sprijinit de ASP.NET MVC. Există chiar și un ActionResult special care este creat pentru acest scop – RssActionResult. La RssActionResult, noi trebuie să stabilim proprietatea ”Feed” care este de tipul ”SyndicationFeed”. public ActionResult BuildStatusRSS() { IEnumerable<BuildStatus> buildStatus = BuildStatusManager.GetAllByDate(8); SyndicationFeed buildFeed = new SyndicationFeed(„Build Status”, new Uri(„http://www.raduvunvulea.com/ buildStatus/RSS”), Guid.NewGuid().ToString(), DateTime.Now); List<SyndicationItem> buildStatusList = new List<SyndicationItem>(); foreach (BuildStatus bs in posts) { string postUrl = string.Format(„build\\buildentry-{0}”, bs.Id); SyndicationItem buildStatus = new SyndicationItem(bs.Title, bs.Description, new Uri(postUrl), bs.Id, bs.Date); buildStatusList.Add(buildStatus); }

}

Publicarea tile Cea mai simplă soluție pentru a publica tile este să îl încarci pe un sistem de partajare fișiere, precum OneDrive și să creezi un link de partajare. Finalul Și am sfârșit. Odată ce accesezi linkul la tile de pe telefonul tău, aplicația Microsoft Band se va deschide și vei putea direcționa tile-ul.

Concluzie În acest articol am expus o soluție de la un capăt la altul legată de cum putem direcționa notificări pe Microsoft Band-ul nostru, fără a dezvolta o aplicație pentru telefon. Din perspectiva tile, crearea și publicarea unui tile este ușoară. Lucrul cel mai complex este crearea intrării (feed) cu informațiile corecte. Nu din cauza problemelor tehnice, ci este vorba de ce conținut să afișăm. Ar trebui să ne amintim că ”informația este puterea”. 2 http://rvbuilstatus.azurewebsite.com

buildFeed.Items = buildStatusList;

3 http://rvbuilstatus.azurewebsite.com/build/rss

return new RssActionResult {Feed = buildFeed};

4 https://developer.microsoftband.com/WebTile

În exemplul de mai sus, am generat un RSS cu status al construcției. Clasa BuildStatus este o clasă custom în care se depozitează informațiile legate de o construcție specifică. Această clasă este populată pe baza emailurilor care sunt trimise de TFS atunci când statusul unei construcții se modifică.

20

Crearea de Tile Acesta este ultimul pas pe care trebuie să îl facem. Noi trebuie să creăm Microsoft Band Tile. Acest lucru va fi făcut direct din browser 4. Următorii pași sunt destul de simpli; trebuie să specificați culori, icon-uri și alte astfel de lucruri. Odată ce am făcut asta, putem descărca tile pe computerul nostru local.

nr. 44/februarie 2016 | www.todaysoftmag.ro

Radu Vunvulea radu.vunvulea@iquestgroup.com Senior Software Engineer @iQuest


management

Adoptarea unei culturi DevOps

D

evOps-ul este un fenomen tot mai întâlnit astăzi în mediul IT și reprezintă probabil viitorul modului în care ne organizăm munca în comunitățile noastre. Vom vedea în rândurile următoare de unde a apărut nevoia pentru el, cum se prezintă astăzi și de ce este considerat o cultură, nu o metodologie. La final, un exemplu concret ne va arăta cum este adoptat DevOps-ul într-o companie clujeană.

Claudiu Demian claudiu.demian@yardi.com System Administrator @ Yardi Romania

Mic istoric Domeniul IT a trecut de-a lungul timpului prin mai multe faze atât tehnologice cât și organizaționale. Fie că ne dăm seama sau nu, modul în care ne organizăm munca în cadrul echipelor a depins într-o oarecare măsură, de nivelul tehnologic de la momentul respectiv. Modelul waterfall de dezvoltare software a apărut (ca faze, nu ca nume), în 1956, fiind probabil, primul mod de standardizare al acestui proces. El cuprinde în mare următoarele etape: analiză și design, implementare, testare și întreținere. Limitările tehnologice au permis menținerea acestui proces o perioadă îndelungată de timp. Software-ul era rulat fie pe mainframe-uri la firma care crea software-ul, fie era livrat static clientului (CD, dischete etc). De asemenea, au apărut roluri bine definite în organizații: dezvoltatori (programatori), administratori de sisteme, administratori baze de date, ingineri rețele etc. . Dar, cu timpul, a apărut o problemă: clientul.

De multe ori părea să fie cam indecis și chiar ambiguu. Atât de ambiguu încât un coleg din firma noastră și-a scris lucrarea de doctorat având ca temă ”Ambiguitatea în cerințele software”. Dar mai gravă era indecizia. Aceasta genera mereu schimbări în cerințe, care duceau mai apoi la schimbări în design, implementare și așa mai departe. Pentru că vechiul mecanism waterfall nu făcea față, de multe ori, mediului acesta dinamic, situația a fost salvată de metodologia Agile. Agile-ul era un waterfall mai mic și mai scurt, repetat de mai multe ori, până când produsul era terminat sau clientul satisfăcut. Desigur, comparația aceasta e grosolană și suprasimplifică Agile-ul, tema fiind mult mai complexă și interesantă. Ce ne interesează pe noi în cazul de față este că, în cadrul companiilor, împărțirea atribuțiilor a rămas aceeași: programatorii dezvoltă aplicația (iterativ, de data aceasta), iar ceilalți își văd în continuare de sistemele, bazele de date și rețelele lor. Presiunea, însă, pe care o pune mediul

www.todaysoftmag.ro | nr. 44/februarie, 2016

21


management Adoptarea unei culturi DevOps online asupra echipelor implicate în dezvoltarea și întreținerea aplicațiilor contemporane, care sunt fie aplicații web, fie depend în mod intrinsic de web), au determinat unele organizații să facă un pas important: au dărâmat zidurile imaginare care s-au înălțat tot mai mult între echipe. Au reușit să așeze un administrator între developer-i și, probabil surprinzător, au avut rezultate la care nici ei nu s-au așteptat: mai puține bug-uri, mai multe deploy-uri, mai puțin downtime și reveniri mai rapide în caz de probleme. Datorită acestei apropieri între cele două echipe, mișcarea a primit numele de DevOps (în unele organizații partea de System Administration poartă și numele de Operations).

Despre DevOps Nevoia de a apropia domeniile Development de Operations a generat mai multe abordări în cadrul organizațiilor IT. Tot mai multe companii fac recrutări pe poziții de DevOps. Candidatul ideal, în cele mai multe din cazuri, este reprezentat de un administrator rockstar având competențe în administrarea de sisteme, deployment-uri de aplicații, baze de date, scripting, programare și, dacă se poate, puțin management. În alte situații companiile creează echipe noi DevOps care să stea între echipa clasică de developer-i și echipa de administratori. Persoanele de tip ”rockstar” pot ajuta o echipă, aducând un bagaj mai mare de cunoștințe și experiență de care să beneficieze toți membrii echipei, mai ales dacă aceste persoane știu să împartă informația. O denumire mai potrivită pentru acest angajat este full-stack developer. Unele companii, ca Etsy, preferă totuși să-i evite, în favoarea unor angajați de nivel junior pe care să îi pregătească ei. Motivul pentru care preferă această abordare îl reprezintă faptul că, din experiența lor, administratorii rockstar nu lucrează în echipă la fel de bine ca ceilalți angajați. Ei preferă echipe bine închegate, care să funcționeze ca un tot unitar și care să nu depindă de o singură persoană. Deși unii ar putea considera că Etsy face o generalizare prea simplistă, adevărul este că recrutarea unui full-stack developer este foarte dificilă, existând puține persoane pe piață cu aceste competențe. Pentru un proiect sau o companie, formarea de noi angajați care să lucreze bine împreună reprezintă o abordare mai eficientă economic și mai sustenabilă. În privința celei de-a doua abordări, putem să presupunem că, pe termen lung, interpunerea unei echipe noi între două echipe care trebuie să comunice bine nu poate avea efectul scontat. Pe lângă faptul că mediul de comunicare se sparge în două (dev - devops - ops), trebuie găsită și o distribuire eficientă a responsabilităților. Modelul care va fi prezentat în exemplul de la finalul articolului e un exemplu de apropiere treptată a echipelor, având ca scop crearea unei mentalități și a unui mod de a face lucrurile in spiritul DevOps.

Metodologie versus Cultură Primul impuls al celor care încearcă să definească DevOps-ul este să afirme că este o metodologie. Metodologia se referă, în general, la analiza teoretică a metodelor aplicate într-un domeniu. De exemplu, când discutăm despre metodologia Agile, ne referim la un set întreg de metode și bune practici pe care aceasta le propune, având în spate o argumentare teoretică și chiar practică. DevOps-ul nu vine să înlocuiască Agile-ul ci, în cel mai bun

22

nr. 44/februarie 2016 | www.todaysoftmag.ro

caz, doar să-l completeze. DevOps-ul propune doar ruperea barierelor care s-au format între partea de Dev (programatorii) și partea de Ops (administratorii) din spatele proiectelor software. Acest demers afectează întreaga dinamică din organizație, implicând toate nivelele ierarhice în acest proces. Astfel, în organizația care practică DevOps, există deja o cultură a comunicării și a rezolvării de probleme în echipe mixte.

De ce să facem devops? Răspunsul la această întrebare îl oferă raportul ”Puppet 2015 State of DevOps”. Acest raport este pregătit anual de Puppetlabs şi reprezintă rezultatul statistic oferit de răspunsurile a peste 4900 de angajaţi în IT, de pe toate poziţiile şi din mai multe regiuni geografice. Concluziile acestui raport sunt că organizaţiile IT cu performanţe ridicate: • Fac deploy de 30 de ori mai des. • Au timpi de lead de 200 de ori mai scurţi (intervalul de la scrierea codului până când ajunge în producţie). • Au de 60 de ori mai puţine eşecuri în producţie. • Îşi revin de 168 de ori mai rapid dintr-o stare de avarie. Aceste numere reprezintă comparaţia între companiile cu cele mai ridicate performanţe şi cele mai slab performante. Modul în care este definită performanţa unei organizații IT şi cum se măsoară aceasta sunt detaliate foarte explicit în documentul menţionat, împreună cu factorii care ajută la îmbunătăţirea ei. Vom enumera doar câțiva, invitând cititorul să parcurgă întregul raport: • Aplicarea principiilor de lean management și continuous delivery; • Implicarea managementului în procesul de schimbare în DevOps; • Designul aplicațiilor tinând cont de testabilitate și sustenabilitate.

DevOps la Yardi Romania Povestea Yardi România a început în anul 2006 cu PropertyShark. Acesta este un produs destinat profesioniștilor în imobiliare din New York, oferind informații detaliate despre proprietăți. Fiind o firmă relativ mică (maxim 40 de angajați), s-a mers pe un model organizațional în care toți angajații cunoșteau bine produsul, fiecare trecând, la un moment dat și pentru o perioadă scurtă de timp, pe la toate echipele. Acest lucru a dus la o mai bună înțelegere a nevoilor de business și a problemelor care pot să apară. Deși administratorii lucrau separat de developer-i (în încăperi diferite), ei participau la toate ședințele care implicau produsul și luau parte la tot ce însemna decizie importantă. De asemenea, dacă situația o cerea, intrau chiar și în cod pentru a face modificările necesare ca totul să meargă bine. În anul 2010, PropertyShark a fost achiziționat de Yardi. În timp, compania-mamă a asignat mai multe produse biroului din România. Fiecare produs avea propria echipă de dezvoltatori, însă echipa de administrare de sisteme a rămas una singură (cu un număr crescut de membri). Fiecare administrator făcea atât muncă de local IT cât și task-uri de produs. Și, pentru că aproape toți administratorii făceau parte din echipa on-call, era nevoie ca fiecare persoană să cunoască fiecare produs. Acest sistem a funcționat bine o perioadă îndelungată de


TODAY SOFTWARE MAGAZINE timp, însă, pe măsură ce se adăugau produse noi biroului din Cluj, devenea evident faptul că această soluție nu va scala. Pentru rezolvarea problemei, s-a decis în primă fază asignarea a câte două persoane pentru fiecare produs și participarea lor la stand-up-urile zilnice ale developer-ilor. Astfel, pentru managerii respectivelor echipe era clar cine se ocupa de problemele lor pe partea de administrare de sisteme, iar administratorii participau activ la discuțiile și deciziile privind produsul. După această modificare, feedbackul primit a fost unul încurajator: managerii au observat o îmbunătățire în rezolvarea task-urilor de la administratori, iar aceștia au fost mai concentrați pe produsele lor, nefiind nevoie să schimbe contextul între mai multe medii și produse. Următoarea fază importantă a reprezentat-o un proiect nou, intern, la care managerul a cerut ca cei doi administratori asignați proiectului său să stea împreună cu restul echipei. După câteva săptămâni s-au și văzut rezultatele: echipa a funcționat ca un tot unitar cu roluri bine definite, dar interconectate bine. Nivelul mare de eficiență obținut în cadrul acestul proiect a determinat mutarea și a celorlalți administratori lângă echipele pe care le deserveau. Această apropiere fizică a ajutat atât la întelegerea de către developer-i și manageri a problemelor apărute pe partea de administrare cât și la înțelegerea de către administratori a nevoilor developer-ilor. De asemenea, participarea tuturor părților la discuții a determinat depistarea unor probleme înainte să apară și rezolvarea altora la scurt timp după ce au apărut. În continuare este nevoie ca echipa de on-call să cunoască toate produsele, dar nu la un nivel atât de avansat ca înainte. Problemele specifice produsului le rezolvă echipa specializată, care, mai apoi, notifică on-call-ul de schimbări. Acest mod de lucru s-a dovedit eficient în cadrul companiei noastre, iar implementarea sa treptată a contribuit major la succesul său.

Concluzii Probabil cel mai important lucru de reținut este faptul că DevOps-ul nu trebuie gândit ca un set de skill-uri pe care trebuie să le aibă angajații ori ca un set de tool-uri pe care trebuie să le folosim pentru a ne numi DevOps. Importantă este apropierea dintre echipe, iar skill-urile și tool-urile apar doar dacă apare o nevoie pentru ele.

Bibliografie Effective Devops - Jennifer Davis, Katherine Daniels; O’Reilly Media 2015 „We are all DevOps” presentation, Velocity Amsterdam 2015, https://speakerdeck.com/kdaniels/we-are-all-devops „State of DevOps report 2015”, Puppet Labs, https://puppetlabs.com/sites/ default/files/2015-state-of-devops-report.pdf

www.todaysoftmag.ro | nr. 44/februarie 2016

23


programare

Haos, meme și tipare de design software

C Ariel Pontes ariel.pontes@3pillarglobal.com Python Developer @3 Pillar Global

odul tău nu este DRY/ SOLID/ lizibil/ușor de întreținut. API-ul nu este RESTful. Nu respecți principiul ”spune, nu întreba”. Codul tău nu este bine documentat. ”Comentariile inline miros a probleme”. Codul nu este eficient. ”Optimizarea prematură este sursa tuturor relelor.” Nu ai nevoie de o bibliotecă pentru această funcționalitate; ar trebui să eviți ”sincronizarea tehnologică”. ”Nu reinventa roata.” În această colecție de enunțuri regăsim câteva din principiile și filozofiile care au guvernat în dezvoltarea software. Unele par să le contrazică uneori pe altele, iar dezbaterile pe aceste teme sunt adesea încinse și dezvăluie un anumit nivel de încăpățânare și un fel de primitivism de toate părțile. Putem găsi argumente tehnice pentru a le rezolva? În acest articol încerc să ofer o privire de ansamblu asupra tiparelor de argumentare care apar adesea din astfel de discuții și să examinăm de ce este atât de dificil să găsim răspunsuri decisive.

Apelul la comunitate

Argumente tipice

Negarea subiectivității

Apelul la autoritate Ajunși într-un impas, este un lucru comun să facem apel la autoritate – Renumitul dezvoltator John Doe sprijină acest framework/ principiu/ această bibliotecă/ etc., deci trebuie să fie bun! Acesta nu este un argument decisiv, dar are un anumit grad de legitimitate. Un dezvoltator cu experiență este probabil antrenat să evalueze cel puțin calitățile mai obiective ale unei tehnologii sau ale unui demers.

24

nr. 44/2016, www.todaysoftmag.ro

O altă variantă a apelului la autoritate este apelul la comunitate, similar cu apelul la mase, dar cu diferența că aria sa este restricționată la comunitatea dezvoltatorilor și nu la populație în general. Aceasta aduce o îmbunătățire față de celălalt argument deoarece, chiar dacă noul trend este imperfect, toată lumea știe că este mult mai bine să lucrezi utilizând tehnologii având o comunitate puternică în spate. Dar a presupune că popularitatea unui trend indică întotdeauna superioritatea sa, este nerealist. Inginerilor le este teamă de subiectivitate, iar acest lucru ne face ocazional să ne expunem la a cădea victime efectului de fals consens. Adevărul este că ingineria software este, de fapt, o activitate foarte socială. Programarea în limbaje de nivel înalt este, la urma urmei, o modalitate de comunicare nu numai cu computerele, dar și cu alți programatori. De aceea, nu ar trebui să fie o surpriză că concepte precum ”lizibilitatea”, care sunt în fond strâns legate de intuiția umană și care pot diferi de la individ la individ, joacă adesea un rol decisiv în hotărârea dacă un tipar este sau


TODAY SOFTWARE MAGAZINE nu îmbrățișat de industrie, OOP și MVC fiind exemple destul de ilustrative. Din păcate, deși se dezbate mult pe această temă, prea puțină cercetare se face de fapt în legătură cu potrivirea anumitor tipare de design la aspectele universale ale cunoașterii umane, ca să nu mai vorbim de publicare. Dar ne este jenă să recunoaștem acest lucru. Și atunci, ce facem? Trăim în negare. Evităm termeni precum ”personalitate” și ”intuiție” și preferăm termeni pseudo-obiectivi precum ”lizibilitate” și ”mentenanță”. Începem chiar să credem că afirmații de genul ”X este mai lizibil decât Y” spun ceva obiectiv despre natura realității. Acest lucru nu înseamnă că un consens n u este niciodată real. Oricine este sănătos la cap va fi de acord că înțelegerea unui serviciu web complex, scris într-un singur fișier cu milioane de linii, este cel puțin o provocare intelectuală serioasă chiar și pentru cel mai experimentat dezvoltator. Dar este important să ținem minte că și cele mai intuitive adevăruri pentru o persoană pot uneori să pară prostii altcuiva.

Știința incertitudinii

Ceea ce vreau să subliniez este faptul că trendurile în codare sunt doar un alt exemplu de meme. Atunci când vine vorba de Darwinism, unii se gândesc poate la ”selecția naturală” și sunt tentați să concluzioneze că memetica confirmă că trendurile cele mai populare sunt de fapt cele mai bune. Acest lucru este incorect din mai multe motive: A fi ”sănătos” înseamnă ”a fi cel mai bun pentru înmulțire” și nu ”a fi cel mai bun pentru a ne ajuta să ne atingem scopurile”. Uneori acestea coincid, alteori nu. Nicio specie nu e superioară alteia într-un sens absolut. A fi cel mai bun înseamnă să fi cel mai adaptat la un anumit mediu, iar mediile sunt în continuă schimbare. În ecologia organismelor vii, aceste schimbări au loc pe parcursul sutelor sau miilor de ani. În ecologia ideilor, acestea se pot întâmpla în ani sau chiar zile. Evenimente exterioare întâmplătoare pot avea o influență decisivă în privința cărei variante a unei meme devine dominantă, indiferent de abilitatea sa de a-și ajuta gazda să își atingă țelurile. Ceea ce ne aduce la următorul subiect.

Deci aceste argumente nu sunt decisive, dar cu siguranță Teoria haosului există altele mai bune. Știința ne poate spune întotdeauna care ”Fâlfâitul de aripi al unui fluture în Rio de Janeiro, amplificată este cel mai bun lucru de făcut, nu-i așa? Nu întotdeauna… de curenții atmosferici, ar putea cauza o tornadă în Texas, două săptămâni mai târziu.” – Edward Lorenz Memetica În sistemele foarte complexe, rezultatele sunt foarte sensibile Nu, nu este vorba despre memele de pe internet. Memetica la condițiile inițiale. Acest lucru este adevărat și pentru vreme și este un câmp de cunoaștere interesat de cum ideile se răspân- pentru biologie. Ființele umane se mândresc adesea că sunt cele desc și se adaptează drept răspuns la forțele selecției naturale. mai evoluate animale de pe pământ, dar nu am fi existat niciFiințele umane sunt o specie socială care a evoluat spre a învăța odată dacă un meteorit uriaș nu ar fi lovit pământul și nu ar fi prin observație și a copia comportamentul celorlalți. Aceasta omorât toți dinozaurii, permițând mamiferelor mici să iasă din ne-a permis să acumulăm cunoștințe într-o măsură la care nicio ascunzișurile lor și să prospere într-un mediu cu totul nou. Dacă altă specie nu a visat, dar de asemenea ne-a făcut vulnerabili la evenimente mici pot face practic imposibil de prevăzut ce specii paraziți culturali: tradiții care nu servesc vreunui scop rațional, de animale vor dispărea și care vor prospera, același lucru trebuie dar care totuși sunt copiate din generație în generație, uneori fără să fie adevărat pentru memele de dezvoltare software. a lua în calcul toate aspectele. Unul dintre cele mai bune exemple de instrument care devine ”Exemple de meme sunt melodii, idei, expresii clișeu, modă la dominant din motive greșite poate fi găsit în industria de dezîmbrăcăminte, feluri de a face oale sau de a construi arcade. La fel voltare web, prin popularitatea lui PHP. Limbajul este în zilele cum genele se propagă ele însele în fondul genetic prin saltul de la noastre unul dintre cele mai urâte limbaje potrivit acestui sondaj un corp la altul via spermatozoizi sau ovule, tot așa și memele se Hacker Poll și totuși, este încă cel mai adoptat și tehnologia care propagă în fondul memelor prin saltul de la un creier la altul via se dezvoltă cel mai rapid pe baza utilizării în producție (81.7% un proces care, în sensul larg, poate fi numit imitație.” – Richard potrivit w3techs). Acest lucru are sens, totuși, dacă luăm în conDawkins, ”Gena egoistă” siderare bariera de intrare joasă pentru noii dezvoltatori, că a

Our core competencies include:

Product Strategy

Product Development

Product Support

3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world. Our offerings are business focused, they drive real, tangible value.

www.3pillarglobal.com

www.todaysoftmag.ro | nr. 44/februarie 2016

25


programare Haos, meme și tipare de design software fost primul limbaj conceput pentru a servi paginilor web, că este open-source, că a ajuns să domine dot-com bubble, etc. . În contextul vremii și ecologiei, știința haosului încearcă să meargă mai departe de la a încerca să stabilească lanțuri de cauzalitate pentru a prezice stări viitoare ale unui sistem și în schimb să se concentreze pe găsirea tiparelor statistice în seturi mari de date și să le multiplice prin modele matematice relativ simple. În dezvoltarea software, totuși, este greu de imaginat cum s-ar putea realiza ceva analog.

Având acestea în minte, ar trebui să ne simțim încurajați să fim critici în legătură cu capriciile de design în timp ce nu suntem stânjeniți să le adoptăm în mod experimental sau de dragul convenției comunității. În final, în lipsa celor de mai sus, sper ca măcar să fi oferit o perspectivă de ansamblu care să provoace gândirea în privința câtorva subiecte interesante care de obicei nu sunt acoperite de comunitatea de dezvoltare software. ”Cel mai mare dușman al cunoașterii nu este ignoranța, ci iluzia cunoașterii.” – Stephen Hawking

O inginerie experimentală

Bibliografie

Ingineria în general nu este chiar o știință, ci mai degrabă ea se bazează pe o cunoaștere științifică bine stabilită pentru a rezolva probleme specifice. Cunoașterea care susține ingineria software, totuși, este mult mai puțin stabilă decât cea care susține ingineria civilă, de exemplu. Materialele disponibile, instrumentele și cunoașterea științifică a mecanicii la scară umană se modifică foarte încet în comparație cu ritmul alert al lumii IT. Acest sol fertil pentru idei noi ajunge să creeze un fond de meme mult prea complex și imprevizibil. Totuși, ca ingineri nu suntem pregătiți pentru a înțelege ceva din această harababură, așa că trebuie să învățăm cum să gândim ca oameni de știință experimentali.”Caracterul incontestabil nu este o virtute a unei teorii, ci un viciu. Orice test autentic al unei teorii este o încercare de a o răstălmăci.” – Karl Popper

Dawkins, R. (1976). The Selfish Gene. Oxford University Press, Oxford, UK Gleick, J. (1987). Chaos: Making a New Science. Viking Press, New York, US

Concluzie Prin faptul că am pus mai multe întrebări decât am găsit răspunsuri, nu am intenționat să ofer o rețetă pentru câștigarea oricărei dispute sau pentru luarea întotdeauna a celei mai bune decizii tehnice. Dar ceea ce sper este ca, aruncând lumină asupra subiectului, să creez condițiile unor dezbateri mai constructive, în care părțile să fie mai conștiente de limitările discursului lor și de subiectivitatea experienței lor. Dispute care să nu degenereze în bătălii ale ego-ului într-o lume a dezvoltării software dominată de bărbați și care au drept rezultat decizii care nu sunt întotdeauna asumate în mod arogant drept fiind cele mai bune.

26

nr. 44/februarie 2016 | www.todaysoftmag.ro

Rosenberg, A. (2000). Philosophy of Science: A Contemporary Introduction. Routledge, London, UK


programare

Utilizarea Machine Learning în gestionarea veniturilor

A

existat multă publicitate exagerată în jurul unor concepte precum deep learning, ensembles (ansambluri) sau bagging (ambalare) în ultima perioadă. Aceste subiecte sunt în prezent unele dintre cele mai în vogă în învățarea automatizată - Machine Learning (ML).

Marius Radu marius.radu@fortech.ro Software Developer @Fortech

Intenția mea inițială a fost de a scrie despre deep learning, nou cuvânt cu rezonanță în cercurile tehnice, dar mai apoi am decis să îmi schimb puțin pălăria de statistician și mai degrabă să mă concentrez pe rolul ML din perspectiva conducătorilor de business și produs. În acest sens, voi prezenta nevoile unei afaceri în prezent – un scenariu – care pot fi ajustate cu abordări ale învățării automatizate. Ca și al doilea obiectiv, vreau ca acest articol să fie un argument sau punct de sprijin atunci când dorim să răspundem la următoarele întrebări: (1) Machine Learning presupune multe date? (2) Machine Learning) presupune o mare putere a computerului? Atunci când vine vorba de ML, am luat în considerare întotdeauna trei părți implicate principale, cu puncte de vedere foarte diferite, care pot fi implicate într-un proces de dezvoltare de aplicații constructiv. Prima parte interesată este reprezentată de oamenii de știință ai datelor, care sunt

foarte interesați de puterea și acuratețea instrumentelor. A doua categorie include dezvoltatorul software, care este concentrat pe performanța aplicației (viteză, scalabilitate, etc.). A treia și cea mai importantă parte implicată dintr-o perspectivă pragmatică este omul de afaceri care dorește de fapt o soluție pentru o anumită problemă reală. Marii furnizori de software consideră ML o piață mare de bani și de aceea există mulți furnizori de instrumente și platforme de machine learning, precum SAS și IBM pentru analitică, Oracle sau Amazon pentru soluții cloud, etc. Dintr-o perspectivă a afacerii, acest instrument poate ajuta la soluționarea problemelor, dar eu consider mai important domeniul specific de cunoaștere în care este aplicat. Know-how –ul în domeniu este un ingredient fundamental în construirea de soluții pentru probleme reale. Punerea întrebărilor potrivite, adunarea presupunerilor corecte și succesul

www.todaysoftmag.ro | nr. 44/februarie, 2016

27


programare Utilizarea învățării automatizate (Machine Learning) în gestionarea veniturilor măsurătorilor este, în cele mai multe cazuri, rolul și centrul atenției părților interesate ML care au o mentalitate business. Oamenilor de știință ai datelor și dezvoltatorilor software le pasă uneori de reclama de marketing, referințele sau reputația instrumentelor sau abordărilor ML. Pe de altă parte, valoarea ML este lăudată de persoanele de afaceri pe baza contribuțiilor sale sau a realizărilor dovedite.

Scenariu – Utilizarea ML în gestionarea veniturilor În continuare, voi prezenta cum R poate fi utilizat într-o problemă ML într-un scenariu business curent: gestionarea veniturilor pentru hoteluri și optimizarea beneficiilor. R este un limbaj de programare și un mediu open source. El sprijină calculul statistic și învățarea automatizată. Pachetul Caret dezvoltat de Max Kuhn este favoritul meu, dar mai există multe altele. R este ”arma” aleasă de mine, iar următoarele exemple vor face referire la biblioteci diferite. Unele similare pot fi găsite în Python, Java sau alte limbaje de programare, dar, rezumând din nou, punerea întrebărilor potrivite și găsirea datelor corecte atunci când implementăm o metodologie bună, sunt elemente mai importante în punerea în folosință a unei soluții ML bune. Machine Learning are cel puțin trei aplicații în managementul beneficiilor în general și în strategiile de gestionare a veniturilor pentru hoteluri, în particular: 1. Segmentarea pieții: Clienții diferiți sunt dispuși să plătească prețuri diferite pentru aceeași cameră. Un manager de hotel știe că 20 de camere cu 400 euro/ zi aduc același venit ca și 40 de camere cu 200 euro pe zi, dar scopul lor principal este maximizarea profitului, ceea ce implică identificarea segmentelor de piață și descoperirea segmentelor țintă potrivite care pot fi servite: ex. 30 de camere cu 300 euro/zi. Obiectivul principal al hotelului atunci când utilizează segmentarea este să descrie și să anticipeze valoarea creată pentru clienți în diferite segmente și să îi vizeze într-un mod eficient. În acest sens, tehnicile ML precum clasificatorii ajută managerii de hoteluri să găsească clienți cu adevărat rentabili. Acești clienți sunt cei mai potriviți și cei mai aliniați cu propunerea de valoare a hotelului. Pachetul Caret de la R implementează și oferă documentație de sprijin pentru cele mai rafinate instrumente de

clasificare – Naive Bayes, Bagged AdaBoost, etc. 1 2. Previziunea – cererea de camere nu este sigură în viitor și singura modalitate de a prezice cu o anumită probabilitate este aplicarea tehnicilor de previziune2. Multe hoteluri încep să ia în considerare sisteme computerizate de management al veniturilor. Previziunile lor nu sunt perfecte, dar sunt mai bune decât nimic. Aceste sisteme ajută la cunoașterea comportamentului clienților, descrierea caracterului sezonal al cererii și prezicerea numărului de oaspeți. Managerii de hotel pot, de asemenea, prezice costurile, identifica provocările și se pot adapta cererii de pe piață, din regiune sau sezon. Cererea înregistrată este afectată de decizia business și nu reflectă cererea reală. În vocabularul de management al veniturilor, ”cererea liberă” este cantitatea care ar putea fi vândută dacă nu ar exista limitări precum cele de livrare a producției sau limitarea impusă de capacitate. Hotelurile ar trebui să identifice când cererea liberă este peste capacitatea hotelului. Aceasta este o parte importantă a strategiei de management al veniturilor unui hotel. În general, informațiile vin din sistemul de rezervări computerizat, iar aceasta se numește ”cerere constrânsă”. Pe de altă parte, o situație ideală, atunci când oferta este nelimitată, este considerată ”cerere nelimitată/liberă”3. Instrumentele și statistica ML pot ajuta la descrierea ”cererii libere”. RM2 este un pachet R dezvoltat de Tudor Bodea (InterContinental Hotels Group), care implementează funcții utilizate în gestionarea veniturilor (ex. funcția EM eliberează cererea de constrângeri, folosind algoritmul de Așteptare – Maximizare)4. Pe de altă parte, ”forecast” și ”zoo” sunt doar două dintre cele mai populare pachete R care implementează previziunea și seriile temporale. 3. Poziționarea prețurilor și politica de prețuri: Obiectivul cheie al unei strategii de stabilire a prețurilor este să anticipezi 1 Applied Predictive Modeling, ediția 2013. New York: Springer, 2013. 2 Essentials of Marketing Research, ediția a 3-a. New York, NY: McGraw-Hill Education, 2012. 3 “What is unconstrained demand? definition and meaning,” BusinessDictionary.com. [Online]. Disponibil: http://www.businessdictionary.com/definition/unconstrained-demand.html.

4 T. B. & D. K. & M. Ferguson, RM2: Revenue Management and Pricing Package. 2008.

Young spirit Mature organization A shared vision Join our journey! www.fortech.ro

28

nr. 44/februarie 2016 | www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE valoarea creată pentru clienți și apoi să stabilești prețuri specifice pentru a capta acea valoare. Hotelurile pot adopta diferite politici de preț pentru a întări percepția de valoare pentru clienți. Tactica implică crearea unor instrumente de fixare a prețului care se schimbă în mod dinamic pentru a reacționa la modificările cererii și pentru a aduce câștig în mod continuu. Optimizarea prețului implică reglarea fină a unor variabile multiple precum elasticitatea prețului și prețul de inventar pentru a maximiza profitul și nu neapărat veniturile 5. Machine Learning implică găsirea unor tipare în date și utilizarea acelor tipare pentru a prezice viitorul. Învățarea tiparului cererii și stabilirii prețurilor înseamnă identificarea și recunoașterea acelor tipare atunci când le vedem din nou. Optimizarea are un rol foarte important în acest proces. În centrul său, managementul beneficiilor implică un control strategic al inventarului, pentru a-l vinde clienților potriviți la momentul potrivit și pentru prețul corect. În limbaj matematic, gestiunea inventarului poate fi încadrată într-o problemă de optimizare. ”Mecanicul” din spatele învățării automatizate pentru gestiunea veniturilor implică câțiva pași fundamentali: în săptămânile cu cerere mare, limitați rata de discount și rezervările de grup, pentru a crește beneficiul general (rata medie) și venitul. În săptămânile cu cerere scăzută, vindeți camerele goale la orice preț scăzut, pentru a crește factorii de randament și câștig. Maximizarea venitului presupune un echilibru între factorii beneficiu și randament6. În acest moment nu voi menționa nici un pachet R, chiar dacă R are multe librării de optimizare. Acum vreau doar să subliniez că nu există cutii vrăjitorești care să ne poată ajuta să ne meșteșugim cel mai eficient instrument de stabilire a prețurilor. Doar practica, răbdarea și munca din greu s-ar putea să ne ajute…

veniturilor nu este un subiect recent. A fost și este o practică business obișnuită în ultimii cincisprezece ani. ML este utilizată, pe lângă hoteluri, în multe alte industrii, precum cea a companiilor aeriene, închirierilor sau în inventarul reclamelor online. Întorcându-ne la întrebările de la începutul articolului, aș răspunde așa: 1. Machine learning (învățarea automatizată) nu necesită întotdeauna multe date pentru a funcționa. Volumul de date al hotelului nu este prea mare. Bineînțeles, sistemele de rezervare online și motoarele de recomandare pot furniza date suplimentare, dar tehnologiile din prezent pot produce rezultate și singure. 2. Machine learning (învățarea automatizată) necesită o putere mare a computerului, ceea ce nu este puțin în zilele noastre. În prezent, o aplicație ML poate fi ușor pusă în folosință ca un micro-serviciu (ex. un container Docker și servită drept API). Ceea ce am înțeles recent este că este nevoie mai des de metodologii inovative decât de tehnologii revoluționare pentru a soluționa problemele curente. O întrebare bună și o metodologie robustă și transparentă sunt ingredientele esențiale.

ML este un proces iterativ care este rulat până când se obține modelul care face previziuni bune. Modelul de venit al hotelului s-ar putea să implice adesea reglaje fine sau reconstrucție atunci când descrește puterea sa predictivă sau acuratețea. Gestionarea 5 How to Price: A Guide to Pricing Techniques and Yield Management. Cambridge ; New York: Cambridge University Press, 2008. 6

Yield Management: Strategies for the Service Industries, ediția a 2-a. Cengage Learning

EMEA, 2001.

www.todaysoftmag.ro | nr. 44/februarie 2016

29


programare

TFS ca platformă de colaborare (II)

A

ș dori să subliniez în continuare următoarele aspecte legate de TFS, de care atât programatorii cât și non-dezvoltatorii pot beneficia: web portal și Kanban board, management de proiect și version control. Unele dintre aceste

Dorin Cazan dorin.cazan@siemens.com Service specialist @Siemens

caracteristici necesită o licență de tip Ca dezvoltator s-ar folosi mai mult Stakeholder, în timp ce altele necesită o Visual Studio în activitatea de dezvoltare, licență plătită. dar acesta se poate baza și pe hub-ul Code din portalul web pentru a vizualiza, desWeb Portal cărca și compara fișierele din source code, Portalul web este o zonă de lucru ver- cât și pentru a vizualiza changeset-urile și satilă, care se adaptează la fiecare utilizator shelvesets-urile și pentru a lucra cu repoîn funcție de hub-ul\tab-ul selectat de zitoriile GIT. acesta (home, code, work, build, test), niveNon-dezvoltatorii ar lucra în prinlul de acces de care dispune (stakeholder, cipal cu hub-ul Work și funcționalitățile basic, advanced) și de opțiunile configu- aferente acestuia: crearea de noi elemente rate pentru proiect. de lucru, folosirea de TFS queries pentru a găsi mai usor work item-urile căutate, crearea de backlog-uri, urmărirea progresului echipei folosind kanban board-ul, crearea de elemente favorite ce pot fi postate pe hub-ul Home și ce vor fi disponibile pentru toată echipa (queries, burndown reports, charts, diagrams etc).

Kanban Fig2. VisualStudioOnline Kanban board

30

nr. 44/2016, www.todaysoftmag.ro

Cele mai multe dintre lucrările efectuate în cadrul unui proiect trebuie să fie organizate într-un mod coerent.


TODAY SOFTWARE MAGAZINE Din experiența mea, planificarea implică de obicei, cel puțin 3. Dați click pe ‘Create new team’ și în câteva secunde veți câteva sticky notes și whiteboard de dimensiuni decente pe care avea un board funcțional. note-urile sunt de obicei structurate într-o manieră asemănatoare Kanbanboard-ului electronic: II. Structura de permisiuni flexibilă – permisiunile trebuie definite de două ori: 1. Prin adăugarea unui utilizator ca membru al echipei tale acesta poate să vadă doar hub-ul Home al board-ului tău. (Acesta conține de obicei workflow charts, team queries și diagrame.) 2. Dacă un utilizator nu primește acces pe area path-ul aferente Kanban-ului, acesta nu va putea accesa workitem-urile aferente echipei și nu va putea exporta diagramele sau tabelele.

Fig3. „Simple-kanban-board-“von Jeff.lasovski - Eigenes Werk. Lizenziert unter CC BY-SA 3.0 über Wikimedia Commons - https://commons.wikimedia.org/ wiki/File:Simple-kanban-board-.jpg#/media/File:Simple-kanban-board-.jpg

Prin utilizarea Kanban puteți vizualiza și gestiona fluxul de lucru în cadrul echipei, stabili limite clare pentru work in progress (WIP) în scopul de a menține concentrarea pe sarcinile curente și de a îmbunătăți colaborarea echipei prin crearea de oportunități de feedback, făcând astfel blocajele și problemele mai ușor de identificat. Plăci Kanban sunt disponibile pe scară largă, fie că vorbim de variantele open source, cum ar fi Trello și Taiga sau Kanban Tool, Jira și TFS. Kanban este pe cale de a deveni un proces utilizat de către tot mai multe echipe de dezvoltare, ca de altfel și kanban board-ul. Microsoft a adăugat suport pentru Kanban începând cu TFS 2013 și continuă să îmbunătățească și consolideze suportul și în TFS 2015, precum și pentru platforma în cloud, Visual Studio online. Voi expune cele mai importante aspecte ale board-ului de Kanban din TFS: I. Crearea ușoară de board-uri în doar 3 pași 1. Deschideți portalul în modul administrativ1 2. Selectați ‘New Team’ și completați câmpurile necesare.

Fig5. Access permissions structure for area path nodes

Persoanele externe echipei sau proiectului vor primi acces de stakeholder, (aceștia netrebuind să acceseze codul sursă și funcțiile administrative. Permisiunile lor vor permite doar vizualizarea de diagrame și eventual crearea de noi work item-uri. Membrii echipei vor avea drepturi depline, dar și acestea poti fi modificate în funcție de necesități și de drepturile pe care le are colegul în echipă. (De exemplu un team admin va putea să creeze noi area path-uri și iterații pentru backlog). III. Abilitatea de a defini fiecare coloană din board și stadiul în care trebuie să se afle un work item pentru a putea ajunge în acea coloană – este o reprezentare grafică a stadiului în care a ajuns un work item și deci un task ce trebuie prelucrat în cadrul acelui backlog.

Project Management

Fig4. Interface to create a new Kanban team

1 https://tfsserver/DefaultCollection/teamproject/_admin

Folosind work item tracking și pachetul Microsoft Office, alături de serviciile de colectare și raportare de date, managerul de proiect și membrii echipei au tool-urile necesare monitorizării evoluției proiectului . TFS are capacitatea de a acoperi cererile, partea Request Tracking cât și partea de Problem Report, necesare unui mediu de dezvoltare. TFS premite utilizatorului să acceseze și să manipuleze obiectele (numite Work Items) cu ușurință folosind produse din familia Ofice: pot fi redirecționate via Outlook, pregătite pentru publicare prin MS Publisher sau pot fi modificate în masă prin utilizarea MS Excell. În adiție, utilizarea mecanismului de process template din TFS ne dă capacitatea de a adapta procesele specific proiectului în funcție de mediul de programare sau de necesitatea proiectului în sine. Un proces template constă dintr-un set de instrucțiuni necesare pentru a pune bazele noului proiect. Aceste instrucțiuni conțin obiecte cum ar fi: work item, roluri în cadrul www.todaysoftmag.ro | nr. 44/februarie 2016

31


programare TFS ca platforma de colaborare - pentru dezvoltatori cât și non-dezvoltatori (II) proiectului, permisiuni, etc. . Proces templates-urile standard vin o dată cu instalarea TFSÎn concluzie, adoptarea TFS-ului în organizația dumneavoasului, dar acestea pot fi modificate și extinse sau se poate crea un tră poate aduce beneficii unui număr mare de angajați. Licența nou template, cu scopul de a permite proiectelor să definească de tip Stakeholder cu ajutorul căreia oricine din echipă poate procesul de dezvoltare necesar lor. să urmărească prioritățile proiectului și să ofere îndrumări, să împărtășească idei, dar și capacitatea nativă de a suporta difeVersion Control. rite exstensii sau de a dezvolta extensii suplimentare in-house TFS oferă un mecanism standard de version control pen- se numără printre importantele beneficii . La acestea adăugăm tru branching, merging, version management check-in și și faptul că se pot modifica diferite aspecte ale TFS pentru a check-out. TFS include de altfel opțiuni adiționale cum ar optimiza funcționalitățile existente în cazul în care există cereri fi: shelving (abilitatea de a stoca schimbări parțiale fără a speciale în cadrul proiectului. le valida în totalitate) și check-in policies dinamice care se adresează problemelor specifice development-ului la o scară mare. Dar cum îi ajută toate acestea pe non-developer-i? Ești un trainer și trebuie să pregătești pe noii colegi să lucreze cu TFS. De obicei, un astfel de training se face în cadrul unui workshop sau prin organizarea unui curs care are și o parte de hands-on. Odată cu apariția versiunilor noi de Visual Studio sau TFS se adaugă, se schimbă sau sunt scoase functionalități. Dar va trebui să se schimbe și documentația necesară training-ului. Dacă ai menține copii ale acestei documentații în TFS, ai putea să vezi “istoria” documentației și toate schimbările pe care acesta le-a suferit de-a lungul anilor. Poate nu pare important acum, dar asemenea tuturor firmelor de development, Siemens trebuie să își arhiveze sowftware-urile cu statusul released pentru a se asigura ca în 5-10 ani sursa software –ului poate fi restaurată și developer-ul poate lucra la un patch sau la un fix care este cerut de către client. Să ne imaginăm următoarea situație : o echipă de suport trebuie să își reînnoiască constant FAQ-urile. Dacă un FAQ entry este șters, echipa de suport este forțată să cerceteze din nou problema și să creeze un FAQ entry nou. Printr-un simplu check-in în TFS, ai avea toata istoria bazei de date FAQ. Dacă consideri că un anumit fișier nu mai este necesar, poți să-l ștergi în orice moment. De notat este faptul că TFS nu șterge cu adevărat nici un obiect din version control , doar îl ascunde; dacă se dorește ștergerea completă a unui obiect, este necesară folosirea opțiunii destroy.

Corporate Technology Romania

32

nr. 44/februarie 2016 | www.todaysoftmag.ro


programare

TODAY SOFTWARE MAGAZINE

De la Business la implementare. Cum alegem CRMul

U

rmărirea interacțiunilor cu clienții companiei este la baza păstrării businessului în stare de funcționare. Interacțiunea cu clientul final este prima linie de comunicare cu lumea exterioară și e nevoie să fie cât de bună cu putință. Există câteva moduri de a o organiza, în funcție de dimensiunea afacerii. Dar la un anumit moment va trebui implicat și un instrument software din familia Customer Relationship Management (CRM). Considerăm că CRM-ul este un instrument critic al afacerii, care trebuie ales cu multă grijă și ajustat nevoilor afacerii prin implicarea propriului departament IT (atunci când acesta există) ori a consultanților externi. Pe de altă parte, dezvoltatorii trebuie să fie la curent cu piața CRM-urilor, deoarece ei vor fi cei care vor implementa modificările dictate de nevoile de business. Astăzi ne vom uita la elementele de care trebuie să ținem cont în alegerea dintre diversele soluții de tip CRM, și vom analiza mai atent cele mai populare soluții open-source.

Criterii de evaluare 1. Se începe de la zero sau se tranziționează de la un sistem deja existent? Dacă sunteți un business la început de drum sau doriți să începeți de la zero, nu vor exista costuri de tranziție a datelor. Dacă în schimb, sunteți o afacere deja în derulare, va trebui să aveți în vedere costurile asociate migrării datelor din CRM-ul curent sau din fișiere tip spreadsheet sau orice alt sistem aveți în funcțiune în acest moment. Asigurați-vă că echipa care implementează CRM-ul este la curent cu sistemul actual, în așa fel încât să poată planifica această migrare din timp. 2. Aveți un buget fix pe care îl veți cheltui de la început? Sau doriți să distribuiți costul în timp, folosind metoda leasingului de software? Sunt două strategii importante în abordarea bugetării. Prima dintre ele este alocarea unei sume de bani de la început pentru implementare și adăugarea unui cost lunar scăzut pentru mentenanța sistemului, găzduire. În timp ce această metodă este foarte bună în a prezice costul total și asigură proprietatea softului și a datelor, unele afaceri nu au această sumă pe care să o investească de la început. Așa că acestea preferă să înceapă cu o soluție SaaS, achitând sume lunare pentru fiecare utilizator al sistemului. 3. Care sunt considerentele de securitate asupra informațiilor stocate în CRM? Cele mai multe din soluțiile actuale CRM sunt bazate pe cloud, iar ofertele lor sunt exprimate în preț/ lună/utilizator. Dacă datele afacerii dumneavoastră sunt sensibile, este posibil să nu vă simțiți confortabil cu faptul că acestea sunt în afara controlului propriu, astfel că este posibil să luați în calcul doar acele soluții care permit instalarea în interiorul firmei. 4. Întreaga companie va avea nevoie să acceseze datele din CRM? Sau doar o parte din angajați interacționează cu clientul? În timp, nevoia de a adăuga mai mulți utilizatori va proveni din faptul că întreaga afacere este rezervată servirii clienților, într-un fel sau altul. Pentru soluțiile manageriate intern nu există costuri

adiționale la adăugarea de noi utilizatori. În schimb, în cazul soluțiilor SaaS, cu cât sunt mai multi utilizatori, cu atât factura lunară este mai ridicată. 5. Veți urma procedurile de lucru din CRM așa cum este el astăzi, sau aveți nevoie de modificări specifice pentru a-l adapta la modul de muncă pe care îl aveți deja? Un argument important pentru soluțiile manageriate intern este acela că pot fi modificate pentru îndeplinirea nevoilor clientului prin adăugarea de module noi care nu sunt disponibile pe piață. În cazul soluțiilor SaaS acesta e un mare dezavantaj, deoarece ele obligă businessul să folosească doar un anumit set de funcționalități, ceea ce poate conduce la scurtcircuitarea sistemului de către angajați pentru a-și îndeplini sarcinile. 6. [Doar instalările on-site] Aveți resurse IT interne pe care să le folosiți la mentenanța CRMului după instalare sau externalizați complet această activitate? Este important de abordat această temă într-un stadiu cât mai incipient, deoarece ați putea dori să aveți o persoană care se va ocupa de CRM intern. Alternativa este cea de a avea un contract de mentenanță, deseori cu aceeași companie care v-a făcut instalarea inițială. 7. Aveți nevoie ca CRM-ul să poată fi accesat de pe dispozitivele mobile ale angajaților? Este posibil să permiteți accesul doar de pe terminale din interiorul sediului dumneavoastră, caz în care această cerință nu trebuie luată în calcul. Dacă, în schimb, doriți ca interacțiunea cu sistemul CRM să se petreacă inclusiv de la locația clienților, angajații folosind terminale mobile, atunci ați putea fi mulțumiți cu o interfață responsive (OroCRM oferă această facilitate, de exemplu), sau ați putea dori o aplicație mobile specializată (precum oferă cei de la Insightly, Zoho, MS Dynamics).

Comparație între CRMurile SaaS Efectuarea unei comparații complete de facilități și prețuri este o întreprindere serioasă, așa că pentru acest articol am redus analiza doar la comparația de prețuri. Vă rugăm să intrați pe site-urile fiecărui CRM în parte pentru o detaliere a facilităților oferite de acesta. O comparație mai detaliată care include și limitările de resurse poate fi consultată într-un spreadsheet online]saas-comparison1, deoarece este dificil de integrat într-un articol de revistă. 1 https://docs.google.com/spreadsheets/d/1pEZj-Di9yiETmTPmn-vl-J8JeGoqrnoPX4f4Y13hmTE/edit#gid=0

www.todaysoftmag.ro | nr. 44/februarie, 2016

33


programare

De la Business la implementare. Cum alegem CRMul

Concluzii Piața pentru aplicațiile CRM este foarte largă. Pe de o parte, sunt clienții noi care au nevoie de un instrument cu care să pornească la drum. Pe de altă parte, sunt companiile care deja folosesc un CRM, dar care vor să își actualizeze procesele curente și caută o soluție mai bună decât cea pe care o au deja. Fiecare dintre aceștia are un set unic de nevoi. În acest articol am descris câteva dintre cele mai importante criterii care trebuie avute în vedere atunci când se face o alegere. Am oferit o comparație între prețurile soluțiilor Saas, precum și o comparație mai aplicată între variantele open-source care pot fi manageriate intern.

Comparație între CRM-urile open-source Ce se întâmplă dacă decizia de business este să nu se folosească niciuna din multele soluții SaaS, ci să se aleagă o variantă mai simplă open-source care să fie modificată pentru îndeplinirea cerințelor de business? Pentru o perioadă lungă de timp se folosea ediția Community (CE) a SugarCRM ca punct de pornire, dar a fost întreruptă în 2014. Mai jos ne propunem să analizăm cei mai importanți jucători din această piață din perspectiva extensibilității.

34

nr. 44/februarie 2016 | www.todaysoftmag.ro

Georgiana Gligor gb@tekkie.ro Owner @Tekkie Consulting


programare

Composer și Packagist, vedetele PHP-ului

P

HP-ul are o istorie destul de zbuciumată în ceea ce priveşte managementul pachetelor. Aceasta a urmat să se schimbe la începutul anului 2012, când s-au lansat proiectele Composer şi fratele său, Packagist.

Radu Murzea rmurzea@pentalog.fr PHP Developer @Pentalog

Cătălin Criste ccriste@pentalog.fr PHP Developer @Pentalog

În acest articol, vă vom introduce în fru- proiecte existente şi modului greoi în care moasa lume şi istorie a managementului puteau fi folosite librăriile şi extensiile. În pachetelor în PHP-ul modern. ciuda acestui fapt, PEAR a crescut în popularitate datorită deţinerii unui monopol a Puţină istorie acestei funcţionalităţi. Un sistem de management al pachetelor nu a existat în lumea PHP până la începuCa urmare a acestui suport precar, cei mai tul anului 2000, când Stig Bakken a început mulţi programatori au decis pur şi simplu să proiectul PEAR ca urmare a discuţiilor pur- nu folosească acest manager de pachete şi au tate la Tel-Aviv în cadrul conferinţei PHP recurs la a se baza doar pe functionalităţile Developers Meeting. oferite de framework-ul în care lucrau, în special datorită boom-ului framework-urilor Principiul de funcţionare al PEAR- PHP în perioada 2004 – 2006. Această pracului era încorporarea unui manager direct tică nu adus decât o cuplare excesivă între în runtime-ul limbajului PHP şi instala- framework şi aplicaţia dezvoltată, migrarea rea dependinţelor dorite folosind linia de către un alt framework sau renunţarea comcomandă. Dependinţele erau aduse împa- pletă la unul fiind extrem de dificilă. chetate în arhive şi erau folosite în proiecte prin folosirea instrucţiunilor de “include” sau Toate acestea ne conduc în anul 2009, un “require”. an cu o semnificaţie istorică majoră în lumea PHP. Atunci au avut loc două evenimente Pentru îmbunătăţirea performanţei apli- relevante: caţiilor, PECL a fost lansat în octombrie • introducerea unui suport robust şi 2003. Acest sistem permitea compilarea solid pentru namespace-uri în cadrul verlibrăriilor PHP în programe C, urmând a fi siunii 5.3 a PHP-ului folosite prin PEAR ca extensii ale PHP-ului. • înfiinţarea grupului PHP-FIG în timMotivaţia pentru acest sistem a fost faptul că pul conferinţei php|tek 2009 şi lansarea programele C au performanţă superioară în standardului PSR-0 de către aceştia.( Vom comparaţie cu codul interpretat al PHP-ului. adduce mai multe informații despre acest grup şi standardele PSR într-un articol Utilizarea de cod prin PEAR şi PECL viitor) era dificilă din cauza lipsei standardelor Brusc, aceste schimbări au eliminat o de codare, dificultăţilor de contribuire la parte din dezavantajele majore ale PEAR-ului www.todaysoftmag.ro | nr. 44/februarie, 2016

35


programare

Composer și Packagist, vedetele PHP-ului instalate exact aceleaşi versiuni ale tuturor pachetelor. Fişierul .lock conţine hash-ul fişierului .json din care a fost generat. Prin urmare, dacă fişierul .json, s-a modificat, următoarea execuţie a comenzii composer install va afişa o atenţionare cu privire la desincronizarea celor două fişiere. Având un astfel de fişier uşurează de asemenea instalarea pachetelor, deoarece comanda composer install va sări peste procesul complex de rezolvare a versiunilor dacă detectează prezenţa fişierului .lock.

şi au deschis drumul către ecosistemul PHP modern care-l cunoaştem astăzi. Printre altele, a început dezvoltarea proiectelor Composer şi Packagist, prima lansare a unei versiuni funcţionale a acestora având loc în Martie 2012. Ele au fost dezvoltate de către Nils Adermann şi Jordi Boggiano, cei doi continuând mentenanţa acestora până în ziua de astăzi.

Mecanisme de funcționare

composer.json Pentru a folosi composer într-un proiect, e nevoie să creăm un fişier denumit composer.json. Acest fişier descrie pachetele de care depinde proiectul, dar poate conține şi alte meta-informații. Unul dintre cele mai importante câmpuri din acest fişier este câmpul require. Prin acesta, specificăm pachetele de care proiectul nostru depinde: „require”: { „monolog/monolog”: „1.0.*” }

De multe ori, câmpul require este tot ce avem nevoie pentru a ne configura dependenţele proiectului. Pentru lista completă de câmpuri disponibile în cadrul fişierului composer.json, puteţi consulta schema din documentaţia composer-ului1. Pe lângă pachetele externe, se pot specifica ca dependenţe şi pachete de platformă. Acestea sunt nişte pachete virtuale pentru ceea ce este instalat pe system.(Nu sunt instalate de Composer.) 1 h t t p s : / / g e t c o m p o s e r. o r g / d o c / 0 4 - s c h e m a . md#the-composer-json-schema

36

Operatori de versionare a unui pachet Versionarea semantică3 (major.minor. patch) este acum considerată o practică ideală în lumea PHP. Prin urmare, pachetele în general respectă această convenţie.

• php sau php-64bit • maşina virtuală HipHop • extensii php • librării de sistem Versiunea unui pachet poate fi specifiPentru a vedea pachetele de platformă cată prin constrângeri de bază: disponibile pe sistemul local, putem folosi • sub formă exactă (e.g. 1.2.3) comanda composer show --platform. • interval (e.g. >=1.0 <2.0) • sau wildcard (1.2.*). Instalarea pachetelor Instalarea pachetelor se face rulând Pe lângă constângerile de bază, mai comanda composer install. pot fi folosiţi doi operatori (next significant release operators): L a prima execuţie a comenzii, • “~” marchează versiunea minor Composer va încerca să determine care minimă de care depindem şi lasă ultima versiune să descarce pentru fiecare pachet cifră specificată să fie incrementată. (e.g. specificat astfel încât toate cerinţele de ver~1.2.3, care este echivalent cu >=1.2.3 siune şi stabilitate să fie satisfacute. Aceasta <1.3.0 ) poate fi o problemă dificilă pentru că, în • “^” marchează versiunea majoră practică, multe pachete depind unele de maximă acceptată care nu introduce altele, iar legăturile dintre ele sunt deseori incompatibilităţi majore (e.g. ^1.2.3, menţionate în moduri diferite (vezi capitocare este echivalent cu >=1.2.3 <2.0.0). lul despre operatori). Acest operator se potriveşte perfect pachetelor care implementează regulile Sistemul prin care Composer parversionării semantice curge acest pas este printr-un algoritm de rezolvare a satisfiabilităţii booleen-e2. Prin Stabilitatea unui pachet urmare, aceasta este o problemă a cărei Composer permite inclusiv instalarea complexitate creşte exponenţial cu numă- pachetelor cu o variată stare de stabilitate. rul de pachete care trebuie instalate. Valorile posibile, în ordine crescătoare a stabilităţii, sunt: dev, alpha, beta, RC şi stacomposer.lock ble. Această valoare poate fi specificată în 2 După rularea comenzii de instalare, moduri, care nu se exclud: vom observa că un nou fişier a fost creat: • ca valoare a opţiunii minimum-stacomposer.lock. Rolul acestui fişier este de bility în composer.json . În acest caz, a stoca versiunile exacte ale pachetelor acele versiuni ale pachetelor care sunt instalate, făcând o “încuiere” a acestora sub valoarea minimă setată vor fi igno(de unde şi numele). Astfel, toate persoarate la stabilirea versiunilor pachetelor. nele care vor folosi acest proiect vor avea Este de reţinut faptul că, dacă pachetele 2 h t t p s : / / e n . w i k i p e d i a . o r g / w i k i / de care depindem au şi ele la rândul lor Boolean_satisfiability_problem

nr. 44/februarie 2016 | www.todaysoftmag.ro

3 http://semver.org/


TODAY SOFTWARE MAGAZINE specificată o astfel de valoare în composer.json-ul lor, aceasta va fi ignorată. • prin flag-uri de stabilitate pentru fiecare pachet în parte (1.0.*@dev, ~2.2.0@ beta etc.) Autoloading În capitolul despre istoria managerelor am menţionat ca suportul corect şi complet pentru namespace-uri introdus în versiunea PHP 5.3 a fost ultimul ingredient necesar pentru naşterea unui manager de pachete robust şi cu adevărat util. Namespace-urile sunt, printre altele, felul corect de a integra cod 3rd-party în propria aplicaţie, eliminând folosirea operatorilor “include” şi “require”. Composer va construi un autoloader de namespace-uri pentru proiectul nostru şi pentru pachetele de care depindem pe baza informaţiilor trecute în câmpul autoloading din composer.json. Această informaţie poate fi specificată în trei feluri: prin definiţie PSR-0, prin definiţie PSR-4 şi prin corelare între namespace şi fişier; acestea pot fi combinate în orice fel se doreşte.

Surse ale pachetelor

Packagist Packagist este repository-ul central care conţine toate pachetele disponibile pentru instalare, fiind folosit în mod implicit pentru descărcarea pachetelor. Acestea sunt de obicei adăugate şi administrate de către autorii acestora. Packagist necesită ca sursa pachetelor să fie un repository

Git, binenţeles public. Se obişnuieşte ca pentru a vedea lista completă şi detaliată această sursă să fie pagina de GitHub a a acestora. respectivului pachet, dar acest lucru nu este obligatoriu. Pe final... Composer împreună cu Packagist, e un Satis manager de pachete modern şi robust, care Satis-ul este o variantă simplificată ne pune la dispoziţie toate facilităţile necea Packagist-ului care poate fi instalată sare fără a sacrifica simplitatea şi curba într-un sistem privat. Sunt două motive foarte uşoară de învăţare. principale pentru care folosirea Satis-ului poate fi benefică: Acesta a fost scânteia necesară pentru • Satis-ul presupune folosirea conexi- ca PHP-ul să poată adopta multe practici unilor intranet, care sunt superioare în moderne de dezvoltare software. Este de ceea ce priveşte latenţa şi viteza. departe unul dintre cele mai importante • multe companii dezvoltă pachete proiecte din ecosistemul PHP-ului. care sunt intenţionate doar pentru uz intern. Un sistem Satis este soluţia perfectă pentru a nu fi obligaţi să publicăm pachetele pe Packagist. Comenzi Până acum am cunoscut o parte din funcţionalităţile oferite de comenzile install şi show, însă Composer oferă o varietate de comenzi. Pe scurt, comenzile ne ajută să efectuăm cu uşurintă o varietate de operaţiuni uzuale necesare în contextul unui manager de pachete. Aceasta poate să includă iniţializarea unui nou proiect, adăugare şi ştergere de pachete, verificarea dependenţelor între pachete, regenerare de informaţii pentru autoloading, modificare de setari ale Composer-ului şi multe altele. Vă invităm să consultaţi documentaţia4 4 https://getcomposer.org/doc/03-cli.md

www.todaysoftmag.ro | nr. 44/februarie 2016

37


programare

Care sunt provocările în scenarii Dev/Test/DevOps şi cum ne poate ajuta Microsoft Azure

Î

n ziua de azi, majoritatea companiilor de dezvoltare software se confruntă cu o serie de provocări atunci când trebuie să asigure într-un mod coerent medii sau infrastructuri pentru scenarii de test, demo, staging, pre-producție și așa mai departe.

Mihai Tătăran mihai.tataran@avaelgo.ro Microsoft MVP, Co-organizator @ITCamp Avaelgo

38

nr. 44/2016, www.todaysoftmag.ro

Diviziunea între echipele de dezvoltare / testare pe de o parte, și cele de infrastructură pe de altă parte.

configurate cum trebuie, etc. . • Se reia cererea, cu toți pașii, până mediul este conform cu ceea ce dorește echipa de dezvoltare. • Se folosește mediul respectiv: echipa de QA execută testele, se face un demo la client, etc. . • După utilizare echipa de dezvoltare uită să notifice echipa de infrastructură că nu mai are nevoie de acel mediu. Poate deloc, sau poate doar până la următoarul moment când va relua testarea / demo-ul conform ciclului de dezvoltare. Pe de o parte echipa de dezvoltatori consideră (pe bună dreptate) că durează foarte mult până li se pune la dispoziție un mediu de testare- am întâlnit cazuri când dura 3-4 zile- , iar pe de altă parte echipa de infrastructură este nemulțumită pentru că trebuie să asigure mentenanța unor medii care nu mai sunt necesare fără a ști care sunt acelea.

De obicei, cu cât organizația este mai mare cu atât observăm un grad mai ridicat de specializare, și evident echipe mari și separate de dezvoltare, de testare pe de o parte sau de infrastructură și administrare de sistem pe de altă parte. Iată un scenariu aproximativ (și exagerat în mod intenționat pentru a sublinia problema) care este destul de des întâlnit: • Echipa de dezvoltare cere un mediu / o infrastructură pentru a testa o versiune nouă a unei soluții. Poate fi pentru test, pentru staging, pre-production, etc. • Echipa de infrastructură primește cererea, probabil sub forma unui ticket sau service request prin unealta internă de gestionat astfel de cereri. Cererea este direcţionată automat sau parţial automat către persoana care se ocupă cu rezolvarea ei. • Mediul de test este creat și echipa de dezvoltare este notificată. Costul mediilor de testare • Echipa de dezvoltare constată că A avea zeci de mașini virtuale care mediul nu este conform cu așteptările nu sunt utilizate presupune un cost inusale. Poate lipsesc mașini, poate nu sunt til. Uneori avem tendința de a crede că


TODAY SOFTWARE MAGAZINE odată realizată investiția inițială în infrastrcutura fizică (servere, rețea, etc.), nu vom avea alte costuri cu mașinile virtuale deservite de aceasta, neglijând costurile de operare / mentenanță, costul cu energia și costul de oportunitate: faptul că pe un server stau degeaba niște mașini virtuale înseamnă că nu pot sta unele de care chiar e nevoie. O altă situație mult mai frecventă este cea a unor medii de testare utilizate periodic pentru un interval limitat de timp, dar create și care rulează tot timpul. Pe scurt: e nevoie de medii de testare care să fie disponibile non-stop? Facem testare în weekend? Facem în timpul zilei și în timpul nopții? Cu niște proceduri foarte simple și puțină automatizare (a se citi scripting), e foarte simplu să ajungem la costuri de 40-50% sau mai mici din cele care presupun rularea non-stop a acestor medii.

Constrângeri de business Tot mai multe companii dezvoltă soluții în modelul SaaS (Software as a Service), ori pentru produsele proprii, ori pentru beneficiarii lor. Livrarea versiunilor noi de software în modelul SaaS a modificat complet indicatorii de succes care trebuie urmăriți, unul dintre cei care au devenit foarte importanți fiind ”time to market” sau intervalul de timp de livrare către client, scurs de la momentul t0 când clientul a cerut o nouă cerință. De asemenea, poate în strânsă legătură cu ”time to market”, se observă o modificare a ritmului în care apar versiuni noi. Dacă în modelul tradițional de licențiere software on premises apăreau versiuni noi odată la șase luni sau mai rar, acum este foarte des întâlnită o frecvență de release o dată la două săptămâni sau chiar mai puțin. În aceste condiții devine evident de ce a aștepta 3-4 zile pentru crearea unei infrastructuri de test este uneori chiar imposibil.

Pierderi mai puține Azure îți dă posibilitatea de a controla foarte bine costurile asociate unor mașini virtuale sau a unor medii. Există mai multe mecanisme, printre care Azure Automation și Azure DevTest labs prin care pur și simplu mașinile virtuale se închid la anumite ore (ceea ce reduce costul de rulare al mașinilor la 0), sau prin politici care limitează crearea de mașini virtuale de anumite dimensiuni (ceea ce limitează costul de rulare). Reutilizarea Este foarte simplu în Azure să creezi o mașină virtuală sau un mediu complex și apoi să îl recreezi de câte ori ai nevoie întrun mod garantat identic. Aceasta în special cu ajutorul Azure Resource Manager și modelul de templates, practic fișiere JSON care descriu mediul pe care ni-l dorim în final în loc de o serie de comenzi procedurale care pleacă dintr-o stare și prin pași succesivi ne dau în cele din urmă un rezultat. Acest mecanism de template-uri se înscrie foarte bine în paradigma Infrastructure as Code, alături de PowerShell DSC (Desired State Configuration), prin care personalul care creează infrastructură lucrează cu ea așa cum programatorii lucrează cu codul sursă, sau cu alte cuvinte prin care niște nespecialiști în infrastructură (programatorii) pot să creeze infrastructuri complexe.

Cum ne ajută Microsoft Azure

Atunci când vorbim despre Dev/Test cu Azure, mai întâi trebuie menționate uneltele și tehnologiile care ne ajută în tot procesul de dezvoltare, Continuous Delivery și Continuous Integration. Anume, Microsoft ne pune la dispoziție Team Foundation Server (TFS) – o soluție on premises sau Visual Studio Team Services (VSTS, fostul Visual Studio Online), care este o versiune simplificată a TFS livrată pe modelul SaaS. Soluții folosind Cloud Utlimele updates ale VSTS ne-au adus câteva îmbunătățiri Odată cu apariția serviciilor de tip Cloud și în special a majore în special în relația cu Azure. celor publice foarte relevante (Microsoft Azure, Amazon), rezultă posibilități noi de creare a unor infrastructuri sau medii Build temporare, în special datorită unor atribute ale Cloud-ului. Realizarea de build-uri a unei soluții administrate cu VSTS a devenit din ce în ce mai simplă de-a lungul anilor. Recent, VSTS Self-service ne dă posibilitatea de a realiza build în Cloud, pe mașini (agenți) Toate serviciile de tip Public Cloud se pot activa într-o mani- disponibile pentru acest lucru undeva în Azure. Acest lucru eră de autoservire. Este perfect normal ca echipa de dezvoltatori presupune pur și simplu realizarea unei conexiuni între VSTS să creeze propriile mașini virtuale (și tot ce e nevoie în jurul aces- și o subscripție de Azure (de exemplu una inclusă în licențele tora) pentru mediile lor temporare. Eventual cu ajutorul echipei MSDN), iar build-urile comandate se vor realiza pe infrastructura de infrastructură, care poate să definească și apoi să forțeze niște din Azure. Practic aceasta ne scutește de necesitatea unor mașini constrângeri și politici care să țină costurile sub control. Însă nu specializate în propria infrastructură pentru a realiza build-uri. mai este nevoie de know-how-ul specific administratorilor de sisÎn figura alăturată putem observa definiția unor pași de reatem pentru a crea medii temporare. lizat la Build. De exemplu: Build efectiv, urmat de copierea unor Elasticitatea Cloud-ul prin definiție este elastic. Adică este foarte ușor să scalăm, să adaugăm sau să scădem mașini virtuale care compun un mediu de test, și care cu siguranță sunt identice cu cele existente deja. Rapiditatea Crearea (provisioning) de mașini virtuale durează foarte puțin. De exemplu în Microsoft Azure, crearea unui VM durează mai puțin de 10 minute, crearea a 10 VMs durează tot 10 minute, iar crearea a 100 de VMs la fel. E foarte greu să creezi într-o infrastructură locală zeci de mașini virtuale identice în câteva minute de fiecare dată când e nevoie. www.todaysoftmag.ro | nr. 44/februarie 2016

39


programare

Care sunt provocările în scenarii Dev/Test/DevOps şi cum ne poate ajuta Microsoft Azure

fișiere (output-ul de la build) undeva în Cloud, și ultimul pas rularea unor teste automate (care presupune că soluția noastră conține un proiect de testare care să conțină unit tests). Release Cu ajutorul VSTS putem realiza release-uri, declanșate de exemplu de apariția unui nou build sau la cerere, utilizând tot mașini (agenți) din Azure. Practic, eliminăm necesitatea unor mașini locale pentru a depune acolo ultimele versiuni de aplicație necesare pentru QA / testare sau pentru realizarea unui demo la client. În figura alăturată sunt prezentați câțiva pași posibili: deployment efectiv într-un Azure Web App, apoi rularea automată a unor teste (de exemplu load tests), și în fine realizarea unui deployment cu ajutorul Azure Resource Manager, pe baza unui template JSON.

TFS și Release Manager VSTS este totuși un serviciu relativ limitat pentru scenarii complexe de continuous delivery. De aceea, versiunea on premises cu TFS reprezintă o soluție foarte bună. Alături de TFS se poate utiliza Release Manager, un produs separat din lista de unelte Microsoft pentru Dev/Test, care ne ajută în special pentru a defini workflow-uri de Build, Test, Release, etc.; a defini medii de test complexe, și nu în ultimul rând a defini medii de test cu ajutorul Azure. Practic, putem defini: mediul ”Dev” care presupune realizarea unor build-uri și rularea unor unit tests, să fie local pe o mașină din biroul nostru, iar mediul ”Staging” să fie construit cu ajutorul unor VMs din Azure.

Azure Automation Este un serviciu care ne ajută să definim scripturi PowerShell și intervale regulate de timp sau condiții care trebuie îndeplinite pentru rularea automată a acestora. Automation este extrem de util atunci când avem nevoie de mașini de test sau de medii oricât de complexe (VMs, subnets, load balancers, etc.) care să pornească automat atunci când este nevoie de ele și să se oprească singure după ce nu mai sunt necesare. Ca exemplu, se poate implementa următorul scenariu: • La ora 10:00 se pornește mediul de test. • La ora 18:00, și numai după ce toată activitatea din acel mediu a încetat (de pildă dacă avem server web, acesta să nu proceseze request-uri active, sau dacă nu se mai rulează teste automate), se închide mediul de test. Acest serviciu vine ca o mănușă peste modelul de preț al lui Azure: mașinile virtuale se plătesc per minut de rulare. Prin urmare în exemplul de mai sus, cu VMs rulând între 10 și 18 doar

40

nr. 44/februarie 2016 | www.todaysoftmag.ro

în zilele săptămânii scădem costurile cu infrastructura aceasta temporară la mai puțin de 25% decât dacă VMs ar rula non-stop. Dev Test Labs Ultimul dar nu cel din urmă serviciu Azure care merită menționat pentru scenariile Dev/Test este, după cum îi și spune numele, Dev Test Labs. Încă un serviciu aflat în preview își propune: • Crearea rapidă de medii temporare (test, staging, etc.) folosind VMs. • Folosind template-uri JSON cu ajutorul Azure Resource Manager, template-uri utile pentru reutilizare și pentru specificarea cât mai simplă (în special pentru programatori) a unei infrastructuri complexe. • Pe VM-urile create se pot adăuga extrem de simplu Artefacte. Acestea pot fi: agenți, unelte, programe, etc. sau chiar și niște comenzi împachetate sub forma unor scripturi, care să fie pe VM-ul respectiv după crearea acestuia. De exemplu, avem nevoie de o mașină virtuala Windows Server 2012 R2, cu Fiddler, Git, Visual Studio Test agent instalate pe ea. Pur și simplu selectăm acele artefacte din listă, și VM-ul nostru le va avea după instalare. • Minimalizarea de costuri prin diverse politici cum ar fi: numărul maxim de VMs per utilizator, numărul maxim de VMs per laborator (o entitate care trebuie definită explicit), sau tipuri de mașini virtuale care pot fi create. De exemplu, utilizatorii să nu poată crea (din greșeală să spunem) VMs cu mai mult de patru procesoare.

Concluzii Microsoft Azure în combinație cu Visual Studio Team Services sau Team Foundation Server și Release Management, ne asigură posibilitatea de a crea medii de test / staging / preproduction rapid, la costuri mici si controlate. Și, mai ales, fără a fi nevoie de cunoștințe avansate de infrastructură, prin urmare rezolvând diviziunea între echipele de dezvoltare și de infrastructură prin simplul fapt că echipa de dezvoltare poate să devină responsabilă de crearea, rularea și oprirea mediilor acestea temporare, cu ajutorul administratorilor de sistem doar în ceea ce privește realizarea de template-uri respectiv stabilirea de cote și politici pentru un control bun al costurilor. Pentru mai multe informații, vizitați: • VSTS1 • VSTS și integrarea cu Azure2 • DevTest Labs3 1

https://www.visualstudio.com/en-us/products/visual-studio-team-services-vs.aspx

2 h t t p s : / / a z u r e . m i c r o s o f t . c o m / e n - u s / d o c u m e n t a t i o n / a r t i c l e s / cloud-services-continuous-delivery-use-vso/ 3 https://azure.microsoft.com/en-us/services/devtest-lab/


management

Siguranţa psihologică și coeziunea de echipă

D

omeniul IT este unul dinamic, iar echipele de dezvoltare ocupă un loc important în livrarea aplicațiilor către diferiți clienți. Astfel, rolul echipelor în cadrul organizaței este din ce în ce mai mult în centrul atenției pentru identificarea diferitelor metode care pot contribui la creșterea eficacității acestora.

Ștefania Duica Stefania.Duica@endava.com IT Recruiter @Endava

Componența grupului este una pluridisciplinară și în multe situații indivizii lucrează împreună pe o perioadă de timp limitată (de cele mai multe ori pe durata unui singur proiect). În acest context, provocarea mare este dată de faptul că indivizi cu o experiență relativ diferită, trebuie să livreze un produs la un nivel ridicat făcând față de cele mai multe ori unor termene limită destul de strânse. De aici ia naștere și amploarea rolului pe care îl are grupul, iar dezvoltarea cu succes a unei aplicații depinde de modul în care indivizii colaborează. Ciclul de dezvoltare al unui soft este unul complex atât din punct de vedere al modului în care lucrează membrii echipei cât și individual pentru fiecare grup în parte. Una dintre provocările mari pe care le întâmpină este aceea de coordonare a activităților în perioada în care sunt alocate pe proiecte ce angrenează un număr mare de oameni. Pentru ca livrarea să fie de succes este nevoie de cunoștințe și abilități atât tehnice specifice fiecărui rol în parte (programator, tester, PM, BA, DevOps etc) cât și în

zona de creativitate, inventivitate, rezolvare de probleme (Cusumano, 2004). Aici intervine modul în care fiecare echipă operează și cum reușește să crească performanța într-un context complex. Literatura de specialitate din psihologia organizațională accentuează dificultatea întâmpinată în momentul în care individul este nevoit să lucreze cu persoane diferite, pentru unii fiind mai ușor să colaboreze cu anumite tipologii de personalitate, iar pentru alții mai dificil. (Hackman, 1990). De aici derivă o nouă provocare la nivel organizațional și anume ce se poate face pentru ca echipele să funcționeze cât mai bine, iar membrii grupului să obțină performanțe cât mai ridicate, care să ducă la dezvoltarea unei aplicații care să ofere satisfacție clientului. Astfel, atenția este tot mai mult centrată pe ce înseamnă colaborare și cum se pot stabili relații sănătoase în mediul de lucru în cadrul grupului. Colaborarea presupune interacțiune între membrii echipei, oferirea de sprijin în îndeplinirea diferitelor sarcini, înțelegerea

www.todaysoftmag.ro | nr. 44/februarie, 2016

41


management

Siguranţa psihologică și coeziunea de echipă

nevoilor celor din jur, acceptarea faptului că sunt anumite lucruri la care nu se știe răspunsul și altele care nu pot fi realizate individual. Nevoia aceasta de colaborare apare din existența unor sarcini care îl determină pe individ să iasă din zona de confort. Realizarea muncii în mod colaborativ se face în primul rând prin împărtășirea ideilor și a informațiilor, integrarea perspectivelor și coordonarea sarcinilor. Accentul este tot mai mult pus asupra echipei și a modului în care aceasta lucrează, performează și în ce măsură este stimulată învățarea în cadrul grupului. Astfel, echipele ajung să asigure un mecanism structurat prin intermediul căruia se realizează colaborarea. În contextul în care echipa joacă un rol cheie este esenţială înțelegerea caracteristicilor definitorii ale acesteia. Hackman (1987) spunea că este vorba despre nevoia ca indivizi diferiți să lucreze împreună pentru a putea să ajungă la un rezultat pe care să îl impărtășească. Întrebarea care ia naștere de aici este legată de ceea ce îi determină pe oameni să împărtășească singuri idei și pe o parte dintre ei chiar să contribuie la o experiență colaborativă? S-a discutat și continuă să se urmărească impactul pe care îl are coeziunea în creșterea performanței, rolul pe care îl joacă încrederea între membrii echipei și nu în ultimul rând cum poate fi construit un climat care să faciliteze comunicarea, oferirea feedbackului și încurajarea membrilor echipei ca fiecare să contribuie cu propriile idei și actiuni la munca colectivă. Coeziunea de echipă este văzută ca un mixt de caracteristici precum atracție interpersonală, mândria apartenenței la grup și angajament pentru realizarea sarcinillor (Mullen & Copper, 1994). Pe de altă parte, pentru a crea o echipă cu o coeziune ridicată este esențială încrederea, adică acceptarea relațiilor solidare. Prin încredere se înțelege ca un individ să se simtă atât de confortabil în preajma colegilor încât să nu îi fie teamă să fie vulnerabil în fața lor. Această vulnerabilitate este identificată în momentul în care membrii echipei ajung în acel punct în care se simt în totalitate confortabili fiind transparenți, onești și spun și cred în afirmații precum: ”Am dat-o în bară”, ”Am nevoie de ajutor” sau ”Ideea ta este mai bună decât a mea”. Încrederea duce la o serie de așteptări comportamentale în rândul indivizilor, permițându-le acestora să administreze riscul sau incertitudinea asocitate cu interacțiunile lor. Adesea este văzută ca o alegere și în baza diferitelor modele sociologice se diferențiază între tipul cognitiv, comportamental și emoțional al încrederii.

42

nr. 44/februarie 2016 | www.todaysoftmag.ro

Coeziunea este poate cea mai intâlnită și cea mai comună metodă prin care performanța unui grup este crescută. În cadrul multor companii se încearcă închegarea echipei prin determinarea oamenilor să se apropie unii de ceilalți, să se aprecieze și de asemenea, să creeze acea mândrie a apartenenței la grup. Probabil atunci când coeziunea este puternică, grupul este motivat să performeze bine și are abilități mai bune de coordonare a activităților spre o performanță de succes. (Cartwright, 1968; Davis, 1969) Cu toate acestea, multe studii au acceptat plauzibilitatea existenței unei relații între coeziunea de grup și performanța grupului. Observațiile empirice ale relației au variat destul de mult, determinându-i pe unii autori să își pună semne de întrebare legate de posibilitatea de a generaliza astfel de rezultate (Stegdill, 1972; Tzimer, 1982). Cea mai puternică relație cu performanța se pare că o au angajamentele indivizilor pentru finalizarea sarcinilor. Componente ale coeziunii, precum atracția interpersonală și mândria apartentenței la grup, s-au dovedit a nu fi relaționate în mod direct cu performanța (Beal et al. 2003). Astfel, coeziunea are nevoie de o putere mai mare pentru a crește performanța echipei. Studii mai recente fac trimitere la faptul că acest concept de coeziune poate să reducă dorința de dezaprobare și provocare a punctelor de vedere exprimate de ceilalți, la fel ca în fenomenul numit groupthinking (Janis, 1982), implicând şi o lipsă a asumării riscului (Edmondson, 2003). Acest fenomen este derivat din comportamentele manifestate de membrii grupului în momentul în care atracția interpersonală și mândria apartenenței la grup cresc, oamenii evitând să își exprime liber ideile din teama de a nu intra in conflict cu ceilalți membri ai grupului. În baza minusurilor pe care le prezintă coeziunea de echipă, în psihologie a apărut un nou concept numit psychological safety (siguranța psihologică) care dorește să suplinească neajunsurile celei dintâi. Astfel, acest concept a apărut ca necesitate de a crea un mediu confortabil pentru indivizi astfel încât aceștia să se simtă încrezători și capabili să se schimbe. Marele avantaj al siguranței psihologice este acela că oferă încrederea că echipa nu va respinge sau va pedepsi un membru pentru că își exprimă punctul de vedere. În concluzie, siguranța psihologică în cadrul grupului este definită ca o credință împărtășită că echipa este mediul sigur în care îți poți asuma risc interpersonal. Într-o


TODAY SOFTWARE MAGAZINE echipă în care siguranța psihologică a indivizilor este ridicată, libertatea și deschiderea la nivel interpersonal cresc și indivizii se vor angaja mai ușor în comportamente riscante care sunt necesare în procesul lor de învățare. Cu toate acestea, existența nevoii de a crea un mediu confortabil pentru învățare, nu implică neapărat formarea unui mediu liniștit în care membri grupului sunt neapărat prieteni apropiați și nu sugerează lipsa presiunii sau a diferitelor probleme. Lipsa totală a conflictelor în cadrul echipei fiind un factor de blocaj în dezvoltarea acesteia. Cu cât un conflict este mai bine gestionat, cu atât beneficiile aduse grupului sunt mai mari. Comparând componenta care joacă un rol important în creşterea coeziunii grupului, şi anume încrederea, cu siguranţa psihologică se poate observa că între cele două există o serie de similarități, dar pot fi identificate și destul de multe diferențe. Siguranța psihologică încurajează comportamentele de învățare, pe când încrederea reduce gestionarea costurilor și nevoia de a monitoriza comportamentele. Cele mai recente studii au demonstrat faptul că siguranța psihologică are un impact mult mai mare asupra grupurilor mici, pe când încrederea este în mod particular relevantă pentru relațiile diadice. Ce nu reuşete să surprindă încrederea este o dimensiune particulară a experienţei interpersonale, mai exact cât de apreciat şi confortabil se simte un angajat în mediul de lucru. O diferență foarte importantă între cele două concepte, siguranța psihologică și încrederea, este dată de punctul pe care este centrată atenția: asupra propriei persoane versus asupra celorlalți. O a doua diferență este ceea ce este conceptualizat ca fiind nivelul de analiză al grupului. După cum reiese din literatura de specialitate, siguranța psihologică caracterizează mai degrabă grupuri și nu diferențe individuale sau temperamentale. Este văzută ca o proprietate emergentă a colectivului, care descrie nivele ale siguranței interpersonale trăite de către membri unui grup particular. Ultima dimensiune este cea cu privire la îngustarea limitelor temporale. Acest concept pune în evidență faptul că în contextul siguranței psihologice o persoană ia în considerare inclusiv rezultatele imediate ale acțiunilor în care se implică. Pe când, în contextul încrederii, indivizii tind să anticipeze consecințele pe o perioadă lungă de timp, care este relativ departe în viitor față de momentul prezent. O ultimă întrebare la care își propune acest articol să

răspundă este legată de ce se poate face pentru a crea un mediu care să faciliteze creșterea siguranței psihologice? Unul dintre factorii cheie este considerat a fi comportamentul pe care îl are liderul în cadrul echipei. Astfel, s-a demonstrat că modul în care liderul face managementul echipei poate avea un impact foarte mare asupra procesului de învățare în cadrul grupului. În facilitarea construirii unui astfel de mediu este foarte important să se pună accentul pe: • Căutarea ajutorului la colegi pentru a conștientiza importanța pe care o pot avea comportamentele cooperative. • C ererea feedbackului în mod constant pentru îmbunătățirea procesului de învățare și creșterea performanței atât a liderilor cât și a echipei. • Discutarea erorilor și preocuparea – în contextul siguranței psihologice- de a permite membrilor echipei să spună cu voce tare ce îi preocupă și care sunt problemele întâmpinate, prin ușurarea îngrijorărilor cu privire la repercusiuni. • Comportamente inovatoare și inovație – comportamentele inovatoare pot fi definite ca fiind realizarea de lucruri diferite în mod inteligent pentru a obține rezultate utile. Inovația apare mai frecvent dacă oamenii se simt în siguranță în grupul din care fac parte. Prin urmare, siguranța psihologică, prin facilitarea asumării riscului și a dorinței de a veni cu idei noi fără a exista teama de rușine, poate susține comportamente inovatoare și inovația în cadrul echipei. • Extinderea granițelor – aceste comportamente descriu comunicarea externă cu alte grupuri. Ele pot implica asumarea riscurilor interpersonale, incluzând cerința de ajutor sau resurse, căutarea feedbackului și transmiterea veștilor negative precum întârzieri, depășiri ale termenelor stabilite. Concluzia nu este legată de faptul că unul dintre concepte este mai potrivit decât celălalt. Coeziunea are plusurile ei, ajutând la închegarea relațiilor între membri unei echipe, însă siguranța psihologică are și rolul de a crea un climat orientat mai mult spre crearea contextului favorabil pentru ca indivizii dintr-un anumit grup să fie deschiși să se schimbe și să își exprime liber ideile. Linia dintre coeziunea de echipă și siguranța psihologică este suficient de bine conturată (vezi fig. 1 şi fig. 2).

Fig. 1

www.todaysoftmag.ro | nr. 44/februarie 2016

43


management Siguranţa psihologică și coeziunea de echipă

Fig. 2

Este clar unde se diferențiază cele două și unde intervine factorul comun. Ce este greu de delimitat este când una este mai bună decât cealaltă. Aceasta este o afirmație greu de făcut, deoarece în funcție de contex sau echipă fiecare poate avea un impact diferit. Coeziunea de echipă creează un mediu unde oamenii se simt confortabil, nu le este teamă să fie vulnerabili în fața celorlalți, sunt onești cu membrii echipei și sunt mândri că aparțin acelui grup, iar punctul central îl reprezintă încrederea. Aceste aspecte pozitive pot să dea naștere unor comportamente care nu sunt neapărat corelate cu performanța grupului. Pe de altă parte, siguranța psihologică facilitează crearea unui mediu confortabil pentru învățare, indivizii simțindu-se încrezători și capabili să se schimbe. Cu privire la modul de intarcțiune al membrilor grupului, în acest context, aceștia nu sunt neapărat cei mai buni prieteni, iar conflictele generate între ei pot contribui la dezvoltarea lor, dacă acestea sunt bine gestionate.

44

nr. 44/februarie 2016 | www.todaysoftmag.ro


TODAY SOFTWARE MAGAZINE

contabilitate

Calculul salarial în 2016

A

nul 2016 a fost cu siguranţă un an important din punct de vedere al noutăţilor legislative. Iată că şi în domeniul salarizării au apărut câteva modificări importante pe care le vom prezenta mai jos. Salariul minim brut pe economie valabil de la 01.01.2016 până la 30.04.2016 este de 1.050 lei.

Salariul minim brut pe ţară garantat în plată va creşte însă de la 1 mai 2016 cu 200 lei până la 1.250 lei, conform HG nr. 1017/2015 publicată în Monitorul Oficial din 31 decembrie 2015. Aceasta este noua valoare pentru un program complet de lucru de 169,333 ore în medie pe lună în anul 2016, reprezentând 7,382 lei/oră. Stabilirea salariului de bază sub acest nivel constituie contravenţie şi se sancţionează cu amendă de la 1.000 lei la 2.000 lei, pentru fiecare contract individual de muncă în care salariul minim este stabilit sub cel menţionat mai sus, în măsura în care, potrivit legii, fapta nu constituie infracţiune. Constatarea contravenţiei şi aplicarea sancţiunii se fac de către personalul Ministerului Muncii, Familiei, Protecţiei Sociale şi Persoanelor Vârstnice, prin inspectoratele teritoriale de muncă judeţene şi al municipiului Bucureşti, împuternicit, după caz, prin ordin al ministrului muncii, familiei, protecţiei sociale şi persoanelor vârstnice. De asemenea, s-au schimbat deducerile personale de baza începând cu 01.01.2016.

Ce este deducerea personală de bază? Deducerea este o sumă care se scade din baza de calcul a impozitului pe venitul din salarii, scopul fiind reţinerea unui impozit pe venit diminuat. Potrivit Codului fiscal, salariaţii au dreptul la deducerea din venitul net lunar din salarii a unei sume sub formă de deducere personală, acordată pentru fiecare lună a perioadei impozabile numai pentru veniturile din salarii la locul unde se află funcţia de bază. Deducerea personală se acordă pentru

persoanele fizice care au un venit lunar brut de până la 1.500 lei inclusiv, astfel: pentru contribuabilii care nu au persoane în întreţinere - 300 lei; • pentru contribuabilii care au o persoană în întreţinere - 400 lei; • pentru contribuabilii care au două persoane în întreţinere - 500 lei; • pentru contribuabilii care au trei persoane în întreţinere - 600 lei; • pentru contribuabilii care au patru sau mai multe persoane în întreţinere 800 lei. Pentru contribuabilii care realizează venituri brute lunare din salarii cuprinse între 1.501 lei şi 3.000 lei, inclusiv, deducerile personale sunt degresive faţă de cele de mai sus și se determina printr-o formulă publicată în Ordinul nr. 52/2016 privind aprobarea calculatorului pentru determinarea deducerilor personale lunare pentru contribuabilii care realizează venituri din salarii la funcţia de bază, începând cu luna ianuarie 2016, potrivit prevederilor art. 77 alin. (2) şi ale art. 66 din Legea nr. 227/2015 privind Codul fiscal, publicat în Monitorul Oficial in 25.01.2016. Pentru contribuabilii care realizează venituri brute lunare din salarii de peste 3.000 lei nu se acordă deducerea personală. Aceste prevederi nu se aplică pentru salariaţii care sunt scutiti de impozit ca urmare a încadrării în criteriile de scutire pentru activitãţile derulate în sfera creării de programe informatice. Ca o noutate legislativă a anului 2016 este acordarea deducerii personale pentru ambii părinţi, pentru copiii minori aflaţi în întreţinere. Până la 1 ianuarie 2016 doar unul dintre părinţi putea beneficia de deducerea personală pentru copilul în întreţinere (în functie de optiunea acestora).

Din 2016, persoana în întreţinere poate fi: • soţia/soţul, • copiii sau • alţi membri de familie, rudele contribuabilului sau ale soţului/soţiei acestuia până la gradul al doilea inclusiv, ale cărei venituri, impozabile şi neimpozabile, nu depăşesc 300 lei lunar (anterior 250 lei) cu excepţia veniturilor prevăzute la art. 62 lit. o), w) şi x) şi/sau a pensiilor de urmaş cuvenite conform legii, precum şi a prestaţiilor sociale acordate potrivit art. 58 din Legea nr. 448/2006 privind protecţia şi promovarea drepturilor persoanelor cu handicap, republicată, cu modificările şi completările ulterioare. Copiii minori în vârstă de până la 18 ani împliniţi, ai contribuabilului, sunt consideraţi întreţinuţi. Pentru copilul minor provenit din căsătorii anterioare, dreptul la deducerea personală revine părintelui căruia i-a fost încredinţat copilul şi unuia dintre soţi care formează noua familie. În situaţia în care într-o familie sunt mai mulţi copii aflaţi în întreţinere, cu excepţia copiilor minori, aceştia vor fi preluaţi în întreţinerea unuia dintre părinţi conform înţelegerii dintre părţi. În aceste situaţii contribuabilii vor prezenta plătitorului de venit fie o declaraţie pe propria răspundere din partea soţului/soţiei, fie o adeverinţă emisă de plătitorul de venit din salarii al acestuia/acesteia, după caz, din care să rezulte numărul şi identitatea copiilor care sunt preluaţi în întreţinere de fiecare soţ/soţie.

www.todaysoftmag.ro | nr. 44/februarie, 2016

45


contabilitate

Calculul salarial în 2016

Copilul minor cu vârsta cuprinsă între 16 şi 18 ani, încadrat în muncă în condiţiile Legii nr. 53/2003 – Codul muncii, republicată, cu modificările şi completările ulterioare, devine contribuabil şi beneficiază de deducerea personală, situaţie în care, pentru perioada respectivă, părinţii nu mai beneficiază de deducerea personală. Ĩn ce priveşte cotele de contribuţii nu au existat modificări la nivelul anului 2016. Astfel, cotele de contribuţii valabile pentru anul 2016 sunt: Contribuţii angajat : CAS: 10.50% CASS: 5.50% Şomaj: 0.50% Impozit: 16.00% Contribuţii angajator : CAS: 15.80% CASS: 5.20% Şomaj: 0.50% Fnuass: 0.85% Risc şi accidente -în funcţie de codul CAEN Fond garantare creanţe: 0.25% Iată mai jos un exemplu de calcul salarial în două variante: 1. Angajat cu salariul minim de 1.050 lei, fără persoane în întreţinere. Contribuţii angajat CAS 10.50% =110 CASS 5.50%= 58 Şomaj 0.50% =5 Deducere personală =300 Impozit 16%= 92 Total taxe angajat= 265 Salariu net =785 Contributii angajator CAS 15.80% =166 CASS 5.20% =55 Şomaj 0.50% =5 Concedii şi indemnizaţii 0.85% = 9 Fond risc 0.15% = 2 Fond garantare creanţe 0.25% = 3 Total taxe angajator = 240

46

nr. 44/februarie 2016 | www.todaysoftmag.ro

2. Angajat cu salariul minim de 1.250 lei, fără persoane în întreţinere. Contribuţii angajat CAS 10.50% =131 CASS 5.50% =69 Şomaj 0.50% =6 Deducere personală= 300 Impozit 16% =119 Total taxe angajat= 325 Salariu net =925 Contributii angajator CAS 15.80% =198 CASS 5.20% =65 Şomaj 0.50% =6 Concedii şi indemnizaţii 0.85% =11 Fond risc 0.15% =2 Fond garantare creanţe 0.25% =3 Total taxe angajator =285

Delia Mircea delia@contzilla.ro @Contzilla.ro


contabilitate

Ce pregateste statul roman pentru domeniul IT&C’ ?

Î

nceputul de lună aduce o rază de speranță pentru start-up-rile din domeniul IT&C din România. Articolul de față își propune să aducă în atenția publicului interesat un subiect care se dorește a fi răspunsul la o mai veche problemă, încadrarea în activitatea de creație de programe pentru calculator, pe care OMFP nr. 1479 / 02.09.2013, a lăsat-o nerezolvată. Ioana Varga ioana.varga@aiconsulting.ro Expert contabil Managing Partner @ A&I Consulting

Pe scurt, în momentul de față, dacă atât angajatorul, cât și angajatul său îndeplinesc o serie de condiții prevăzute în ordinul stipulat mai sus, se beneficiază de o scutire a impozitului pe salariu, cu mențiunea că angajatorul trebuie să fi realizat în anul fiscal anterior o cifră de afaceri de 10.000 dolari pentru fiecare angajat care urmează să beneficieze de această scutire în anul fiscal curent. Legiuitorul a încercat o relaxare a condiţiilor de acordare a scutirii pentru acest impozit, prin modifiările aduse OMFP nr. 1479/2013 care a intrat în vigoare la data de 30 iulie a anului trecut. Noutăţile aduse constă în adăugarea unei noi poziții în Lista cuprinzând ocupațiile specifice activităților de creație de programe pentru calculator, și anume cea de Programator de sistem informatic. De asemenea, o noutate este reprezentată şi de posibilitatea de a aplica scutirea impozitului pe salarii şi pentru acei angajaţi, cetățeni ai statelor membre UE, Spațiului Economic European și Confederației Elvețiene ale căror diplome sunt echivalente cu diploma acordată după finalizarea unei forme de învățământ superior de lungă durată sau cu diploma acordată după finalizarea ciclului I de studii universitare de licență. Pentru aceşti angajaţi, la încadrarea în muncă este necesară existenţa copiei legalizate a atestatului de echivalare a diplomei, eliberat prin structurile Ministerului Educației și Cercetării Științifice. Cu intenţia de a extinde cât mai mult

plaja de acordare a scutirii impozitului pe salarii, principala modificare adusă de către legiuitor a constat în eliminarea Listei specializărilor – existentă din 2013 - din reglementarea anterioară, astfel încât, orice absolvent de studii superioare care lucrează în domeniul creării de programe să poată beneficia de scutirea impozitului pe salariu, atât timp cât sunt îndeplinite și celelalte condiții prevăzute în Ordin. Aceasta este probabil cea mai mare neclaritate pe care angajatorii o au de înfruntat, întrucât, la momentul actual, nu există niciun cadru legal care să ofere detalii concrete cu privire la posibilitatea încadrării pe funcţiile ce beneficiază de această scutire a persoanelor ce nu au studii de specialitate, ci doar studii superioare. Considerăm oportună o revenire asupra acestei prevederi cu precizarea cât mai clară a intenţiei legiuitorului şi oferirea detaliilor necesare cu privire la următoarele chestiuni pe care le vom enumera sub formă de întrebări: Este suficientă condiţia finalizării oricăror studii superioare atât timp cât încadrarea se face pe una din funcţiile prevăzute în ordin sau se doreşte existenţa unei diplome de finalizare a studiilor superioare de specialitate? Care sunt acei candidaţi pe care angajatorul îi poate încadra pe funcţiile prevăzute în Ordin? Din punct de vedere legal, care sunt rigorile ce trebuie îndeplinite pentru a încadra un angajat pe o anumită funcţie? Ce îi face pe unii angajaţi eligibili pentru ocuparea funcţiilor ce beneficiază de scutirea pe impozit? Din lipsă de informaţii

www.todaysoftmag.ro | nr. 44/februarie, 2016

47


contabilitate suplimentare şi din dorinţa de a-şi motiva angajaţii cu costuri cât mai reduse, angajatorii se expun unor riscuri considerabile în cazul în care organele abilitate pot constata o forţare a legii. Deşi este necesară o clarificare a condiţiilor prevăzute de prezentul Ordin, această facilitate fiscală este binevenită, a ajutat și ajută în continuare la motivarea angajaților, la obținerea unor rezultate bazate pe o calitate a muncii tot mai ridicată și, desigur, constituie un factor important în dezvoltarea companiilor. Dar ce se întâmplă cu acele companii nou înființate, cu acele minți strălucite care își doresc să înceapă propriul business în acest vast domeniu al IT&C, dar care nu beneficiază de puterea de finanțare necesară la început de drum? Fără a se dori acest lucru, legiuitorul a creat un mediu discriminator față de companiile nou înființate care nu au posibilitatea de a-și atrage resursa umană potrivită, de a o motiva și păstra. Se poate afirma, astfel, că ordinul actual nu doar că nu oferă facilități start-up-rilor, dar oferă și un cadru de business în care concurența pe piață nu este încurajată. Cu toate acestea, să nu lăsăm pesimismul să ne întunece viziunea și să dăm timpul înapoi, în luna noiembrie a anului trecut și să facem o vizită la ”Conferința How to Web 2015” unde îl putem urmări cu interes pe domnul ministru de resort al Comunicațiilor și Societății Informatice, domnul Marius Bostan. La întâlnirea cu reprezentanții mediului IT&C, domnul Marius Bostan și-a exprimat îngrijorarea cu privire la start-up-rile românești care sunt nevoite să își fondeze companii în afara țării și a manifestat dorința de a avea un mediu mai prietenos cu acest gen de companii. Revenind la momentul actual, într-un scurt interviu acordat Digi24, domnul Marius Bostan revine la subiectul start-up-rilor și face următoarea afirmație cu privire la beneficierea scutirii impozitului pe salarii, așa cum prevede OMFP

48

Ce pregateste statul roman pentru domeniul IT&C ? nr. 1479 / 02.09.2013: ” Va urma un ordin comun în care noi suntem reprezentaţi alături de alte trei ministere în care vom încerca să definim cât mai exact cadrul de aplicare al acestei norme. Prin ordinul precedent, trebuia să dovedeşti că ai produs software timp de doi ani pentru a putea beneficia, nu e normal să nu fie aplicabilă pentru startup-uri, cred că ar trebui să găsim definiţia exactă, pentru că start-up-urile sunt o forţă vitală în economie.” Vom vedea în ce mod se va reuși punerea în practică a unei asemenea prevederi. S-ar putea recurge la o serie de instrumente de evaluare pentru start-up-uri, pentru a se stabili clar cine poate beneficia de această prevedere. S-ar putea totodată recurge la crearea unui depozit pentru sumele reprezentând scutirea aferentă impozitului pe salarii, iar la închiderea anului fiscal, ar urma să se facă regularizarea: suma adunată ar urma să intre în buzunarul salariatului sau al statului, în funcție de atingerea cifrei de afaceri necesară. Este de menționat, totuși, că o asemenea măsură este discutabilă, întrucât un salariat nu este obligat să stea 12 luni la un loc de muncă și este dificil de stabilit cum i se va acorda unui fost angajat o suma cuvenită de drept, aplicând literalmente actualul ordin. În condițiile în care actualul ordin face referire la scutirea doar a anumitor tipuri de absolvenți angajați în industria IT&C, iar piața forței de muncă se confruntă cu o cerere tot mai mare de personal instruit în acest sector, este posibil să asistăm la o relaxare a condițiilor. Până la apariția unor detalii concrete cu privire la aplicarea acestei posibile scutiri, nu putem să facem altceva decât speculații, dar vă fac o invitație de a vizita site-ul oficial ce aparține de Ministerul Comunicaţiilor şi Pentru Societatea Informaţională, www.mcsi.ro1, unde veți găsi un comunicat foarte interesant datat cu 5 Februarie 2016, și anume: ”Bursa de Valori București (BVB) şi Ministerul Comunicaţiilor şi Pentru 1 http://www.mcsi.ro

nr. 44/februarie 2016 | www.todaysoftmag.ro

Societatea Informaţională au semnat, pe 5 februarie 2016, un protocol de colaborare, destinat sprijinirii IMM-urilor din sectorul IT&C. Cele două entităţi vor demara împreună o serie de programe, menite să aducă antreprenorii mai aproape de piaţa de capital, prin finanţarea pe piaţa AeRO şi pe piaţa principală a Bursei de Valori Bucureşti.” Pe scurt, în primavara anului 2016, se va demara un program de șase săptămâni, cu șase workshop-uri ale IMMurilor din IT&C care își vor prezenta afacerea în fața investitorilor. Se vor preselecta și selecta companii din șase regiuni ale țării, câte 10 companii/ regiune, care își vor prezenta poveștile de afaceri și de creștere într-o sesiune de pitching rezervat sectorului din care provin, sau regiunii specifice, sau unui anumit model de poveste de creștere (de exemplu, companii care doresc să strângă bani pentru a își extinde serviciile în străinătate sau companii care doresc să își dezvolte noi linii de business). Publicul va vota pentru prezentarea fiecărei companii, luând în considerare diferite criterii de evaluare. „Companiile, indiferent de dimensiunea lor, sunt în căutare de soluții de finanțare. Apetitul pentru risc mai ridicat de finanțare stătea până acum în business angel și venture capital. Este extraordinar că o forță de amvergura Bursei de Valori București vine să sprijine ideile noi, care pot aduce o plusvaloare fantastică investitorilor și antreprenorilor. Știm că în Polonia a funcționat și mai știm că fără inovație nu putem avansa”, a declarat Ministrul Marius Bostan. Prin prezentul articol se doreşte atragerea atenţiei tuturor persoanelor interesate de apariţia unor noi reglementări fiscale în viitorul apropiat, întrucât bugetele fiecăruia pot suferi modificări şi readaptări în funcţie de strategia de business preferată.


management

Echilibrul viață-muncă și generațiile pieței muncii. Cum răspundem în 2030 la întrebarea ”Ce faci astăzi?”

A

nul 2015 a fost anul în care Generația Y (milenară) a preluat un procent semnificativ din piața muncii din majoritatea statelor europene. Azi ne pregătim intens pentru venirea generației Z. Pentru că gestionarea generațiilor de pe piața muncii e un subiect de actualitate, s-a ajuns la mituri, exagerări și adevăruri incomode.

Florentina Șipețean florentina@happy-employees.com Consulting Manager @Azimut Happy Employees

Cum reușește Generația Y să facă față provocărilor familiale, tehnologice, economice sau emoționale? Să meargă zilnic la un job full-time, să se îngrijească de dezvoltarea sinelui, să dea curs hobby-urilor, să își întemeieze o familie, să păstreze legătura cu părinții, să iasă în oraș cu prietenii, să dea curs unei invitații la cafea venită din partea unui prieten aflat în nevoie, să acumuleze competențe noi, să își finalizeze studiile... Lista poate continua vreme îndelungată. Toate sunt provocări pe care angajații din jurul nostru le experimentează parțial sau total, cu unele schimbări de situații și context. Aceste ipostaze au fost reunite întrun concept căruia i s-a spus generic ”echilibrul viață-muncă”. Inițial echilibrul viață-muncă a apărut în apropiere termenului de stres (Rantanen, 2011). În ultimii ani însă discuția s-a mutat într-o direcție mai ... pozitivă. Echilibrul viață-muncă s-a tradus prin ”gradul de satisfacție și buna funcționare a angajatului atât la lucru, cât și acasă, cu minime conflicte de rol între acestea două” (Clark, 2000). Lumea științifică s-a pus de acord că acest echilibru influențează stima de sine, satisfacția în muncă și în general este un semn de ”viață bună”. Nu s-a ajuns însă la un consens cu privire la cum se măsoară și ce factori îl influențează (Grzywacz & Carlson, 2007). De ce este echilibrul viață-muncă un element important pe piața muncii atât pentru angajați, cât și pentru angajatori? Ce valențe capătă echilbrul viață-muncă pentru Generația Milenară? Cum ne ajută statistica și macro-indicatori în acest sens?

Pentru Generația Y echilibrul viață-muncă

este o metaforă Deși echilibru înseamnă balanță, raport just între două lucruri opuse, pentru Generația Y timpul personal nu are cum să fie cântărit/alocat proporțional cu cel profesional din motive justificabile și lesne de înțeles. Raportul este valabil și invers. Drept urmare, echilibrul este unul metaforic. Cum se traduce el în viața de zi cu zi și de ce este important? Se estimează că între 2020 și 2030, între 50-75% din piața forței de muncă va fi acoperită de generația Y (variază în funcție de surse și caracteristici naționale – deși în contextul globalizării acestea vor conta din ce în ce mai puțin) - adică tinerii care au acum între 18 și 33 de ani. Milenialul este văzut de parinții și bunicii lui ca un fel de „buric al Pamantului”, care crede că le știe pe toate. Consideră că are cam (prea) multă încredere în sine și că este leneș, dar ambițios: ”Îl duce capul, dar nu vrea!” Așa o fi... Dar pentru că nu are chef și timp să învețe despre lume în sisteme educaționale care sunt pentru el ca patul pentru Procust, construiește o lume nouă. O lume nouă care îi va influențează pe toți: pe părinții lui, pe angajatorii lui, pe prietenii lui, mediul care îl înconjoară în general. Iată cinci caracteristici care relevă bătălia din fiecare membru al Generației milenare când vine vorba despre echilibrul viață-muncă. 1 ) L E N E S AU AU T O N O M I E ? Generația milenară pune accent pe autonomie și independență altfel decât au făcut-o generațiile anterioare și uneori se traduce în dorința de nu fi blocați în programul unei zile de lucru. Această dorință nu ar trebui tradusă prin lene. Atunci când sunt motivați și implicați în muncă, Generația milenară

www.todaysoftmag.ro | nr. 44/februarie, 2016

49


management lucrează și 50-60 de ore pe săptâmână (Ernst & Young, 2015). 2) VIAȚA MILENIALULUI DE 25 DE ANI DIN ROMÂNIA: ÎNTRE E DU C AȚ I E , C OPI L ȘI L O C DE MUNCĂ - În 2/3 din țările continentului european aproximativ 10% dintre studenți au copii (BA, MA, PhD). Media de vârstă a studenților români cu copii este de aproximativ 27 ani. În România anului 2015 studenții cu copii sunt în număr de 45.000 din totalul numărului național de studenți (aproximativ 500.000 – estimările Min. Educației) (Eurostudent, 2015). 2 tineri din 3 din România, cu vârsta peste 25 de ani, lucrează cu normă întreagă (Centrul de Sociologie Urbană și Regională, 2014). 3 ) C Â N D PA R T E N E R U L LUCREAZĂ ȘI ȘEFUL NU ÎNȚELEGE: 78% dintre membrii Generației milenare au un soț/partener care lucrează full time. Spre deosebire de doar 47% dintre cei din Generația X (34-49 ani), care acum sunt majoritari în funcțiile manageriale din companiile din România. S-a creat ceea ce se numește ”empathy gap” între angajații mai vechi cu familii cu roluri clare (ei aduc banii și un alt membru al familiei îngrijește casa sau lucrează cu program scurt) versus angajații mai tineri care încearcă să facă totul singuri (fiecare partener aduce bani și îngrijește casa). Generația milenară nu e singura care vrea să obțină un echilibru între viața profesională și cea personală, însă ei sunt printre singurii dispuși să părăsească compania atunci când acest lucru nu se întâmplă. Sunt convinși că se pot adapta repede la tehnologii noi și au competențe profesionale solide. 4) BALANȚA SE ÎNCLINĂ DE OBICEI ÎNSPRE MUNCĂ: În 2014 un sfert din tinerii din România cu vârste cuprinse între 20-29 ani au raportat 50 de ore sau mai mult de timp suplimentar petrecut la locul de muncă, adică cu cel puțin 25% mai mare decât norma legală (Centrul de Sociologie Urbană și Regională, 2014). 5) CE DOREȘTE GENERAȚIA Y: Cele mai importante trei provocări pentru generația Y sunt: a) să găsesc timp pentru mine (76%), b) să dorm suficient (67%), c) să îmi gestionez viața personală și cea profesională (67%) (Ernst & Young, 2015 ).

De ce ar trebui să ne intereseze aceste date și macro-indicatori? Suntem inundați de studii care trasează caracteristicile unor generații întregi și pune toți oamenii în aceeași oală în funcție de un singur criteriu: vârsta. De fapt, cu

50

Echilibrul viață-muncă și generațiile pieței muncii. toții observăm că lucrurile se schimbă rapid, auzim des pe stradă replici care încep cu ”Generația asta cu tehnologia...” și vedem cum anumite categorii de vârstă au unele trăsături distincte. Unii dintre noi, speriați de generalizările pripite din trecut, decidem să luăm fiecare om ca atare, ca un individ de sine stătător, cu caracteristici proprii. E de înțeles cât de dificil este pentru angajatori și pentru angajați să ia decizii profesionale în funcție de CV-ul unei generații. Dacă ne mutăm înapoi atenția spre mediul business, vom observa că procesul decizional în cadrul unei companii se ia în majoritatea cazurilor pe baza numerelor și a procentelor, a performanței, a gradului de satisfacție al clienților sau pe cifre care ne arată fluctuația de personal. Adică tot statistică, date și macro- indicatori. Soluțiile de analiză predictivă din cadrul forței de muncă i-a ajutat și îi ajută pe angajatori să descopere anumite tipare de acțiune ale angajaților, ale mediului, ale pieței, oferindu-le bucățile lipsă din puzzle-ul procesului decizional. Îi ajută și pe angajați pentru că le arată cum să fie cu un ochi la trecut și cu unul la viitor, întocmai ca un Zeu Ianus și cele două fețe ale sale. Este deci important să fim atenți la prognoză și la indicatorii macro ai unei generații pentru a nu fi luați prin surprindere. Nici ca angajator și nici ca angajat.

Cu echilibru despre... echilibrul viațămuncă Concret, cum le putem împăca pe toate? Le luăm pe rând! • Există o serie de intervenții de pompier atunci când simțim că s-a produs o ruptură și că trebuie să purtăm o discuție sinceră cu noi despre echilibrul viațămuncă. Primul ar fi să aplicăm conceptul de ”tech free time” când suntem cu prietenii sau familia. News-feed-ul poate să aștepte, conversația din lumea reală nu. Apoi o povață de bun simț pe care o știu mai bine bunicii noștri: când obosim - luăm o pauză. E recomandat cam la 4-5 luni să ne organizăm un context de recreere. • Când ne căutăm un loc de muncă să avem în vedere companiile cu orar flexibil. Sunt momente când această opțiune le va depăși rapid și fără de tăgadă pe toate celelalte cum ar fi salariul, proximitatea față de casă, prestigiul companiei. • Ne programăm timp pentru hobbyuri și activități personale. • Ținem pasul cu evoluțiile din jurul nostru pentru a fi mereu înarmați cu

nr. 44/februarie 2016 | www.todaysoftmag.ro

competențe de actualitate. • Purtăm o discuție sinceră cu noi înșine despre triada slujbă-carierăvocație (chemare) pentru a vedea ce semnificație acordăm muncii și dimensiunilor persoanei în funcție de stadiile vieții. • Cum fiecare dintre noi își controlează echilibrul viață-muncă, este nedrept să așteptăm acest lucru de la guvern sau de la compania pentru care lucrăm. Suntem responsabili de limitele pe care le vrem în viața noastră. • Echilibrul se schimbă în funcție de momentele vieții. Anumite decizii de job sau de carieră sunt fundamental incompatibile cu a fi semnificativ și cu sens implicat în viața ta personală, fie că e vorba de a-ți întemeia o familie, a călători, a te angaja în unele proiecte din zona de vocație ș.a. La final, un exercițiu de imaginație: gândindu-ne la luna februarie a anului 2030, oare cum va arăta o zi obișnuită din viața fiecăruia dintre noi? ”Mă trezesc dimineață, apoi...

Surse: 1. 2.

3.

4.

5.

6.

7.

8.

Clarificare: Gen Y (18 — 33 ani); Gen X (34 — 49 ani); Baby Boomers (50 — 68 ani). Clark, S.C (2000), Work-family border theory: a new theory of work/family balance, Human Relations, nr. 53:747–770. Clarke, M.C., Koch, L.C, Hill, E.J., (2004) The work-family interface: differentiating balance and fit, în Family and Consumer Sciences Research Journal, nr. 33:121–140 Ernst&Young, (2015) Work-life challenges across generations. Millennials and parents hit hardest Eurostudent, (2015) Social and Economic Conditions of Student Life in Europe 2012-2015. România – raport național. (Datele au fost comparate cu cele Eurostat, iar diferențele au fost nesemnificative procentual) Grș;zywacz J.G., Carlson D.S., (2007) Conceptualizing work–family balance: Implications for practice and research în Advances in Developing Human Resources. nr. 9:455–71. Rantanen,J., Kinnunen, U., Mauno, S,. & Tillemann, K. (2011), Creating balance? International perspectives on the work-life integration of professionals, pp. 27-47. Centrul de Sociologie Urbană și Regională – CURS pentru Friedrich-Ebert-Stiftung România (FES) (2014), Tineri în România: griji, aspirații, atitudini și stil de viață, pp.65-89.


diverse

Gogu și sofismele

G Simona Bonghez simona.bonghez @colorsinprojects.ro Speaker, trainer și consultant @Owner of Colors in Projects

ogule, vii deseară la sală? se iți de după display fața de neaoș ardelean a lui Mișu. - Nope, mă duc la crâșmă. Ăăă... la bar, dacă vrei să sune mai bine, se corectă Gogu rapid. - No, păi nu ne fu vorba să facem mișcare, să ne întărim mușchii, să devenim... cum i-o zis ăla cu abonamentul?! se scărpină Mișu la ceafă, după care se lumină: Fit! Așa i-o zis. Deci, ne „fit”-uim diseară? - Eu mă „fit”-uiesc la crâș... bar. Ochii lui Mișu se rotunjiseră a întrebare, așa că Gogu catadicsi să-l lămurească: - Am citit eu despre o cercetare care zice că un pahar de vin roșu face chiar mai bine decât o sesiune de exerciții la sală. Întărește inima și mușchii, îmbunătățește performanțele exact ca și cum ai fi lucrat la aparate. - Aha, or fi zis iar niște unii pe feisbuc despre cercetători britanici și tu repede te faci mangă, că face bine la sănătate. - Canadieni. Replica îl zăpăci pe Mișu, care rămăsese blocat. Gogu explică: - Cercetătorii. Sunt canadieni, nu britanici. De la Universitatea Alberta din Canada. Și nu mă fac mangă. - Nu, te faci pleaznă, soarele și pămătufu’ ăstora de n-au ce cerceta la universitățile lor. Da’ despre sport, mișcare, exerciții și influența lor benefică n-ai fi citit! Că găsim numa’ informațiile alea de ne convin. Or știi tu cum se numește asta, Gogule? Sofism, mă, sofism îi zice. De data asta, Gogu era cel blocat. Mișu savură câteva clipe victoria, apoi cu zâmbetul larg lățit peste față, se legănă puțin pe picioare și se întoarse ușor să vadă dacă mai sunt și alții martori la reducerea lui Gogu la tăcere. Nimeni nu părea că bagă de seamă discuția celor doi, așa că renunță să se mai umfle în pene și reveni la Gogu: - Adică, nu știi tu ce îi un sofism?! - Raționament aparent corect, dar fals în realitate, spuse dintr-o răsuflare Gogu care între timp își revenise. Ia te-te, cine știe cuvinte șmechere. Ia explică tu, de ce e fals raționamentul meu când el se bazează clar, pe o cercetare a unei universități. Or tu zici că ăia-s proști?! - No, că n-am zis io că-s proști, dădu Mișu înapoi, lungind cuvintele ca și când ar fi vrut să câștige timp suplimentar de gândire. - Atunci eu sunt prost?! Mișu se înroși la față, încurcat de întorsătura neașteptată a discuției, dar pe Gogu îl pufni râsul. www.todaysoftmag.ro | nr. 44/februarie, 2016

51


diverse Gogu și sofismele - Hai, măi Gogule... Uite ce-am vrut să zic: tindem să ne alegem dintre informațiile puse la dispoziție pe acelea care ne convin mai mult, care ne confirmă părerile inițiale sau care, câteodată, explică deciziile pe care le-am luat deja. Nu o facem conștient, nu falsificăm, ci pur și simplu tindem să confirmăm ceea ce știm sau bănuim. Sau ce ne convine mai mult, cum e cazul tău acum. De ce să cauți tu mai multe informații, când acelea ar putea să te convingă să depui ceva efort la sală și să gâfâi cum ai făcut data trecută, mai bine te oprești la studiul cela al cercetătorilor britanici... - Canadieni. - Să fie sănătoși acasă la ei! Și cum ziceam, mai bine te oprești la ăștia care te lasă să mergi liniștit la o băută. Gogu trase lung aer în piept, lăsă să iasă tot aerul ca și cum ar fi oftat prelung și se uită în ochii lui Mișu zâmbind complice: - Ai chef să vii cu mine deseară să dezbatem sofismele astea la un pahar de vin? Face bine la sănătate și ne exersăm și mușchii creierului. *** După două ore de dezbătut sofisme și impactul lor asupra deciziilor din proiecte, plus două sticle de vin – care, după calculele lui Gogu făceau cam cât 20 de km de alergare ușoară – cei doi se deciseră să plece acasă. O oarecare influență asupra deciziei de a pleca avusese și soția lui Gogu. Ei, nu asupra lui Gogu, nu. Asupra lui Mișu: „Zău, Mișule, aveam mare încredere în tine, e posibil să plecați cu gândul la făcut mișcare și în loc de asta să vă înfundați într-o cârciumă la băut?! Păi așa încredere să am eu în tine?!” Mai rămăsese un rest de vin în sticlă, așa că Gogu îl întrebă pe Mișu: - Mai e puțin, vrei? Cum Mișu refuză, își turnă el în pahar: - Nu prea mai am chef, dar decât să irosim bunătate de vin... Lui Mișu i se aprinseră luminițele în priviri, de ziceai că-i girofar: - Uite, Gogule, alt exemplu de sofism: am dat banii pe vin, așa-i? - Da, am dat. Eu. Că tu te-ai fofilat... - Și am băut amândoi cât ne-a făcut plăcere. Gogu dădu din cap. - Și restul ăla nu ne mai trebuie, continuă Mișu. Gogu aprobă în liniște. - Păi și-atunci, concluzionă Mișu victorios, de ce mai bem restul ăla? Îți spun eu de ce: e vorba de „costuri nerecuperabile” sau cum zice englezul „sunk cost”. Eroarea de judecată e următoarea: decizia noastră de a continua un proiect sau o inițiativă este afectată de banii deja cheltuiți, de efortul deja înglobat sau, câteodată, de nivelul de implicare emoțională. Dacă ne oprim, investiția deja făcută pare să se piardă, și-atunci de multe ori continuăm, chiar dacă asta va duce în mod evident la pierderi suplimentare. Pricepi? N-avem puterea de a ne opri, pentru că ar însemna să acceptăm pierderea. - Adică ne cer ăștia bani în plus? - Hai, măi Gogule, că nu poate avea omul o discuție logică cu tine! Pe lângă banii pe care i-ai dat pe vin, care reprezintă investiția inițială, tu acum investești și starea ta de bine, că o să ți se facă rău de la restul ăla de vin. Până acum ai „investit” pe baza unor decizii corecte, dar acum decizia ta este afectată de investiția deja făcută, dovadă că ai zis „decât să irosim...”. - Bine măi, psihologie ambulantă, hai acasă, că m-ai zăpăcit. Să sperăm că nevastă-mea o să considere că a investit suficient în căsnicia asta a noastră și nu îi vine vreo idee creață...

52

nr. 44/februarie, 2016| www.todaysoftmag.ro


Testează-ți abilitățile

programez.ro

În curând


sponsori

powered by


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.