Issue 19 - Today Software Magazine (english)

Page 1

No. 19 • January 2014 • www.todaysoftmag.ro • www.todaysoftmag.com

TSM

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

Machine Learning Multithreading in C++ 11 IT Days 2013 TOWARDS an IT COMMUNITY– via HR (4) Tom Gilb. Why delivering value to customers makes your business successful HR Trends in 2014

Command Query Responsibility Segregation Pitch design. On conceptualizing and delivering a start-up presentation Startup Weekend – Here and There What to Learn In 2014 BPMN – of great help in business process modeling



6 IT Days 2013 (I) Ovidiu Mățan

9 Startup Weekend – Here and There Irina Rotaru

10 Innovation or how to shape the future Andrei Kelemen

13 Today Software Magazine Android client 3Pillar Global India

17 Value as strategy Cornelia Stan

19 Multithreading in C++11 standard (part 1) Dumitrița Munteanu

21 What to Learn In 2014 Alexandru Bolboaca and Adrian Bolboacă

25 Tom Gilb. Why delivering value to customers makes your business successful Alexandra Beșe

28 BPMN – of great help in business process modeling Anita Păcurariu

31 TOWARDS an IT COMMUNITY– via HR (4) Dan Ionescu

34 Deep learning Roland Szabo

36 Dynamic Nutrition Behavior Awareness System For The Olders Tudor Cioară

38 Command Query Responsibility Segregation Andrei Păcurariu

41 Startup Nation(s) Dhyan Or

42 Innovative Leadership and the Building of Sustainable Systems Monica Soare

44 How to protect intellectual property when outsourcing software development? Claudia Jelea

46 HR Trends in 2014 Andreea Pârvu

48 Pitch design. On conceptualizing and delivering a start-up presentation Marius Iatan


editorial

H

Ovidiu Măţan, PMP

ovidiu.matan@todaysoftmag.com Founder @ Today Software Magazine Organizator @ IT Days

appy New Year!!! We begin full of enthusiasm the new year and we expect many accomplishments in 2014. The first initiative is related to improving the manner in which Today Software Magazine appears. We intend to launch the Romanian and English editions simultaneously, in order to eliminate the one month time lag that existed till now. In retrospective, we are proud to count 153 authors who have written at least an article till now in TSM! Most of them, though very good specialists, find themselves at the first publication of an article, reason for which we are proud they have chosen TSM as a first means of assertion. The number of published articles till now is 328 in Romanian, and 269 of these are also available in English. As we stated in the first leading article of the magazine, published in February 2012, a kind of TSM manifesto, we have promoted valuable specialists, who have proven their value through articles and the presentations held in the events for launching of each number. Also, we have accomplished another task set in this manifesto, by organizing in December 2013 the IT Days event, offering the IT community in Cluj the opportunity to take an important stand in view of the relation to the entire Cluj community. We already begin to think about the next edition, the one taking place this year, and any suggestion or wish for us to bring a certain speaker will be taken into consideration. This first number of 2014 opens the series of some articles dedicated to describing the IT Days event. There are other articles which focus on events and their effects. For example, the article describing the involvement in organizing a Startup Weekend in Montreal informs us on what it is that the Canadians appreciate in us, but also what their strengths are when we talk about startups. The strong points that should become guiding marks in the functioning of some companies are presented in other articles. One of these, Value as a Strategy, is the article written by a representative of the local company Accesa, which has recently received, from the part of Munchen Town Hall, the Phoenix award, as an acknowledgement of its performance. The importance of innovation and the manner in which it can be supported represent the topic of the article signed by Andrei Kelemen, the Executive of the Cluj IT Cluster. Tom Gib tells us in an interview Why delivering value to customers makes your business successful and sustainable. Other aspects to take into consideration, such as techniques, procedures and skills meant to improve the performances of a company, are described in articles such as: Business process model and notation (BPMN), Exceeding expectations in quality delivery or what we can learn from a shoe seller: Zappos. In the same topic we also include the article which contains a few pieces of advice on how to design a pitch. The technical domain is covered in this number by a series of interesting articles. Here are their titles and a short presentation of them. Multithreading in C++, 1st part, presents the main modifications that have appeared in this version of C++. Deep learning approaches a very fashionable concept in information sciences. Sonar analyses the impact of metrics in the development of software projects. What to learn in 2014 enumerates and describes ten aspects which should be taken into consideration in your professional improvement, no matter the programming language in which we work. Dan Ionescu presents the last part of the HR study on the Cluj IT companies, which is published exclusively by us. We also continue with the series of articles from the domain of law, by describing the ways to protect intellectual property in the case of service outsourcing. Enjoy your reading !!!

Ovidiu Măţan

4

Founder @ Today Software Magazine no. 19/January | www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE Editorial Staf Editor-in-chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com Editor (startups & interviews): Marius Mornea marius.mornea@todaysoftmag.com Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com

Authors list Alexandru Bolboaca

Andrei Kelemen

Agile Coach and Trainer, with a focus on technical practices @Mozaic Works

Director executiv @ IT Cluster

Andreea Pârvu

Andrei Păcurariu

Senior Recruiter @ Endava

Software arhitect @ Endava

Roland Szabo

Andreea Pârvu

Junior Python Developer @ 3 Pillar Global

Senior Recruiter @ Endava

Alexandra Beșe

Adrian Bolboaca

Marketing Assistant @ ISDC

Programmer. Organizational and Technical Trainer and Coach @Mozaic Works

Cristina Nicule

Claudia Jelea

Consultant @ Danis Consulting

Avocat & Consilier in domeniul marcilor

alex.bolboaca@mozaicworks.com

andreea.parvu@endava.com

andrei.kelemen@clujit.ro

andrei.pacurariu@endava.com

Copyright/Proofreader: Emilia Toma emilia.toma@todaysoftmag.com Translator: Roxana Elena roxana.elena@todaysoftmag.com

roland.szabo@3pillarglobal.com

andreea.parvu@endava.com

Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com

Alexandra.Bese@isdc.eu

adrian.bolboaca@mozaicworks.com

Made by

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

cristina.nicule@danis.ro

claudia.jelea@jlaw.ro

@ IP Boutique

George Bara

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

Monica Soare

monica.soare@artwinconsulting.ro Manager @ Artwin

george.bara@24cloud.ro Co-founder @ZA Cloud Business Consultant @SDL

ISSN 2285 – 3502 ISSN-L 2284 – 8207

Cornelia Stan Irina Rotaru

irina.rotaru@skobbler.com HR @ Skobbler

Cornelia.Stan@accesa.eu Communications Officer @ Accesa

Dhyan Or

Dumitrița Munteanu

CEO & Co-fondator @ Social ReHub

Software engineer @ Arobs

do@socialrehub.info

dumitrita.munteanu@arobs.com

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

Anita Păcurariu

Mihai Nadăș

Senior Business Analyst @ Endava

CTO @ Yonder

Marius Iatan

marius@render.st

Tudor Cioară tudor.cioara@cs.utcluj.ro

CEO & Co-fondator @ RenderStreet

Asistent Doctor Inginer @UTCN

anita.pacurariu@endava.com

mihai@nadas.ro

www.todaysoftmag.com | no. 19/January, 2014

5


events

IT Days 2013 (I)

T

he present article is dedicated to IT Days, www.itdays.ro – representing the first part of the retrospective of the most important event organized by Today Software Magazine in its home town, Cluj-Napoca. Before giving you more or less detailed information about the event, I wish to thank those more than 170 people in the audience and the 10 companies that stood by us in this event: AROBS, Endava, Evoline, EBS, Gemini Solutions Foundry, Accesa, Yardi, Skobbler, 3Pillar Global and msg systems Romania. We would also like to thank our partners which supported us: Cluj-Napoca City Hall, it-events.ro, Cluj Hub and Microsoft Student Partners. Ovidiu Măţan, PMP

ovidiu.matan@todaysoftmag.com Founder @ Today Software Magazine Organizator @ IT Days

6

no. 19/January | www.todaysoftmag.com

The event was an occasion to reunite almost all of those who are involved in developing the Cluj IT community: representatives of the local business, local startups, startup incubators, Cluj IT Cluster, researchers from the Technical University and the Science and Technology Institute and the local authorities, by the presence of Mr. Emil Boc. There were other two special guests from Europe: Tine Thygesen, CEO Everplaces and Eduardo Mendez Polo, head of IT Cloud, Telefonica Spain. During the two days, Dan Suciu successfully accomplished his role as a host, managing to create a pleasant atmosphere, dominated by coherence and professionalism, a condition necessary to the unfolding of the event. The first day started with a press conference, followed by the official opening,

where we were honored by the presence of Mr. mayor Emil Boc. In his opening speech, he emphasized the major advantage that the IT community offers to Cluj, considering it “a voice capable of changing the destiny of Cluj”: “It (the IT community) gains an institutional form, a visible form, an organizational form in the first instance which will give it consistence and a future, since working independently, in isolation, that’s one thing, but having a constitutional, materialized structure as you see today in IT Days, that’s another. For the first time I believe it represents a historical moment, a starting point, which will also mark the development of Cluj.” Moreover, he pointed out the importance of TSM magazine in the coagulation of the Cluj IT community. Then, the discussion moved towards the development strategy for 2014- 2020, in


TODAY SOFTWARE MAGAZINE which the IT component is a fundamental one, along with the university component. The latter offers us a competitive advantage versus other cities or regions of Romania. He also mentioned the collaboration with the Cluj IT Cluster, next to which the Cluj Innovation City project was proposed, project that will change the profile and life of our city. It will be built in the Lombului area, where they allotted over 100 hectares. The first steps are represented by the Business Development Center and the Creative Industry and IT Center, where at least 25 companies will be able to carry out their activity in this incubator. Regarding the smart city, the City Hall is already implementing a few solutions: • online scheduling of marriages (laughter in the room), • parking payment through SMS, • small plates with a QR code on the historical monuments, • transportation system using automatic machines for tickets, for the public transportation, which will be inaugurated in October 2014 • Cluj Bike Sharing – 500 bicycles which will be available in Cluj-Napoca. Furthermore, a few challenges were launched for the local community: • The Incident Management platform project, by which any citizen can take a picture or film a situation/ problem, send it to the City Hall, which through its specialized services will solve the problem and reply back to the respective citizen. • Payment by phone/ SMS of the local taxes and contributions. • E-governing by which each citizen or company can be identified by an electronic signature and can pay taxes for the state authorities. • Bus tickets payment through SMS. • The speech ended with the promise of a honest partnership in view of generating solutions to the service of the citizen. In his presentation, Alexandru Tulai, president of Cluj IT Cluster, pointed out the impressive volume of work that can be required to the IT by the metropolitan area. In his opinion, the strategy of Cluj metropolitan development can be done through a close collaboration between the public administration, the university agent and the business agent. He also pointed out the fact that, since the IT industry gets its income from activities performed for

abroad, we are cut-off from the contact with those who might be clients from the interior, meaning the state institutions. In addition, Alexandru Tulai mentioned the opportunity to turn to profit the eagerness manifested by Emil Boc to catch up with the technological advance. The collaboration between the public domain, the academic world and the business world appears to be a necessary condition to the implementation of some actions which might reduce the technological downshift. One materialization of this collaboration between the three domains will be attempted through the initiation of Cluj Innovation City project by IT Cluster. Referring to the remarkable results obtained by the universities in Cluj, among which the most recent being the fabrication of artificial blood, as a world premiere, Alexandru Tulai stressed the importance of turning the strictly academic ideas into products useful to the community. The concept of innovated research, which this project is designed upon, is based precisely on this turning of the scientific achievements to the benefit of the community. For the domains targeted by this project (bioeconomy, health, IT, green energy), specific research centers will be built. The success of the project will be given, however, by the manner in which the results of the research will be taken over by the developers and launched in Romania, or even exported.

Eduardo Mendez, head of IT Cloud, Telefonica Spain, delivered a presentation entitled What can we expect from the next Cloud services?, which offered an original view on the cloud services. He pointed out the difficulty to integrate the cloud concept in a unique definition, since by the nature of its content, it predisposes to multiple interpretations. Everyone has an idea about cloud computing – in these simple terms, he summarized

the general attitude towards this concept. But throughout the entire presentation, his approach pointed out obvious aspects of this concept, which do not favor subjective interpretations. Thus, he differentiates the concept between private cloud and public cloud, both of them forming the hybrid construction, Hybrid cloud. (see the picture below, which illustrates the deployment model from the presentation) Beyond the concern to define this concept in as clear as possible terms,

Eduardo Mendez also analyzed the nature of the implication of these services in the development of companies. The statistics reveal a problematic situation: in an organization, 75-80% of the resources are assigned to maintaining the existing structures and only 20-25% is assigned to new projects. The deploy time is approximately 2-3 months. It is known that, resorting to cloud services, this time will be reduced. Cloud adoption is not due to IT organizations, in exchange, it is sustained by programmers, startups, internal and business departments which are looking for faster solutions outside. They are those that are looking for fast and cheap deployments. In the end, Eduardo’s prediction is that in a few years’ time we will have free virtual machines, free memory and processors, but one will have to pay for the services received.

Maria Diaconu, CEO Mozaic Works, told us about the way to build innovative teams on a long term. We considered the following definition of innovation as very suggestive: Innovation is a way of doing

www.todaysoftmag.com | no. 19/January, 2014

7


events IT Days 2013 (I)

the things that we know in a different manner, finding different solutions to existing problems. This definition of innovation is applied to the teams that wish to be innovative. The involvement in experiments which target the selection and refining of original ideas stands out, according to Maria Diaconu, as a necessary endeavour in constructing an innovative team. Steve Jobs was cited as an example, as he is apprehended in over appreciative terms for being the only creator of innovations, ignoring the fact that behind him there was an entire team. His greatest merit was that of being able to turn the team’s creativity to profit. That is why it is important to detect and stimulate the creative capacity and the original visions of a team. By obeying this guiding rule, we can ensure all the conditions for building an innovative team. Einstein’s definition of craziness – if we perform things in the same manner, but expect different results, then we have a problem – is very suggestively chosen to characterize the risks assumed by a company that endlessly postpones the implementation of innovative rules. From the end of the presentation, we also note the suggestion to renounce to the people within the organization who do not manage to learn from mistakes and to always demand consistency and excellence in project execution. The first part of the day ended with the speech of Voicu Oprean, CEO Arobs. The topic of his presentation w a s T he tran siti on f rom outsourcing to product, which was actually the successful story of Arobs. Obviously, Voicu Oprean focused his speech on the guiding rules that served him as a landmark and which brought him success. His “lessons” can, therefore, be very useful to those who wish to succeed. Arobs went through this transition having 400 employees. The products they are selling locally and internationally have generated a turnover of 4 million euro. Moreover, they also got involved in the hardware area, by the navigation products and, more recently, in the domain of tablets, having their own brand: Smilo. Arobs started 15 years ago, taking their first step through outsourcing. This is actually the first lesson: take the first step. In 2002, it had to make a decision and, instead of firing people, it decided to reinvent itself. The second lesson: reinvent yourself. The first product was a SMS solution, which now is no longer available on the market. They continued by developing a solution for mobile terminals of Windows Mobile 1.0, which was later moved to Palm Treo. In such an approach, everyone has to assume certain risks. The third lesson is standing the risk. The fourth lesson is knowing when to stop. The last one is using the existing client data base. An assumed target, especially in public, increases its chances of success. Support may come right from within the companies. Gabriel Ciuloaica opened the series of technical presentations at noon, with the topic of reactive programming. In reactive programming, anytime there is an alteration in the model, it is reflected in the view. Until now, an application was specified by requests such as processing capacity of gigabytes of data, running on a few hundreds of servers or a short downtime period.

8

no. 19/January, 2014 | www.todaysoftmag.com

Nowadays, these specifications are no longer valid. Now they all have to run on hundreds of machines, to be elastic, to process terabytes of data and to have no downtime periods. The new approach of specifications is, as a matter of fact, summed up in the Reactive Programming Manifesto. Its presentation emphasizes, in an eloquent manner, the advantages of implementing reactive programming. In the following issues of the magazine, we will continue the series of IT Days accounts. The video recordings will be available on the Youtube TSM channel: www.youtube.com/todaysoftmag, and the slides of the presentations have been published on www. issuu.com/todaysoftmag. For updates, we invite you to access the page of the IT Days community: www.facebook.com/itdays.ro


events

TODAY SOFTWARE MAGAZINE

Startup Weekend – Here and There

I

don’t know about others, but for me America has always been the place where all the dreams come true. Making a short note, America for me is the whole North American continent, because since recently Canadian cities started to have a big contribution in the world of innovations. Out of curiosity; look for Innovation Center Mars in Toronto.

The American dream has also set a certain level of expectations when talking about events. It was the case for Startup Weekend. Being developed in US, the concept made a lot of people in local communities to doubt it’s full potential and even if no one dare to say it, a lot of them considered that Startup Weekend Cluj could not be so cool as the one organized on the other side of the Atlantic. I believed them… until recently. I had the luck to be involved in the organizational team of Startup Weekend Montreal. Although my “luck” is not quite luck, it’s the proof of the big community that exists around Startup Weekend. This is one of the event’s values materialized in the real world. Being there, I had as many others, a lot of expectations from my team mates used with the American style, but my expectations were gone pretty fast. During our meetings and at the event, when sharing the experience from our Cluj events a lot of people stared at me, amazed “Really? You’ve done that? That’s awesome!!!” This was the point when I realized that our nationality, geographical position, communist era and all the other reasons are just excuses. Creativity, enthusiasm, intelligence and our motivation are the same or even stronger compared to the people across the ocean. The difference is probably our timidity or laziness. It’s well known that the event organized under the mentorship of US team respects the values and the spirit of entrepreneurship all other the world. Educational

purposes and the ability to test your idea, mentorship and the energy that almost explodes during the event are the same, no matter what your coordinates on the map are. The energy and the vibe of the event deserve a special attention. Having the same level of expectations, I wondered how is it going on this part. But I was surprised one more time, analyzing the editions I’ve seen, I realized that there is no difference – people who are striving to change the world with their creativity, passion and crazy ideas are all the same, both in Montreal and Cluj. Thanks to the event, I also had a chance to chat a little with the people involved in the financial sector of the startups. The entrepreneurs were as skeptical as here about getting the desired amount for their idea and the investors were careful as well – stepping into a new company requires a lot of analyses and calculations.

I think we may talk a little about the differences… One of the most interesting aspects that I noticed was the awareness about the theoretical concepts. Hustler, hacker, customer validation, business plan: there are just a few things that seem to be more familiar in entrepreneur group of Montreal. The other thing is the legal one. If in Cluj you start you startup by writing code and validating it in business, in Montreal the second step is to visit a lawyer. There is nothing you can do without a legal consultation and the lawyers are also interested to

actively offer support to the young community, they really believe in a win-win business. Of course, some of you may tell me that the main difference lays in the continuation of the projects. If I may talk in statistical language, I could say that Montreal is stepping back, because there are 2 teams that continued with their projects (Crowdmedia and Dashboard), since in Cluj after 2 editions there are 3 teams that are going forward (Usetogether, Doitfor, Omnipaste) and I recently found out that one more team from the first edition is going to be launched (Evolso). Now, starting the preparations for the 3rd edition of Startup Weekend Cluj, I am more confident than before. Besides the notoriety and proved success of the last two events, I am convinced by my own experience that we can rock it and have cool, mind-blowing ideas, like our American fellows. .

Irina Rotaru

irina.rotaru@skobbler.com HR @ Skobbler

www.todaysoftmag.com | no. 19/January, 2014

9


business

Innovation or how to shape the future

I

Andrei Kelemen

andrei.kelemen@clujit.ro Executiv director @ IT Cluster

will start this small text with a quote from a guy that reinvented Nokia. Not nowadays Nokia, but the one from the ‘80s and which later became the tech giant we all know. This is what J.O. Nieminen, CEO of Nokia Mobira, said in 1984: When an inventor in Silicon Valley opens his garage door to show off his latest idea, he has 50% of the world market in front of him. When an inventor in Finland opens his garage door, he faces three feet of snow. Therefore, innovation had to be at home among the thousands of icy lakes of Finland. This is, in a nutshell, the reason why this Scandinavian country’s economy ranks constantly among the top 5 most competitive in the world. Meanwhile, Romania ranks as the second least innovative EU member state, just above Bulgaria (as usually) according to the European Innovation Scoreboard 2013. The table below illustrates the gap that our country is facing in comparison with other EU member states. The challenge is indeed formidable.

Source: Innovation Union Scoreboard 2013, European Commission

Why is it though important that a country, in general, organizations and individuals, in particular, are innovative? Is this something that we should really strive to achieve? Let’s quickly look at some figures, using as starting point the ranking above. The most innovative EU member state is Sweden, while the country’s general

10

no. 19/January | www.todaysoftmag.com

competitiveness is ranked 4th in the world out of 144 audited states1. Just one other EU member state is “more competitive”, the already mentioned Finland. The GDP/capita of Sweden is $56,956, while the average disposable income is $26,242. Around 74% of people aged 15 to 64 in this Scandinavian country have a paid job2. Slovenia, ranked just below the EU average in the Innovation Union Scoreboard 2013, is placed on the 56th place in terms of competitiveness, with a GDP/capita of $24,533, the average disposable income is at $19,119 while employment of the working age population is somewhere at 64%. Hungary, our neighboring country, ranked 22nd among the 27 EU member states in the Innovation Union Scoreboard, is the 60th most competitive country in the world, the GDP/capita is at $14,050, the disposable average income is $13,858/year, while employment of the working age is at 56%. I think the pattern becomes obvious: the more innovative the country, the better the lives of individuals in said country. More people have a job and are getting paid better. 1 World Economic Forum’s Global Competitiveness Report for 2012-2013 2 OECD Better Life Index


TODAY SOFTWARE MAGAZINE Now that we have an answer to our first question (why is innovation important?) let’s see what innovation actually means. A widely accepted theory (I underline the term “theory”) is that an innovation system is made of elements such as demand for innovation, framework conditions (regulatory framework or tax system), industrial systems composed of large companies, SMEs and startups, education and research systems, intermediaries (or institutions for collaboration), political systems and infrastructure (including IPR, venture capital and business angels, and standards)3. The overall picture looks complex, indeed. However, given the huge impact on everyone’s life, innovation within what we do to make a living cannot be dismissed easily. At Cluj IT we accepted this challenge: the most important objective of the entities in our cluster is to facilitate the transition from outsourcing driven businesses to innovation based business development. We look, from this angle, towards creating the framework where research and innovation capacities are being channeled in the direction of our companies so that this transition becomes not only possible, but also probable. Some may fail trying, bot not trying means certain failure. At this point the question how we do it is inevitable. Part of the answer is that we definitely do not have to invent the wheel. Others, before us, met the same challenges and paved our way with their success or failure stories. Another part of the answer is to acknowledge that, although the recipe is quite simple, the real problem is to have all the right ingredients aligned and ready. If we look at what an innovative system requires and if we perform a brief analysis we can identify the areas where we, as industry, need to do something. In some cases what we have to do means starting from scratch because there is nothing in place. Cluj IT is gradually building this “system” so that in near future, maybe 5-7 years from now on, innovation within our companies will be common practice. One by one, we try to define, create, improve, link the elements of a functional innovation system with the ultimate goal that our business survive, develop and become competitive globally. We are bringing together people, organizations and industries that were far apart less than a year ago. 3 Arnold E. and S. Kuhlman (2001). RCN in the Norwegian Research and Innovation System. Background Report no. 12 in the evaluation of the Research Council of Norway. Brighton, Technopolis

I have been looking at a recent report of Ericsson’s Consumerlab on future technological trends predicted for 2014. Without exception they are all based on IT advancements, which is not really the surprise. What is though outstanding is that all these predictions will impact the individual lives of many. Technology becomes more and more integrated in our daily habits, which means there is a great need for innovation, for finding new solutions for improving our lives and our communities. This, at its turn, will yield in that competitive advantage or value proposition that places our business apart. Are we up for the challenge to shape this future? www.todaysoftmag.com | no. 19/January, 2014

11


community

IT Communities

S

o good to see you in 2014 ! The year begins with many interesting events. We invite those in Cluj to take part in the monthly event of launching the magazine. Also, we will try this year to extend the area in which the TSM events are taking place, in an attempt to give the people in other cities the possibility to attend the event. This month, we recommend you to take part in the CodeCamps organized in Cluj, Brasov and Sibiu by our old collaborator Radu Vunvulea and the IT Camp organizers. We invite those who activate in the start-up area to attend the mentorship week called Startup Pirates!

Calendar

Transylvania Java User Group Community dedicated to Java technology Website: www.transylvania-jug.org Since 15.05.2008 / Members: 561 / Events: 44 Today Software Magazine community Community created around Today Software Magazine. Website: www.facebook.com/todaysoftmag Since 06.02.2012/Members: 1103 /Events: 17 Romanian Testing Community Community dedicated to testers Website: www.romaniatesting.ro Since 10.05.2011 / Members: 690 / Events: 2 GeekMeet România Community dedicated to web technology Website: geekmeet.ro Since 10.06.2006 / Members: 571 /Events: 18 Cluj.rb Community dedicated to Ruby technology Website: www.meetup.com/cluj-rb Since 25.08.2010 / Members: 166 / Events: 36 The Cluj Napoca Agile Software Meetup Group Community dedicated to Agile methodology. Website: www.agileworks.ro Since 04.10.2010 / Members: 379 / Events: 40 Cluj Semantic WEB Meetup Community dedicated to semantic technology. Website: www.meetup.com/Cluj-Semantic-WEB Since 08.05.2010 / Members 162/ Events: 23 Romanian Association for Better Software Community dedicated to senior IT people Website: www.rabs.ro Since 10.02.2011 / Members: 234/ Events: 14 Testing camp Project which wants to bring together as many testers and QA. Website: tabaradetestare.ro Since 15.01.2012 / Members: 491/ Events: 21

12

no. 19/January, 2014 | www.todaysoftmag.com

January 17 (Cluj) Launch of issue 19 of Today Software Magazine www.todaysoftmag.ro January 17 (București) TechPeaks Accelerator Presentation in Bucharest it-events.ro/events/techpeaks-accelerator-presentationbucharest/ January 18 (Cluj) Hacaton de GNU http://formulare.ceata.org/hgcj201401/ January 18 (Cluj) - 24 (Brașov) - 25 (Sibiu) Winter Codecamp - recommended by TSM it-events.ro/events/codecamp-de-iarna-la-cluj-napoca/ January 23 (Cluj) Let’s meet up and ...Project Management - PMI clujhub.ro/eveniment/project-managers-meetup-4-2/ January 25 (Cluj) Drupal Global Sprint Weekend http://www.meetup.com/Drupal-Cluj/events/159783472/ January 27 (Cluj) Mobile Monday #4 clujhub.ro/eveniment/mobile-monday-4/ January 29 (Cluj) The javascript timisoara group Meetup 5 it-events.ro/events/javascript-timisoara-group-meetup-5/ January 29 (București) Agility Path, agile adoption, flawed Scrum adoption meetup.com/The-Bucharest-Agile-Software-Meetup-Group/ events/146223122/ February 1 (Iași) Integration Cucumber with Selenium it-events.ro/events/integration-cucumber-selenium-dragospuscasu/ February 8 (Cluj) Startup Pirates - recommended by TSM cluj.startuppirates.org


programming

TODAY SOFTWARE MAGAZINE

Today Software Magazine Android client

T

he arrival of Today Software Magazine back in March 2012 infused life into the IT community in Romania. It provided voice to the many talented IT and software development professionals who were looking for a common platform to showcase their expertise, share best practices, and find solutions to various problems impacting the industry. 3Pillar Global Team India @ 3Pillar Global

Today Software Magazine has grown in strength from its first issue of four articles to the latest issue, #17, which is comprised of twelve contributions on topics like agile continuous improvement, Scrumban (a combination of Scrum and Kanban), and the real-time web. At 3Pillar, we are proud to have been associated with Today Software Magazine pretty much from the start. As we wrote about it previously, members of our team in Romania managed to develop the iPhone and iPad apps for Today Software Magazine in six weeks flat. Building on the success of the iPhone/ iPad app, our development team started working on the Today Software Magazine Android application. https://play.google.com/store/apps/ details?id=com.tpg.tsm.ui&hl=ro

followed APLM approach and created 3 sprints of 2 Weeks each. The role of the Project Manager (Vineet Aggarwal) was instrumental in adhering to the set timelines identified for each of these sprints and helped the team technically and providing status on progress to both client and management. As per APLM approach, each sprint has a specific theme and the team showcased demo to

The beginning of process

After hearing a potential opportunity for development of an Android app from Dan Suciu (Director Engineering – Cluj), The Android CC team in India led by Anjula Pahuja(PGM) and Vineet Aggarwal (Android CC lead) started working on scope of android version and a team of 3 people (Ravindra Prajapati , Khushboo Kaur and Priyanka Singh) was created to deliver the project. The 3Pillar team of Software Engineers www.todaysoftmag.com | no. 19/January, 2014

13


programming Today Software Magazine - Android client client at the end of each sprint to take inputs and further improve the delivery in subsequent deliveries. Project progress was tracked closely using JIRA and all the respective tasks were created as user stories and assigned to the respective developer on JIRA to keep track of the development time and completion date. GIT was selected code repository tool and a development branch was created for developers at the start of Sprint 1. To avoid any conflicts, the master branch was merged with the development branch at the end of sprint and tagged with subsequent sprint version after following the code review process. As per client discussion, the team was told to complement iPhone app design and features, but the team came up with its own suggestions following APLM accepted by client. Here are the set of features proposed: • Refresh functionality: On subsequent launch, we suggested there could be two ways to inform users about new content. One is using push notification which would let app know that a new content is available and then the user can make a call to update the content. The second is providing a manual Refresh functionality which would enable users to take the decision to check for new content. As per business requirements, refresh functionality was chosen and it enables app to check for new versions of the magazine whenever available. • Sharing on Social Networks: We got an additional requirement to share the issue url on Facebook and twitter. We suggested to the client to use 3PillarLabs SocialAuth Android library which helped them to share content on social networks, even if the user has not installed Facebook and twitter on their devices. • Supporting of app to Android GingerBread 2.3.3 as by the time of development it contains 25% market share as per latest statistics of Android Market. Further we suggest to port the app

to 7’’ tablets as a large percentage of android users use them.

Application architecture

The application starts with a splash screen and provides options to the user to make their language selection between ‚English’ and ‚Romania’. On clicking the language button, the app starts

retrieving the image of the latest issue and articles from the TSM web server. It then downloads the data saved in internal memory and SQLite database. After downloading the information pertaining to the latest issue, the app launches the home screen and shows the TSM home screen with all the downloaded issues and articles. On clicking the action bar menu icon, a user can open the left navigation drawer that contains a list of issues downloaded from the server. In the right panel screen it will show the list of articles from the selected issue. Clicking on any article will open the TSM article viewing screen, where a user can read the full article and details of author. On clicking the share icon, the app launches a pop-up menu with options to share on platforms like Facebook, Twitter, and Mail. Language selection can be changed by clicking settings from the

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

14

no. 19/January, 2014 | www.todaysoftmag.com

Product Development

Product Support


TODAY SOFTWARE MAGAZINE int inSampleSize = 1; final int heightRatio = Math.round((float) height / (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; return inSampleSize; }

Create new Image

action bar. Once the new language change is selected, the app will erase all the stored data and restart to download content in the new selected language format.

Tools and library used

public Bitmap sampleBitmap(BitmapFactory.Options options,int reqWidth, int reqHeight, TSMBaseActivity activity, String id, InputStream imageResponse, String imagePath) throws IOException { int sampleSize = calculateInSampleSize(options, reqWidth, reqHeight); if (sampleSize >= 0) { options.inJustDecodeBounds = false; options.inSampleSize = sampleSize; if(haveNetworkConnection(activity.getBaseContext())){ try{ imageResponse=new HttpRequest(activity. getBaseContext()).getHttpInputStream(imagePath); //FileNotFoundException, MalformedUrlException }catch(IOException e){ e.printStackTrace(); if(e instanceof SocketException || e instanceof SocketTimeoutException){ } return null; } if(imageResponse!=null){ Bitmap bmp = BitmapFactory. decodeStream(imageResponse, null, options); if(bmp==null) return null; saveToInternalSorage(bmp, activity,id); return bmp; } } } return null; }

• Eclipse: Eclipse IDE was chosen as application development tool due to its proximity with developers. • Charles Proxy : This tool help us during API testing and check the iPhone app flow. • SocialAuth Android Library: The API enables user authentication and sharing updates through different various social networks and hides all the intricacies of generating signatures & token. Used for sharing of articles on social networks and mail. • Android-app-v7-appcompat: Action bar support comes in Android 4.0. This library supports the Android action bar YouTube Video Play implementation in Android lower versions. Implementing the action bar removes the dependency on the Android option button. • I3P Android: Developed by 3Pillar Labs, this library helps us to create custom left navigation bar for our use case.

Challenges

The following sections highlight the challenges received by team during development and testing. It tell how we identify the problem and what it take solve the problem.

Bitmap optimization Problem identification The TSM home screen showed a list of articles from the selected issue along with author bitmaps. The team found that the images received from server needed to be downsized in order to avoid OutOfMemory error as it may result to crashing of application in some user scenarios

Problem identification

A lot of articles received from TSM server contained embedded Youtube videos. Playing YouTube videos inside a web view is a very challenging task, because you don’t have controls on web view. Also, the implementation varies on devices for Gingerbread and ICS devices. For instance, In Gingerbread devices, the youSolution tube videos used to run by default on full screen whereas in ICS To effectively handle the OutOfMemory issue, we used bitmap devices and above devices users have to manually enable the full sampling, a process to develop a downsize image from an existing screen. image. The major challenge was to maintain the aspect ratio of the original image, thereby retaining the quality of image during its Solution re-sizing. Presented below is a sample code to calculate the image We considered separate approaches for Gingerbread and ICS sample size: devices. For GingerBread, we used Android default Videoview control whereas for ICS and above devices we made use of Java Calculate image sample size reflection API to seamlessly play the videos. Using the reflection API, we got the reference of HTML5VideoFullScreen$VideoSurf public int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { aceView from webkit and play the full screen video. For both the final int height = options.outHeight; final int width = options.outWidth; versions, sample code is pasted below:

if(height<0 || width < 0) return -1;

www.todaysoftmag.com | no. 19/January, 2014

15


programming Today Software Magazine - Android client

YouTube video in Android 2.3.3

VideoView customVideoView = (VideoView) customViewContainer.getFocusedChild(); Field mUriField = VideoView.class.getDeclaredField(“mUri”); mUriField.setAccessible(true); Uri uri = (Uri) mUriField.get(customVideoView);

YouTube video in Android 4.0

Class _VideoSurfaceView_Class_ = Class.forName(“android.webkit.HTML5Vide oFullScreen$VideoSurfaceView”); java.lang.reflect.Field _HTML5VideoFullScreen_Field_ = _VideoSurfaceView_ Class_.getDeclaredField(“this$0”); _HTML5VideoFullScreen_Field_.setAccessible(true); Object _HTML5VideoFullScreen_Instance_ = _HTML5VideoFullScreen_Field_. get(((FrameLayout) view).getFocusedChild ());

Improving App performance Problem identification Fetching TSM data in an asynchronous manner in the application and then showing the data on the UI was taking approx. 20-25 minutes. This is definitely a large time. To reduce the complexity, a number of different processes were created. Each of them was doing its own task of downloading data from the server. The difficult part in this is the synchronization among them and avoiding any conflict. Author Images cannot be downloaded until the Author information is downloaded as the path of the image is contained in the Author Information. Thus the challenge was to optimize the data downloading time and thereby improving application’s performance.

Solution We have implemented ThreadPoolExecutor. All the tasks are attached with the executor. Initially the thread pool was created with size as 2 allowing two threads to execute in parallel. As soon as these threads finish the threads from the pool are queued to download the content as the user browses the application. ThreadPoolExecutor executorPool = new ThreadPoolExecutor(2, 2,60, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(2), threadFactory); executorPool.execute(new LoadIssueImages(handler, language,getBaseContext())); executorPool.execute(new LoadIssueArticles(handler, language,getBaseContext())); executorPool.execute(new LoadAuthorInformation(handler,language, getBaseContext())); executorPool.execute(new LoadAuthorImages(handler, language,getBaseContext(), this));

Testing

The app was tested for following devices: Nexus 4 (Android 4.3) , Nexus 7(Android 4.1, 7’’ Tablet) , HTC Desire (Android 2.3.3 , 480x800) and Samsung Tab(7”,10”) , Galaxy Y(240x320). We have selected the above devices to cover the major range of android devices on the market, based on our experience. The testing team used the following set of testing methodologies to ensure that the app experience should not break while being used: • First Time App Launch Testing: When mobile app is installed successfully an app icon will be created. On tapping the App icon, a splash screen is displayed. • API Testing: We verified the iPhone app flow using Charles Proxy tool. The idea is to provide the same user experience as we have in iOS. • Network Scenario Testing: We verify the behavior of application when there is a Network problem and the user is performing operations for data call. Users get proper error messages like „Network error. Please try again later.” • Stress Testing: An important way of ensuring the stability of the app being developed. For this we tested the app by quickly tapping on multiple button/links/link images etc. By making

16

no. 19/January, 2014 | www.todaysoftmag.com

such multiple requests at the same time, we tried to improve the app stability. • Testing with Different Network Types: The app was tested with various network types 2G, 3G and Wi-Fi. • Testing with Devices of Different Resolution: We tested the app on a variety of screen resolutions ranging from 240x320 to 1280x800. Due to the availability of selected devices, the team tried to make sure that the app would work on different screen resolutions and mimic their behavior. For instance, 10’’ tablet takes portrait orientation as landscape. Also the UI was different for tablets and devices.


business

TODAY SOFTWARE MAGAZINE

Value as strategy

Company values as driving factors for development and recognition on external markets

A

lthough you could say that „value as strategy” could be valid for any type of company, the strategic development principle behind this phrase leaves us plenty of room for elaborating opportunities which are not to be ignored - especially for IT companies. „Value as strategy” means leveraging company values in order to control and define processes, ways of working, communication and development guidelines.

Cornelia Stan

Cornelia.Stan@accesa.eu Communications Officer @ Accesa

Respecting company values

In the way, respecting rules supports a continuous behavior (think about the traffic rules, which by imposing their authority pursue avoiding accidents), like so – respecting values in the context of an IT company, pursues sustaining a rhythm of development. Values are relevant especially for a company that is continuously developing, their existence and acceptance having an impact towards employees and company. Far from just existing in the company’s website section named „Values”, in reality, values have a higher relevancy especially for service providers, for which quality is mediated through a series of factors. What does that mean? – That actions, processes, ways of organizing, communication and attitude in solving problems – prove services’ quality and go beyond “code quality”. Moreover, these elements contribute to creating a clearer and wider perception towards the quality an IT company can deliver – as „service providers” and not only as a „software development” company. Furthermore, relatively to an external market, assuming certain values presumes having the ability to match the internal processes with the cultural exigencies that those values imply. A good is example is

“punctuality”, which is often found in the German culture. Once assumed in relation with a German client, it is implied that we truly understand what “German punctuality” means and that we act correspondingly.

When do values become strategic resources?

• • First, when individuals (employees) and groups (teams) can relate to them. Specifically for the IT field, values become strategic to the extent where they have a positive influence in the collaboration between colleagues and in relation with the client’s team. • If company values already exist, but they have not been clearly set yet, they become strategic resources only when employees’ actions and behaviors can be correlated with them. Questions as - What do clients appreciate in collaborating with team members? – Which are the most common found types of behavior in a team? – Which is the dynamic in learning and team forming? – can help you identify and define them easier. • When they are well known and assumed by members of the organization. As simple as that – when values manage to trace a direction for behavior and action

www.todaysoftmag.com | no. 19/January, 2014

17


business Value as strategy – we are already talking about “assu- PhönixPreis, company values and recogmed values”. A good example is the one nition in Europe where recruiting new colleagues takes place considering the company values. Another good example is the case when values are defined with the support of the entire team, ensuring transparency and a good understanding of values – internally.

The impact of values in relation with employees and the company

From a development view, we can enumerate a few perspectives on values: • The fact that company values do exist and that they are respected, are clues for the importance the individual (employee) has, at the organizational level. • Values can serve as a fundament for growth and active sustenability at the IT service quality level. • Any of the values which are assumed by the company can be a criteria for service quality evaluation but also for employee performance. • Values can be a source which even from the recruiting stage can contribute to keeping the team cohesive. • Values can be a source of motivation for employees. These can be valorified internally through innovative projects, employees’ initiatives which the company can support and so on.

18

PhönixPreis is the distinction offered to foreign companies which activate in Germany and which managed to differentiate through social commitment – by creating jobs, and through business performance. The Department for Work and Economy offers this distinction, with the support of the Munich Town Hall. Accesa is one of the companies that, at the end of the year 2013, have accepted the PhönixPreis distinction, in the „Established Company” category. The distinction was offered with the occasion of the official awarding event, which took place on December 4, in the banquet room of the Munich Town Hall. The values Accesa supports: passion, courage, proaction, modesty and respect - which were a basis for the company’s development, and relevant for the jury’s evaluation. Iulian Iuga, Accesa’s General Manager declares: “entering the

no. 19/January, 2014 | www.todaysoftmag.com

contest and accepting the award were opportunities to strengthen the company’s development mission”. For Accesa, winning the PhönixPreis is an acknowledgment for performance, which every employee has contributed to, and which is now recognized by the Munich community. From the business development perspective, this kind of award is especially representative for the managers’ function to act like visionaries beyond the borders of their own country, to innovate - thus by contributing to the competitive external environment. Including company values in the development strategy implies considering them as long-term resources, leading to differentiation and consolidation of the company’s strengths.


programming

TODAY SOFTWARE MAGAZINE

Multithreading in C++11 standard (part 1)

T

Dumitrița Munteanu

dumitrita.munteanu@arobs.com Software engineer @ Arobs

hirtheen years after publishing the first C++ standard, and simultaneous with the publication of the new C++11 (or C++0x) standard, the members of the C++ Standards Committee decided to offer a major change regarding the multithread programming. For the first time C++ language offers support in implementing applications that require concurrent programming, regardless of the development platform. Before C++11 standard the multithreaded applications were based on platform-specific extensions, like Intel TBB, OpenMP, Pthreads, etc. Portable applications are the major advantage brought by this new feature (i.e. Windows multithreaded applications are easily proted to iPhone or Android platforms). An advantage for those familiariazed with Boost thread library is that many concepts from the standard C++11 library keep the same name and structure as the boost threads library classes. The C++ Standard Library contains classes for thread manipulation and synchronization, common protected data and low-level atomic operations. Next we will exemplify and generally describe how these concepts occur in C++11 Standard.

file contains functions and classes for thread management. Threads are started by defining an object std::thread, that specifies in it’s constructor an initial method that will be execute by the thread, in our case the execute() method, which is the place where the new thread will start it’s execution. After the thread was launched and before the std::thread object is destroyed by exiting the main function, it must be explicitly specified if the main thread is supposed to wait until the secondary thread completes execution (by calling the join() (3)) function or if the secondary thread will run independently of the life cycle of the main thread (by calling the detached() method). In this case the thread will run in the background, with no mean to comuStarting a thread nicate with it. Detached threads, also known Starting a thread in C++11 is as as daemon threads, are named after a Unix OS s i mpl e a s d e cl ar i ng an d i nst ant i a - concept (when a daemon process runs in the ting a new object. We will analyze a background, without a specific interface).

simple multithreaded application in order to demonstrate how we can use the threads Passing parameters to a thread function from the C++ standard library. For example: Passing parameters to a new thread in C++11 is as simple as passing the parame#include <iostream> ters to a callable object. It is important to #include <thread> //-- (1) note that the parameters are passed as local void execute() copies in the thread’s stack, whence they can { std::cout << ”Hello Concurent be accessed by the running thread, even if the World” << std::endl; corresponding parameters of the function } expect reference. For example: int main() { std::thread worker_ thread(execute); //-- (2) worker_thread ().join(); //--(3) }

The first difference is the inclusion of the header file #include<thread> (1). The header

void execute(const std::string& filename); std::thread worker_thread(execute, ”input.dat”);

In this case a new thread is created,

www.todaysoftmag.com | no. 19/January, 2014

19


programming

Multithreading in C++11 standard

associated with worker_thread variable, which calls the execute(“input.dat”) function. Pay attention to the the passed parameter. Even if the execute function receives a reference of std::string as a parameter, the string is passed as const char* and converted only in the new thread to std::string. The manner in which passing parameters to a std::thread function works, can lead to two possible problems. The first case would be the one in which the transmitted parameter is a pointer to a local variable. For example: void execute(const std::string& filename); void oops(const char* parameter) { char buffer[50]; sprintf(buffer, “%s”, parameter); std::thread worker_thread(execute, buffer); //-(1) worker_thread.detach(); }

In this example, a pointer to the local variable buffer is passed to the new thread, that waits for a std::string type parameter. It is possible that the oops function completes before its conversion from char* to std::string takes place. The passed pointer becomes a dangling pointer (1) and the thread behaviour will be undefied. In this situation the solution would be the explicit conversion of the buffer variable to a std::string, before the parameter is being passed to the constructor of the new thread: std::thread worker_thread(do_work, std::string(buffer));

The second case would be where the passed parameter is copied, even if the intention was to send a reference of the object whose value had to be changed by the thread. For example: void execute(std::string& str) //-- (1) { str.assign(“Hallo Welt!”); } void oops(const char* parameter) { std::string greeting(“Hello World!”); std::thread worker_thread(execute, greeting); //- (2) worker_thread.join(); std::cout<< greeting << std::endl; //- (3) }

Even if the execute function (1) is waiting for a reference as parameter, the constructor of the new thread doesn’t know this, which is why it just copies internally my_string variable. When the thread calls the execute function (2), it will send as parameter a reference to the internal copy of the greeting variable. Therefore, when the new thread completes its execution, my_string variable (with the new value “Hallo Welt”) will be destroyed together with the destruction of the internal copies of the parameters passed to the constructor of the thread. For this reason, the value of the greeting variable remains unchanged, showing the initial value “Hello World” (3). In this case the solution would be to transmit the parameters that must indeed be a reference, using the std :: ref function. std::thread worker_thread(execute, std::ref(greeting));

20

no. 19/January, 2014 | www.todaysoftmag.com

The std::ref function is available, too, only with C++11 standard and it’s a method used to simulate the reference feature so that, in the end, my_string variable (3) will have the changed value “Hallo Welt!”. For those familiar with the std::bind function, the semantics of passing a pointer to a member function of an object as parameter to the constructor of a std::thread may be surprising. For example: class Test { public: void execute(); }; Test custom_test; std::thread worker_thread(&Test::execute, &custom_ test); //-- (1)

This code will launch a thread which will run the custom_test. execute() method. If the execute() method recievs parameters, they will be transmitted in the same way, as the third, fourth, etc. for the constructor of the current thread.

Transfering thread possession

Suppose you want a std::thread create_thread() function to create a thread that runs in the background, but which, instead of waiting for the new thread to complete it’s execution, returns the new thread to the function from which it was called. Or we can assume that the function creates a thread and send it’s ownership to some function that has to wait for the newly created thread to complete its execution. In both cases it is necessary to transfer the possession of


TODAY SOFTWARE MAGAZINE std::thread which, similar to a std::ifstream simultaneously. and a std::unique_ptr can be transferred, In this situation it is necessary to use a but not copied. For example: mutual exclusion mechanism that ensures data integrity when there is the possibility void some_function(int n); for multiple threads to modify the same std::thread create_thread() resource at the same time. { std::thread my_thread(some_ The most commonly used function, 24); synchronization primitive is the mutex. return my_thread; } Prior to access resources that can be std::thread first_thread (some_func- simultaneously modified by different tion, 25); //-- (1) threads, a thread must lock the mutex std::thread second_thread = associated with the shared resource and std::move(t1); //-- (2) first_thread = create_thread(); when the thread is no longer operating on //-- (3) shared data, it must be unlocked. If a mutex is already locked and another thread tries Firstly, a new thread is launched (1) and to lock it again, it must wait until the thread it is associated with first_thread variable. that has successfully locked the mutex The possession of the new thread is then unlocks it. thransfered towards the second_thread The C+11 standard provides std::mutex variable (2). The next possesion transfer primitive, which can be used by including (3) doesn’t require calling the std::move the header #include<mutex>. A std::mutex function because the current owner is object also provides member functions a temporary object and the transfer is lock() andunlock( ) - to explicitly lock or automatic and implicit. unlock a mutex. The most common use of a mutex is when one wants to protect a Synchronization mechanisms particular block of code. For synchronization between threads, C To t his end t he C++ st andard + +11 standard provides classical synchro- library provides the std::lock_guard< > nization mechanisms like mutex objects template, whose mechanism is based on (std :: mutex, std :: recursive_mutex, etc.), the RAII principle (resource aquisition condition variables (std::condition_varia- is initialization). The mutex is blocked in ble, std::condition_variable_any), which can the std::lock_quard object’s constructor be accessed through RAII locks (resource and automatically unlocked in obeject’s acquisition is initialization, std::lock_quard destructor. For example: andstd::unique_lock) and other mechanisms called futures and promises used to transfer results between threads or std::package_task in order to „pack” a call to a function that can generate such a result.

Mutex

one thread concurrently calls the query() method, then they will be blocked until the thread that has successfully locked the mutex will unlock it. Since both functions lock the same mutex, if a thread calls query() method and another calls the increment( ) at the same time, then only one of them will be able to lock the mutex and to access the counter variable. When questioning exception handling, a std::lock_quard< > type variable brings additional benefits compared to manual unlock by directly calling the methods lock() and unlock( ) on a mutex. When using the manual lock, one must make sure that the mutex is unlocked at each exit from the protected region, including the regions in which it prematurely terminates execution, due to the launch of an exception. By using a std::lock_quard object, this safe behaviour is assured, because by launching an exception, the destructor of the std::lock_quard object will be automatically called due to the stack unwind mechanism.

std::mutex my_mutex; unsigned int counter = 0; unsigned int increment() { std::lock_quard<std::mutex> lock_counter(my_mutex); return ++counter; } unsigned int query() { std::lock_quard<std::mutex> lock_counter(m); return counter; }

In the previous examples we have seen how parameters can be launched and passed to a thread function. This mechanism, however, is not enough when one wants certain resources to be used In this example, the access to the (modified) by multiple threads running counter variable is serialized. If more than

www.todaysoftmag.com | no. 19/January, 2014

21


management

arhitectură

What to Learn In 2014

T

he starting of the year is a good moment to think at the future. How can you grow your career? How can you have a (more) stable job? How can you be more wanted in a competitive market?This article contains 10 technical skills that a programmer can learn and can help grow your profile with your colleagues and managers.

10. Touch typing Alexandru Bolboaca

alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works

Adrian Bolboaca

adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works

• Move a line up or down. Also works Formula 1 cars have many secrets; the on multiple lines of code. best kept one is the tyres. The reason is sim• Selecting any block of code between ple: no matter how efficient the engine is and curly braces or parenthesis (Ctrl + W how good the pilot, the tyres are the ones that in ReSharper) connect the car with the running surface. • Navigation Similarly, the keyboard is the way the • Finding all references towards a programmer’s brain connects with code. variable or class Your ideas, no matter how good they are, • N a v i g a t e t o a m e t h o d must translate into code as quickly as posimplementation sible. Touch typing is the skill to write on • Refactoring the keyboard without looking at it. It allows • Renaming a variable, method or fast typing and focus on problem resolution. class (Alt + Shift + R in Eclipse, Ctrl + Moreover, it allows reducing the time spent R, Ctrl +R in Visual Studio). writing emails or documentation. • Extract method (Alt + Shift + M in Like any other skill, touch typing can Eclipse, Ctrl + R, M in Visual Studio) be trained through practice. http://www. • Extract interface typingstudy.com , http://www.typingclub. • Promote method from a class into com/typing-qwerty-en.html or http://play. an interface or base class typeracer.com are websites where you can • Extract class learn touch typing or compete with friends or co-workers. Using these websites usually Many other useful features are documenturns into a fun activity, because of their com- ted in cheatsheets available online. petitive nature.

9. Your Editor Or IDE

Modern code editors have hundreds of features. Some of them are extremely useful and not used enough. Mastering them allows quick editing, navigation and code modification, even with unknown or poorly structured code. For example: • Advanced editing • Delete a line (Ctrl+D in Eclipse, Shift+Ctrl+L in Visual Studio)

22

no. 19/January | www.todaysoftmag.com

8. Reducing Compile Time

Any code change requires validation. For the programmers who use a compiled language, the validation time depends on the compilation time. It’s never pleasant to wait for a program to compile; plus it’s easy to lose focus in this time. Java IDEs, like Eclipse or IntelliJ Idea, offer continuous compilation on the expense of CPU and memory. .NET Daemon from


TODAY SOFTWARE MAGAZINE RedGate (http://www.red-gate.com/pro- resistance and the cost to implement a new ducts/dotnet-development/dotnet-demon) feature decreases. offers the same thing for .NET. To refactor successfully, a programmer Even without these tools, it is possible needs two things: knowing and applying to significantly decrease the compilation the principles of changeable design (see 6) time of a program, no matter how large it and optimizing the refactoring time. is, through a few techniques: • SSD Hard Drives. Although they still Here are some secrets of effective seem expensive, their price is rapidly refactoring: compensated by the programmer’s spa• Use the automated refactorings. red time Modern IDEs (Eclipse, Visual Studio + • Creating temporary solutions or proReSharper or IntelliJ Idea) offer these jects (or compiling units in C++) that features. Popular programming editors, can be modified, compiled and validated like vim, offer the possibility to record much faster than the whole project macros or write refactoring scripts. No • Knowing the compiling options. For matter the solution, automated refactoexample: incremental compilation and rings help save time using all available cores are common • K n o w m a n u a l r e f a c t o r i n g s . compiler options that help decrease comSometimes, the editor hasn’t automated pilation time. certain refactorings. The „Refactoring” book by Martin Fowler describes in 7. Programming Language and the Main detail how to make manual refactoring Technology Used safe and fast. A feature can be implemented in • Refactor continuously. The longer countless ways. Only a few of them are both you wait to refactor, the more difficult it correct and easy to extend. is to change the design and the highest One of the common simplification the investment. Continuous refactoring methods is to use to the maximum what’s allows eliminating design problems already implemented in the technology. very early, but it requires solid design Language constructs equally allow simknowledge and reviews with colleagues. plifying the code. • Automating complex but common A counter-intuitive method to master refactorings. Most IDEs can be autoa technology is to try other technology mated through scripts, which allows and compare. The simplest way to try automating refactorings specific to the another technology is to collaborate with a application. knowledgeable programmer, either by discussing on existing code or by writing new 4. Effective Test Automation code using pair programming (see 2). As new features are added to an application, the testing time tends to increase. 6. Modifiable Design Principles Modularization, adding new testers and T h e m ai n pro bl e m d e ve l op e r s automated testing are possible solutions of everywhere face is that they always need to this problem. Teams that choose automated modify existing code. In the beginning of testing often fall into the trap of complex the project, the code is easy and quick to and difficult to maintain tests. The solution change. As the project advances and more is to structure automated tests using the code is written, modifying it becomes chal- pyramid of tests. lenging. That’s why the application design The pyramid of tests is a structured should be optimized for changeability. approach to automated testing through the SOLID principles and design patterns division of tests in categories: have emerged as solutions from the com• Unit tests: validate behaviors expecmon experience of programmers more ted from a class or more classes. They than 10 years ago. Any team challenged by are fast, simple, use test doubles (stubs code changes should invest time in proand mocks) and are executed by profoundly understanding and applying them. grammers after each change in the code. They are the most and can cover 90%+ of 5. Effective Refactoring the behaviors. Difficult to change code can be trans• Integration tests: validate the inteformed into easy to change code through gration of the classes from the application refactoring. Refactoring is an investment in with any external system (libraries, frathe future; the resulting code “opposes” less meworks, services, OS). They are slower,

more difficult to write and should run whenever the libraries change or on automated build. • Contract tests: validate collaboration contracts between two classes, usually from different modules. • End to End Tests: validate the most important features from a module or application, by exercising the real system. They are usually complicated, slow and brittle because they require creating and configuring a test environment similar with the production. They don’t use the UI. • System tests: validate the system using the UI. They can be executed manually or automated with specialized tools (eg. Selenium) • Exploration Tests: manually executed by a tester who actively searches programming errors. They are very useful for finding hidden problems. • Acceptance Tests: their purpose is to create executable specifications easily read by Business Analysts, Product Manager, Product Owner, Business Stakeholders and other non-technical but knowledgeable about the business or product. An effective testing strategy is based on a combination between many unit tests, just enough tests from the other categories and exploration testing to prevent most bugs. This strategy can cover a whole application (if it’s business or life-critical), or just the most risky parts. An architect or CTO can define and see to the implementation of this strategy.

3. Working fast and safe with existing code

Most programmers work with existing code. It is often older than 2-3 years, sometimes 10+ years. The initial team members are not in the team anymore or can’t answer questions. It is therefore the job of the programmers to understand and change the existing code without introducing new bugs when adding a feature or fixing a bug. If testing a new feature is easy, validating that nothing else was broken is much more difficult. At the same time, we would like to improve the design to optimize adding new features in the future (see 5). But how to do it, if the existing code is unclear? Special techniques to understand and modify unclear code have been created in time. Some of them are: • Golden master: writing automated

www.todaysoftmag.com | no. 19/January, 2014

23


management What to Learn In 2014 tests that first store the outputs and on the next executions compare them to the initial ones. They ensure a first safety net against undesired changes, but are just an intermediate step towards unit tests. • Characterization tests: writing automated tests with the purpose to discover behaviors of existing code. Once a piece of code has been covered with characterization tests, it can be extracted in new classes or methods, as a first step towards design simplification. • Extract and override: a technique that allows focusing on a small piece of code. It’s composed from extracting a complex piece of code that we don’t yet want to focus on in a method that is then overwritten for testing purpose (a partial mock). • Exploratory Refactoring: Refactor with the purpose of discovering alternative designs. When refactoring is automated through scripts, you are using the Mikado Method. Many other techniques exist, most of them described in the book „Working Effectively with Legacy Code” by Michael Feathers and treated in the workshop „Working FAST and Safe with Existing Code” (http://www.mozaicworks.com/ workshops/working-fast-and-safe-withexisting-code/) .

A few methods exist to learn faster, and some of them are: • Involve other programmers in learning (social learning) • Prepare a presentation for a friendly audience • Deliberate practice • Coaching or facilitated practice sessions • Experimenting For more details, read the article „5 Trick to Amplify Learning” ( h t t p : / / w w w. m o z a i c w o r k s . c o m / blog/5-tricks-to-amplify-learning/).

1. Remember to Have Fun!

The most important thing is to enjoy your work. There will be difficult moments, problems and misunderstandings in any team. It’s important to remember that programming is an amazing job, that you’re working with intelligent people and that we can often ease the lives of our users. Celebrating team successes, events like „code and beer” or code retreat, working with unknown programmers at community meet-ups are just a few ways to enjoy writing code and to remind yourself how fun it is. Have Many Accomplishments in 2014!

2. Faster Learning

Technologies and the software industry change continuously. Programmers have to learn new things all the time, so optimizing learning is very useful.

24

no. 19/January, 2014 | www.todaysoftmag.com


management

TODAY SOFTWARE MAGAZINE

Tom Gilb. Why delivering value to customers makes your business successful and sustainable

N

ovember 28, Cluj-Napoca, ISDC. Tom Gilb and his son, Kai, visited Cluj recently to share their evolutionary expertise in how to deliver value to stakeholders and create successful customer experiences through agile delivery. And, in return, make their own impressions of Romania and its IT talents, at first hand.

Alexandra Beșe

Alexandra.Bese@isdc.eu Marketing Assistant @ ISDC

It was their first Romanian trip to meet with anxious and gifted engineers in the land that they’ve only known via media and stories of people met in their international trips. Tom and Kai spent one full day in ISDC and engaged with the ISDC engineers, project managers, testers and other roles in a rollercoaster quest for value: more than 8 hours of intensive workshops, open sessions and myth-busting conversations on topics like „Architecture, Requirements, and Project management”, „Non-functional requirements / quality attributes”, „Continuous Improvement”, „Ten key Agile principles”. The interaction in ISDC was intense and thoughtprovoking on both sides of the table. Tom’s conclusion was that he met intelligent, open, responsive, inquisitive people that are a living proof of a forward going, innovative industry. And it’s exactly people that determine the threshold for value. When it comes to market differentiation, many people refer to Agile as the new miraculous cure for faster time-to-market, more customer intimacy, more feedback „tolerated” in the

development process, and more collaboration between business and IT. Surprisingly enough, Tom agrees that Agile continues to be a market differentiator on one condition: if it is well applied. But, like most methods on the market, Agile is badly practiced. So, eventually, when it comes to competitive organizations, the key differentiator is - like always - quality. Why is then quality still such an intangible asset? Tom used an analogy that for many of us in the outsourcing world sounds probably too familiar. When Indian outsourcers, Tata Consultancy etc., started up, they did not consider quality a factor, only price. Tom advised them to profile themselves with superior quality primarily. They did so using CMM levels. „You know, when I was growing up in the 40’s, the Japanese were trying to break the American market and everything they were building was of bad quality. And then someone woke up the Japanese by addressing one simple question - what about quality? And these days, Japanese products mean

www.todaysoftmag.com | no. 19/January, 2014

25


management Tom Gilb. Why delivering value to customers makes your business successful exceptionally high quality! I’ve also told my Indian clients that Americans will not buy their services because they are cheap; they will only take a chance with them if they have clearly superior quality to internal production and maybe a niche price!” And Tom continues: „They did that and adopted the following strategy: we are going to get CMMI certified. Every Indian company has CMMI level 4 or 5, while Americans can hardly get to level 2, ever. So Americans got the message: Indians are superior therefore they are cheaper so why not buy the Indians? And so began the Indian adventure of outsourcing.”

- Ah, it’s Agile, it’s bad, it’s not for us! So, the solution is to adapt a better method which we will then practice badly and blame the method. It’s been going on for 55 years. It’s a joke!” „You see it happen all your life; people adopt a good method, practice it badly, blame the method and move on to a new one. People don’t have a culture for doing things really well. There are cultures like let’s pick music or painting - where if you don’t do really well, you are not up on top. We, in the software industry, don’t have such a culture, a concept of doing things really well. We have a concept of „people are stupid enough to pay us lots of money for doing bad work, so let’s have fun while the party is still on.” It’s really sad but it’s worldwide. Any organization, like your own organization, can change things at least for themselves and then you can influence your community by teaching others how to do things really well.”

Another example provided by Tom to support his idea of a quality-centric philosophy was that of NASSCOM, the Indian Services organization that was to chair a conference in India. Tom strongly advocated to them and in the conference the importance of having focus on quality. For Indian companies especially, this meant a shift or reorientation towards „no cure, Conclusions no pay contracting.” People will pay for Organizations strive, in general, to the value delivered and not for the labour learn and excel. The speed at which things hours. are done determines the success. When it comes to tips and tricks for success, try So, what will happen to Agile in this to define attributes that are pivots. For highly transformative context? Where will instance, pivot from „We do Agile” to „We Agile go in 10 years’ time? Tom predicts deliver VALUE.” This is a major mentality a gloomy future. „Agile will be defeated, change. „If you do that, I predict that you dishonored. Not because Agile isn’t good but will get a competitive edge because any clibecause it is badly practiced like almost all ent would like to get the value, not just the the other fads that are coming into software. software that they think will bring them I’ve been here 55 years; new fads come in, value. We are talking about the possibilithere are maybe some good new ideas but ties of refocusing on the delivery of value people look for shortcuts, oversimplified to stakeholders and business customers practices and then they blame the method - that’s where the action has to be. When

26

no. 19/January, 2014 | www.todaysoftmag.com

you do that, you will discover that all your competitors are still busy writing code to the expense delive-

of

Tom Gilb

ring value and you will be the one looking really good! You will be able to have a different contracting model because you should go charge the value delivered and you can just as well tell your clients - You don’t take any chances with us. You don’t pay a thing if value is not delivered.” What to practice for yourselves according to Tom: • focus on delivering value • do things really well so that you can end up on top • good implementation of software methods is a market differentiator so don’t blame the methods for bad practice • get to know the past otherwise you are doomed to repeat it

Tom & Kai Gilb

„The Gilbs are not ‘academic’ – but light, yet focused, and intensely practical.” www.gilb.com Tom Gilb and Kai Gilb have, together with many professional friends and clients, personally developed the methods they


TODAY SOFTWARE MAGAZINE teach. The methods have been developed over decades of practice all over the world in both small companies and projects, as well as in the largest companies and projects. Tom is the author of nine books, and hundreds of papers on these and related subjects. His latest book ‘Competitive Engineering’ is a substantial definition of requirements ideas. His ideas on requirements are the acknowledged basis for CMMI level 4 (quantification, as initially developed at IBM from 1980). Tom has guest lectured at universities all over UK, Europe, China, India, USA, Korea – and has been a keynote speaker at dozens of technical conferences internationally. Kai Gilb has partnered with Tom in developing these ideas, holding courses and practicing them with clients since 1992. He coaches managers and product owners, writes papers, develops the courses, and is writing his own book, ‘Evo – Evolutionary Project Management & Product Development.’ There are very many organizations and

individuals who use some or all of their methods. IBM and HP were two early corporate adopters. Recently over 15,000 (and growing) engineers at Intel have adopted the “Planguage” requirements methods. Ericsson, Nokia and recently Nordea and Statoil and A Major Multinational Finance Group use parts of their methods extensively. Many smaller companies also use the methods. This interview was realized on the ISDC premises with Tom Gilb.

www.todaysoftmag.com | no. 19/January, 2014

27


management

BPMN – of great help in business process modeling

B

usiness Process Model and Notation or shortly BPMN is one of the most wellknown standards for business process modeling and management, being of great help in the definition and alignment stages of software products. The goal of BPMN is to provide all the participants of the delivery process, in other words business analysts, development and testing teams and product stakeholders with an easy-to-use and understandable unified set of elements and notations. Anita Păcurariu

anita.pacurariu@endava.com Senior Business Analyst @ Endava

28

no. 19/January | www.todaysoftmag.com

An efficiently performed business extended with sufficiently enough inforprocess management in the delivery of softmation, such that the process can be ware products is essential for the product’s analyzed, simulated and executed using success on the market and for the collaboBPEL – Business Process Execution ration between the supplier company and Language. the customer, relationship mediated by the business analyst. We all know that the In business analysis, processes – software products’ sponsors are not famil- regardless of their type (management, iar with the IT technical terms, leading to operational or support) must be modeled in several communication problems between order to benefit of the following advantages: them and the delivery teams. In order to • Understanding – processes, if facilitate this communication process and divided in atomic activities, can be to enhance the quality of the elicited funcbetter understood by all the delivery tional requirements, business processes participants. must be designed in a clear and meaningful • Monitoring and evaluation – promanner, using an easily understandable and cesses, if unambiguously and concisely standardized language. represented, can be better monitored In order to create BPMN diagrams, one and evaluated, and certain KPI – Key can use tools like: MS Visio, Sparx Systems Performance Indicators can be easily Enterprise Architect or free solutions like applied. BonitaSoft, Intalio or ProcessMaker. • Optimization – processes, if broken down into indep endent and Some words about processes and BPDs interconnected activities, can emphasize We can define a business process as bottlenecks, duplicate paths, alternative being a set of business activities perforpaths and loops, being good candidates med by the business participants in order for improvements. to reach the expected targets and deliver • Creation of new processes – provalue. These processes can be described on cesses, if correctly designed, reflecting the three detail levels and BPMN supports all as-is system behavior, become solid starof them, namely: ting points for potential product change • Process map – this is a simple flow requests or further extensions. chart • Automation – processes, if represen• Process description – this is a ted step by step, can be easily automated, flow chart enhanced with additional reducing the costs associated with deveinformation lopment and testing, improving the • Process model – this is a flow chart product quality, and optimizing the


programare maintenance and support stages. Also BPMN is easily interpretable by BPEL tools. The diagrams provided by BPMN, called BPDs – Business Process Diagrams are similar to UML activity diagrams, but are much more suggestive and easy to follow by both technical and non-technical users, being also interpretable by BPEL tools. In order to create the BPD, the business analyst must spot and model the starting event of the process, than the other events - in chronological order, and after that, the stop event – the one that closes the process. The business decisions and alternative paths (branches) are presented using gateways. If the business process is complex, it can be functionally decomposed in subprocesses, each of which being represented in a corresponding BPD, and then the obtained results can be interconnected, to obtain the overall picture.

Why use BPMN?

Now, let’s summarize some of the advantages of this standard that comes to help both the customers and the business analysts: • Simplicity – the elements and notations offered by BPMN are intuitive, being no need of previous technical knowledge. Thus it is easy for the business analyst to create BPMN diagrams, which are very easily acceptable by the business side. • Expressivity – the standard is extremely expressive and adaptable with regards to process modeling, allowing

TODAY SOFTWARE MAGAZINE a wide range on constraints. As oppoas circles, the border type determining sed to other standards, like for example the type of event. Consequently we have UML, BPMN is much more versatile and start events - simple border, intermecan exemplify much more sophisticated diate events - doubled border and stop business flows. events - bolded border. • Standardization– BPMN is an OMG • Gateways - are elements that describe – Object Management Group governed the interactions among the process flows. and maintained standard. We can notice exclusive, inclusive, paral• IT applicability – taking into lel or complex gates which are graphically account that IT is a horizontal serving represented using diamond shapes.. verticals like financial or banking sectors, a significant and continuously evolv- Connectors ing necessity to have IT support came • Sequence flows - represented by up. The majority of business processes arrows with continuous line, indicate the must be modeled clearly, eloquently activity order in a business process. and unambiguously, in order to ensure • Message flows - represented by an increased quality of the delivery and arrows with an interrupted line, indicate customer satisfaction. message exchanges between entities in different swim lanes. BPMN elements • Associations - represented by arrows A BPMN model can be described with a dotted line, are employed to assoas a succession of nodes, connected by ciate data, information and artifacts to parallel or sequential flows. In order to objects. apply BPMN in business analysis, we – the analysts – have to know a set of key Swim lanes elements used to describe the majority of • Pools – help to group activities by business processes. In the first place we participants, in interactive business must be aware that there are four classes of process. elements, as can be seen below: • Lanes – represent sub-partitions of a pool and are usually used to highlight the Flow objects roles involved in the business process. • Activities - are actions that occur during the business process, and are Artifacts graphically represented as rounded rec• Data objects – present the mantangles. Here we can talk about tasks , ner in which data and documents are sub-processes and looped tasks . used in a business process and define • Events - are actions that can start a activity inputs and/or outputs. Objects process, can occur within a process or can receive ‘states’ explaining the way can stop a process and are represented the documents get changed during the

www.todaysoftmag.com | no. 19/January, 2014

29


management BPMN – of great help in business process modeling process. • Groups – point out certain sections of the BPD without adding performance constraints. Can be employed to classify the elements used for reporting and do not obey the restrictions enforced by pools or lanes. • Annotations – provide additional information about a business process and can be connected to certain data objects by means of associations.

Good practices in BPMN modeling

Even if BPMN is flexible and does not impose design constraints, it is recommended to embrace certain team, department or organization established good practices, like: • Business processes’ activities must be presented in a left-to-right chronological order. • Business processes usually start with a triggering event and continue until business results are obtained. • The tasks and activities of a business process must be associated to business relevant roles. • A complete pattern of a business process should present ways in which objects and data are transferred. • Business processes must be hierarchically decomposed, describing sub-processes whenever possible. • It is recommended to set and employ naming conventions when modeling business processes, for example: i) element’s names must be short and concise; ii) the repetition of terms like ‘task’ or ‘process’ when naming a task or respectively a process is redundant; iii) all activities must be named as verbs iv) camel casing must be applied when naming complex items, composed of several words – i.e. “AbsenceRequest” a n d n o t “A b s e n c e r e q u e s t ” o r “absencerequest”. • If the business process evolves over time, it is recommended to version the created BPDs, in order to be able to track changes.

Case study

In what follows, I will present a straightforward example in order to underline the applicability of BPMN analysis on a specific business scenario and also the necessary steps to be performed while creating the BPD. Let’s study the process through which an employee from an IT department

30

requests an absence and his manager, after proper evaluation, approves or rejects his request. We will also take into account the situation in which the manager does not answer to the request in a given time interval, the system deciding to Fig. 1 Diagrama BPMN a procesului de solicitare absență follow an alternative path of providing the employee with auto- or rejected, either outcome being followed matic responses on the manager’s behalf. by an intermediate event of employee notiIn the given scenario, firstly we have to fication, and from both cases the flow leads identify the actors involved in the process, to the stop event. particularly the employee, the manager and On the manager’s lane, from the request the system. processing activity we have an intermeAt the second step of our analysis, we diary timeout event (its value is one day) have to determine the set of actions perfor- after whose expiry an intermediate event of med by each of the three roles, respectively: employee notification of request rejection The employee: he makes an absence is triggered, followed by the stop event. request – activity followed by a notification sent to his manager. Conclusions The manager : he processes the The existence of a standard for business employee’s absence request, deciding if he process modeling, accessible and known by approves it or not. Both decision outcomes business analysts, customers and technical are accompanied by a notification message teams is of great help not only in business sent back to the employee. analysis – as a discipline, but also in the The system: it offers an alternative flow entire delivery process, more as we talk in this process, consisting of the automated about an easy and straightforward standard rejection of the absence request, in case of that does not require previous technical timeout - the manager does not respond to background. The major benefits of BPMN the request within one day - activity that are represented by the ease of business prosends a message to the employee. cess understanding and communication At the third step we have to decide among the involved participants and the which elements to utilize for our BPD, i.e. a capacity of the resulted models to be BPEL pool with two lanes, one for the employee executed. and the other one for the manager. The system’s actions will also be modeled in the manager’s pool as the system impersonates him in the given situation. We will also need activities, gateways and start, stop and intermediary events. As for connections, sequence and message flows should be appropriate. For the fourth step we start by positioning the required BPMN elements on the BPD, and the following result come up: on the employee’s lane we put the start event, the absence request activity, the intermediary event of notifying the manager of the absence request and the stop event. On the manager’s lane we have the start event – expressed by the receipt of the employee’s absence request notification, the absence processing activity, the decision gateway by which the request is approved

no. 19/January, 2014 | www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE

HR

TOWARDS an IT COMMUNITY– via HR (4)

D

uring this year we proposed gathering and synthesizing as many opinions as possible, from the perspective of Human Resources professionals, about the IT companies from the Cluj market and about the idea of an “IT community”. For this purpose we had four meetings with Human Resources specialists from IT companies and we wrote down their opinions in articles published in the Today Software Magazine – three of these articles have appeared in the numbers 11, 13 and 16, the fourth one being the present article. In this last meeting we extracted a series already large and comparable from one managers who should approve the partiof conclusions related to the generous sub- company to another etc. In the same time, cipation of their people, guide themselves ject of Cluj IT industry. In the first part, this situation represents a „given” which, solely on immediate business interests (ex. we established with the participants which in turn, creates a series of effects that are the profit should stay as higher as possiwould be the main subjects that preoccupy positive only on short-term, but possibly ble), as the entire company does. In other and challenge the Human Resources speci- negative on the medium or long-term. situations, the managers that lead a certain alists from the IT organizations – revising However, these opinions that belong to us project, for example, are thinking punctuthe issues discussed in the previous work- will be presented in the final part of this ally at the actual needs for development shops. In the second part of the meeting we article. of their people, and a lot less strategically, sketched what would mean a desirable IT such as: „what my people should know in community in Cluj and which were, largely, Professional and personal development the future, in order to ensure a larger flethe specific actions in 2013 that could bring activity of the employees from these comxibility and professionalism in the possible closer the group of companies from Cluj panies new projects?” Moreover, especially due towards the ideal of a community. Regarding the development activity of to the situation described at point 1 – the the people from IT, the Human Resources lack of enough human resources – manaThe main challenges from 2013 in IT specialists have to cope with a certain para- gers are sometimes forced to refuse the companies doxical situation. On the one hand, when participation of the people to the training, Revising the main subjects discussed new employees are being recruited, the even for a couple of hours, because they in the previous workshops, we observed vast majority state that they want to have cannot finish certain phases of the project, that the main challenges for the Human as many learning opportunities, trainings in a short period, with limited resources. Resources specialists from the IT compa- and other forms of development as possi- Along with all this reluctance that comes nies, which were stated at the beginning ble. After employment, their interest for from the mangers, the employees do not of the year, did not modify significantly in this type of development actions – organi- manifest significant initiatives, requests for 2013. zed in the company or at the community participation to various forms of developlevel – decreases abruptly for the vast majo- ment. Or, when they do participate, the real Attracting and retaining people in the IT rity of employees and, unfortunately, at the application rate in daily work is low. companies management level, too. Unfortunately, even though the benefit The action of recruiting and retaining In case of “soft-skills” development, the at the individual level is more than obvious people in organizations still represents a interest is even lower than for the “techni- – the diploma, certification, knowledge, challenge and will continue to be this way cal courses” domain – but, paradoxically, abilities belong to that person wherever he/ as long as the ratio between the quantity of even at this category, the participation she would go in the future – this argument is projects brought to Cluj and the availability rate is low compared to the possible num- not sufficiently valued by the IT employees. of specialists on the market will continue ber of participants. Most of the times, It is true that, due to work specifications, to be a supra-unitary one, therefore an exactly those who should be a model in the there are actions of self-didacticism which unbalanced one. In this regard, there are direction of lifelong learning and proac- are practiced among the IT people, which many factors that contribute to this tive attitude regarding development – the are necessary and it is good that they are disequilibrium: for example, the technical managers – are those who prevent, to a part of their professional behaviour – universities (still) do not have the capa- large extent, the development process. The they help the accomplishment of a good city to provide faster and better prepared causes can be of many kinds and, although immediate performance (they also “help” employees; the vast majority of IT compa- they lead to negative effects, are understan- in creating an illusion like: „but we learn nies from Cluj are working in this moment dable. For example, in some companies, every day!”). Human Resources people did on outsourcing projects, which requires a the costs for trainings (among which the not manage yet to convince the most of large and fast infusion with projects and, technical ones are significantly higher) are IT employees that lifelong, systematic and therefore, a large necessity of workforce; subtracted from the participants’ depart- strategic development will help them in the benefits offered to the employees are ment budget and, most of the times, the building a career, not just in accomplishing www.todaysoftmag.com | no. 19/January, 2014

31


HR TOWARDS an IT COMMUNITY– via HR (4) a “here and now” performance, and if, in a few years, when the competition for professionalism on this market becomes … a real competition, then, those who have grown thoroughly and strategically will be those who will succeed. We want to mention that these conclusions refer to an average of IT employees and, of course, the punctual cases of passionate and dedicated people who participate in any training / conference etc. are excluded from these affirmations. *** Starting from these facts that are present in the IT companies from Cluj, we propose to you an exercise: one of the questions that all IT employees would be worth reflecting now, at the beginning of the new year, is: „What would happen if, starting tomorrow, the outsourcing from Cluj would disappear / move to another part? What would happen to me, to my colleagues? What can I do today in order to prevent such a scenario?” – in the strategic thinking theories, such analyses, processes are called risk analyses…

And still … what do we do with the idea of “Cluj IT community”? A part of the answer to this question was given by the participants to this project in the previous workshop and we invite you to (re)-read the article from number 16 of TSM in which are presented the reasons why a community (not just a group) is necessary at the level of Cluj IT industry and in which are presented some punctual ideas that can contribute to the growth of such a community. In this last meeting we wanted to lead the discussion to another level of generality and we asked the participants, firstly, to sketch what means an ideal IT community in Cluj (not in Silicon Valley, in India or in other parts… but in CLUJ!). Then, taking into consideration this benchmark, they were asked to assess, from their perspective, which were the steps that were made in 2013 towards this desirable direction. Therefore, an ideal community, desired by IT at Cluj would mean (Attention! This paragraph represents a dream… Without the courage to dream, there could not be any progress! Anyone is welcomed to add punctual elements in this dream described at this moment by the Human Resources specialists): • A major number of “local actors” as entrepreneurs / shareholders in IT companies – in order to have a real interest in development at the local level (regarding

32

this aspect, selling the local companies to multinational companies will make it harder to form a local community and will raise the instability of the IT market) • A major percentage from the IT business from Cluj should be „product based”; the outsourcing business should decrease significantly. • At the community level, there is a significant number of large projects, on which consortiums of companies, professional freelancers are working all together. • The important international clients are determined and attracted to start large projects on the Cluj market, because they have confidence that here they can find the necessary skills to complete their projects. This fact also happens because, abroad, a unitary, positive image/brand of the IT community from Cluj is being promoted as representing a professional, innovative and trustful work potential. • The Cluj IT community is supported through concrete actions by the local administration and receives support also from national level. • Cluj offers, to potential large clients, palpable evidence of the innovative capacity and of the creative potential of the local specialists. There are, for example, excellent training centres at the Cluj level, private institutions for specialized education, a flexible and anchored in reality university environment, research groups with concrete results etc. • The people who work in the Cluj IT (also including entrepreneurs, managers etc) have certain particularities that make them extremely valuable individually, but also in a team: they are passionate about their field, are dedicated to innovation, have a visionary mentality (willing to win less in the short term, in order to build something durable), have courage to take certain risks, are proactive and flexible. Such a functional community would ensure a “success story” in the local and national economy and would represent a significantly more stable business sector. If this is the desired target, which were the concrete actions realized in 2013 so that the IT organizations from Cluj go closer to this target? – a target that is still viewed by the Human Resources specialists as being quite far away… Unfortunately, for those present at the workshop, some clear actions in this direction were not very visible. However, there

no. 19/January, 2014 | www.todaysoftmag.com

are a series of initiatives – but they produce too small or not very visible effects at the Cluj community level. For example: • The association with the biggest possible positive impact in the direction of creating this ideal community is IT Cluster – about which, however, there is no visible concrete information regarding the advancement in the direction of some palpable results. It is known that a series of actions were initiated with universities and national authorities. However, at this moment no concrete results are seen. • On the IT market, a series of technical events happened this year – with the aim of professional development and sharing good practices – which represents a good start! Unfortunately, the participation rate to these events has not reached a critical mass that would help creating a pro-community mentality. At such events, conferences, usually participates that minority of ultra-passionate people … but they are a minority. If we were to synthesize in one paragraph the opinions expressed on the course of this entire year in this research, we could say that the opinion of the HR from the Cluj IT is: at this moment, we are a “on-the-wave industry”; we are fine, we have work to do, we work quite well qualitatively; we have challenges regarding the number of specialists in the domain and regarding the development of the employees – however these are not too acute “pains”; we dream beautifully at an IT community in Cluj about which we know that it would have quite a lot of benefits, but, at this moment, there is not enough drive towards this strategic way of working.

An opinion from the outside

At the end of this initiative started by our team – Danis Consulting – we considered appropriate to express a series of our opinions regarding all these radiographs made on the Cluj IT market. The opinions that you will find below are not necessarily those of the participants at our workshops or those of the IT people with whom we have collaborated during the last year. We believe that any perspective / point of view can be helpful in making some strategic decisions. The opinions written below are based on many situations in which we had the opportunity to observe the IT environment in different depictions: the discussions


TODAY SOFTWARE MAGAZINE from this research, discussions with managers / entrepreneurs from the Cluj IT field, participations at various events on the Cluj IT market (ex: monthly publication of TSM, IT Days conference), direct collaborations on various development programs with some IT companies etc. Therefore, how we see certain aspects from the Cluj IT industry: • We observed that IT people from Cluj have a very large creative and professionalism potential. We believe that the Cluj IT people are extremely intelligent and capable of good quality results on this global technology and innovation market. • At this moment, the situation of the limited human resources on the Cluj market generates a series of negative effects on medium and long term (beyond the stress caused by the recruiting process) – which the important decisional actors should take into consideration and conceive, starting from now, a strategy that could prevent them (maybe people are already working on such strategies; but we have not seen concrete results in this direction). Our recommendation would be to take into consideration the possible risks that could emerge soon and to create strategies to prevent them. Some of these potential negative effects of the disequilibrium between demand and supply on the workforce market could be (on medium and long term): • Creating a benefits and remunerations system which is exaggeratedly large – which could not be sustained anymore by the clients in the future, with the danger that clients would reorient to cheaper resources; • Lack of applying some real performance standards that could force the creation of good quality projects delivered to the clients. In short, at this moment, if people do not perform at a certain quality (even after warnings, help in development etc.), due to the lack of resources, the probability to be fired and to apply a unitary standard of quality which would maintain a good image in front of the clients is low. On the medium term, this fact is dangerous, because low quality values will be promoted. • On a workforce market in which, from the point of view of the candidates, there is almost no competition, the natural regulation mechanisms of non-values do not work, which can lead again to promoting a low quality

of performance. • We have observed that, for a large majority of employees, there is a tendency to be complacent with the present development stage – which is understandable in the given context. Any person would do the same: he/she receives very good incomes starting from the first job, there are no risks to remain without a job, nobody is doing anything that could annoy him in order to prevent him from leaving – then, why would someone bother now with personal development? We perfectly understand this attitude; however we believe that it is a dangerous trap, which the IT employees are getting in. It would be very useful for the companies’ leaders to move the emphasis on the qualitative growth inside the business that they are leading now and less on the quantitative growth of the business (this strategy can also include moving from an outsourcing business to a product-based business, which implies initial investments, maybe even financial loses until results will be obtained). Therefore, what will happen to this large group of people in a few years if the outsourcing business does not survive in Cluj? There will be a large group of unemployed people who will suffer a great decline in their life standards, with reduced abilities to adapt to other standards (which are harsher for sure), without a career plan. Or they will emigrate… • In order to create a Cluj IT community – a desideratum which we are convinced that would be the best thing that could happen to the local economy and to each particular company, therefore a “win-win” situation – we think that, at this moment, the main factor that is braking this accomplishment is NOT the economic facilities or the support from the authorities (they also have a role, but not a vital one). We consider that the main brake is the mentality: at this moment, each company, individually, is functioning sufficiently well and it is hard for them to think “what to do in order for ALL of us to function well in the future”? Also, we believe that a significant group of local leaders is necessary (not multinational companies that have bought the local organizations), who are really dedicated to the idea of a Cluj IT community, who could create rapidly a strategic vision for this idea and, with enough enthusiasm and action, to inspire all those people who are involved in this community! After the first steps were

made, the positive drive would propagate fast enough; because we noticed that, in the IT industry, the powerful leaders are appreciated and followed without any problems. We are aware that some of our opinions can cause controversies – which, in fact, would make us very glad! It is better to have debates and exchanges of ideas, than a state of idleness like: „we do not bother with anything”. In conclusion: it is known what the IT community from Cluj could look like (as a benchmark). In 2013, the concrete steps made in this direction were, unfortunately, extremely weak, eventually some formal appreciations. At a certain moment, someone may ask why this action was not made in the past. We do not want it? We cannot do it? *** We wish to thank all the people who, during this year, honoured us with their presence at this initiative of discussions – without any direct benefit, being motivated solely by the desire to contribute in a constructive manner! *** We hope that our entire action – with all the information published, visible for anyone who is interested – will be helpful to those who have decision power on this IT market from Cluj and that they will be interested to transform a happy opportunity in an economical success story for Cluj and for Romania, demonstrating that “it is possible for us, too!” !

Cristina Nicule

cristina.nicule@danis.ro Consultant @ Danis Consulting

Dan Ionescu

dan.ionescu@danis.ro Executive director @ Danis Consulting

www.todaysoftmag.com | no. 19/January, 2014

33


programming

Deep learning

Î

In the last 2-3 years, a new buzzword has appeared: deep learning. In 2012, Microsoft presented a pretty impressive demo with an application that recognized spoken English, translated the text to Chinese and then spoke the translation with the original speakers voice1.In the same year, Google developed a system that, from 10 million YouTube thumbnails, learned by itself to recognize cats (and 22.000 other categories of objects) 2. Roland Szabo

roland.szabo@3pillarglobal.com Junior Python Developer @ 3 Pillar Global

In December 2013, Facebook opened a new research lab, led by Yann LeCunn from New York University, one of the foremost researchers in deep learning. Deep learning represents a category of machine learning algorithms that differ from previous ones by not learning the desired function directly, but they learn how to process the input data first. Until now, for example, to recognize objects in images, researchers developed various feature extractors, the more specific to an object the better, and after applying them to an image, they used a classification algorithm such as an SVM or a Random Forest to determine what was in each image. For some objects, there are really good feature extractors (for faces, for example), but for others not (paper shredders represent a challenge even for humans to recognize and to describe)3.But deep learning algorithms don’t require this feature extraction step because they learn to do it themselves. The deep part of the name comes from the fact that instead of having a single layer that receives the input data and outputs the desired result, we have a series of layers that process data received from the previous layer, extracting higher and higher levels of features. Only the last layer is used to obtain the result, after the data has been transformed and compressed. 1 Microsoft Research shows a promising new breakthrough in speech translation technology 2 Building High-level Features Using Large Scale Unsupervised Learning 3 ht t p : / / w w w. t h e r e g i s t e r. c o. u k / 2 0 1 3 / 1 1 / 1 5 / google_thinking_machines/

34

no. 19/January | www.todaysoftmag.com

Filters learned by a Restricted Boltzmann Machine on the MNIST dataset

The beginnings of „deep learning”

Most of the deep learning algorithms are some kind of neural networks. The first kind of neural network was proposed in 1958 by Frank Rosenblatt, who was using research done by Warren McCulloch and Walter Pitts on the functioning of the neurons in the animal brain. The perceptron is a very simple model: each element of the input is multiplied by a weight and then they are all summed. If the result is larger than a bias, the result is 1, else it is 0. These weights and biases have to be adapted for each dataset, using the perceptron learning algorithm. Being a simple model, it was quickly revealed that it had a big problem: it worked only for linearly separable data (for example, in a 2D plane, if all the points with the positive label can be separated by a line from all the points that have a negative label). This was a big limitation, which led


TODAY SOFTWARE MAGAZINE to the disuse of neural networks for a while. In 1975, Paul Werberos discovered the backpropagation algorithm, which made it possible to use multiple layers in neural networks and to use different activation functions (which made the transition from one class to another smooth, instead of abrupt). Hornik also proved mathematically that a neural network with one hidden layer, with enough neurons, could approximate any computable function to an arbitrary precision4. The backpropagation algorithm works in the following way: you initialize the weights randomly and you do a normal calculation to see what result you get. You calculate the difference between the expected and the obtained result and you “propagate” it back to the penultimate layer, dividing it proportionally with each neurons weight. And you continue doing this until you get to the first layer. Then you repeat this whole cycle until the obtained error is low enough for your purposes (or until you run out of time and patience!). So, did we solve the problem, do we have the perfect machine learning algorithm? Not quite. Two other problems were found. The first one was that the number of neurons necessary to approximate functions grew exponentially with the size of the input. The other one was that it was proved that training neural networks was an NP-Complete problem5(which is presumed to be unsolvable in polynomial time). Because of these two problems, and because around that time several other machine learning algorithms were developed, which traded off generality for speed, such as decision trees (1986), SVM (1996), random forests (1995) and others, neural networks started to be less and less popular with most researchers. Some still obtained good results with them, such as Yann LeCun with LeNet (1998), which is a system for recognizing handwritten digits and uses convolutional neural networks; this system is used by many banks

The layers of one variation of LeNet

new algorithms start the search for the parameters of the neural networks from a place that is closer to the optimal value. Instead of randomly choosing the initial weights, these neural networks were trained layer by layer, in an unsupervised way, to find the structure of the data, and only at the end were some final small corrections done using the backpropagation algorithm.

a deep and wide neural net, trained on a GPU and on a dataset augmented with elastic deformations, one can get excellent results on MNIST: 0.35% error . In 2012, his group set the current record on MNIST, 0.23%, which is smaller than the average human error rate for this task . This time he used convolutional neural networks and max-pooling, but still without pretraining.

One of the standard testing methods for machine learning algorithms is MNIST6, a set of 70.000 images, each containing a digit. The set is split into two parts, 60.000 being used for training, and 10.000 for testing (this is done to verify that the algorithm really did learn what each digit is like and not just memorized the input data). On this dataset, a neural network pretrained with RBMs got an error of 1%, which at the time was in the top 5 best results.

So the circle has closed and we are back where we “started”: the latest papers don’t use unsupervised pretraining anymore, only the backpropagation algorithm. The improvements come from new activation functions, where the Rectified Linear Units are all the rage now , in regularization methods (which help with generalization and prevent memorization) such as maxout and dropout , and from alternating convolutional layers with max-pooling ones. In the following articles I will go into more details about each of the mentioned techniques and present their advantages and disadvantages, and how you can implement them using various machine learning frameworks.

The structure of a Deep Belief Network, made out of stacked RBMs.

In 2007 Yoshua Bengio presented autoencoders as an alternative to RBM7which were then developed and several variations appeared: denoising autoencoders , sparse autoencoders and others. There were many progresses in the pretraining area until, in 2010, James Martens published a paper in which he presented Main discovery a novel algorithm for finding the weights, A major paradigm change came in using 2nd order derivatives, without any 2006, when Geoffrey Hinton published two pretraining, and he got better results than papers containing new and revolutionary what had been published until then . ideas: „Reducing the dimensionality of data with neural networks” and „A fast learning In the same year, Dan Cireșan showed algorithm for deep belief nets”, both based that it’s not necessary to use this algorithm, on Restricted Boltzmann Machines. These but, by using the classical backpropagation, 4 http://www.sciencedirect.com/science/article/ pii/0893608089900208 5 http://dl.acm.org/citation.cfm?id=93033

6 http://yann.lecun.com/exdb/mnist/ 7 http://machinelearning.wustl.edu/mlpapers/paper_ files/NIPS2006_739.pdf

www.todaysoftmag.com | no. 19/January, 2014

35


startups

research

Dynamic Nutrition Behavior Awareness System For The Olders

Tudor Cioară tudor.cioara@cs.utcluj.ro Asistent Doctor Engineer @UTCN

R

ecent studies have shown that in Europe more than 15% of the older population is affected by poor nutrition and malnutrition caused by ageing problems such as decrease in sensitivity, difficulty in chewing and swallowing, lack of transportation, physical difficulty, forgetfulness and other issues. The nutrition related problems contribute to / or exacerbate the older adults chronic and acute diseases, speed up the development of degenerative diseases, increase the time needed to recover from illness and may even cause death. In this context the project DIET4Elders (Dynamic nutrItion bEhavior awareness sysTem FOR the ELDERS) aims at developing an innovative ICT-based system that will support and help elders during their daily life self-feeding activities and will early detect and prevent the instauration of malnutrition. Figure 1 shows the DIET4Elders overall system conceptual architecture. The Monitoring Layer will collect data regarding the older adult’s self-feeding activities and the context in which these activities took place using the new state of the art sensors such as: • smart cards and RFID (Radiofrequency identification) tags and readers to detect the type of food eaten; • smart containers or smart plates to detect the quantity of food eaten; • inertial and magnetic position

36

no. 19/January | www.todaysoftmag.com

sensors to detect the intake motions; • strain gauge and acoustic sensors for detecting the chewing and swallowing problems; • heart rate and blood pressure sensors for detecting the diet-related psychology, etc. The Analysis and Assessment Layer aims at: (i) identifying the daily life activity that the older adult is currently carrying out, (ii) constructing the older adult activity diagram representing his/her selffeeding behaviour and (iii) identifying the unhealthy self-feeding behaviours. On-line reasoning based techniques are used with the goals of identifying the older adult’s current daily life activity and eventually identifying critical situations (e.g. food chocking, lack of food in the house, too much drugs are taken all at once, etc.) in


TODAY SOFTWARE MAGAZINE available in the market will comply with a service description specification based on semantic annotation. To address the DIET4Elders project ambitious goals the consortium brings together partners with specific expertise in the following domains: telehealthcare (Tunstall Healthcare , the world’s leading provider of telehealthcare solutions), information and computer technology (Kings College London and the Distributed Systems Research Laboratory from the Technical University of Cluj-Napoca), software development (ISOIN ) and food providing and delivery to elders (COESCO). The project success will subsequently help reducing homecare, healthcare, and other associated costs, which in Europe are currently estimated around 170 billion euro per year .

Figure 1. DIET4Elders system conceptual architecture

which urgent alarming and intervention of informal carers is required. The identified older adult’s self-feeding activities are chained in activities diagrams describing the overall older adult’s self-feeding behaviour. Prediction and knowledge engineering techniques are employed on the constructed self-feeding activities diagram and used to proactively detect and identify unhealthy behavioural patterns (as defined by nutritionists). The Support Services Layer will provide services to: (i) assist older adults and their informal carers during daily self-feeding activities aiming at detecting and preventing the instauration of malnutrition, (ii) help the nutritionists to establish the degree in which the older adults follow their prescribed diet and to dynamically adjust it and (iii) enable the dynamic selection, based on the prescribed diet, of suitable food service provider and potentially enable automated shopping (Diet Aware Food Ordering Service). The Diet Aware Food Ordering Service will aggregate the food delivery services of different providers and will guide the older adults and their informal carers to order the right food that complies to the nutritionists recommended diet. The selection of food services which satisfy complex criteria like the older adult recommended diet or preferences for a certain type of food is not a trivial task and cannot be addressed using conventional techniques. There are a large number of food delivery services available on the market offering various types of food. In this context, we will model the food services selection and aggregation problem as a combinatorial optimization problem which aims to find the optimal combination of food services such that the considered criteria are met. Such an optimization problem requires specific search strategies capable of identifying the optimal or near optimal solutions. For these techniques to work effectively, the system will create a virtual electronic marketplace which will define food services in a diet and nutritionally rich context and where food providers can register their services. All the food services registered and www.todaysoftmag.com | no. 19/January, 2014

37


architecture

Command Query Responsibility Segregation What is CQRS and why should you care?

C

QRS is an architectural pattern that recommends the separation between the command processing responsibility and query responsibility. Consequently, the pattern proposes that it is not necessary to have the same data store or even technology, for both read and write purposes.

The separate treatment of the two kinds of responsibilities should be implemented in two different layers of the application.

. Fig. 1 – One possible approach to CQRS

Rationale

The pattern recognizes that query and command processing are fundamentally different. • Command processing follows, sometimes, extremely complex business rules that dictate the set of valid combinations of data manipulations – for command processing, consistency constraints and integrity are of the essence. • Using a SQL database for storage, for command processing normalization is very important. • Command processing depends on the transactional consistency of data. • Command processing can be asynchronous – which is sometimes a great thing to achieve. • Query requires no integrity constraints and therefore no normalization, so de-normalized databases are a great choice since queries are faster. • Query requires complex filters and aggregations of data for

38

no. 19/January, 2014 | www.todaysoftmag.com

the benefit of the user interface. Taking into account the statements above, it makes sense to consider using two different models, one for enforcing business rules and one for presenting information. An important thing to note is that it is NOT forbidden for the command processing layer to read data. It is almost always required to read data in order to implement the command layer! What is important, however, is to recognize that the read requirements of the command processing layer are fundamentally different than those of the query layer. For instance, reads performed by the command layer are generally against the primary key of the entities and the read logic itself is hard coded in the command processing layer. Instead, the query layer needs to provide a flexible filter mechanism to allow users to find the data they need. As an implementation hint, using SQL databases for storage, indexes for the command processing database are probably completely different than indexes used for the query database. Furthermore, the command processing DB has no need of historic data which can be safely deleted from the DB, in order to improve performance. On the other hand, the query DB will probably maintain historic data, at least for a reasonable amount of time. To go further down this road, the query database itself will probably not maintain all the historic data either, but only commonly used historic data. What is commonly used historic data and how old it might get depends entirely on the application, but truly old historic data, the kind only ever likely to appear in reports, would probably be best stored in a reporting database which is only seldom used. Going back to what CQRS forbids or not, what IS instead forbidden is for the query layer to perform any data modifications (write access) altogether! Remember the de-normalized database and the assumption that the query layer does not depend on integrity constraints and transactional consistency. Another argument behind the pattern is the observation that the read frequency is not equal to the write frequency. Users usually issue a lot of read requests per each write command, if any. Therefore, it makes sense that the read side of the application might need to scale a lot more than the write side. Furthermore, there is no real need to present data from the same database used for writing. This is because presented data does not necessarily need to be up to date instantly, and it usually isn’t. Even though the current data is read from the database, once presented on the screen, it is already old and potentially out


TODAY SOFTWARE startups MAGAZINE of date. High-load applications use caching anyway (but unfortunately as a performance improvement afterthought not as an architecture decision). So, we might as well accept the cache and the fact that the presented data might be stale and incorporate these facts into our architecture. Accepting this would allow for a lot of simplification and performance improvement as described in what follows.

Why to implement CQRS

a read model (basically a view-model in MVC parlance) for the query side, but using the same DB. I did this because I felt that CQRS is more about the separation of responsibilities of command processing and query rather than the separation of the physical data stores. The query layer would use views while the command processing layer would use tables. I got all the benefits of CQRS except differential scaling for read and write but also without the effort of synchronizing the query DBs with the command processing DB. If scaling would be required, I can easily create a query DB with tables identical to the currently implemented views and just add an ETL (Extract, Transform and Load) mechanism to sync with the command processing DB. Now, I must highlight that moving from views in the same DB to tables in a different DB kept in sync via asynchronous ETL would mean that the application can no longer assume that data changes are synchronously available with command processing!

Besides the benefit of being able to control scaling between read and write access there are other important benefits, as follows: • It allows the command processing side to be simple and specialized for business rule enforcement, without concerning about the UI needs. • It allows the query side to be simple and specialized for filtering and aggregations of data in the interest of UI, without constraining it to the model used for writing. • It allows the development of the UI and query side to be done in parallel with the development of the command processing side. • It allows the query and the command processing layers to evolve differently in time. • It allows the usage of specialized technologies for different layers. So, the command processing layer might use an ORM (Object-Relational Mapper), like Entity Framework, but the query layer does not necessarily need a full-fledged ORM – it might settle to a micro-ORM such as Dapper or no ORM at all. This is because the query layer does not need an identity map or change tracking and those features only reduce the query speed! • Because it forces the segregation of query and command processing responsibilities, the architecture is more easily migrated to multi-tier by moving, for example, the command processing layer to a service. • Because of this separation, it is also possible to have more senior developers work on the domain model of the command processing side, while having more junior developers work on the data acquisition for UI presentation (aka query layer) side. • Using CQRS will probably make an application more Azure friendly since it could use Table Storage for command processing but use SQL Database for the query layer. Table Storage Fig. 2 – Our custom implementation of CQRS is not very suitable for reporting type scenarios like UI, but is very useful (and cheap) for command processing. Generally, I reckon, you would suffice in using the partition key and row key How does CQRS fit with agile practices that Table Storage provides for accessing data in the interest of In order for agile practices to be successfully applied in the command processing. development of a product, it is not only a matter of successful application of the chosen agile process (SCRUM, Kanban, etc.) So, when not to use CQRS ? but it is also necessary for the architecture to allow the product to Well, probably you wouldn’t want to use it when implementing evolve – sometimes quite unexpectedly! very simple applications or applications where the write model is Having a rigid architecture, high coupling, low cohesion or similar to the read model, or easily adaptable. Furthermore, and a great degree of complexity contribute to increasing what I call more importantly, you don’t expect to have changes in the future application inertia. Like in physics, inertia is the application’s that increase the complexity of the business layer to a degree that resistance to change. It is obvious that this would defeat any agile maintaining both models (read and write) in the same classes process attempt at the development level, thus making only a becomes unwieldy – although, practically, how would you be able superficial application of agile principles. to predict this in an agile environment? Having said these, CQRS helps a great deal and this alone may Nonetheless, except extremely simple, low on business layer justify its usage. complexity, slow evolving (or not evolving at all) applications it CQRS helps by allowing us to keep two disconnected models might make sense to plan ahead and separate the two models and in the same application: two responsibilities even though not using two databases. This is • A domain model that enforces the business rules a strategy that I have used myself - implementing two models: a • A read model that is optimized for what the application full-fledged domain model for the command processing side, and actually needs to show on the UI www.todaysoftmag.com | no. 19/January, 2014

39


architecture The great thing is that these two models, each handled by its corresponding layer (the command processing layer and the query layer respectively) can evolve independently and have no connection to one another. Therefore, we have no coupling between them and each is interested only by its specific purpose, thus having a high cohesion. Low coupling and high cohesion are paramount for the application to be able to evolve with agility. So, if any new requirement in business rules should come, only the domain model in the command processing layer will probably be affected. Similarly, if any new requirement in presentation should come, only the read model in the query layer will probably be affected. But, even if new requirements that need to touch both models in both layers should come, each layer evolves independently to handle the new requirements. This is still better than having one super complex model with both responsibilities that needs to be changed! Furthermore, agility is not only about handling requirements on an existing product but is also about the way we go about developing a new product. Well, CQRS helps us here as well since it allows us to easily mock the command processing side but still enabling the creation of the read model with a mock query layer to support it. The application can easily add features on that framework as requirements unfold. Lastly, the ability to easily mock parts of the application is a prerequisite for successful coverage of unit testing. This allows for TDD (Test-Driven Development) or BDD (Behavior-Driven Development) which provide a good (if not mandatory) foundation for any agile development approach.

What about security

I am happy to be able to wrap this up quickly and just say that security is not directly the responsibility of either layer – query or command processing! Security with regards to displayed information can generally be implemented as a series of imposed filters. But, the decision to impose certain filters on data is not made in the query layer itself but rather in a layer above. In terms of security of what data manipulations can be performed by a given actor, this appears more of an issue of usecases, since the actor will fall into one of the predefined application roles. Therefore, again, it is not the responsibility of the command layer to enforce security but just

40

Command Query Responsibility Segregation to execute commands. Validating whether a given role should be able to execute a given command, dependent on the role, the command type and its parameters, is up to a higher layer, above the command layer. So, it appears that the decision to use CQRS does not impact security concerns very much.

Risks

Applying CQRS is most beneficial when the application is complex and might need to scale out. Nonetheless, CQRS has its advantages regardless of scalability, as illustrated above. I recommend that the application specifics are carefully analyzed prior to committing to the application of CQRS but I feel that generally it might be a good idea!

Like any new pattern, concept or technology one encounters, there are risks in applying it, more so if the pattern implies a paradigm shift. In this case the fact that the read database might not be the same as the write database and the fact that we now have 2 models, one for query and one for command processing, is a paradigm shift that may take some time to apply properly. Also, the fact that the changed data is not immediately available once the command has been executed will make the application a bit more complex since it needs to handle this.

Conclusions

CQRS is a powerful and smart pattern for the reasons stated above that I will summarize again below: • It allows different scalabilities for the read and the write sides • It is based on sound observations that show that reads are a lot more frequent than writes. • It allows the parallelization of development effort for the two layers. • It allows a correct and pure domain model on the command processing side to be maintained unaffected by query requirements (which might change often during and after the development of an application). • It allows command processing and query to use different, fit, technologies, thus potentially reducing complexity, development time and increasing performance. • It reduces application complexity by clearly separating responsibilities at a macro level. • It fits very well with, and under certain circumstances even enables the application of, domain-driven design (which is a very important aspect in its own right). • Allows for even more different persistence mechanisms such as event sourcing (which is the most appropriate in some cases).

no. 19/January, 2014 | www.todaysoftmag.com

Andrei Păcurariu

andrei.pacurariu@endava.com Software arhitect @ Endava


HR

TODAY SOFTWARE MAGAZINE

Startup Nation(s)

H

ow come you moved from Israel to Cluj? is one of the first questions I usually hear when meeting new people in Romania. “Well, I wanted to build a startup.” Few people take this answer seriously, in light of Israel’s image as a startup heaven. According to the Startup Genome report, the top startup ecosystems in the world are: Silicon Valley, Tel Aviv, LA, Seattle, NYC, Boston and London, in that order. The official statistics support this image, citing close to 5,000 Israeli startups attracting $2 billion a year in funding mostly from international investors. Some high profile exits make headlines and inspire more waves of entrepreneurs and investors to take a plunge into the risky, yet potentially profitable, startup waters. A few recent examples include: Waze, a navigation app acquired by Google for $1B last year; NDS, a paid TV software company which Cisco paid $5B for in 2012; PrimeSense, the 3D sensor pioneer bought by Apple in the autumn for $360M; Onavo, a mobile analytics startup purchased by Facebook for $150M; Trusteer, a web security startup whose founders and investors received around $900M from IBM last summer. In some cases, big exits mean relocating the local team to the US, but many of these American buyers convert the Israeli startups into their R&D centers, exposing them to larger markets and further developing the local hi-tech environment. Even when startups fail, which happens more often than not, highly-demanded professionals and well connected entrepreneurs find themselves joining or starting new enterprises, leveraging their experience and contacts, having higher chances of success on their subsequent ventures. Being a small country, covering an area of less than 10% of Romania, Israelis are very connected to each other. It rarely takes more than an hour to get to a meeting

anywhere in the country. The local culture is characterized by having low power distance, where individuals tend to challenge authority and organizations are more horizontal, having relatively small power differences between management and employees. This makes it easier to reach virtually anyone, from a government minister or a chairman of a big corporation. It also makes it quicker to find partners and investors. Successful entrepreneurs are more than happy to share their stories and inspire others to follow suit. Many become investors and put the money they made back into the startup economy. Some become mentors to promising beginners, guiding them through turbulent waters, and allowing them access to their own rolodex of business contacts and venture capital. It takes a certain kind of nerve, known as ”Chutzpah” and pronounced huuts-pah, to take a mere idea and build it into a global business. It also requires inspiration, experienced mentorship and a supporting environment. For this reason I am helping organize the first “Startup Pirates” in Cluj this February. This week-long intensive experience is designed for talented people with dreams, who are willing to take a chance to make them come true.

Dhyan Or

do@socialrehub.info CEO & Co-fondator @ Social ReHub

www.todaysoftmag.com | no. 19/January, 2014

41


HR

programare

Innovative Leadership and the Building of Sustainable Systems

T

he first things that come to our minds when we hear about Amazon are printers, books, games, food products, toys, clothes, car spare parts and many more. Amazon has become a world retailer and the key word for it is on-line. Ever since its launching in 1994, Amazon’s mission has been to become the company most centered on customer’s needs in the world, where people can find on-line anything they wish to buy. Monica Soare

monica.soare@artwinconsulting.ro Manager @ Artwin

42

no. 19/January | www.todaysoftmag.com

However, if we take a closer look, Amazon is not a mere on-line service or a traditional retailer model, but an intensive technology, more precisely, an innovation factory – obsessed with the creation of new technologies or the development of new business models. With over 180 licenses awarded only in 2011, Amazon has an intellectual property portfolio which competes with many of the technology giants. Amazon’s CEO, Jeff Bezos, does not talk about products or purchases in his meetings with the shareholders, but about how they can improve the services provided by Amazon, namely: the work flow, waiting systems, the service oriented architecture and data analysis. Apparently a software company, having some distribution capacity, Amazon has become a symbol, precisely because it is willing to invest in a continuous development and improvement of its services, according to the tendency of the market. The innovation leader of Amazon shares a few secrets with the other leaders, so that they can create an innovation culture within their companies, namely: 1. He advices us not to go for profit maximization on a short term, but instead to build something sustainable on

a long term. Bezos says he is indifferent to the fluctuations of the capital market, since the investments from which we gain the most are those which we invest with patience. 2. According to him, innovation does not require a high budget, an R&D department, but rather a culture focused of satisfying the client’s needs. 3. The rule of the two pizzas: Bezos states that we have to form our teams so that they can be fed by 2 pizzas, meaning 5-7 people. This is because smaller teams are more agile, they get to work more quickly and keep things moving. 4. For Bezos, to make mistakes is something necessary; he states that, in Amazon, each employee is an inventor and that it is only by mistakes that services can be perfected. 5. For a company that wishes to be innovative, Bezos encourages hiring pioneers who are willing to explore and who wish to serve the clients in new ways. When it comes to innovative leadership, we find out that those who belong to this category are a narrow group of people who always wish to satisfy the customer’s needs and are convinced that what they


TODAY SOFTWARE MAGAZINE produce today is not a perfect product for tomorrow’s tendencies. Characterized by the desire to permanently satisfy the customer’s needs by constant improvement of the delivered services, the innovative leader often comes out of both his personal comfort zone and that of the business he is leading. Since he is interested in implementing the latest technologies and the latest trends, he allows people to fail, as he encourages creativity and the finding of new solutions. The innovative leader runs the business in an assertive manner, focusing on creating a sustainable system, which is ready to answer all the claims coming from the customer. He builds a system that is resistant towards ambiguity, being less interested in immediate financial results. It seems easy to talk about a culture of innovation or about the steps towards building an innovative culture, but the costs and the implications of such a strategy are very high. Firstly, people capable of implementing these strategies are hard to find, and the management of change is difficult and troublesome in any business. We are talking about an innovation strategy when a company sees the executive’s motivation as important, when there is room left for ambiguity and the employees are encouraged to look at the situation from other angles than the ones tried out till then. The company having an innovative leadership cherishes opponent points of view, often resorting to tools such as the brainstorming to solve problems and provides its employees with space and freedom to

create. Psychologists state that according to some studies made on a few companies, people find it easier to apologize for a mistake they have done than to ask for permission anytime they wish to try something new. Without taking into consideration the management level, the leaders who wish to evolve or to help their business survive the continuously changing trends, should focus on a few efficient techniques of stimulating the innovative leadership. They can start from flexibility and the desire to accommodate as many options in problem solving. The implementation of a set of tools that stimulate innovation, not only within the creation departments, but also in every level of activity, can lead to product improvements. Innovative leadership is permanently connected to technological novelties, convinced that there is a better solution, a faster service or a less costly process. Having a realistic perception of the external environment, they adapt the innovation to the real demand of the market, trying to continuously improve the current state of the technological process or the service they deliver. When the culture of innovation proves to be a success, the leader has to focus on his skills and to enhance them: • Attention: The first impression or the assumptions do not always mirror the entire picture, thus, they do not lead to a clear or a good solution. The ability to notice what hasn’t been noticed is essential. The idea is to look more closely to what is going on, to notice the details and to create new directions.

• Importation: The innovative leader has to be able to import information from different domains of activity, such as sports of activities that are connected to the domain of activity. • Imagination and visualization: Imagination is a process that helps those who need to process the information gathered from the environment. It helps leaders to answer to questions such as: what if? • A c c e p t i n g t h e o p p o s i t i o n : Innovations are often made by lone wolves, but the leaders who encourage the exchange of ideas, which will not be judged or refuted, will gain a much clearer view on the situation, as they encourage the vision of several persons with different education. In conclusion, the phrase according to which being a leader is something innate is not entirely true. On the contrary, innovative leadership requires an open mind towards the exterior and the ability to notice, before others, things that cannot yet be seen, but which, once revealed on the market, have a revolutionary impact and create unique experiences in the minds of the consumers.

www.todaysoftmag.com | no. 19/January, 2014

43


legal

programare

How to protect intellectual property when outsourcing software development?

O

ne of the highest legal risks associated with software development outsourcing by a company (Client) to a software developer (Developer) is intellectual property (IP). IP covers copyright, trademarks, industrial designs, patents, trade secrets, know-how, etc. and it can take a wide range of forms (databases, source-code, logo, graphic interface, notebook, etc.). Claudia Jelea

claudia.jelea@jlaw.ro Lawyer @ IP Boutique

When bound by such an outsourcing relationship, the Developer is to create the software program/application in a customized way, based on the Client’s directions and requirements, and adapted to such Client’s needs. The Client, on the other hand, is to pay a sum of money in exchange for the services provided by the Developer. Without aiming to cover the topic in an exhaustive manner, this article mainly takes the Client’s perspective and the way in which it can ensure the preservation of the IP rights within the context of the outsourcing relationship. Hence, when deciding to outsource, I would recommend that you take the following steps:

third parties and the IP that was licensed/ transferred by third parties to the Client) forbid you from disclosing such IP or allowing that it be used by the Developer without the other contracting party’s consent.

2. Have you identified the right Developer?

Once you have chosen a Developer and checked his reputation, you should also find out whether he has the resources and capacity necessary for your IP to be protected against unauthorized use, loss or theft.

Moreover, it can be useful to review the legal framework applicable to IP in the 1. Inventory of already existing IP Developer’s country and to identify the he first step would be to identify the IP steps you are willing to take if the outsouritems that you already own, how they are cing agreement is damaged or fails. Make protected and which of them need to be an exit strategy. disclosed for the outsourcing purposes (the IP should not be disclosed unless neces- 3. Key provisions in an outsourcing sary). Next, you should check whether the contract contracts you have concluded with other A contract whereby the terms of the parties (and which cover both the IP that outsourcing relationship are set forth in was licensed/transferred by the Client to detail can reach a very high volume and

44

no. 19/January | www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE it can be difficult to follow. To protect IP rights, you can take into account a few relatively simple and easy-to-remember principles: • Insist that the contract’s governing law should be Romanian law (under a foreign law, the recommendations included in this article might not be applicable). • Include a confidentiality/non-disclosure provision covering the IP, the information provided by the Client, the internal work processes, any components of the software program/application, etc. (obviously, this only applies if a NonDisclosure Agreement has not already been concluded). • Make sure that you own all IP rights in the software program/application created by the Developer throughout the duration of the outsourcing relationship. Why is that? This will ensure that at the end of the contractual relationship or even during it you can make use of the IP and even provide it to another developer, as preferred. • The contract must set forth, in detail, the way in which the Developer is to protect the IP: who will have access to it and under what circumstances, the fact that the Developer is to preserve all versions of the software program/application (for example, in Apache Subversion - SVN) and that he is not to delete the code or the data he no longer needs, etc. • The Developer should indemnify the Client in the event of an infringement of a third party’s IP rights during the development of the software program/ application ordered by the Client, etc.

program/an application created by a Developer upon a Client’s order and based on an outsourcing relationship is construed as work for hire. As far as work for hire is concerned, Romanian applicable legislation mentions that copyright belong to the author (the individual person having created the work – in the case at matter the programmer who developed the software) – unless otherwise set forth in the contract. However, under the same legislation, the employer will hold the patrimonial copyright in all software created by the programmer-employee while carrying out his work tasks (except where the contract concluded between the employee and his employer states otherwise). However, it is possible that under legislations of other countries the copyright in a software-work for hire belongs to the one having commissioned such work (namely the Client). That is why the absence of a written contract clearly setting boundaries for the Client’s and the Developer’s rights and obligations may lead to confusion, especially where other elements must be considered as well (for instance one of the parties being a foreign national – situation which triggers a possible conflict of governing laws, the existence of other commercial agreements between the two parties covering other projects, etc.). Clarity is relevant with IP rights especially if the Client intends to use parts of the software for other projects as well or wishes to sell the software (the buyer will request that you guarantee your legitimate ownership of the object of the sale).

4. What happens in the absence of a written outsourcing contract?

5. Final notes

software pretending that it is his property or that he will use the accessed know-how in favor of the next client. To avoid running such risks, it is in both parties’ interest for them to conclude a well written contract covering the way in which the software development outsourcing is to take place. Only by approaching these aspects right from the start will the Client and the Developer lay the basis for a successful project and for a long-term partnership. Also, one should not forget about the Client’s protection against the risk that his own employees may infringe on his IP rights (such employees have access to the source-code they created and to valuable/ sensitive information within the company). A confidentiality/non-disclosure agreement concluded between the employer and the employee should act as an efficient protection tool in this case as well.

Despre autoare: Claudia Jelea is an attorney-at-law specializing in copyright, trademarks, e-commerce, IT&C and personal data protection. She holds two master’s degrees in IT law and, respectively, in European intellectual property law from Stockholm University, Sweden. She is both a lawyer with the Bucharest Bar and a licensed trademark attorney. LinkedIn & Twitter: claudiajelea | www. jlaw.ro | Facebook: IPBoutique.Legal

Many companies fear that if they hire Usually, under copyright law, a software a Developer, he will use the newly created

www.todaysoftmag.com | no. 19/January, 2014

45


HR

HR Trends in 2014

I

T Cluj market has evolved tremendously in the last five years. Latest studies showed that at the moment there is a shortage of senior IT professionals to meet the projects’ needs. According to statistics realized last summer, there were 11 000 opportunities and only 9000 IT professionals on the market at that time. It is the perfect chance for the HR functions to emerge from support functions and begin to play a key role in business strategy. Andreea Pârvu

andreea.parvu@endava.com Senior Recruiter @ Endava

46

no. 19/January | www.todaysoftmag.com

2014 is the year when it will be more difficult to attract and retain talents, to provide training and development programs that employees need. The key words for what will define the HR trends this year are „Innovation” and „Focus”. In this article I will present the trends this year, determined under this continue evolving IT market. In 2014 the main problem in the IT market will be retaining employees and increasing their commitment in their company. Deloitte study presents a top of the biggest challenges that the HR department will encounter: 1) leadership and 2) retention. Although the study was conducted globally and not just in IT, the lack of IT professionals in the Cluj market shows that these two problems can be applied easily to the local market. „The war for talent is over, and the talent won” since this year, employees have a critical word to say and they actually have the power in the companies, which they did not have before. Top performers and top talents who have key skills are becoming harder to find. Meanwhile, companies are differentiating each other from the financial and non-financial benefits that they offer, as well as the nature of business, but

also the most updated technologies. This way, employees have a variety to choose from in respect to the company where they want to work. And companies that do not know how to create commitment among its employees will lose resources.

10 Trends in 2014 on the IT Cluj Market 1.

HR Business Partnering

HR acts as a reliable strategic partner for business leaders and projects. HR develops plans to collaborate with customers to translate business challenges and objectives in human resources objectives and action plans to ensure that organizations are built to be able to anticipate changes in the market. HR provides strategic and sustainable solutions for human capital aligned to company strategy, including attracting and retaining the best talents, organization effectiveness, employee engagement and optimal job performance.

2.

Attract and Retain Top Talents

I think that the classical approach like „recruiting the best on the market to the detriment of competitors” should be changed, given the dynamics that exist.


TODAY SOFTWARE MAGAZINE Sourcing candidates should extend beyond Cluj market and expand operations in markets where there is a surplus of candidates. Markets in Western Europe and North America have benefited by addressing the strategy to work „at home” in different cities other than where the company is located.

3.

Employer branding

Gaining reputation in the market and convincing candidates to consider the company as the first option has become an increased battle. Numerous studies have been effectuated to determine the top hiring companies. The criteria are different: the working environment, community involvement, benefits, creating an image of the company as the „best working environment”. For the best possible positioning, HR needs to develop horizontally they need to understand the aspect of marketing, brand management and associate the company name with various community events.

4.

Career path development

IT companies are quite similar in Cluj in creating the working environment or offering the same benefits .What will make the difference in retaining employees is how they have the opportunity to enhance their careers within the company. It is important that employees have a direction to move towards. Career is defined as „the advancement of persons or professional life.” Beyond trainings and certifications that IT employees have access to, they need to see their progress on medium and long term. The trend is either to build a career in a more technical direction (eg software architect, technical lead) or towards people management (eg. scrum master, project management). The more opportunities, the easier the retention of employees.

5.

Employee engagement • Innovation Daniel Pink in his book „Drive” defines three important elements in increasing Good luck in 2014 to attract and retain employee engagement in the company. The the top talents! classical team building activities offered by most of the IT companies are no longer the defining element in increasing engagement. Pink talks about: autonomy, mastery and purpose. In this article, I will present them only briefly. • Autonomy: ROWE - presented in the book is an acronym that means „Results Only Work Environment” which means without a fixed working schedule. Employees should not be at work, all they have to do is to complete the tasks and responsibilities. How and where, it is their decision. Companies in Western Europe and especially America had good results from applying this practice. Encouraging autonomy does not mean discouraging accountability because ultimately, employees are responsible for their actions. • Mastery: refers to the ability to become as good as you can be in one area. Daniel Pink believes that besides autonomy, there is also a need of commitment and the ability to find innovative solutions. Mastery becomes a mindset and having the proper skills it is an advantage on the market based on its uniqueness. • Purpose: Pink believes that the motivation of employees is given by a purpose defined in the company and the desire to excel. This article presented only five of the trends identified. To arouse your curiosity, I will list the other five, which will be detailed in the next issue of Today Software Magazine: • Subject Matter Expertise • Workforce Planning Processes • Leadership development • Talent Analytics

www.todaysoftmag.com | no. 19/January, 2014

47


startups

Pitch design. On conceptualizing and delivering a start-up presentation

W

e are RenderStreet, the next generation render farm for 3D projects. A one-line pitch, with a simple and clear message. Right? Apparently, yes. But when put in practice, the results will vary upon several factors: how acquainted the audience is to the subject, how much attention they are paying to your presentation, the attractiveness of the proposal and how well the speech is delivered. If you have a start up, you already know that pitching is one of the important activities. So – how do we make it go well? Since launching RenderStreet, I’ve held more speeches than in my entire life before that. And, since my first speech on How to Web’s stage in 2012 until now, I’ve managed to identify some factors that can influence in a good way the reception of the message. The first factor is probably also the hardest to achieve: fluency in English is decisive. At most industry events, the official language is English. Also, most of the financing (still) comes from outside of Romania. This means that the person presenting on stage must be the one who is most familiar with the English language. The next factor: know your audience. The same pitch can be structured differently depending on the targeted group. I will illustrate this by showing how I adapted our pitch for three different events, each time focusing on delivering the most relevant information. The first event: HowToWeb. I structured the pitch for a mainly technical audience, including a few investors. I delivered a general presentation of the business: the proposal, the market, the evolution since launch, milestones, team, the financial part. Because in the audience there were also non-technical people, in the beginning I insisted on “What does RenderStreet do?”. The next pitching event: EuroCloud. Here the audience was composed of managers situated at various levels within their companies, who shared a common interest for cloud. My presentation in this case had a technical focus, mainly on multi-cloud implementation. Because implementations like ours are not very

48

common at this moment, I treated the subject in more detail: the technical challenges, the solutions to overcome them, the difficulties left unsolved, the advantages we got. The financial details and the business’ evolution were less interesting in that context, so I passed them quickly. The third one: Microsoft. The audience at this event was mostly made of journalists. I started with a detailed presentation of our domain of activity, followed by an overview of the market and a description of the practical applications of our technology. The visual part was better represented and I included more figures to help create a better image of the business. The conclusion: Each audience has specific interests and looks for a certain type of information. Depending on how well you know your audience, adapting your content may help getting the message through. And now let’s discuss a bit the contents of the presentation. There are enough sources that tell you what a pitch should cover, so I will only stress some aspects I consider important: - Clearly explain what your startup is about. If the feedback at the end of the pitch is “… and what do you actually do?”, than the pitch was a failure. - The saying “An image is worth 1000 words” gets a whole new meaning when you have just a few minutes (usually under 5) for the presentation. - Keep your slides clean and without too much text. In my presentations, I never had a slide with more than 4 lines of

no. 19/January, 2014 | www.todaysoftmag.com

text. - Get to know the market and include relevant data in the presentation. The market story will be understood by all audiences and, if the figures are significant, will raise the level of interest for your business. - “Seeing is believing.” If you have a working demo, insert at least some screenshots. I will conclude with a final advice: repeat the pitch a few times before the event. This helps your fluency and may help overcome the hesitations that come from speaking in a foreign language. Good luck! About Marius Iatan: Having a technical background, Marius founded his first business in 2001, one year after finishing his studies. Now, Marius is co-founder and CEO of RenderStreet – an online rendering service for 3D projects, based on cloud technology.

Marius Iatan

marius@render.st CEO & Co-fondator @ RenderStreet



sponsors

powered by


Turn static files into dynamic content formats.

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