Issue 44 - February 2016 - Today Software Magazine

Page 1

No. 2015 ••www.todaysoftmag.ro ••www.todaysoftmag.com 44••June February • www.todaysoftmag.ro • www.todaysoftmag.com No.36 36 June 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

ware Chaos, memes and soft design patterns

The Testing Map

Harmony in Cross-Browser Testing Adopting a DevOps Culture Creating a Microsoft Band Tile to push build status notifications Collaboration done easy with TFS (II)

Composer and Packagist – PHP’s Superstars Calculation of salary in 2016 Work-life balance and workforce generations. Gogu and the sophisms



7 Smart solutions for smart cities Cristina Juc & Cristina Tare

8 Harmony in Cross-Browser Testing Roxana Soporan

10 The Testing Map Claudiu Draghia

12 Creating a Microsoft Band Tile to push build status notifications Radu Vunvulea

15 Adopting a DevOps Culture Claudiu Demian

17 Chaos, memes and software design patterns Ariel Pontes

20 Collaboration done easy with TFS (II) Dorin Cazan

23 Composer and Packagist – PHP’s Superstars Radu Murzea și Cătălin Criste

26 Calculation of salary in 2016 Delia Mircea

28 Work-life balance and workforce generations. Florentina Șipețean

31 Psychological safety and team cohesion Ștefania Duica

33 Gogu and the sophisms Simona Bonghez


editorial

Ovidiu Măţan

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

Four years ago, in the month of February, we launched Today Software Magazine, together with a group of friends. Today, we are pleased to have become a reference in the domain, with over 700 articles available in Romanian and English and almost 400 different authors. We hereby thank our collaborators, our readers for the increased interest and the companies which support this project: Gemini Solutions, ISDC, 3Pillar Global, Endava, Fortech, Accesa, Betfair, Yardi, Accenture, Telenav, Mozaic Works, VE Interactive, Siemens, Colors in projects. We promise you to keep up the good work and continue to invest the same passion! The passion you need to have or don’t need to have if you are a programmer represented an interesting topic of discussion in the release event of January. Inevitably, we ended up taking sides for or against one point of view, but we also got some balanced perspectives. Being a programmer just to ensure reasonable incomes and not necessarily out of passion is a way to relate to a profession which many people think justified in a society in permanent crises, such as ours. My point of view is in favor of passion. I do believe the income is an important factor, but it should not define a way of personal development. As arguments to support my point of view, there are different articles on motivational topics published in TSM. With no passion for programming, without the joy of discovering solutions to problems or that of applying the latest technologies, it is hard to continue in a very competitive environment. Personally, after a few years of activity that focused mostly on management and entrepreneurship, I had the opportunity of coming back to programming. It is a pleasure that one can hardly compare to any other activity, and the satisfaction is equal. I therefore advise you to do what you like doing and ask yourselves at the end of the day if that is what you truly enjoy. The main theme of this issue is testing, as revealed in the series of articles dedicated to it: Harmony in Cross-Browser Testing, The testing of web services using SOAP UI, The Testing Map and Challenges in Dev/Test/DevOps scenarios and how Microsoft Azure can help us. We continue with Chaos, memes and software design patterns, an interesting article on Memetics, a science on the propagation of ideas and their influence on us. Using machine learning to improve business shows the possible positive impact of using big data technologies in business analysis. Next, there is an assessment of the present CRMs (Customer Relationship Management): From business to implementation. How do we choose the CRM? Creating a Microsoft Band Tile to push the build state notifications presents a solution of notifying the software development team on the fact that an integration test has failed, directly on the Microsoft Band 2 device. We round this issue up with two articles from the accountancy area, a domain which seems to enjoy a high interest from the readers: How to calculate the salary in 2016 and What does the Romanian state prepare for the IT&C area? We end this issue with a new appearance of the comic character who brings new interesting information from the area of project management: Gogu! Enjoy your reading !!!

Ovidiu Măţan

Founder Today Software Magazine

4

nr. 44/2016, www.todaysoftmag.com


Editorial Staf Editor-in-chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com Copyright/Proofreader: Emilia Toma emilia.toma@todaysoftmag.com Translator: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Accountant : Delia Mircea delia.mircea@todaysoftmag.com Junior developer: Alexandru Diniș alexandru.dinis@todaysoftmag.com Marketing and Desktop publisher: Ana-Maria Bivol anamaria.bivol@todaysoftmag.com Printed by Daisler Print House Made by

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

Authors list Delia Mircea delia@contzilla.ro

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

@Contzilla.ro

Florentina Șipețean florentina@happy-employees.com

Ariel Pontes ariel.pontes@3pillarglobal.com

Consulting Manager @Azimut Happy Employees

Python Developer @3 Pillar Global

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

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

Cristina Tare cristinatare@gmail.com

Dorin Cazan dorin.cazan@siemens.com

Organizatoare @ Startup Weekend Cluj

Service specialist @Siemens

Roxana Soporan Roxana.Soporan@isdc.eu

Radu Murzea rmurzea@pentalog.fr

Tester @ ISDC

PHP Developer @Pentalog

Claudiu Draghia claudiu.draghia @capgemini.com Quality Manager @Capgemini Simona Bonghez simona.bonghez@confucius.ro Speaker, trainer și consultant @Owner of Colors in Projects

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

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

ISSN 2285 – 3502 ISSN-L 2284 – 8207

Copyright Today Software Magazine Any reproduction or total or partial reproduction of these trademarks or logos, alone or integrated with other elements without the express permission of the publisher is prohibited and engage the responsibility of the user as defined by Intellectual Property Code www.todaysoftmag.ro www.todaysoftmag.com

www.todaysoftmag.com | nr. 44/february ,2016

5


startups

Startups

Room planner

beta.programez.ro

A solution for planning the 3D space, very useful from the perspective of arranging the objects in the house. Easy to use, it gives the user the opportunity to test, in a few minutes, the way in which his apartment or house will be decorated and effectively walk through it. All these, without having to install complex applications and also free. This product was built by Arxia and launched as public beta this month.

Programez.ro is a solution that offers the user the possibility of testing his knowledge online, without necessarily applying for a job. By solving these tests, the person involved can assess his skills level and build a certified professional profile. Moreover, programez.ro gives companies the opportunity to make their selection process more efficient, by saving them the time they would have usually spent on carrying out interviews. Programez.ro is a project of Today Software Magazine.

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

Link: beta.programez.ro

DeviceHub.net

Rocketbook Wave

DeviceHub.net is a cloud service which helps users to get data from the IoT devices connected to the internet. By processing the data received from the sensors, you can get notifications, the automation of processes in domains such as: agriculture, transportation, smart cities, smart homes, health and many others. There are libraries for the integration with the REST API in Phyton, C++ and PHP.

Rocketbook is a combination of a notebook and special pen, plus a cloud service of communication with the main document applications such as Google Drive, Evernote or OneNote. The user draws sketches that are automatically published in the specific applications of the user and, according to the drawn symbols added, one can take different actions. Once filled up, the notebook can be cleared by introducing it in the microwave.

Link: devicehub.net

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

6

nr. 44/february, 2016 | www.todaysoftmag.com


events

events TODAY SOFTWARE MAGAZINE

Smart solutions for smart cities

W

e live in a world where technology is growing and expanding its areas of use every single day. It’s amazing how we are able to find new ways of using mobile apps to help us in our everyday life. Do you remember The Jetsons, that futuristic utopia with flying cars, aliens, holograms and button powered homes and electronics? What was only a dream back in the ‘60s, is turning into reality these days. The Internet of Things has changed a lot of that we know about human lives. We have smart cars that are opened and powered with a single click on an apps button. Smart beacons are helping visually impaired people navigate indoor and all around cities. Not sure where to go for dinner? Search no further than your own phone. You now have a comprehensive list of (almost) all the restaurants around you and the meals they serve, at just an arm’s length. You think this is smart? We think this is only the beginning of it. Since there are so many areas left to explore in this field, Startup Weekend Cluj is having a special Smart Cities edition this spring. If you want to change the way we live and interact with each other, this is the place for you. Help make people’s lives easier, solve problems and develop smart solutions for smart cities and their inhabitants. Whether you have an idea to make your home smarter, a new way of improving healthcare, an accessible approach to increase economic development, they will all find their safe place for evolving as an intelligent solution at Startup Weekend Cluj 2016 - Smart Cities edition.

During the previous Startup Weekend Cluj editions 450+ people came to work on their dreams, 139 ideas were pitched, 57 working teams were mentored by 50+ engaging and inspirational mentors, and more than 70 media and communities partners have joined us to help spread the good vibe. Be sure to stay in touch for special announcements and to be the first one to greet our wonderful mentors and speakers. The 5th Startup Weekend Cluj - Smart Cities edition will take place between April 8-10, 2016, at SpheriK Accelerator, 21 Gării Street, Cluj-Napoca. We provide you with a context, resources, awesome mentors, and the opportunity to meet new and exciting people, eager to learn and to make a change for the better. You bring your creativity, energy and engaging personality to find smart solutions that will make our cities smarter.

For more details, news and updates visit our facebook page: www.facebook. com/StartupWeekendCluj, or follow us on Twitter: @SWCluj and #SWCluj. And for any questions or suggestions, you can always e-mail us to cluj@startupweekend. Imagine if one day every question org. would be answered, and every problem would be just a memory in the past. This is really up to us to create. Sky’s the limit for what can be done. Actually, sky is no longer the limit. Neither is your imagination, because when you bring it into a team, its potential increases exponentially. Think about parks and leisure, streets and buildings, transportation, sport, health, culture and education, and so many more fields for you to bring your experience and contribution to.

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

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

www.todaysoftmag.com | nr. 44/february, 2016

7


testing

testare

Harmony in 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 browser-e (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

8

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

Testarea pe o multitudine de devices, versiuni diferite de browser-e 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

nr. 44/february, 2016 | www.todaysoftmag.com

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.


testare

TODAY SOFTWARE MAGAZINE

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 browser-e reale, rulând pe desktop şi mobile. Dezavantajul este faptul că este sub forma unui subscription.

• 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 browser-e, dar şi între platforme (sisteme de operare); • accesul se face extrem de rapid, se pot salva în browser maşinile şi browser-ele pe care le accesaţi cel mai des; • experienţă native ; • 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; • Debugging: developer tools este pre-instalat (Firebug, Yslow, Microsoft Script debugger etc.);

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 şase 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

www.todaysoftmag.com | nr. 44/february 2016

9


programare

testing

The Testing Map

I

’ve spent the past ten years of my life in the IT industry, living and breathing for quality software testing. I started out as a tester and even though I’ve spent my last few years as a Quality Manager, I’m still a tester at heart. In all my experience, I’ve always encountered one phenomenon that stands out from the rest.

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

This is the tester’s plight, wherein managers will often believe that literally anyone can test applications, their confusion whenever bugs still happen in a productive environment, even after months of extensive testing in a sandbox and the overall state of a demanding but yet unrecognized profession. More often than not, this leads to testers feeling unappreciated, despite their hard work, and the manager’s propensity towards superficiality with regards to quality assurance. I feel like this dilemma stems from a lack of knowledge, a lack that has been plaguing the IT industry ever since quality assurance became a thing.

“What’s the point of testing if we still end up with bugs in production?” I felt like I needed to do something about it, so I began to draw. I had to put my thoughts, my experiences, my knowledge of software testing on paper because I wanted other people to see what I see. I worked whenever I had some spare time and, after a few months, I managed to put something together. The first attempt was

10

nr. 44/2016, www.todaysoftmag.com

clumsy and, to put it nicely, ugly as hell to say the truth. As soon as the first draft was ready, I started looking at my drawing like a map. A map that unlocked meaning, a map connecting dots that represent the main areas of software testing. It took some tailoring and polishing but, after a few more weeks, I finally had something to show to the world. I bought a domain and uploaded the map in digital form. You can visit it at http://thetestingmap.org/.

“The map had grown so much in scope and content but it was still a drop of water in an ocean. As such, my ambition grew.” I began looking for more info on the web. As difficult as it might sound (and it was), I managed to find a great deal of relevant articles beneath the heavy pile of spam and advertisements. I made my own Google custom search engine that performed search queries only within software testing websites. As the map continued to grow in size I discovered an amazing community of testers that shared my enthusiasm and passion for this job. I found loads of websites and blogs,


TODAY SOFTWARE MAGAZINE authored by testers which were willing to share their knowledge for free. There was so much useful information that I began to link it to map areas. I was on a reading frenzy, reading about 50 articles per week, for several months, just to see if the subject of the blog post could be included on the map. Eventually, I was forced to build a new webpage where I could read the articles then include them in The Testing Map. You can find the page at http://softwaretestingblogs.thetestingmap.org/. Now let’s go through the main areas of the map together. Processes and activities. We need rules and regulations but, on the other hand, as Barry Schwartz puts it: rules will not be able to guide people through complex or unclear situations. Real world problems are often ambiguous or ill defined and the context is always changing. Finding a balance is the key to having a good process. Methodology. Testers should know which tests they should run and the techniques at their disposal, and when to adapt them. Usage of Methodology. Sometimes methodology doesn’t cover it all. There might be corner cases and, as such, this area is still under construction. But I have begun creating some testing exercises that, I believe, will help testers a lot. Testing Principles. Without principles, we have no guidance. Truth is, no one agrees on which testing principles come first. It’s a an open discussion so pick your favorite.

Support Activities. Testing is a living Ultimately, you could try showing it to and evolving part of the development the people that believe software testing can lifecycle. It’s not the salt that you sprinkle be done by anyone, and get their opinion over your omlette after you’ve removed it on it. from the frying pan but more like the conSo, how would you use it? tinuous stirring and attention you give it throughout the cooking process. Tools. The pain and gain of each profession. A good painter is one that knows how to adapt the brushes at his disposal to the painting’s requirements. Technology. We believe that a foundation of technical skills is needed. The best drivers are often good mechanics as well because they understand how a car works and what it takes for the car to perform. Soft Skills. Testing, more often than not, takes place within a context, a context that involves people. Thus, testers need to know how to work with people. Learning Resources. There is no holy Bible on testing, no manual, no testing college. Resources are still scattered and, as such, testers need to always be on the lookout for new information. Social. Testing is a new craft. A lot of the knowledge is shared through social events (like meet-ups). The most famous local meetup is the Testing Camp1. History. Joris Meerts, with additional contributions from Dorothy Graham have put together a wonderful history about testing. So what is the map good for? Well, firstly, you could use it as guidance for your quest to become an uber tester. Or you could have a quick chat wherein the participants choose a topic and talk about it for five minutes. 1 http://tabaradetestare.ro

www.todaysoftmag.com | nr. 44/february 2016

11


programming

Creating a Microsoft Band Tile to push build status notifications

L

ast year Microsoft had launched Microsoft Band 2. From the hardware configuration, it’s very powerful with a lot of sensors and a battery autonomy that offers me two days of power.

Overview

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

But, the thing that impress me is the software part and how easily you can develop a tile (a custom app) for it. You don’t need to learn C#, you can create a tile easily directly from browser. Yes, you heard me, from a browser.1

This will allow you to get content from the fat web and push it to your tile. In this way you can easily integrate your application with the band - fast and easy Another great thing is how you deploy and share tiles. You don’t need to push to the store, validate it and so on. No, you are free to share the tile with anybody. Just 1 https://developer.microsoftband.com/WebTile

12

nr. 44/2016, www.todaysoftmag.com

upload it to a specific location and share the URL with your friends via email or web. The phone can detect automatically the tile and open it using Microsoft Band application.

Information is the power For consumers, the most important thing is the content that you display in the tile. Try to focus on the content that you want to display. You need to identify the content that can improve the life of the band owner. Because the number of tiles that you can install on the band is limited, you should keep in mind that the consumer will keep only the most important tiles that bring on his device information that he really needs. Otherwise, your tile will be just another tile, that nobody use or keep more than 5 minutes. Any developer can create a tile and push content to Microsoft Band, in only 2 or 3 minutes. But only great ideas and useful content will end up on consumers devices.


TODAY SOFTWARE MAGAZINE Our team

Push Notifications

Each developer from the team that I’m part of received last year a Microsoft Band 2. We started to make jokes, that we increased the number of Microsoft Bands in Cluj-Napoca with 800-1000%. The team is not so big, but in that moment in time in Cluj-Napoca I knew only a person with a band.

Now, we need to find a way we can push the build status change from CI server to our web application. This is a little trickier and, please, ignore any kind of security issues that will be only mentioned, but not covered. For Visual Studio Team Services, the problem can be solved easily. Because the CI is public available we need to store in our web app a valid username and password that can be used to query the build status for changes. But for our on-premises CI server we might have a problem. The on-premises CI server is not public available. This means that we cannot query our server to check the build status from the internet.

The IDEA I started to think about what we can do with the band, how we can improve our life. I end up with a simple solution, that I will describe end to end in the next part of the article. Push build status change notification to our band The idea is simple. We are keeping our source code on TFS Online (Visual Studio Online) and TFS 2015 on-premises. We have different builds agents on Azure and in our company private network (on-premises) that build our solution, run unit tests, extract different metrics and deploys automatically the application on different environments. The main scope is to notify as soon as possible the development team that the build is down.

Blockers and architecture overview The main scope is to push a notification to the band in the moment when build fails. The idea is simple, but we need to find a solution to be able to send the notification to the band without having to store TFS User Credentials. There is no way to store credentials on the band and query the source control server. A possible solution is to develop a phone app that would push these notifications. But, wait… we are not mobile developers and each of us has different types of phones – iPhones, Windows Phone and Android. It might work, but the development effort is too expensive. It is possible to write a cross platform mobile app., but until you push it to the store you will lose the interest and the current opportunity.

RSS Feed A more simple solution is to expose a RSS feed with build status change notifications. Each time when the build status change, new content will be available on the RSS Server. The tile that is running on the band will detect the new content and will notify the user. In this moment we resolved only a part of the problem. We

Let’s use our imagination. What is the default action that is done by a CI server when a build fails, except the color change (big smile)? The most common action is to send an email to one or more users. This is our key to be able to access a build status change notification. The CI machine will send a notification to our mail server. Normally, a Mail Server is public accessible from internet. Our RSS web app will need to store the email credentials. Even if the solution works and can be used with success, we need to keep in mind that: • Emails credentials will be stored by Web App • Confidential information (Build Status) will be public available on a web endpoint that can be used by anybody • Any person that has your tile will be able to see status change notification of your build(s) All these points need to be mitigated with the security group of your company. You should never implement such a solution without their approval.

Implementation TFS Email notification The solution is applicable for older version of TFS also. The below steps and samples are for Visual Studio Online and TFS 2015. You will need to define an alert that sends an email notification in the moment when the build quality changes. Based on your needs you can use the same account to send notifications for different builds.

Check for new emails There are different libraries that can help you to access your email server. You should decide what kind of library you want to use based on the email server type. If you are using Outlook or Exchange Server, then you might want to use EWS library. For Gmail account you might need a POP3 client and a MIME purser like OpenPOP.NET2. In the below sample, you can see how you can get a message using OpenPOP.NET library. have a web endpoint that can be used by the tile to access the RSS feed. The RSS feed channel can be used by the band to get build status change notifications.

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); 2 https://sourceforge.net/projects/hpop/

www.todaysoftmag.com | nr. 44/february 2016

13


programming The subject can be accessed in the following way ‚message.Headers.Subject’.

Expose notifications as RSS feed The next step is to expose as RSS feed the new notifications. This can be done in 10 minutes if we are using ApiController. Wait, we don’t need to implement a RSS feed and serialize the content. This is supported by ASP.NET MVC. There is even a special ActionResult that is created for this purpose RssActionResult. To the RssActionResult, we need to set the ‚Feed’ property that is of type ‚SyndicationFeed’.

Creating a Microsoft Band Tile to push build status notifications return new RssActionResult {Feed = buildFeed}; }

In the above example we are generating a RSS with build status. The BuildStatus class is a custom class where information related to a specific build is stored. This class is populated based on the emails that are send by the TFS when a build status changes.

Hosting our Web App We can host our web application as a Web App in Azure. The free tier will be enough to play around.

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\\build-entry-{0}”, bs.Id); SyndicationItem buildStatus = new SyndicationItem(bs.Title, bs.Description, new Uri(postUrl), bs.Id, bs.Date); buildStatusList. Add(buildStatus); }

buildFeed.Items = buildStatusList;

The most simple solution to publish the tile is to upload on a file sharing system like OneDrive4 and create a share link.

... the end... And we are done. Once we will access the tile link from your phone, the Microsoft Band application will open and you will be able to push the tile.

Conclusion

My web application url will be http:// rvbuilstatus.azurewebsite.com. The build status is mapped to http://rvbuilstatus. azurewebsite.com/build/rss.

Creating the Tile This is the last step that we need to do. We need to create the Microsoft Band Tile. This will be done directly from browser3. The next steps are pretty simple, you need to specify colors, icon and things like that. Once we’ve done this, we can download the tile on our local computer. 3 https://developer.microsoftband.com/WebTile

14

Publish the tile

nr. 44/february 2016 | www.todaysoftmag.com

In this post we saw an end to end solution on how we can push builds notification to our Microsoft Band without developing a phone application. From the tile perspective, creating and publishing a tile is easy. The most complex thing is to create the feed with the right information. Not because of technical problems, it is about what content to push (display). We should remember that ‚Information is the power’

4 https://onedrive.live.com


management

Adopting a DevOps Culture

D

evOps is more and more frequent in today’s IT environment and it probably represents the way we will be organizing work in our communities. The following article will talk about how the need for DevOps appeared, where it stands today, and why it is considered to be a culture, not a methodology. The final section will analyze the way in which DevOps is being implemented in a Cluj company.

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

Short History The IT domain has undergone several transformations, both on a technological and an organizational level. Whether we realize it or not, the way we organize our work in our teams has depended, mostly, on the technological advancements of the moment. The waterfall software development model as appeared, for the first time in 1956 (although the name was not yet coined). It was, probably, the first attempt to standardize this process and it comprises of the following phases: analysis and design, implementation, testing and maintenance. Technological limitations have kept this process alive for a long period of time. Software either ran on software vendor mainframes, either was statically delivered to the client (CD, floppy drives etc.). Also, well defined roles have emerged inside the companies: software developers (programmers), system administrators, database administrators, network engineers etc. However, a problem appeared: the client. Many times, he seemed to be this ambiguous, undecided entity. So ambiguous that a colleague of ours from the company wrote his Ph.D. paper on the “Ambiguity in Software Requirements�. But the most troublesome part was the indecision. This kept on generating changes in demands, which

in turn led to changes in design, implementation and so on. Given that the old waterfall strategy could no longer cope with this dynamic environment, the day was saved by the new methodology in town, Agile. The Agile methodology was actually a shorter and faster waterfall, reiterated many times, until the product was done and the client was satisfied. Of course, this comparison is an oversimplified one, the theme itself being much more complex and interesting. What is of interest to us is the fact that, within companies, task assignment has stayed the same: the programmers develop the application (as an iteration, this time) and the others focus on their systems, data bases, and networks. The pressure the online environment exerts on the teams involved in the development and maintenance of contemporary applications (which are either web apps or depend, intrinsically, on the web) determined some organizations to take an important step: they decided to take down the walls that were growing higher and higher between teams. They managed to place an admin among developers and they obtained some surprising results: fewer bugs, more deploys, less downtime, and faster comebacks in case of problems. Due to this newfound proximity between the teams,

www.todaysoftmag.com | nr. 44/february, 2016

15


management Adopting a DevOps Culture

the “movement” was named DevOps (in some organizations, the The reason for this approach is that, in their experience, rock star System Administration team bears the name of Operations). admins are not the best at team work. Companies like Etsy prefer unified, well-organized teams that can function as a whole and About DevOps that don’t depend on only one person. The need to bring Development and Operations closer geneAlthough some might consider that Etsy is a bit too fussy and rated multiple approaches within the IT organizations. oversimplifies things, the truth is that recruiting a full-stack deveMore and more companies are recruiting for DevOps posi- loper is extremely difficult; there aren’t that many people with this tions. The ideal candidate is, in most cases, a rock star admin, kind of skills on the market. For a project or a company, training skilled at system administration, application deployment, data new employees that end up working well together is far more cost bases, scripting, programming, and, if possible, a bit of manage- effective and more sustainable in the long run. ment). In other situations, the companies create a buffer team of The second approach, which is placing a new team between DevOps between the traditional developers’ team and the admin two teams that need to collaborate, may not bring the best results. team. Besides the fact that the communication environment is “broken” The “rock stars” can help a team through their experience and in two (dev – devops – ops), there is also the problem of finding knowledge, which can benefit the entire team. This is especially the right distribution of responsibilities. true if these people know how to share the knowledge. A better The model that will be presented towards the end of the artiname for this employee would be full-stack developer. cle is an example of how the teams can be brought closer together However, some companies, like Etsy, tend to avoid them in with the purpose of slowly creating a new mentality and a new favor of junior level employees that they can train themselves. way of doing things, in the DevOps spirit.

16

nr. 44/february 2016 | www.todaysoftmag.com


programming

programming

Chaos, memes and software design patterns

Y

our code is not DRY/SOLID/readable/maintainable. Your API is not “RESTful”. You’re not respecting the “tell don’t ask” principle. Your code is not well documented. “Inline comments are code-smell”. This code is not efficient. “Premature optimization is the root of all evil”.

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

You don’t need a library for this feature, you should avoid “technology lock-in”. “Don’t reinvent the wheel”. In a few decades of software development we have seen the rise and fall of countless design principles/ philosophies/patterns. Some of them seem to contradict each other at times and debates around these topics are often heated and reveal a certain level of stubbornness and quasi-tribalism on all sides. Can we find technical arguments to settle them? In this article I attempt to provide an overview of the patterns of argumentation that often emerge from such discussions and examine why it’s so hard to find decisive answers.

Typical arguments Appeal to authority Caught in an impasse, it is common to appeal to authority – Renowned developer John Doe endorses this framework/library/ principle/etc, it must be good! This is not a decisive argument, but it does have a degree of legitimacy. An experienced developer is probably trained at judging at least the more objective qualities of a technology or approach.

Appeal to community Another variant of the appeal to authority is the appeal to community, similar to appeal to the masses, but with the difference of course that its scope is restricted to the developer community and not the population overall. This is an improvement over the other argument because, even if a new trend is imperfect, everybody knows how much better it is to work using technologies with a

strong community behind it. But presuming that the popularity of a trend is always indicative of its superiority is unrealistic.

Denial of subjectivity Engineers are afraid of subjectivity, and this occasionally makes us prone to fall victim to the false-consensus effect. The truth is that software engineering is in fact a highly social activity. Programming in high level languages is, after all, a means of communicating not only with computers but with other programmers. It should be no surprise, therefore, that concepts like “readability”, which are ultimately tied to human intuition and that may change from individual to individual, often play a decisive role in determining whether a pattern is embraced or not by the industry, OOP and MVC being quite illustrative examples. Unfortunately, though much is debated in this area, very little research is actually done on the suitability of certain design patterns to universal aspects of human cognition, let alone publicized. But we’re ashamed to acknowledge that. So what do we do? We live in denial. We avoid terms like “personality”, and “intuition” and prefer pseudo-objective terms like “readability” and “maintainability”. We even start believing that statements of the sort “X is more readable than Y” say something objective about the nature of reality. That is not to say that consensus is never real. Anyone in their right mind would agree that understanding a complex web service written in a single file with millions of lines is, to say the least, a serious intellectual challenge even to the most experienced developer. But it’s important to keep in mind that even the most intuitive truths for a person may

www.todaysoftmag.com | nr. 44/february, 2016

17


programming Chaos, memes and software design patterns sometimes sound like nonsense to another.

The science of uncertainty

becomes dominant, regardless of its ability to help its host achieve their goals. Which brings us to the next topic.

Ok, so these arguments aren’t decisive, but sure there must be Chaos theory better ones. Science can always tell us what’s the best thing to do, “The fluttering of a butterfly’s wing in Rio de Janeiro, amplified right? Well, not always. by atmospheric currents, could cause a tornado in Texas two weeks later.” – Edward Lorenz Memetics In very complex systems, outcomes are highly sensitive to iniNo, I’m not talking about internet memes. Memetics is a field tial conditions. This is true both for weather and biology. Humans of knowledge concerned with how ideas spread and adapt in often pride themselves for being the most evolved animals on response to the forces of natural selection. Humans are a social earth, but we would never exist if a huge meteor hadn’t hit the species who has evolved to learn by observation and copy the earth and killed all dinosaurs, allowing small mammals to come behavior of others. This has allowed us to accumulate knowledge out of their hiding nests and thrive in a radically new environto an extent that no other species has ever dreamed of, but it also ment. If small events can make it practically unfeasible to predict made us vulnerable to cultural parasites: traditions that serve no which animal species will go extinct and which will thrive, the rational purpose but that are nonetheless copied from generation same must be true for software development memes. to generation, some times to the expense of the host. One of the greatest examples of a tool becoming dominant for all the wrong reasons can be found in the web development “Examples of memes are tunes, ideas, catch-phrases, clothes industry, with the popularity of PHP. The language is nowadays fashions, ways of making pots or of building arches. Just as genes one of the most widely hated ones according to this Hacker News propagate themselves in the gene pool by leaping from body to body poll1 and yet it is still the most widely adopted and fastest-growing via sperms or eggs, so memes propagate themselves in the meme technology based on production usage (81.7% according to w3tepool by leaping from brain to brain via a process which, in the broad chs2). It makes perfect sense, however, when you consider the low sense, can be called imitation.” - Richard Dawkins, The Selfish Gene entry barrier for new developers, that it was the first language made specifically for serving web-pages, that it’s open-source, that it got to ride the dot-com bubble, etc. In the context of weather and ecology, the science of chaos My point is that coding trends are just another example of a tries to move on from trying to establish chains of causality in meme. When Darwinism is brought up, some may think of “sur- order to predict future states of a system and instead focuses on vival of the fittest” and be tempted to conclude that memetics finding statistical patterns in large sets of data and replicating confirms that the most popular trends are in fact the best. This is them with relatively simple mathematical models. In software incorrect for a few reasons: development, however, it’s hard to imagine something analogous Being “fit” means “being the best at replicating”, and not “being being done. the best at helping its host achieve their goals”. Sometimes these coincide, sometimes not. No one species is superior to another in An experimental engineering an absolute sense. Being the best means being the most adapted to Engineering in general is not exactly a science, it rather relies a particular environment, and environments are constantly chan- on well established scientific knowledge in order to solve specific ging. In the ecology of living organisms, these changes happen problems. The body of knowledge that sustains software engiover the course of hundreds or thousands of years. In the ecology neering, however, is much less stable than the one that sustains of ideas, it may happen in years or even days. Random external 1 https://news.ycombinator.com/item?id=6527104 events may have a decisive influence on what variant of a meme 2 http://w3techs.com

Our core competencies include:

Product Strategy

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

18

nr. 44/february 2016 | www.todaysoftmag.com

Product Development

Product Support


TODAY SOFTWARE MAGAZINE civil engineering for example. The available materials, tools, and the scientific knowledge of human-scale mechanics change very slowly when compared to the fast-paced world of IT. This fertile soil for new ideas ends up creating an overly complex and unpredictable meme pool of ever-changing programming paradigms and design patterns. As engineers, however, we’re not prepared to make sense of this mess, so we must learn how to think as experimental scientists, and that requires self-skepticism. “Irrefutability is not a virtue of a theory, but a vice. Every genuine test of a theory is an attempt to falsify it.” – Karl Popper

Conclusion By asking more questions than answering them, I don’t expect to provide a recipe for winning any argument or always making the best technical decision. What I do hope is that, by shedding light on the topic, I contribute to more constructive debates in which the parties are more aware of the limitations of their discourse and the subjectivity of their experience. Debates that don’t degenerate into ego battles in the male dominated world of software development and that result in decisions that aren’t always arrogantly assumed to be the best. With this in mind, we should feel encouraged to be critical about design fads while at the same time not being ashamed of embracing them experimentally or for the sake of community convention. Finally, if none of the above, I hope I at least have provided a thought-provoking overview of a few interesting topics that are usually not covered in the software development community. “The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.” - Stephen Hawking

Bibliography • Dawkins, R. (1976). The Selfish Gene. Oxford University Press, Oxford, UK • Gleick, J. (1987). Chaos: Making a New Science. Viking Press, New York, US • Rosenberg, A. (2000). Philosophy of Science: A Contemporary Introduction. Routledge, London, UK

www.todaysoftmag.com | nr. 44/february 2016

19


programming

Collaboration done easy with TFS - for developers and non-developers alike (II)

I

would like to emphasize the following aspects of TFS, to which both developers and non-developers can relate and benefit from: web portal and Kanban, project management and version control. Some of these features require a stakeholder license, whereas others require a paid

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

license, nevertheless these are arguments As a developer one would mostly use that should be taken into account when Visual Studio to complete its work or rely you think about employing TFS in your in the Code hub in the web access portal organization. in order to view, download, and compare version-controlled files, find and view Web Portal changesets and shelvesets, set up GIT or The TFS web portal is quite a versa- develop an app in a GIT repository. tile working area which adapts to each As a non-developer one would focus user based on the hub/tab he has selected on the Work hub and all the gems hidden (home, code, work, build, test), the access beneath it: create new work items, query level he has (stakeholder, basic, advan- for work items, create a backlog, track ced), and the options configured for the progress using the using the task board used deployment. and/or the Kanban board, define team favorites (queries, burndown reports, charts, diagrams etc.) which can be seen by the whole team when accessing the Home hub.

Kanban

Fig1. VisualStudioOnline Kanban board

20

nr. 44/2016, www.todaysoftmag.com

Most of the work performed in a project needs to be organized in some sort of manner. As far as my experience goes, planning usually involves at least some sticky notes and a decent sized whiteboard and its usually structured using a Kanbanlike schedule:


TODAY SOFTWARE MAGAZINE ii. Flexible access permissions structure. The permission must be defined twice: 1. By adding a user as a member of your team he can only see the home page of the Kanban team (it usually contains the workflow charts, some team queries and diagrams) 2. Without granting access permissions for an user on your area path he won’t be able to access your work items (he won’t even have read rights).

Fig2. „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

By using Kanban you can visualize and manage your team’s workflow, set clear WIP limits in order to maintain the focus on the current open task and improve collaboration by creating opportunities for feedback, thus making identifying bottlenecks a lot easier. Kanban boards are widely available, whether we speak of the open source variants like Trello and Taiga or Kanban Tool, Jira and TFS. Kanban is becoming a process utilized by more and more development teams, as is the Kanban board. Microsoft added support for Kanban boards in TFS 2013, and continued to enhance that support for TFS 2015 as well as for the Visual Studio Online platform. I will try to show you what, in my opinion, are the highlights of the TFS Kanban: i. Easy 3-click/step setup: 1. Open the web portal in administrative mode (just add \_ admin at the end of the URL) 1 2. Select ‘New Team’ and fill in the details 3. Click on ‘Create new team’ and within seconds your team is deployed and ready for use

Fig3. Interface to create a new Kanban team

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

Fig4. Access permissions structure for area path nodes

In a best case scenario a stakeholder (a person who is not necessarily part of the project but who needs to be able to track work item progress, without needing to access source code or any administrative functionality) or a member from a different team will get member permissions and read permissions; the colleagues working in the team will be added as members of the team an receive at least read permissions. iii. The ability to specify the definition of „done” for each column – what better way to keep the WIP under control?

Project Management Using work item tracking and the Microsoft Office suite, along data collection and reporting, the project manager and the team members have the necessary tools in order to be able to monitor a project’s development. TFS has the capabilities to cover the demand as well as the Request Tracking and Problem Report sides of the development environment. It also allows the user to access and manipulate its objects (collectively referred to as “work items”) comfortably by using several products of the MS office family: they can be forwarded via MS Outlook, prepared for publication in MS Publisher and subjected to efficient mass changes in MS Excel. Additionally, with Team Foundation’s process template mechanism, you can customize the project process to your specific environment and needs. A process template consists of a set of instructions necessary for setting up a new project. These instructions include such items as work item types, project roles, permissions etc. Default process templates are installed with Team Foundation Server but these templates can be modified and extended or a new templates can be created, in order to enable projects to define the development process according to their needs. Siemens has created custom templates so that it best suites the methodology (agile/scrum) used by a certain team/project. www.todaysoftmag.com | nr. 44/february 2016

21


programming Collaboration done easy with TFS - for developers and non-developers alike (II) Version Control TF employs a standard version control mechanisms for branching, merging, version management, check-in and check-out. It also includes additional features such as shelving (the ability to store partial changes without performing a fully validated checkin) and dynamic check-in policies to address specific issues of large-scale development. That sounds nice, but how does this help non-developers? Well… consider this scenario: You are a trainer and must teach some new colleagues to work with TFS. This is usually done either during a workshop or by organizing a course which also has a hands-on part. As new versions of Visual Studio and TFS appear and functionality gets added/changed/removed, your course materials will also change. If you would maintain a copy of these documents in TFS, you could see the history of the documents and all the changes you have done throughout the years. This might not seem important now, but, as with all software developing companies, Siemens must archive the released software in order to assure that, if needed, in 5-10 years the sources can be restored and a developer can start working on a new patch or fix that is needed by one of the customers. What if in 5-10 years nobody will know how to work with VS 2010, but VS 2010 is needed to build that patch – perhaps MS has removed the workflow editor or some CPP target files are missing and these are installed with .NET 4.0 and need a VS\TFS 2010 build environment in order to be correctly integrated in the .vcxproj. Wouldn’t it be nice to have that really old training material lying somewhere in a corner or at least the project notebook? Perhaps that assumption is a bit far-fetched, but consider a support team which has to constantly update its FAQ database - if an FAQ entry gets removed and is needed at a later time the team is forced to do some digging in order to find the solution to the problem. By checking-in that file in TFS, you would have its complete history. Should you consider that the file is not needed anymore, you can ‘delete’ it at any time (please note, TFS doesn’t really delete items from version control, but instead hides them; if you want to completely delete an item, you would have to destroy it).

To sum it all up, adopting TFS in your organization can benefit a large range of colleagues, not only because of the unlimited free Stakeholder access, with which anyone on your team can track project priorities and provide direction, feature ideas, and business alignment to a team., but also because of the native extensibility capabilities of TFS. You can customize different aspects of TFS in order to extend existing features or to add new capabilities if you have special requirements in your project.

Corporate Technology Romania

22

nr. 44/february 2016 | www.todaysoftmag.com


programming

Composer and Packagist – PHP’s Superstars

P

HP has a shaky history as far as package management goes. All this was about to change in the first part of the year 2012, when the Composer and Packagist were launched. In this article, we will explore the beautiful world and history of modern package management in PHP. Radu Murzea rmurzea@pentalog.fr PHP Developer @Pentalog

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

A little history

programmers simply decided not to use this package manager at all and instead relied on what functionality their framework provided. It was especially encouraged during the PHP frameworks boom during 2004 2006. This decision resulted in an excessive coupling between the framework and the PEAR’s workflow was to include the pac- application being developed, which in turn kage manager directly in the PHP runtime made migrating to a different framework and have the user install the dependencies extremely difficult and costly. using the command-line. These dependencies were downloaded as ZIP files and they All this leads us to 2009, a year with a sigwere imported in the PHP code by the use of nificant historical meaning in the PHP world. “include” and “require” statements. Two major events happened at that time: • PHP 5.3 was launched and added good In order to improve performance, PECL solid support for namespaces. was launched in October 2003. This system • During the php|tek 2009 conference, allowed compiling PHP code into C binaries the PHP-FIG group was founded. They and then being used through PEAR as PHP launched their first standard PSR-0 at that extensions. The reasoning behind this was same time (you can find out more about that C binaries have superior performance this in a future article). compared to interpreted PHP code. Suddenly, these changes eliminated most Sharing code through PEAR and PECL drawbacks of PEAR and paved the way to the was difficult due to a lack of coding standards, modern PHP ecosystem that we know today. difficult contribution to existing projects and the tedious way in which the libraries and Among other things, the development extensions could be used. Despite all this, of the Composer and Packagist project starPEAR’s popularity grew because it was the ted; their first stable release was in March only available option. 2012. These projects were developed by Nils Adermann and Jordi Boggiano, the two conDue to its many disadvantages, most tinue to maintain them to this day. No package manager existed in the PHP world until, in 2000, Stig Bakken started the PEAR project, as a result of the conversations that took place at the PHP Developers Meeting conference in Tel-Aviv.

www.todaysoftmag.com | nr. 44/february, 2016

23


programming

Composer and Packagist – PHP’s Superstars Versioning Operators Semantic versioning 3 (major.minor. patch) is now considered a best-practice in the PHP world. Therefore, packages generally follow these guidelines. The version of a package can be specified using basic operators: • exact version (e.g. 1.2.3) • range (e.g. >=1.0 <2.0) • wildcard (e.g. 1.2.*).

How it works composer.json In order to use Composer in a project, we need to create a file called composer. json. This file will contain descriptions about what packages our projects depends on, but it can contain a lot more information. One of the most important elements in this file is the key require. Under it, we specify what packages our project depends on: „require”: { „monolog/monolog”: „1.0.*” }

A lot of times, this is all we need to specify our dependencies. For the complete list of options that can be specified in the composer.json file, you can take a look at the documentation1. In addition to external packages, we can also specify platform packages as dependencies. These are virtual packages that represent various resources installed on the host system: • php or php-64bit • the Hip-Hop Virtual Machine • PHP extensions • system libraries To see what platform packages are available on our system, we can use the composer show --platform command.

Installing packages Installing the packages is done by running the composer install command. 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

24

When this is first executed, Composer will try to figure out which version of each package to download so that all version and stability requirements are satisfied. This can be a difficult task because, in practice, many packages depend on each other and these inter-dependencies will be specified in different ways (see the chapter about version operators for more details). The way Composer solves this is through a boolean satisfaction algorithm2. Therefore, this is a problem whose complexity grows exponentially as the number of dependencies increases.

composer.lock After running the install command, we’ll notice that a new file was created: composer.lock. The purpose of this file is to store the exact versions of the packages that Composer installed by doing a “lock” of these versions (hence the file name). By doing this, all programmers who will use the project will have the exact same dependencies versions installed. The .lock file contains a hashed version of the .json file. This means that, if the .json file is changed, the next execution of composer install will point out that the 2 files are no longer in sync. Having such a file also makes installing the packages easier because composer install will skip the complex step of figuring what version to download for each package.

2 h t t p s : / / e n . w i k i p e d i a . o r g / w i k i / Boolean_satisfiability_problem

nr. 44/february 2016 | www.todaysoftmag.com

In addition to these basic operators, next release operators can also be used: • “~” is specifying the minimum version that we want to depend on and allows the last digit to be incremented indefinitely (e.g. ~1.2.3, which is equivalent to >=1.2.3 <1.3.0 ) • “^” is specifying the maximum major version that we want to depend on (e.g. ^1.2.3, which is equivalent to >=1.2.3 <2.0.0). Because of its behavior, this operator is optimally used on packages that strictly respect the rules of semantic versioning.

Package stability Composer allows installing packages with various levels of stability. The possible stability levels, in increasing order, are: dev, alpha, beta, RC and stable. This level can be specified in 2 not mutually exclusive ways: • as the value of the minimum-stability root-key in composer.json. In this case, the packages versions that are below our specified level will be ignored. It’s notable that minimum-stability values specified in our dependencies’ composer.json files will always be ignored. • through stability flags for each individual package (e.g. 1.0.*@dev, ~2.2.0@ beta etc.)

Autoloading In the chapter about the history of package management, we saw how the full and correct support for namespaces added in PHP 5.3 was the spark that allowed the birth of a truly useful package manager. Namespaces are, among other things, the correct way to integrate 3rd-party code in our own application, eliminating the need to use the include and require statements. Composer will build a namespace autoload for our project and our dependencies based on the information specified 3 http://semver.org/


TODAY SOFTWARE MAGAZINE in composer.json under the autoloading root-key. This information can be specified in 3 different ways: PSR-0 definitions, PSR-4 definitions and mapping between a namespace and a file. These 3 possibilities can be added in any combination one chooses.

Package sources Packagist

Commands Until now, we met some of Composer’s features through the commands install and show. However, Composer has a variety of other commands. In short, commands help us easily perform a variety of the most frequently needed operations in the context of a package manager. This could include starting a new project, adding/deleting packages, checking dependencies between packages, re-generating autoload information, changing Composer settings and many more. We will let you check the documentation 4 to see a very detailed description.

Packagist is the main and default repository which contains all the available packages that can be installed. These are usually added there and maintained by their authors. Packagist requires that the source of a package be a Git repository, which of course must be public. Because In the end... of this, the source usually ends up being Composer, together with Packagist, is the package’s GitHub page, but this is not a modern and solid package manager. It mandatory. includes a lot of needed features, without sacrificing simplicity and easy learning Satis curve. Satis is a simpler incarnation of Packagist, it can be installed in a private Composer was the spark needed by system. There are two main benefits for PHP in order to adopt many modern using Satis as package repository: software development practices. It’s by • Satis involves using the intranet for far one of the most important projects in downloading packages, which is almost PHP’s ecosystem. always faster and has lower latency. • A lot of companies build packages that are intended only for internal use. A 4 https://getcomposer.org/doc/03-cli.md Satis system is the perfect solution when one does not want to publish a package on Packagist

www.todaysoftmag.com | nr. 44/february 2016

25


programming

management

Calculation of salary in 2016

Y

ear 2016 has certainly been an important year from the point of view of legal novelties. In the domain of remuneration, too, there have been a few important modifications, which we will present below. The minimum gross salary in force from 01.01.2016 to 30.04.2016 is 1050 lei.

Delia Mircea delia@contzilla.ro @Contzilla.ro

26

nr. 44/2016, www.todaysoftmag.com

The minimum guaranteed gross salary in the country will increase, however, beginning with the 1st of May 2016, by 200 lei, to 1250 lei, according to HG no. 1017/2015 published in the Official Monitor of December 31st 2015. This is the new value for a full work schedule of 169,333 hours on an average per month in the year 2016, representing 7,382 lei/hour. Establishing the base salary below this level constitutes a breach of law and is sanctioned by fine from 1.000 lei to 2.000 lei, for each individual work agreement in which the minimum wage is established below the one mentioned above, in so far as, according to the law, the deed does not constitute a crime. The finding of the contravention and enforcement of the sanction is done by the staff of the Ministry of Work, Family, Social and Elder People’s Protection, through the territorial inspectorates of work in every county or in Bucharest, empowered, as

appropriate, by order of the minister of work, family, social and elderly people’s protection. Moreover, the basic personal deductions have changed as beginning with 01.01.2016. What is the basic personal deduction? The deduction is an amount that is subtracted from the base of calculus of the tax on salary income, in view of detaining a diminished tax on income. According to the fiscal code, the employees have the right to a deduction from the monthly net salary of an amount under the form of personal deduction, given for every month of the taxable period only for the salary income from the place where they have their main position. The personal deduction is given to the physical persons who have a monthly gross income of up to 1.500 lei, inclusively, as follows: • for the contributors who do not have anyone to support – 300 lei;


management • for the contributors who have a person to support – 400 lei; • for the contributors who have two people to support – 500 lei; • for the contributors who have three people to support – 600 lei; • for the contributors who have four or more people to support – 800 lei. For the contributors who earn monthly gross incomes from salaries between 1.501 lei and 3.000 lei, inclusively, personal deductions are digressive from the ones above and are determined through a formula published in the Order no. 52/2016 regarding the adoption of the calculation for determining the monthly personal deductions for the contributors who make income from salaries in the main position, beginning with the month of January 2016, according to the provisions of article 77, paragraph (2) and article 66 of Law no. 227/2015 regarding the Fiscal Code, published in the Official Monitor in 25.01.2016. For the contributors who make monthly gross incomes from salaries of over 3.000 lei, there is no personal deduction. These provisions are not applied to employees who are exempt from taxes due to belonging to the criteria of exemption for the activities carried out in the area of software programs development. A legal novelty of the year 2016 is the fact that the personal deduction is given to both parents for the under-aged children in their support. Until January the 2st 2016, only one of the parents could benefit from personal deduction for the child in support (according to their option). As of 2016, the person in support can be: • the husband or wife • children or • other members of the family, relatives of the contributor or of his husband/ wife up to the second degree, whose incomes, subjected to taxation or not, do not exceed 300 lei/ month (previously, 250lei), with the exception of the incomes stipulated in article 62 letter o), w) and x) and/or of the heir pensions according to the law, as well as those of social services awarded according to art. 58 of Law no. 448/2006 regarding the protection and promotion of rights of the disabled people, re-published with the subsequent modifications and amendments. The under-aged children of the

TODAY SOFTWARE MAGAZINE contributors, who are younger than 18 years old, are considered supported. For the under-aged child from previous marriages, the right to personal deduction belongs to the parent to whom the child has been trusted and to one of the spouses who form the new family. In the situation where in a family there are more children in support, with the exception of the under-aged children, they will be given to one of the parents to support, according to an agreement between the parties. In these situations, the contributors will give to the payer of income either a declaration from the husband/ wife, either a certificate issued by his/ her payer of income from salaries, which states the number and identity of the children in support of each spouse. The under-aged child between 16 and 18 years old, employed under Law no. 53/2003 – Work Code, re-published with the subsequent modifications and amendments, becomes a contributor and benefits from personal deduction, situation in which, for that period, the parents no longer benefit from personal deduction. In regard to the contribution rate, there are no modifications for the year 2016. Thus, the contribution rates in force for 2016 are the following: Contributions of the employee: CAS: 10.50% CASS: 5.50% Unemployment: 0.50% Tax: 16.00%

Contributions of the employer: CAS 15.80% = 166 CASS 5.20% = 55 Unemployment 0.50% = 5 Holydays and indemnities 0.85% = 9 Risk fund 0.15% =2 Secured debts 0.25% =3 Total taxes for the employer = 240 2. Employee with a minimum salary of 1.250 lei, with no people in support. Contributions of the employee: CAS 10.50% = 131 CASS 5.50% = 69 Unemployment 0.50% = 6 Personal deduction = 300 Tax 16% = 119 Total taxes for the employee = 325 Net salary = 925 Contributions of the employer: CAS 15.80% = 198 CASS 5.20% = 65 Unemployment 0.50% = 6 Holydays and indemnities 0.85% = 11 Risk fund 0.15% =2 Secured debts 0.25% =3 Total taxes for the employer = 285

Contributions of the employer: CAS: 15.80% CASS: 5.20% Unemployment: 0,50% Fnuass: 0,85% Risk and accidents – according to the CAEN code Secured debts: 0,25% Here is an example of calculation of salary, in two versions: 1. Employee with the minimum salary of 1.050 lei, with no people in support. Contributions of the employee: CAS 10.50% = 110 CASS 5.50% = 58 Unemployment 0.50% = 5 Personal deduction = 300 Tax 16% = 92 Total taxes for the employee = 265 Net salary = 785

www.todaysoftmag.com | nr. 44/february 2016

27


others

management

Work-life balance and workforce generations.

2

015 was the year when Generation Y (millennial) has taken a significant percentage of the labor market in most European countries. Today we are preparing intensively for the Generation Z. Because the generational workplace diversity is an actual debate, this also generates myths, exaggerations, and uncomfortable truths.

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

28

nr. 44/2016, www.todaysoftmag.com

How does Generation Y answers to the family, technological, economical or emotional challenges? How are they able to go to an everyday full-time job, to take of their own development, to pursue hobbies, to start a family, to keep in touch with parents, go out with friends, honor a coffee invitation coming from a friend in need, acquire new skills, complete their studies ... the list goes on for a long time. All of these are challenges that employees around us are feeling every day - completely or not – depending on different circumstances and contexts. These instances were reunited in a concept generally said „work-life balance”. Work-life balance originally appeared near the concept of stress (Rantanen, 2011). In recent years, the discussion was moved to a more … positive direction. Work-life balance was interpreted as „the satisfaction and efficiency level of an individual both at work, and at home, with minimal role conflicts between the two” (Clark, 2000). The scientific world has reached a consensus on the fact that work-life balance affects self-esteem, job

satisfaction and overall is a sign of „good life”. But there is no agreement yet neither concerning the factors that influence it nor how to measure work-life balance (Grzywacz & Carlson, 2007). Why work-life balance is an important feature of the workforce - for employees, but also for employers? Why is this specifically important for Millennial Generation? How big data can help us in this matter?

For Generation Y, work-life balance is still a metaphor... Balance means a state of equilibrium, a stable relationship between two forces of equal magnitude and in opposite directions, but for Generation Y the personal time can`t be weighted/allocated proportionally with the professional time for reasonable and legitimate reasons. Also, the opposite. Therefore, the balance is a metaphorical one. How does this translate on a day by day program and why it is important? The estimates are saying that in the decade 2020-2030 approximately 50-75% of the labor market will be represented


management by members of Generation Y – the youth aged between 18-33 years (the forecasts varies depending on the different sources and national characteristics – even though in a globalized context the latter will matter less and less). The Millennial is seen by his parents and grandparents as a kind of “hub of the universe”, who thinks he knows everything. They think that the millennial has a bit (too) much self-confidence and that he is “intelligent, but good-for-nothing”. Maybe… But because he is not in the mood and out of time to learn about this world in fixed educational systems that constrict him, he builds a new one. A new world that affects everyone: his parents, his employers, his friends, the environment altogether. Here are five features that reveal the battle that takes place when it comes to work-life balance for each representative of the Millennial Generation: 1. Laziness or autonomy? Millennial Generation emphasizes autonomy and independence differently than the previous generations and sometimes translates this into a desire not to be stuck in a workday schedule. This desire should not be confused with laziness. When they are motivated and engaged at work, Millennial Generation is able to work 50-60 hours a week (Ernst & Young, 2015). 2. The life of youth at 25 in Romania: between education, children and the workplace - In two-thirds of the European countries 10% of students have children (BA,MA,Ph.D). The average age of students with children is about 27 years in Romania. In 2015, Romania has 45.000 students with children (out of 500.000 – the total national number of Romanian students, estimates Min. Of Education in 2015) (Eurostudent, 2015). 2 of 3 young people aged over 25 are working full time in Romania (Center for Urban and Regional Sociology, 2014). 3. When the partners are working and the bosses don`t get why: 78% of Millennial Generation members have a spouse / partner working full time. In contrast with only 47% of those in Generation X (34-49 years), who are now a majority in management positions in companies. It created what is called „the empathy gap” between older employees (with the role of breadwinner) that has a family member with a role of caregiver (or the caregiver is also a part-time breadwinner) versus younger employee who tries to do everything by himself (each partner is also breadwinning and caregiving at the same time). The Millennial Generation is not the only one who wants to achieve a balance between work and personal life, but they are among the only ones willing to leave the company when this does not happen. They are convinced that they can adapt quickly to new technologies and they have solid professional skills. 4. When it comes to work-life balance, work is usually winning: In 2014, ¼ of Romanian youth aged between 20-29 have

TODAY SOFTWARE MAGAZINE reported 50 hours or more/ per week worked overtime, therefore with at least 25% above the legal norm (Center for Urban and Regional Sociology, 2014). 5. Generation`s Y wishes: The three most important challenges for Generation Y are: a) to find time for myself (76%), b) to sleep enough (67%), c) to balance my professional life with my personal one ( 67%). (Ernst & Young, 2015 ).

Why should we care about big data and macro indicators? We are flooded with studies outlining the characteristics of a whole generation that puts all their members in the same pot according to one criterion: their age. In fact, we all see that things are changing rapidly, often we hear on the street lines beginning with „This generation with his technology ...” and we can observe how some people with the same age have distinctive features. Some of us, scared of the hasty generalizations of the past, decide to take each person as such, as a unitary self-contained individual, with its own characteristics. It’s understandable how difficult it is for employers and employees to make decisions based on the professional resume of a generation. If we reconsider the business environment, we see that decision-making within a company is taken in most cases based on numbers and percentages, group performances, customer satisfaction or figures which show turnover of staff. Actually also statistics, big data or macro indicators. Predictive analytics solutions of the workforce have helped in the past and still help employers to discover certain patterns of action for employees, of business environments, market trends, and gives them the missing pieces of the decision-making puzzle. Also helps employees showing them how to be with an eye to the past and with the other to the future, like a god Janus and its two faces. It is, therefore, important to pay attention to forecasting analyzes and macro indicators of a generation in order to not be taken by surprise. Neither as an employer, nor as an employee.

With balance about ... work-life balance How can we reconcile all? Taking them one by one! • There are a number of on-the-spot interventions when we experience an imbalance, but firstly we need to have an honest discussion with us about work-life balance. We can apply the concept of „tech free time” when we are with friends or family. News-feed can wait, conversation in the real world can`t. • Secondly, we can follow a common sense advice that our grandparents knew better: when tired - take a break. It is recommended that about 4-5 months of uninterrupted work to organize a recreational context. • When we look for a job to consider companies with flexible hours. There are times when this option will outweigh quickly

www.todaysoftmag.com | nr. 44/february 2016

29


others Work-life balance and workforce generations. and without a doubt all others such as salary, proximity to home, company’s prestige etc. • We schedule time for personal hobbies and activities. • We keep abreast of developments around us to always be armed with current skills in our career. We have a frank discussion with ourselves about the triad job-career- vocation (calling) in order to give the significance of work and the meaning of personal dimensions accordingly to life stages. • Each of us controls his/hers life-work balance, it is unfair to expect this from the government or the company we work. We are responsible for the boundaries that we want in our lives. • Work-life balance changes depending moments of life. There are moments when job decisions can be fundamentally incompatible with being involved in your own personal life: building a family, traveling, committing to a project that you`re feeling a calling etc. • Finally, an exercise in imagination: thinking of February 2030, how will an ordinary day in the life of each of us look? I woke up in the morning and then…

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

30

nr. 44/february 2016 | www.todaysoftmag.com

References: Observation: 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, no. 53:747–770. • Clarke, M.C., Koch, L.C, Hill, E.J., (2004) The workfamily interface: differentiating balance and fit, în Family and Consumer Sciences Research Journal, no. 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 – national report (The data have been compared with the ones from Eurostat, there were unsignificant differences) • Grzywacz J.G., Carlson D.S., (2007) Conceptualizing work–family balance: Implications for practice and research în Advances in Developing Human Resources. no. 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. • Center for Urban and Regional Sociology – CURS (2014) Youth in Romania: worries, aspirations, attitudes and life-style, pp.65-89.


others

TODAY SOFTWARE MAGAZINE

Psychological safety and team cohesion

T

he IT domain is a dynamical one and the development teams hold an important place in the delivery of application to different clients. Thus, the focus of attention is more and more on the role of the teams within the organization, in order to identify the different methods that can contribute to increase their efficiency. On the group there are people from many fields and in many situations they are working together only for a limited period of

time (most of the times, only for the duration of a single project). In this context, the big challenge is given by the fact that individuals with a relatively different experience, have to deliver a high level product meeting rather tight deadlines most of the times. This leads to the wide scope that the group has and the successful development of an application depends on the manner in which the individuals collaborate. The development cycle of a soft is a complex one, both from the point of view of the way in which the team members work together and individually, for each and every group. One of the great challenges they face is that of coordinating the activities for the period in which they are assigned to projects that engage a large number of people. In order for the delivery to be a success, it takes technical knowledge and abilities specific to each and every role (programmer, tester, PM, BA, DevOps, etc.), as well as creativity, ingenuity and problem solving (Cusumano, 2004). And this is where we can notice the manner in which every team operates and how it manages to increase performance in a complex context. Writings in the domain of organizational psychology highlight the difficulty faced when the individual has to work with different people, as for some it is easier to collaborate with certain personality typologies, and for others it is more difficult (Hackman, 1990). Hence derives a new challenge on the level of the organization, namely, what can be done in order for the teams to function as well as possible and for the members of the group to have high performances that might lead to the development of an application which will offer satisfaction to the client. Thus, the focus of attention is more and more centered on what collaboration means and how one can establish healthy relationships in the work environment within the group. Collaboration involves interaction

among the team members, offering support in carrying out different tasks, understanding the needs of those around, accepting the fact that there are certain facts that one does not know the answer to and other things that cannot be carried out individually. This need of collaboration steams out from the existence of some tasks that push the individual to step out of his comfort zone. Working in a collaborative manner is done, first of all, by sharing ideas and information, integrating perspectives and coordinating tasks. The focus is more and more on the team and the way in which it works, performs and to what extent learning is stimulated within the group. Thus, the teams end up ensuring a structured mechanism through which collaboration is done. In the context where the team plays a key role, it is essential to understand its defining characteristics. Hackman (1987) said that it is about the need for different individuals to work together in order to be able to reach a result that they can share. The question that arises here is related to what it is that determines people to share ideas by themselves and some of them even to contribute to a collaborative idea? There has been a lot of talk that still goes on about the impact that cohesion has in increasing the performance, the role that is played by trust between the team members and, last but not least, how we can build a climate to facilitate communication, offer feedback and encourage the team members, so that each of them contribute with his own ideas and actions to the collective work. Team cohesion is seen as a mixture of characteristics such as interpersonal attraction, the pride of belonging to the group and commitment to solve the tasks (Mullen & Copper, 1994). On the other hand, in order to create a high cohesion team, trust is essential, that is the acceptance of solidary relations. By trust, we understand that an

individual is not afraid to feel so comfortable around his colleagues that he is not afraid to be vulnerable in front of them. This vulnerability is identified the moment when the team members reach that point where they feel totally comfortable, being transparent, honest and they say and believe in statements such as: “I blew it”, “I need help” or “your idea is better than mine”. Trust leads to a series of behavioral expectancies among the individuals, allowing them to manage the risk or insecurity associated with their interactions. It is often seen as a choice and based on different sociological patterns, one can distinguish the cognitive, behavioral and emotional types of trust. Cohesion is probably the most common method through which the performance of a group is increased. Many companies are trying to bind-up the team by determining people to get closer to one another, to appreciate one another and also, to create that pride of belonging to the group. Probably, when cohesion is strong, the group is motivated to perform well and has better abilities to coordinate the activities towards a successful performance (Cartwright, 1968; Davis, 1969). However, many studies have accepted the plausibility of there being a relation between the group cohesion and group performance. Empirical observations of the relation have varied quite a lot, determining some authors to ask themselves questions related to the possibility of generalizing such results (Stegdill, 1972; Tzimer, 1982). The most powerful relation to performance seems to belong to the individuals’ commitment to carry out the tasks. Cohesion components, such as interpersonal attraction or the pride of belonging to a group, have proven not to be related directly to performance (Beal et al. 2003). Thus, cohesion needs a greater power to increase team performance. More recent studies make reference to

www.todaysoftmag.com | nr. 44/february, 2016

31


others Psychological safety and team cohesion the fact that this concept of cohesion can reduce the desire to disapprove and challenge the points of view expressed by the others, just like in the phenomenon called groupthinking (Janis, 1982), also implying a lack of taking risks (Edmondson, 2003). This phenomenon is derived from the behavior manifested by the group members when interpersonal attraction or the pride of belonging to the group increase, people avoiding to freely express their ideas for fear not to enter conflicts with the other group members. Based on the minuses that team cohesion present, a new concept has appeared in psychology, called psychological safety, which aims at making up for the flaws of the first. Thus, this concept has appeared as a necessity to create a comfortable environment for individuals, so that they feel confident and capable to change. The biggest advantage of psychological safety is that it offers the confidence that the team will not reject or punish a member for expressing his point of view. In conclusion, psychological safety within the group is defined as a shared belief that the team is the safe environment where you can stand interpersonal risk. In a team where the psychological safety of individuals is high, freedom and willingness on the interpersonal level increase and individuals will engage more easily in risky behaviors that are necessary in their learning process. However, the existence of the need to create a comfortable learning environment does not necessarily involve a peaceful environment where the group members are close friends by all means and does not suggest the lack of pressure or different problems. The total lack of conflicts within the team is an inhibiting factor in its development. The better a conflict is being managed, the bigger the benefits it brings to the group. By comparing the component that plays an important role in increasing group cohesion, namely the trust, to the psychological safety, one can notice that between the two there is a series of similarities, but we can also identify quite many differences. Psychological safety encourages learning behaviors, while trust reduces cost management and the need to monitor behaviors. Most recent studies have proven the fact that psychological safety has a much bigger impact on small groups, while trust is particularly relevant for dyadic relations. What trust does not manage to cover is a particular dimension of interpersonal experience, more

32

precisely the extent to which an employee feels appreciated and comfortable in his work environment. A very important difference between the two concepts, psychological safety and trust, is given by the point of focus: on oneself versus on the others. A second difference is that which is conceptualized as being the analysis level of the group. As it turns out from the literature in the domain, psychological safety rather characterizes groups and not individual or behavioral differences. It is seen as an emergent property of the team, which describes levels of interpersonal safety experienced by the members of a particular group. The last dimension is the one regarding the contraction of temporal limits. This concept highlights the fact that in the context of psychological safety, a person also takes into consideration the immediate results of the actions he gets involved in. Whereas, in the context of trust, the individuals tend to anticipate the consequences on a longer period of time, which is relatively far away in the future from the present moment. A last question this article wishes to answer to is related to what can be done in order to create an environment that facilitates the enhancement of psychological safety? One of the key factors is considered to be the behavior the leader has within the team. Thus, it has been proven that the manner in which the leader carries out the team management can have a rather high impact on the learning process within the group. In facilitating the development of such an environment, it is very important to focus on: • Looking for help from colleagues in order to become aware of the importance that cooperative behaviors can have. • Asking for feedback constantly in order to improve the learning process and increase the performance of both the leaders and the team. • Discussing the errors and being concerned – in the context of psychological safety – with allowing the team members to say aloud what worries them and what their problems are, by relieving them from the fear of repercussions. • Innovative behaviors and innovation – innovative behaviors can be defined as being the completion of different tasks in an intelligent manner so as to obtain useful results. Innovation appears more often if people feel safe within the group they

nr. 44/february 2016 | www.todaysoftmag.com

are part of. Consequently, psychological safety, by facilitating risk taking and the desire to come up with new ideas where there’s no fear of embarrassment, can support innovating behaviors and innovation within the team. • Extending the boundaries – these behaviors describe external communication with other groups. They may involve taking on interpersonal risks, including the request of help or resources, looking for feedback and conveying negative news such as delays or exceeding the established deadlines. The conclusion is not related to the fact that one of the concepts is more suitable than the other. Cohesion has its advantages, helping to form the relations between the members of a team, but psychological safety also has the role of creating a climate more oriented towards the creation of a favorable context, so that the individuals of a certain group be open to change and express their ideas freely. The line between team cohesion and psychological safety is well enough drawn in pictures 1 and 2. It is clear where the two are different and where the common element comes. What is difficult to establish is when one of them is better than the other one. This is a statement that is difficult to make, since, depending on the context or the team, each of them can have a different impact. Cohesion creates an environment where people feel comfortable, they are not afraid to be vulnerable in front of the others, they are honest with the team members and proud to belong to that group, but the central point is trust. These positive aspects can give birth to some behaviors that are not necessarily correlated with group performance. On the other hand, psychological safety facilitates the creation of an environment that favors learning, as the individuals feel confident and capable to change. Regarding the manner of interaction of the group members, in this context, they are not necessarily best friends, and the conflicts between them may contribute to their development, if they are well managed. Ștefania Duica Stefania.Duica@endava.com IT Recruiter @Endava


others

Gogu and the sophisms

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

ogu, are you coming to the gym anything about sports, exercising and their tonight?” Misu’s Transylvanian face beneficial influence! We only find the inforsuddenly appeared from behind the mation that pleases us. Do you know what display. this is called, Gogu? A sophism! That’s what “No, I’m going to the barrelhouse. Er… they call it.” to the bar, if you want it to sound better,” Now, it was Gogu’s turn to be silent. Gogu rectified rapidly. Misu enjoyed his victory for a few moments, “Well, but we’ve agreed on working out; then, with a broad smile on his face, he we’ve decided to strengthen our muscles swung a little bit to see if there were any and become… how did the guy with the other witnesses to his success of having pass put it?!...” Misu scratched his head, then reduced Gogu to silence. But no one else it hit him: “Fit! That’s what he said. So, what seemed to have noticed their discussion, so do you say? Shall we get fit tonight?” he gave up blowing his trumpet and came “I’ll get fit in the bar…” back to Gogu: Misu’s eyes expressed a question, so “You mean you don’t know what a Gogu grumbled out an answer. sophism is?!” “I’ve read about some research that said “An argument apparently correct, but that one glass of red wine is even better than actually false,” Gogu, who had come back a session of exercising in the gym. It stren- to his senses, said all at once. “Look, who gthens your heart, muscles, and it improves knows catchy words. So, do explain, why your performances just as if you had been my argument is false, since it is clearly based working out.” on a university research. Or, do you mean “I see… Some might have said again on they’re stupid?!” facebook about the British researchers and “Well, I didn’t say they’re stupid,” Misu you go quickly to get drunk, ‘cause it’s good prolonged his words so as to gain extra time for your health.” for thinking. “Canadian.” “Then, I am stupid?!” The remark puzzled Misu, who no lonMisu turned red, embarrassed by the ger knew what to say. Gogu explained: unexpected turn of the discussion, but “The researchers. They are Canadian, Gogu burst into laughter. not British. From the Alberta University in “Come on, Gogu… Here’s what I wanted Canada. And I won’t get drunk.” to say: we tend to choose, from the infor“No, you’ll just get woozy… The mation available, only that which suits us goddamn Canadians, they couldn’t have most, that which supports our initial opifound anything better to research in their nions or which, sometimes, explains the Universities. But God forbid you read decisions we have already made. We don’t www.todaysoftmag.com | nr. 44/february, 2016

33


others Gogu and the sophisms sophisms over a glass of wine? It’s good for our health and we also get to exercise our brain muscles.”

do it consciously, we don’t falsify anything, we simply tend to certify what we already know or assume. Or that which serves our purpose, just like in your case now. Why search for more information, when they might convince you to make some effort in the gym and gasp for the breath like you did last time?! It’s better to stop at that study of the British researchers…” “Canadian.” “May they live healthily! As I was saying, it’s better to stop at those who let you go undisturbed to have a drink.” Gogu took a deep long breath, then let all the air out of his lungs, as if in a long sigh and looked Misu in the eyes, smiling as an accomplice: “Do you feel like joining me tonight to debate on these

34

nr. 44/february, 2016| www.todaysoftmag.com

After two hours of debating on sophisms and their impact on decisions regarding projects, plus two bottles of wine – which, according to Gogu’s estimation equaled about 20 km of jogging – the two decided to go home. A certain influence on their decision to leave belonged also to Gogu’s wife. Well, not an influence on Gogu, no. But on Misu: “Really, Misu, I trusted you. Is it possible for you to leave to work out and instead ending up in a barrelhouse to drink?! How can I ever trust you again?!” There was still a little bit of wine left in the bottle, so, Gogu asked Misu: “Do you want some more?” As Misu turned him down, he poured into his glass: “I really don’t feel like drinking any more, but we shouldn’t waste any of this good wine…” An idea came to Misu and his eyes lit up: “Look, Gogu, this is another example of sophism: we paid for the wine, didn’t we?” “Yes, we did. I did. ‘Cause you weaseled out…” “And we both drank as much as we liked.” Gogu nodded. “And we don’t need what’s left,” continued Misu. Gogu approved silently. “Well, then, why do we still drink what’s left?” concluded Misu, gloriously. “I’ll tell you why: it is about irredeemable costs, or how the English put it, “sunk cost”. The error of judgment is the following: our decision to continue a project or initiative is affected by the already spent money, by the effort we have already made and, sometimes, by the level of emotional involvement. If we stop, the investment we have already made seems to be lost and, therefore, we keep going most of the times, even if this obviously leads us to further loss. Do you get it? We don’t have the strength to stop, because this would mean accepting our loss.” “Do you mean they will ask for more money here?” “Come on, Gogu, one cannot have a logical discussion with you! Besides the money you paid for that wine, which represents your initial investment, you are now also investing your well-being, ‘cause you are going to be sick from that wine left. Until now, you have invested based on some correct decisions, but now, your decision is affected by the investment you have already made. You said: it’s a pity to waste…”. “All right, all right, you walking psychology, let’s go home, ‘cause you’ve confused me. Let’s hope my wife thinks she has invested enough in our marriage and doesn’t come up with some crazy idea…”


Testează-ți abilitățile

programez.ro

În curând


sponsors

powered by


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