No. 16 • October 2013 • www.todaysoftmag.com • www.todaysoftmag.ro
TSM
T O D A Y S O F T WA R E MAG A Z I NE
ile g A n es i c i t c pra t s ings! e h t B e ll th
C UA
P a gh O mate u o o t r u h A ons t i t a utom A l a i str Indu
Agility implies Craftsmanship How can we promote and raise funds for a non profits organizations
Towards the IT community (III) SmartWebConf 2013
HR in Agile
Big Data & Analytics in modern applications
DoItFor.co
Gogu and communications
6 SmartWebConf 2013 Radu Popescu
8 Best Practices în Agile
21 Towards the IT community (III) Dan Ionescu and Cristina Nicule
24 Industrial Automations through OPC UA
Dan Suciu
Waldemar Knopp
11 Agility implies Craftsmanship
27 Automate all the things!
Alexandru Bolboaca and Adrian Bolboacă
13 HR in Agile Andreea Pârvu
15 Big Data & Analytics in modern applications Adrian Margin and Andras Gyalai
19 How can we promote and raise funds for a non profits organizations Radu Popescu
Attila-Mihaly Balazs
30 DoItFor.co Teodor Olteanu
49 Gogu and communications Simona Bonghez, Ph.D.
editorial
L
Ovidiu Măţan, PMP
ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
ong time ago, while I was working for a multinational company, the CEO introduced a notion in relation to a certain manner of working without making use of one’s current position. The notion was “humble” and it had immediate effects because of his example. All of a sudden, each person’s title no longer mattered. What mattered instead was his/her ability to listen to the others and find solutions together. As a matter of fact, if you look around, the most appreciated leaders are those who know how to listen and show a high degree of humbleness. I have recently taken part in a meeting of IT representatives from Romania, which took place in Cluj, where, unfortunately, the last thing I saw was humbleness. Because of the current trends which require us to become better and better and to impress everyone, we are omitting some basic things. We often forget that the desire to empathize, to understand the expectancies of the people around us can become a basic requirement for good collaboration, which is primary in today’s software industry. The efficiency of communication and collaboration between the companies – universities – startups – employees is most of the times the effect of the implementation of this humbleness principle and giving up the idea that only the sonority of the name of a position can impose respect and authority. Coming back to our daily events, it gives me pleasure to announce you that the first launching of our magazine in Bucharest took place in an event hosted by Gemini Solutions. Our colleagues from Bucharest were present, along with the magazine’s supporters. We enjoyed an event rich in professionalism, in a friendly atmosphere. We promise to come back to the capital as soon as possible for the launching of a new TSM issue. Autumn has come with several IT dedicated events. We took part in Smart Web Conf, an event dedicated to web developers, which will be described in detail in the following pages. We also participated in Iasi, as partners, to the already classical event “Even mammoths can be Agile”. It is also in this city that we will attend, as media partners, the CodeCamp Iasi. Another piece of news is the project of a big event, on which we will not share very much with you just yet, except for the fact that it is dedicated to IT trends and that it will take place in Cluj at the beginning of December. But we will get back to that with details in the following weeks. The theme of this issue is server-side and agile, interesting domains enlarged upon within this magazine. The agile theme is present in a series of articles: Best Practices in Agile, Agility Implies Craftsmanship and HR in Agile, while server-side is discussed in Big Data Analytics in Modern Applications, Real-Time Applications using SignalR, DoItFor.co and the review of the book called NoSQL by Pramad J. Sadalage and Martin Fowler. The third part of the HR study regarding the IT companies from Cluj is published in this issue under the title: Towards the IT Community – via HR (3). I would also like to mention the presence of two novel articles: Industrial Automations through OPC UA, as well as The Development of Cross-Platform Games, signed by the King games studio. I would like to end with an invitation to a contest of algorithmic programming organized by Catalyst CC. It will take place on Friday, 11th of October, simultaneously in Cluj (the FSEGA offices) and Vienna. There is no charge for participation; in the future we will try to bring more contests of this type closer to you. Enjoy your reading!
Ovidiu Măţan
Founder @ Today Software Magazine
4
no 16/October - 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
Dan Suciu
Agile Coach and Trainer, with a focus on technical practices @Mozaic Works
Director of Engineering @ 3Pillar Global
Attila-Mihaly Balazs
Adrian Bolboaca
Code Wrangler @ Udacity Trainer @ Tora Trading
Programmer. Organizational and Technical Trainer and Coach @Mozaic Works
Teodor Olteanu
Teodor.Olteanu@betfair.com
Andras Gyalai andras.gyalai@isdc.eu
End User Computing Lead @ Betfair Romania
Software architect @ ISDC
alex.bolboaca@mozaicworks.com
dify.ltd@gmail.com
Copyright/Proofreader: Emilia Toma emilia.toma@todaysoftmag.com Translator: Roxana Elena roxana.elena@todaysoftmag.com
dan.suciu@3pillarglobal.com
adrian.bolboaca@mozaicworks.com
Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Waldemar Knopp
Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com
knopp.waldemar@evoline.ro Software Engineer @ Evoline
Radu Popescu
rpopescu@smallfootprint.com QA şi Web designer @ Small Footprint
Made by
Today Software Solutions SRL str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com www.todaysoftmag.com www.facebook.com/todaysoftmag twitter.com/todaysoftmag ISSN 2285 – 3502 ISSN-L 2284 – 8207
Dan Ionescu
Andreea Pârvu
Director Executiv @ Danis Consulting
Recruiter în cadrul Endava
Cristina Nicule
Simona Bonghez, Ph.D.
dan.ionescu@danis.ro
cristina.nicule@danis.ro Consultant @ Danis Consulting
andreea.parvu@endava.com
simona.bonghez@confucius.ro Speaker, trainer şi consultant în managementul proiectelor, Owner al Colors in Projects Adrian Margin adrian.margin@isdc.eu Software architect @ ISDC
Copyright Today Software Magazine Any reproduction or total or partial reproduction of these trademarks or logos, alone or integrated with other elements without the express permission of the publisher is prohibited and engage the responsibility of the user as defined by Intellectual Property Code www.todaysoftmag.ro www.todaysoftmag.com
www.todaysoftmag.com | no. 16/October, 2013
5
events
SmartWebConf 2013 startups
O
n September 24 took place in Bucharest, at the elegant JW Marriott Grand Hotel, the first edition of SmartWeb conference 2013, an event dedicated to web-designers in Romania and Eastern Europe, where Software Magazine Today magazine was one of the media partners. The presentations from the conference covered a wide range of subjects like Responsive Web Design, HTML5/CSS3 and best practices or tips and tricks. Since it was an international event, the entire conference was conducted in English. with over twelve years of experience, gained in numerous agencies, start-ups and corporations, and is currently a Creative Technologist at RehabStudio. He is also the author of The Book of CSS3 and The Modern Web. In the first part of the presentation we talked about Shadow DOM and encapsulation. Taking the example of a simple HTML5 video player, he showed us how it is created and how to edit it. Another topic discussed by Peter was related to custom elements which offer web designers the ability to create new types of reusable items such as share buttons or custom video players. Some good collections can be found on CustomElements.io or html5rocks.com. The presentation was very technical and based on examples.
The presentation series was started by the owner and founder of nGEN Works, Carl Smith who has an unconventional team working with companies and helping them redefine their identity, ideals and create solid development team. One of the things that are very important is projects continuity. Under no circumstances he agrees to stop development teams before the end of the project. This would decrease their morale and would slow down progress when restoring the project. Giving an example, he described how he financed the completion of a project when the customer could not pay. In building teams Carl focuses also on the communication side or inside jokes. This makes very solid relationships between colleagues. Another change that comes very often is that which gives teams the opportunity to hire the After a short coffee break, sponsored candidate that they want, so this decision by the famous site IconFinder.com, we got is not taken to a large extent by a HR or a to listen to the only Romanian speaker at manager. the event. Radu Chelariu, Art Director at Busteco Global Brain and Adobe Certified Expert in Photoshop talked about the daily challenges he has in the relationship between a designer and the client. The presentation was very firm saying that when it comes to e-commerce and the customer›s desire to generate a higher profit we cannot talk about feelings. Because of this, the client might not like his design. Basically a Peter Gasston is a web developer design that will generate more conversions
6
no. 16/October, 2013 | www.todaysoftmag.com
will not necessarily look good, but it will follow rules of user experience. He also revealed to us how we can convince a client that a particular change is necessary; just say that it will bring more money.
Designer, photographer and UX expert, Dan Rubin is a regular speaker at conferences and workshops around the world on various topics related to the web, sharing his experience from companies like MailChimp, Google, Yahoo!, Microsoft or Meebo. The presentation was a case study in the client of his, showing the method he used to be able to provide a very rapid prototype testing. The first step that he recommended was to do find things that work well in the current web-site. These things should not be changed. Another interesting thing related to prototype testing he said was that small groups provide a great value too. In his example, the group who tested the prototype website consisted of only 12 people. Apart from this, his approach on creating prototypes was not new or unusual. To provide the best possible experience for those participating in the test, he used an enhanced image of the customer web-site (based on a PSD) over which he added some essential functionality using HTML / CSS and JavaScript. This mode provides a more “close to reality” experience than just wire frames; also production time is very
TODAY SOFTWARE MAGAZINE
as small.
Bruce Lawson, Web Evangelist for Open Standards at Opera, gave a slightly unconventional presentation. He has illustrated a few ways we can destroy the web or to be more precise how certain sites are trying to destroy the web. Among these examples, which are not recommended there were: • use frames ; • display web-sites on certain devices using UserAgent ; • creating small items with multiple div ( eg. a button made from five nested divs ) ; • creating a full website in Flash ; • having an empty <body> and adding the content and layout from JavaScript; • creating links using <span> (along with JavaScript ) rather than using <a> tag ; • adding copyright on some libraries like jQuery ( cybertriallawyer.com ) ; • prohibiting to add links to the site (New York Stock Exchange web-site).
Jonathan Snook, author of The Art & Science of CSS and Accelerated DOM Scripting, spoke to the audience about CSS. One of his questions has generated some discussion and it was about CSS code review. Does somebody do that? Although it seems unimportant and almost nobody does it, reviewing CSS code is essential in this time when everybody is chasing after high performance on mobile devices. Snook summarized the three steps he recommends when starting to write CSS code. The first step would be to create categories (Base, Layout, Modules, State,
events
etc.) in which to introduce each class. Base category would handle CSS reset for example and the Modules will contain buttons, lists, tabs or reusable items. The second step concerns the naming convention. Class names must clarify their intention. Here he recommended using CamelCase. The third step is to decouple HTML and CSS and use the child selector (>).
Vasilis Dimos from Skroutz, a company that operates the largest price comparator in Greece, explained what responsive web design involves the whole team. When we want to have a responsive web-site we have to set some goals (eg. one of the objectives for Skroutz was to have a loading time under 2.5 seconds in the browser). After setting goals, all team members will have to contribute to their achievement, not just web designers. They must optimize the interface for a wide range of devices while programmers will have to find the fastest and best method to implement functionalities. System engineers must find and implement solutions for direct connections between countries where the web-site is operating and database developers should find ways to analyze large data and to offer users the best deals.
Vitlay Frideman, co-founder of SmashingMagazine.com, one of the best web design blogs in the world gave a presentation about responsive web design, showing some interesting techniques that can reduce the load time of a webpage. When we talk about load time, we automatically think about JavaScript. A newer method of improving the load speed is to add the JS functionality when the user
is with the mouse pointer near a button that requires that functionality. Vitaly also presented a study which shows that a loading bar animation, that doesn’t have an actual functionality, can convince the user that the page loads faster by 11%. When it comes to interfaces, an interesting technique is the creation of so-called ‹proficiency profiles’. These profiles store information about a user visits recurrence. If the user visits the site daily, the interface becomes simpler and faster to load. When he doesn’t visit de site for a few weeks, we can display the original interface again (more complex and using more hints) to the refamiliarize him with the site. When optimizing site icons Vitaly suggested using SVG stacks (just like PNG sprites), and image optimization would opt for a JS library like Picturefill or progressive JPEG . The whole conference was a success from my point of view. Each speaker presented real and applicable techniques, many of them new to most participants. All these can confirm that in 2014 we will have a second edition of SmartWeb Conference.
Radu Popescu
rpopescu@smallfootprint.com QA şi Web designer @ Small Footprint
www.todaysoftmag.com | no. 16/October, 2013
7
management
management
Best Practices in Agile
T
Dan Suciu
dan.suciu@3pillarglobal.com Director of Engineering @ 3Pillar Global
he idea of this article occurred to me several months ago, while I was preparing a presentation for the conference “Even mammoths can be Agile”, which took place in Cluj-Napoca this spring. It sometimes happens that certain things appear to be very clear and obvious at a given time, but when you begin to study them closely you are surprised to find out the contrary. This also happened when, trying to study the efficiency and benefits of adhering to the good practices in Agile, adopted by certain organizations and project teams, I have reached some conclusions that are far from being considered optimistic. I will try in this article to point out the main elements that lead to the idea that applying the successful practices of other organizations/ teams in Agile implementation to your own project team can bring more disadvantages than advantages.
The Idyllic View on IT Projects
A comparison which I find very suggestive is the one between an IT project and a chess match. We are tempted to say that both teams have several basic characteristics which we know from the beginning. • we know who the players are; • we know the role of the chessmen we use; • we know the processes and the rules that have to be observed. If we go along this comparison, we can state that an Agile approach of the chess game is one in which we react accordingly to each move of our game partner, while the classical Waterfall is rather an attempt to anticipate as well as possible the partner’s moves right from the start and then just move the chessmen according to our own strategy, ignoring what is going on at the other side of the table, until a “collision” occurs (manner of working which is often similar to that of the “adversary”).
8
no 16/October - www.todaysoftmag.com
Obviously, in the Waterfall manner the probability to fail is significant; things can improve depending on how quickly we “wake up” and coordinate our movements with those of our opponent. I consider this to be an idyllic view on the IT projects, since it starts from the assumption that if you master the processes that govern “the game” very well and if you have seen a playing style resembling that of your enemy before, your chances of success are high. The successful strategy would focus on these two essential components which lead you to (almost) infallible algorithms in given situations and which also allow you to make predictions that are as realistic as possible. The multitude of books on IT project management refers, mostly, to such projects and take into consideration a “common denominator” of IT projects, an almost ideal context or one that recedes from this ideal in a decent, benign manner, specifying each time that certain things can be adapted in practice according to every project’s specific. The classical Project Management refers to projects as to a context in which there is a minimal set of processes and rules and certain practical roles are fulfilled, focusing on the longer or shorter cycles of monitoring, coordination
TODAY SOFTWARE MAGAZINE and control. In reality, however, IT projects are much more unpredictable than a chess game could ever be. This happens due to the fact that the rules change (often during the advancement of the project), the processes are more or less observed and some roles can completely lack from the “picture”. We often say that IT projects are not fair, taking us by surprise with elements that take them out of the area of what we know or have already encountered. I would like to make myself well understood: we already begin with the premise that projects, by their definition, are unique undertakings, which have elements that have not been encountered before, but the characteristics that are specific to IT projects (which we discussed in detail in Today Software Magazine no.8) make the number of differences in such a project overwhelming. And this is not something that happens only in the case of some undesired exceptions, but in the great majority of IT projects. So, one of the main reasons for which the classical project management proved to be inefficient in respect to IT projects is precisely the fact that it doesn’t cover all these majority exceptions.
Is Agile the “silver bullet” of IT projects?
Agile methodology appeared as a necessity to accept and deal with the above mentioned “exceptions” and it involves, first of all, a change of attitude. The classical approach “forces” the setting of a certain rigid context which “guarantees” the success of a project and offers suggestions regarding the manner in which the exceptional situations should be dealt with in order to reenter the “normal”.
The Agile philosophy starts from the idea that these exceptions are natural and that it is not necessary for us to adjust the context to our conditions, but rather to adjust ourselves to the conditions imposed by the context. But we are different. The way in which I manage to project myself and deal with a given key situation is different from the way in which the others do it. Their advice and ideas on how I should approach a certain issue are useful to me as long as I get them through my personal filter and manage to adjust them to the context. Therefore, Agile must be regarded as a state of mind, as a manner of approach, as a mindset. In order to make myself better understood yet, I will give you a few examples of how we shouldn’t react in certain situations. Conferences in this field sometimes abound in describing some case studies and successful stories on Agile implementation. Many of the people attending such conferences come there with the hope to find useful pieces of advice for the projects they are involved in at that moment. The questions are very diverse: “How big is the team?”, “Is the team collocated or not?”, “Is the product owner belonging to the client or to one’s own organization?”. All these questions are just meant to find a pattern as suitable as possible, which can be applied to one’s own project in order to ensure its success. Most of the times, however, this thing doesn’t happen and it’s natural to be like that: there are so many possible configurations and particular situations in the IT projects, that it is extremely difficult to find two similar projects. Consequently, instead of trying to find successful projects which are similar to ours, the main question we
should ask is the following: “How can I apply and adjust some of the things I’ve heard to solve the problems I have in my own project?” Another example is that of those people who, in different situations, say: “The project I’m working on is not Agile”, referring in general to the fact that certain roles are not properly carried out, that certain documents do not have an ideal structure or that certain meetings (or ceremonies, as they are called in Agile Scrum) are not unfolding according to the book. They are forgetting the fact that the roles, the documents or the ceremonies are nothing more than Agile working tools. It’s not the project that is Agile, but the manner we approach it can be Agile. And this manner of approach is the one we should apply in order to adjust these tools (if necessary) or in order to adjust ourselves to the tools
that are at our hand. Do not fall into the trap of establishing only one true way of approaching an Agile project! Finally, another frequent mistake is that of identically applying a successful approach from a previous project to the current one. This is a mistake because, as I have already pointed out before, IT projects differ very much from one another. In a company that provides software services, such as 3Pillar Global, this is a painful thing, since with every client you have to Our core competencies include:
Product Strategy
Product Development
Product Support
3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world. Our offerings are business focused, they drive real, tangible value.
www.3pillarglobal.com
www.todaysoftmag.com | no. 16/October, 2013
9
management Best Practices in Agile
start practically from scratch. No doubt there is some experience gathered behind, but the context will be different each time and many of the conclusions reached in the past are no longer valid in the new version. Conclusions A first conclusion we can draw is the fact that the idea of best practices in managing software projects doesnâ&#x20AC;&#x2122;t help very much and it may even cause harm. A worst practices set would be much more useful to anyone who is responsible of managing an IT project.
10
The second conclusion is a mere reiteration of a fact most people seem to have forgotten: there is no Agile formula. Agile is basically a set of values and principles and if someone cannot imagine ways of organizing a project team around these values and principles, then we can say that the person is not Agile. This thing is very important to understand in a time when many people become rigid in advocating a unique manner of being Agile. I would also like to emphasize in conclusion that the embracement of an Agile methodology can generate a powerful resistance movement, since it affects the entire activity of an involved person. Generally, from what I have noticed, people do not complain about the changing of the development style, but about the fact that it doesnâ&#x20AC;&#x2122;t change. Nowadays there is a great wish to be Agile on all seniority levels and in all categories of people involved in a project. They all want to become Agile, but Agile in the way that each one of them understands. Everyone has their own vision on what it means to be Agile, finding
no. 16/October, 2013 | www.todaysoftmag.com
it often difficult to share this strategy with the others, but showing a great resistance to changes when the agility direction is not the anticipated one.
TODAY SOFTWARE MAGAZINE
programming
Agility implies Craftsmanship
I
n 2001, a group of people unpleased about the state of software development gathered in a mountain ski resort from Utah. One thing leading to another, they started discussing about the industrial methods applied at the time for managing programmers and about the so-called lightweight methods many of them used informally. The result of this meeting, as you probably know, was The Agile Manifesto.
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
The conversations about The Agile These are just a few of the names from Manifesto focus usually on the content. the list of the authors.What we can observe But, what can we say about the authors? is that each one of them had a solid base in programming, as well on very complex Mike Beedle – published articles about projects Object-Oriented Programming (OOP), Today agile is often consedered a synopatterns, reusing components and fra- nim of Scrum, being the most spread agile meworks, programming languages, etc. method. And this for a good reason: Scrum Ward Cunningham - was Principal can improve the productivity of a team in a Engineer at Tektronix, the company that fundamental way.But if we were to compare created Smalltalk, the first object oriented Scrum with Extreme Programming, we will language used on a large scale. He was part see something interesting. The way to work of the creation of Extreme Programming in Scrum and XP is very similar. The roles (XP), created the software design method and structure of a sprint are better defined with CRC and actively contributed to the in Scrum than XP. But the major difference patterns community Patterns Language of between them consists of the fact tha XP Programming (PLoP) required a set of technical practices, from Martin Fowler – wellknown author collective code ownership, continuous on subjects like software design and integration, coding standards to pair prorefactoring gramming, refactoring, TDD and simple Andrew Hunt – partner at the design. The reason is simple and correct: „Pragmatic Programmer” publishing house Scrum wanted to combine the set of agile which gave us a lot of useful books for pro- practices that can be applied to any type of grammers and co-initiator of the Software knowledge work. This is why Scrum lets Craftsmanship movement for the team to decide the practices they Ron Jeffries – consultant and pro- will use in order to deliver quality software grammer with a very rich experience in during each sprint. As Ken Schwaber said at Extreme Programming the OpenAgile 2009 București Conference, Jon Kern - evangelist OOP, starting „Scrum has its bases on craftsmanship”, with C++ and continuing with Java may it be in software, marketing or creating Brian Marick - tester and programmer, a radio show. The set of technical practices specialized in functional languages changes depending on the type of work. Robert C. Martin – wellknown author The companies that choose to adop of books about design and programming, Scrum pass throug a couple of stages. First promoted of the Software Craftsmanship of all the team is created. Then the plan and movement. the current status are made visible. A few of www.todaysoftmag.com | no. 16/October, 2013
11
management things can happen from now on: The team does not know how to work incrementally, as a result stories that cannot be finished during a sprint appear. One needs to improve the way of doing story slicing. The development ends during the sprint, but there is not enough time for testing. The testing moves to nother sprint (or sprints).. One needs to: do cross testing, pairing between programmers and testers and automate tests. Stories are generally developed and tested during the sprint, but putting them in production lasts a lot and reduces significantly the development speed. One needs to implement continuous integration to incrementally automate the deployment. The deelopment speed increases, stabilized, but one story changes fundamentally part of the application design and all lasts more than a sprint. One needs to do refactoring and a better design that follows the SOLID principles. If the application is developed for a more complex environment, usually enterprise, some changes are very hard to be split in stories that fit inside a sprint. Sometimes this is a sign of architectural debt, and one needs to think about architecture on medium and long term. Here is how agility implies applying some pritices like: • Pair programming to prevent mistakes and having a better and more flexible design • Unit testing to shorten the time needed to validate the product • Continuous refactoring to keep a flexible design • TDD (Test Driven Development) or
12
BDD (Behavior Driven Development) for a better definition of the problem and finding simpler solutions • Following some design principles and using design patterns to keep the application open for changes • Architectural strategic thinking on the long term to minimize technical and development risks Even more, agility implies that all the members of a team, may they be testers, programmers, designers, business analysts continuously learn new methods to work better together, with respect to the impediments they meet. This thing implies either planning learning sessions during a spring or learning inside communities of practice. This is software craftsmanship: the combination between the practices that help in a pragmatical way to bring faster and more efficiently business value and continuous personal development inside a community of people having the same values. Agility implies craftsmanship, because there is no other way. Do not understand from here that the Scrum approach is wrong. Quite the opposite, it allows an incremental adoption of technical practices that are helpful in a given context. A situation where you need to release once every 6 months because the customers do not want more releases (typical examples being hospitals or banks) is very different from the situation when you need to 15 releases per day like the web applications for consumers often need.The selection of technical practices depends fundamentally on wanted the level of agility.Those that started on this road can find themselves or they can ask for help from an expert in order to learn faster.
no. 16/October, 2013 | www.todaysoftmag.com
In conclusion, the technical practices have been forever part of agile. Scrum elliminated them from the model, not because they are not useful, but because it wanted to be more generic and because it is based on the team to select the ones that make sense in the given context. But agility is impossible to reach without a set of technical practices on which one can add organization and finally business agility.
HR
TODAY SOFTWARE MAGAZINE
HR in Agile
I
think there is no person or company in the IT area who hasn’t heard at least once about Agile-Scrum. For those who are not yet familiarized with this concept, in short, Agile Scrum can be defined as a methodology of management for IT projects development, which ensures the delivery on time and the meeting of deadlines set by the client, optimizing both team work and the obtained results.
Andreea Pârvu
andreea.parvu@endava.com Recruiter @ Endava
This article will not present the roles in Scrum: product backlog or sprints, but it will present a few solutions and good practices in order to efficiently implement the processes of human resources so that they respond to the client’s needs as well as to those of the organization. This is because in a dynamic and agile environment, such as the IT market, it is necessary for the HR department too to have a different kind of approach. The article will focus on presenting a parallel between the old HR model, implemented by most of the companies, and the new HR model, which is a trend embraced especially in West Europe and the United States. There are numerous corporations which have understood that in order to survive in a dynamic environment, the mentality and the HR approach also had to be changed.
pointing out people’s value as a vital resource. The strategic nature of HRM is based on a philosophy that is oriented towards management and economy. It is said that HRM is an essential activity which should respond to the organization’s interests, by aligning the employees’ objectives to those of the company. Strategic HR means an integrated approach of elaborating human resources strategies that will allow the organization to reach its goals, by making decisions in regard to the definition and implementation of plans which refer to work relations, recruitment strategies, professional formation and development, performance management, remuneration and management of the relation with one’s own employees. In general, it takes into consideration any important issue that influences the development plan of the company. Operational HR translates the strategy into programmes having clearly stated objectives and tasks. In the old HR model, the client’s needs and those of the organization were taken into consideration in defining and implementing the human resources stra“The old HR model” tegies, but what was lacking was their flexibility and adjustment according to the Human resources management (HRM) context and situations in order to be able has a key role within a company, due to the to promptly respond to the requirements of fact that it has changed at least the percep- the two above mentioned entities. tion on the “human resource” concept, by www.todaysoftmag.com | no. 16/October, 2013
13
programming HR in Agile
“The new HR model”
The global competition in the IT domain is growing. The transfer of technology and the diminution of the international communication barriers contribute to the development of this phenomenon. The clients’ exigencies are going up while new standards are reached thanked to the international rivalry between several corporations. The companies respond to these requirements, becoming “client oriented”, firstly by reducing the delivery periods, focusing on quality and continuous improvement, and secondly, by accelerating the implementation of new technologies. A common reaction to the pressure of competing forces is the organizational redesign of the systems within the enterprise (process known as Business process re-engineering), which researches and assesses the steps necessary in the defining of strategies that contain and connect between them the functions of the company. The analysis studies the operational processes carried out horizontally, trying to find out how they could be better integrated in order to respond to the clients’ needs. From an Agile perspective, the effect of this procedure can be the necessity to attract and develop staff with new skills, as well as to improve team work. Also, the focus is on the importance of an integrated and coherent approach on the elaboration and implementation of human resources processes. All these above mentioned contextual factors give birth to a series of competitive challenges which force the companies to
14
pay a special attention to the “intellectual capital” – which is the only source of competitive advantage for them. The challenge is to make the companies able to find, integrate, remunerate and keep human capital in the form of trained employees, who can sustain the evolution of the organization which is receptive to the clients’ requests as well as to the needs of its employees. Thus, in the new approach, HR is a business partner, a strategic partner, trusted by the business leaders and the project leaders. It has the role of translating the needs of the client into human resources objectives and action plans that can ensure the capacity of the organizations to anticipate the changes on the market. At the same time, it offers long term and long lasting solutions which are aligned with the company strategy to approach, attract and keep hold of the best talents. So, as actual steps, the following are necessary: • the decentralization and delegation to lower levels the decision making; • organizational structures that are plain and oriented horizontally rather than vertically, which offer autonomy in decision making; • creating a flexible and agile work force, which has a high degree of self management and responsibility for teams and their members; • encouraging initiative and team work, project work, involvement and inter-department participation; • the creation of an open organizational environment which is honest and transparent and which encourages the partnership between client, organization and employees; • the necessity for a participative leadership style, when leaders have
no. 16/October, 2013 | www.todaysoftmag.com
interpersonal skills for leading and motivating their teams. The aim of this new approach is to bring added value, by a better understanding of the business relationship and of the context, as well as of the stakeholders who are the ones that benefit directly from the HR systems and processes implementation. The result can be easily quantifiable for: 1. The employees – who will increase their productivity by developing abilities and skills, by their commitment towards the company and their contribution to business development. 2. The company – which gains a competitive advantage on the market, not by the structure it has created, but by the capabilities it develops. The logic of implementing this model is a simple one and it will lead us to the premise from which we started when I began writing this article, namely: HR must be flexible and must have the capacity to adjust in a dynamic environment, in order to increase the value in a company. In conclusion, I would like to ask you the following question: “What is the greatest challenge your organization is facing?” If the answer is attracting, retaining and developing talents, as well as satisfying the clients’ needs in a manner that is as efficient as possible from the point of view of the costs, then a solution in overcoming this challenge is the implementation of a partnership model of business between HR – client and organization. Good luck !
programming
TODAY SOFTWARE MAGAZINE
Big Data & Analytics in modern applications
L
ooking at the last twenty years, we are confronted with what scientists call the Law of Accelerated Returns. Basically, technological transformation and innovation of these past twenty years represent the output of the previous two thousand years combined. Specifically, the tech industry has undergone fundamental shifts in the way software is built, delivered and, at last, experienced by ordinary Joe – the consumer. From batch jobs to applications running on PC’s and then web-based and mobile apps, such disruptions involve significant changes in hardware coupled with new kinds of applications. Morever, modern applications emphasize a new edge of disruptive and accelerated change: the use of Big Data. The increasing demand for next generation analytics platforms that provide near realtime responses to customers triggered by real-time data such as clickstreams, social media, sensors combined with the power of distributed batch execution, only prove again that intelligence should, by default, be at the core of every software application. Because data leads to intelligent behaviour which leads to profit. Acting on the business challenges and ambitions of its customers, ISDC has created a Big Data Analytics Platform that addresses above mentioned needs and facilitates higher productivity rates and profitability. Our solution helps businesses better manage highvolume, high-variety, and high-velocity data streams and transform data into knowledge so as to generate profit. This paper explains the architecture behind our solution and gives practical steps in how to implement big data analytics projects, efficiently.
gradual change of what a software application emphasizes. In the 90’s until recently, a software application p oi nt e d out m a i nly to functionality. Later – mostly due to consumerization –functionality was considered a “must have” and the central focus switched to design. In the last years, there is an evident tendency of integrating more and more intelligent behavior in applications, while functionality and design have become the new “must have”. The need for intelligent behavior is not new, but with past technologies, it was a very hard goal to achieve. Despite difficulty of use, classical statistical methods were used to generate predictive models, which received a lot of criticism from the industry. New predictive models emerged, but that created new problems as well. One of the main drivers of change is the need of increasing the amount of data to be analyzed, together with increasing the Modern Applications accuracy of the models. But this demand In the past years, there has been a leads to a new problem: computational
power is growing exponentially, when increasing accuracy. ”Noile tehnologii Big Data și Analitice oferă o putere de calcul mare pe un hardware disponibil și accesibil, de calcul în paralel.” The response to this challenge is the appearance of a new set of technologies focused on big data and data analytics. They offer high computing power on highly parallelized cheap commodity hardware. These two technologies make the option of including intelligence in every software application far more appealing because now they are cost-effective and able – more than before - to transform data in profit through intelligent behavior.
Big Data
Your organization is like any other successful company: i t c ap t u r e s a n d shares more data, from more sources, in more shapes, thanever before. For that reason, you’re facing the challenge of managing high-volume, high- variety, and high-velocity data streams. Almost any company finds that they not only need to manage increasingly large data volumes in their real-time systems, but also analyze that information so they can make the right decisions – fast – to compete
www.todaysoftmag.com | no. 16/October, 2013
15
arhitecture Big Data & Analytics in modern applications effectively in the market. According to research by Andrew McAfee and Erik Brynjolfsson (MIT), companies that inject big data and analytics into their operations show productivity rates and profitability 5% to 6% higher than those of their peers. Big Data is full of valuable, unanswered questions. The challenge is to find the way to separate signal from noise in data, determining actual predictive indicators able to transform data in knowledge which, in turn, generates profit. This is the moment when you need analytics. “Companies that inject big data and analytics in their operations show productivity rates and profitability 5% to 6% higher than those of their peers.“
Steps of building a Big Data project
After defining the business goal, the folowing main steps are necesary: • acquire raw data from multiple data sources with different volumes and different velocity. • cleanse the acquired raw data. store raw data.
16
• integrate data (structured, unstructured, real-time, etc.) • transforming • integrating • transform, aggregate the data, store the results.
Big Data Analytics
.,Knowledgeis profit” for those firms that deploy big data predictive analytics solutions to reduce risks, make smart decisions, and create differentiated, more personal customer experiences. The answers are in the data - but only if companies look for them. Predictive analytics uses algorithms to find patterns in data by analyzing big data sources. The patterns are materiali-
zed in predictive models. Patterns might predict similar outcomes, therefore using them can improve business performance or mitigate risks. What do you need in order to benefit from the insights hidden in the data? To improve performance with big data advanced analytics, compani es need to develop strengths in three areas:
no. 16/October, 2013 | www.todaysoftmag.com
• MULTIPLE DATA SOURCES: Upgrade T architecture and infrastructure for easy merging multiple internal and external sources of data. Also choose the right data • P R E D I C T I O N AND OPTIMIZATION MODELS: Build analytic models that balance complexity wit h ease of use focusing on the biggest drivers of performance• • O R G A N I Z A T I O N A L TRANSFORMATI ON: Create simple, understandable tools for people on the front lines and update processes and develop capabilities to enable tool use. „Knowledge is prof it.” When you plan to use analytics there are two options: use off-the-shelf analytics packages or build custom-made analytics applications. As stated in McKinsey report, off-the-shelf analytics packages can be cost-effective and faster to install than custom-made, tailored models. But they lack the qualities of a killer app, one that is built on real business cases and can energize managers. Based on needs identified at its customers, ISDC designed a Big Data Analytics Architecture that reflects our vision on how to apply analytics nowadays to make profit.
Steps Of Building A Big Data Analytics Project After defining the business goal,the folowing main steps are naceaary: • Understand data from a variety of sources (internalr.externa I). • Prepare the data (integrate, clean,
TODAY SOFTWARE MAGAZINE transform, etc.). • Create the predictive model (finding out patterns). • Evaluate the predictive model (are the patterns real?). • Deploy the model (make ua of prediction). • Monitor the effectiveness of the modal (evaluate predictions accuracy).
References Medical procedure codes prediction In hospitals, each medical procedure performed on patients is named and described textually by the medical staff, in the patient’s medical record. Also, each medical procedure is uniquely coded and that code should be indicated in the medical record. Each code - indicating a medical procedure - has a correspondent amount of money to be paid by the insurance companies. Hospitals send the list of codes to the insurance companies (with attached documentation) asking for correspondent compensation.
There are cases when the medical staff overlook to indicate those codes or the codes are incorrectly specified. In those cases, hospitals may lose money.
Text Summarization In psychiatric institutions, each patient has a medical record where institution’s personnel writes daily the patient current medical condition and all significant patient facts from that day. Because of the characteristics of this type of illness – often incurable and manifested over a long period of time – the patient records size grows substantially in text over the years. When the medical personnel of a specific patient is changed, they have to know the patient current condition which can be easy accessed. Besides of it, would be a big help for them to have a quick summarization of the patient records history (which have a textual representation).
ISD C helps such psychiatric institutions by building a custom analytics software that implements an innovative text summarization and keyword extraction algorithm.
own mobile applications. To achieve this goal, they needed to get the degree of satisfaction as well as the key areas where more attention was required. In modern days, feedback is out there in the internet. It just needs to be gathered Content personalization and analyzed. First places to gather the Large geographically distributed feedback are App stores, Social Media, companies are facing challenges in providing global and local web content, cross linked and categorised that is SEO friendly and relevant for thousands of locations across the globe. There are many potential data sources that can be combined together, generating full sites and site structures, like: world geo political data, commercial regions, points of interest, company geo tagged products, geo tagged media, descriptive Blogs, etc. The resulted data is obtained by textual content, relevant keyboard and analyzing and “extracting”, from the texts, keyboard combinations, cross linking sentiments (degree of satisfactions) and based on search volumes and business key areas of interest. The outcome results value, local services and many more ISDC needed to be displayed in an intelligent and has developed a solution that consists in a flexible manner. set of complex processing workflows used To gather the data, multiple plugins and to generate large Web sites with dozens of connectors were used to connect to various categories and tens of thousands of pages internet media. The analysis was done with geographically relevant content, rich using highly performing sentiment analysis media, descriptive texts, algorithmic and keywords extraction algorithms. using cross linking, cross navigation and rich Business Intelligence, ISDC managed to faceted product information. offer flexible and intelligent dashboards Pages are built using geo calculation displaying information to the analysts. with algorithms, content production workflows the help of these dashboards, the client with distribution, authoring, duplicate could get the degree of satisfaction as well checks, automated quality checking and as the sensitive key areas, at one glance publishing, search volume and valuebased linking algorithms, media crawling Unifier reasearch and selection algorithms, customizable Desiring to be closer to their clients’ categories with keyword targeting and page needs, a major player in the finance world templates, in order to achieve a fraction needed to get the market pulse over their of the cost of common techniques with own mobile applications. To achieve this greater reduced iteration periods. goal, they needed to get the degree of satisfaction as well as the key areas where Sentiment Analysis more attention was required. Desiring to be closer to their clients’ In modern days, feedback is out there needs, a major player in the finance world in the internet. It just needs to be gathered needed to get the market pulse over their and analyzed. First places to gather the feedback are App stores, Social Media, Blogs, etc. The resulted data is obtained by analyzing and “extracting”, from the texts, sentiments (degree of satisfactions) and key areas of interest. The outcome results needed to be displayed in an intelligent and flexible manner. To gather the data, multiple plugins and connectors were used to connect to various internet media. The analysis was done using highly performing sentiment analysis and keywords extraction algorithms. using Business Intelligence, ISDC managed to offer flexible and intelligent dashboards www.todaysoftmag.com | no. 16/October, 2013
17
arhitecture Big Data & Analytics in modern applications displaying information to the analysts. with the help of these dashboards, the client could get the degree of satisfaction as well as the sensitive key areas, at one glance. Desiring to be closer to their clients’ needs, a major player in the finance world needed to get the market pulse over their own mobile applications. To achieve this goal, they needed to get the degree of satisfaction as well as the key areas where more attention was required.
Business Intelligence, ISDC managed to offer flexible and intelligent dashboards displaying information to the analysts. with the help of these dashboards, the client could get the degree of satisfaction as well as the sensitive key areas, at one glance.
ISDC Big Data analytics reference architecture
In modern days, feedback is out there in the internet. It just needs to be gathered and analyzed. First places to gather the feedback are App stores, Social Media, Blogs, etc. The resulted data is obtained by analyzing and “extracting”, from the texts, sentiments (degree of satisfactions) and key areas of interest. The outcome results needed to be displayed in an intelligent and flexible manner. To gather the data, multiple plugins and connectors were used to connect to various internet media. The analysis was done using highly performing sentiment analysis and keywords extraction algorithms. using
Earlier analytics systems were essentially descriptive, relying on transactional data, weeks or months old, and involving relatively low amounts of volume. Next-generation systems provide the ability to capture new information from the web (clickstreams, etc.), geographic
on the same level of importance as the batch mode, emphasizing the role of analytics on two areas: reporting (this is classic approach) and in operational software (web sites, ERP, etc.). The diagram below shows – considering as operational software the company web site – how analytics can influence the web site content seen by every user combining insights from: • patterns found in historical data by means of batch analytics; • patterns found analyzing, in real time, the flow of data from real time data providers (clickstreams, stock exchange rates, twits, etc.).
locations, social communities, smart devices, sensors and more. Because the wealth of data includes more and more real-time input, the predictive analysis has a pronounced tendency of being real time. The reference architecture proposed by ISDC includes the real time analytics
Adrian Margin adrian.margin@isdc.eu Software architect @ ISDC
Andras Gyalai andras.gyalai@isdc.eu Software architect @ ISDC
18
no. 16/October, 2013 | www.todaysoftmag.com
programming
TODAY SOFTWARE MAGAZINE
How can we promote and raise funds for a non profits organizations
A
non-profit organization (NPO) requires as much work and dedication as any other business, but with only a fraction of the budget of a business. NPOs who are working with small budgets can certainly use the online medium to promote their campaigns with limited resources. Besides promotion, fundraising is easier and faster also. In this article we presented some ways NPOs can raise funds. Radu Popescu
rpopescu@smallfootprint.com QA and Web designer @ Small Footprint
PayPal Donation
PayPal is known to Internet users in Romania for a long time. It began to be used more and more , with an increase of about 50 % per year according to data provided by Luke Cassina - PayPal manager for Central and East European area, so we can use it in our favor, by adding the donate button on our organization blog. It’s important to know that people who want to donate through PayPal don’t need an account, just a credit card. Also once the donations have exceeded $ 10,000, the beneficiary organization must demonstrate how they will use that money and for what causes. One thing that helps to integrate the Donate button on the website of any organization is the option to customize the graphics; this is helping us to have a more professional design. Size and its text are very important too. A button with a large size (larger than the others on the page) and a clear call-toaction helps a lot. We do not want the site users who wish to make a donation have problems in finding the button. In addition to the graphics of the button its placement is just as important. Placing it above the fold is the best solution, so that we can identify the donation button in the first 2-3 seconds after opening the page.
Online auctions such as uCmb
Auction websites can also help NPOs. I would like to mention here, a personal project that gives children from poor families gifts around Christmas. To make the project more known and to attract additional funds we had collaboration with a young fashion designer from Romania that will create a special Christmas tree that we will auction off before holydays. The auction website which we are going to use will handle the process; we need to add a few pictures and a description for the campaign and that is it.
Kickstarter for social causes
Kickstarter.com is known as a website where anyone can get fund their creative projects. Unfortunately social projects haven’t got a category therefore it is avoided by organizations trying to raise funds for humanitarian causes. However, we can raise funds using Kickstrater. A good example is a project called Krochet Kids Peru, which is helping unemployed women from Lima to generate income. The initiators of the campaign intended to raise about $ 6,000, but at the end of the campaign had 37,000 dollars (618 % more than requested). In return for this money, each donor received a number of hats, limited edition, made and signed by
www.todaysoftmag.com | no. 16/October, 2013
19
programming How can we promote and raise funds for a non profits organizations eligible but nevertheless, we are able to submit an online application to request an exception. If the organization and cause we want to promote are considered important we can be accepted. The program is simple and very effective. Users receive a daily budget of $ 329 (about $ 10,000 per month) to run advertisements campaigns via AdWords. If organizations manage to use this budget in a proportion greater than 95 % are eligible for Grants Pro program where the monthly budget amount increases to $ 40,000. Doing a simple calculation, for one year, the budget for online marketing can get to the amount of 480,000 dollars. This amount is not insignificant, even for a very large organization. Eligibility criteria require the existence of a website and proof that the organization operates legally.
User Experience issues
Nonprofit organizations need to learn a few things from e -commerce websites because they invest more in testing and optimization of check- out process, while NPOs websites donâ&#x20AC;&#x2122;t handle this very well. A number of studies on user experience, made by an American company called Nielsen Norman Group shows that about 47% of visitors do not wish to make a donation because of the ambiguous workflow, pages that donâ&#x20AC;&#x2122;t load or poor website design. A second donation-killer was content. Unclear or missing information made users quit. To be successful in fundraising we must ensure that our website users have all the information and means to make a donation.
the helped women. Another common method is the promotion of photo albums that are based on some social causes. In return for donations, supporters receive a professional photo album and part of the funds goes towards social causes promoted. The possibilities are endless; you just found the best way to reward donors.
Donations through TechSoup
TechSoup is one of the largest social enterprises in technology that has donated over time, in Romania, hardware and software worth over $ 1.3 million to a total of 750 organizations. Among TechSoup donor partners we have leading companies such as Adobe, Cisco or Microsoft. After registration and acceptance, your organization will be able to access a catalog of over 300 hardware and software products for which will pay only a processing fee of 4-10 % of market value. In addition, all organizations have free access to courses and training, case studies, events and conferences as well as free upgrade to the products received.
Google Grants
Google Grants is a program launched more than ten years ago which is aimed at non-profit organizations in 28 countries. Unfortunately, Romania is not among the 28 countries
20
no. 16/October, 2013 | www.todaysoftmag.com
programming
TODAY SOFTWARE MAGAZINE
Towards the IT community (III)
W
e have met for the third time this year with the HR representatives of well-known IT companies from Cluj in order to continue to analyze the profile community. Our intention was to bring together specialists from the domain in order to offer a “human” perspective on the ideas of stability, success and community of the IT organizations in Cluj – one of the most developed domains of local economy.
Dan Ionescu
dan.ionescu@danis.ro Executive director @ Danis Consulting
Cristina Nicule cristina.nicule@danis.ro Consultant @ Danis Consulting
common possession; 2. Group of people having common interests. By extrapolation, an IT community of Cluj would mean the assembly of Cluj companies from the IT domain which share a series of common norms, values, possessions (goods, clients, benefits etc.), manifest common interests and act together in different directions. Why would something like that be needed in Cluj? Summing up the discussions carried out, we can say that the benefits of such a form of organization and action would be: • The stability of the economic domain – “together, we have the power”. By collaborating, IT companies can access bigger projects or they may even create their own complex products, ensuring thus a more stable basis for economic growth; • The exterior image of the entire community can be one in the advantage of every separate company. An image of the kind “In Cluj there is a good quality IT community – no matter the company” would help a lot in the long run to attract clients. • Increasing the efficiency of the management of resources at the local level can be another important benefit. The existence Do we need an IT community in Cluj? of some common norms of performance, What does “community” mean? professionalism, quality as well as the An official definition: COMMUNITY = collaboration in view of obtaining certain (extracted from DEX) 1. The fact of being common benefits can help each and every common to several things or beings; company. Up to this moment we have analyzed good practices in the companies that were present to the discussions regarding the main challenges faced by every organization from this domain – you can find the reviews in no. 11 and no. 13 of TSM magazine – media partner of this initiative. Time has come for us to direct the discussions from the INTRA-company analysis towards the INTER-company analysis. So, the questions we have tried to discuss together with the representatives of Fortech, iQuest, ISDC and SmallFootprint – whom we thank for involvement and showing interest! – were: “What does an IT community in Cluj mean in the true sense of the word? Is something like that necessary, or is it better for everyone to be on their own?” – a subject that required several discussions for us to be sure which the starting point was, what the aimed target is and the motivation to get there. What is it that impedes at present the existence of an ideal community? What solutions are there for increasing the cohesion and creating a mature IT community? – question which we have only begun to discuss, but we will elaborate more on that in the last meeting planned towards the end of this year.
www.todaysoftmag.com | no. 16/October, 2013
21
HR Towards the IT community (III) • The professional development of people from the domain can be accelerated and carried out at as high as possible standards if sharing the knowhow within the community is done openly, honestly and with the intentions of collaboration. After clarifying the fact that this subject is worth discussing, the participants in our workshop felt the need to also define the levels on which this collaboration needs to be carried out – the area being extremely large, from simpler forms to extremely complex ones. The Human Resources experts are more than interested in implementing forms of collaboration on what constitutes at this moment the real source of competition between the IT companies in Cluj – collaboration for the human resources. The battle of the companies is NOT on the market, on the clients or on the projects, but only on people – who are very few for the needs of the market. The creation of a healthy work environment would be a first aimed target for collaboration between the IT companies. This would mean: encouraging (inclusively by remunerations) in all the companies the real performance, work discipline, professionalism and quality. At the moment, there are situations when people are not remunerated according to their performance, but only for the fact that they are employees that were so hard to get. Also, from the same strict HR perspective, the freelancing system would be desired to function at a bigger scale and quality. The possibility of choosing a good specialist for a determined period of time is still limited right now. As a medium-long term strategy, the Cluj IT community should collaborate in order to create a unique image on the external market – in a way, the creation of a common brand which could help everyone gain their own clients. It is much more trustworthy for good, big, stable clients to use the services of a company which comes from an area where the image is, for example, of “professionals, creative, intelligent, stable, having big, stable companies”. We do not discuss the fact that, at this moment, clients are not gained, but a strategic manner of thinking is required – how will it be 5/ 10 years from now? – how will we be able to attract them then, when, surely, there will be other outsourcing markets, cheaper than us? We should begin to build that right now.
22
The collaborations on projects between companies are the most sophisticated extreme of an IT community – as the HR experts see it. For the time being, this is only a nice dream – which may be carried out more easily and at a smaller scale between small companies, but it is difficult to conceive and obtain in the case of the big “actors” from the IT market from Cluj. We already imagine a scenario: how would it be for ISDC and iQuest to work together on a big project? (over 15-20 million Euro) What would the challenges be? How complex would the organization and division of attributions and benefits be? Surely, it wouldn’t be easy – but it could be a complex collaboration form, possible at the level of this IT community, which should think about moving on to the next level of maturity, performance and results. It is true that certain initiatives in this direction of the IT community have already been made and they are a sign that the collaboration needs and common interests are natural! Smaller companies, being more flexible, have common projects with good results. Initiatives of sharing the professional know-how – such as this TSM magazine or different conferences on the theme – are punctual examples born from the wish to raise the professional level of the employees in this domain. The IT Cluster is the most complex initiative which wishes to encourage the collaboration between companies and the creation of a local community. All these initiatives represent a beginning and they are somewhat independent, since there is no integration or practical application of theirs at the level of the entire community. We wished to find out what is it that impedes this beginning to turn more rapidly into more complex actions, into facts, with obvious results.
Challenges to overcome in order to move forward towards the ideal IT community
As a first and obvious obstacle in the implementation of the idea of community and collaboration is the lack of a business culture al the local (and national) level, which the Romanian people, and the people from Cluj in particular, still suffer from. It is true that things have changed a little, good practices have been learnt, local businesses have begun to grow, there has been an infusion of business culture from the West, but this mentality hasn’t been completely absorbed yet. Comparing the IT from Cluj to that in Bucharest, the
no. 16/October, 2013 | www.todaysoftmag.com
participants concluded that, from the point of view of this business mentality, Cluj still has a lot to learn and assimilate. Another aspect of this entrepreneurial mentality can be found in the maturity degree of the freelancing market in Cluj. On the one hand, companies are not yet prepared and do not trust working in a freelancing system to a larger scale and, on the other hand, the freelancer market still isn’t sufficiently prepared at the entrepreneurial level. People who are trying to do this, do not possess yet enough knowledge concerning entrepreneurial management, which might allow them to sell themselves and to earn a strategic and stable income. In order for the organizations to accept working with freelancers – when this is possible – it is necessary to increase the trust in their ability to quickly adapt to the needs and requirements of different companies, to the culture and values of each company they are working for. This thing implies a market of very good professional freelancers, having a specific profile for this “high-tech” working style: great tolerance to ambiguity, entrepreneurial skills and a mature attitude when faced with changes. At the moment, IT companies in Cluj have enough work to do, they have results, they bring clients – the satisfaction levels, economic growth and benefits offered to employees are very good. And so, the current tendency is to ask: “Why putting ourselves to the trouble with the collaboration, if everyone has enough – sometimes even too much – work to do?” Thus, a successful, positive result may become a great obstacle in the way of evolution: because many companies have de feeling of being busy or involved in their own businesses too much to find the time to think about imaginary things at the moment, such as the collaboration on the IT community level. However, quoting some wise men from different ages, now is the most favorable time, when things are great; it would be preferable for the IT companies to establish strategic collaboration manners, so as not to reach an undesired moment of collapse. The not so good piece of news is that, among the main reasons discussed, most of them are related to mentalities and culture – which are deep reasons, somewhat more difficult to change and which take time to become stable and to develop. Even if to a lesser extent than in other domains, in the IT industry from Cluj, the Romanian mentality regarding “the neighbor’s goat” could also be a subtle obstacle in the
TODAY SOFTWARE MAGAZINE implementation of concrete collaboration projects. The good will declarations are a first step, which is necessary and useful, but not sufficient. The deeds will be the ones to teach us all and we need to be aware of the fact that only by doing them, we will grow. Probably the first collaboration projects won’t be the most successful ones, but they will contain most sources to learn from, for all the involved parts. The good news is that the reasons of this type are of a HUMAN nature – exactly the expertise domain and profession of the HR people, whose representatives we have met. Therefore, their input is an extremely valuable one – among all the other financial, economical and business concerns to be taken into consideration.
To remain honest till the end, we are pleased by the enthusiasm and emulation created within this analysis group and we would like these “research” meetings to turn into – why not? – an initiative group with a plan and concrete actions regarding the IT community in Cluj.
What can be done? Preview
The participants in workshop no.3:
We confess we couldn’t stop our enthusiastic participants to the moment of analysis of the causes for a still insufficient collaboration – as we initially wanted for this meeting. So, as a preamble of the next workshop, when we will more clearly synthesize concrete, punctual actions which can be carried out in order to further coagulate the Cluj IT community, we present some of the ideas mentioned: • The completion of a common project for the clients abroad in which to create a persuading image of the IT community in Cluj – to inspire trust and stability. • The implementation of smaller concrete collaborations at the beginning – so as to learn from them how it is to work together. One of the ideas we liked in particular is the one related to carrying out some CSR actions together – since such actions do not have a financial stake and present fewer risks of collapse and more chances to know each other and to successfully collaborate. • For the HR people mainly – but with positive effects for all companies – could be the realization of some associations in view of obtaining some more efficient benefits for the employees. Thus, the negotiation power would increase and the quality of these benefits would be maintained – which at the moment are the subject of an inflation among the IT employees. • • A strategic solution, which could have a significant impact, would be a more obvious collaboration/ networking between the leaders of the companies of the Cluj market. As we were also
mentioning in a former article, the IT people, being at the beginning of their career, need models and the example set by the well known leaders of the local market would be the surest way to improve the working and collaboration mentality. A business club for the IT domain, similar to other business clubs in Cluj, organized according to different criteria, might be a punctual solution.
Alexandra Bayer (Fortech) started to work in the IT domain seven years ago, when she became a member of the Fortech team. Basically, she has grown together with the company and has learnt along with her colleagues from the executive how to win the trust of IT people: by logical, concrete arguments, statistics. Her main profession, that of an engineer, has helped her a lot in this structured approach of the Human Resources activities. Even today, when there are almost 300 employees in Fortech, Alexandra sees herself as somebody of help for the entire company, having “eyes and ears” for everyone, though this becomes more and more difficult given the size of the company. Iulia Druta (Small Footprint) has been part of the management team of Small Footprint for three years – a company that has developed nicely in Cluj – dealing exclusively with the Human Resources area, but having experience in the IT field for over six years. The challenges she encounters during the moments of growth of the company are truly difficult, but also the most beautiful, since in such phases you really have the feeling that something is being created. The professional experience gathered as an entrepreneur (2 years), as well as the one in the domain of financial investments (2 years), is of course an ace up the sleeve in order to understand a business from several perspectives. Cristina Ilinca (ISDC) is fulfilling a strategic position in ISDC, as Strategic and Operational HR Manager, having a vast experience in HR (over 10 years) and in management in different domains.
She entered the IT world 2 years ago and, seen from outside, she seems to fit in there since forever, as the creativity and initiative which characterize her have determined her not only to clearly understand the specificity of the IT work, but also to become the Product Owner of an internally developed game for knowledge sharing – product which she talks about with the pride and enthusiasm we also encounter sometimes in parents who have their first child. Cosmin Molnar (iQuest), psychologist by profession, has a seven year experience in the Human Resources domain, passing through almost all types of companies: automotive, production, distribution, HR and now, IT. Having these experiences in different industries, he can very objectively analyze the IT employee’s profile and the specific differences. In iQuest, he is responsible with the most difficult challenge of HR people in IT: recruiting and selecting staff… We wish him good luck! Razvan Voica (iQuest) has an old background in IT (since 1997), having a great diversity of professional experiences, including the one as a programmer. In 2011 he became part of the management team of iQuest company – one of the most important players on the IT market in Cluj (and not only here). He admits that this position – of management in the Human Resources domain – was difficult and very challenging for him. Ever since he has been working in iQuest, he has initiated and developed many internal systems and processes of HR management, which he would proudly and passionately talk about for hours!
www.todaysoftmag.com | no. 16/October, 2013
23
programming
Industrial Automations through OPC UA
O
PC (Open Platform Communication) is a standard in the industrial communication which allows universal connectivity and interoperability. It is used in the automation industry and the IT systems of industrial enterprises. The interoperability is ensured by creating and maintaining the standards of open specification.
Waldemar Knopp
knopp.waldemar@evoline.ro Software Engineer @ Evoline
The OPC technology is based on the Client/ Server architecture and it is a solution which offers a communication by industrial standards which allow the users to facilitate the creation of the architecture and the implementation of their projects.
personalized driver. The aim of OPC is to define a common interface, which, once conceived, can be reused in any other project, SCADA, HMI or other software packages. Even if an OPC server is implemented for a certain device, it can be reused by any other application that can act as an OPC client.
Why OPC UA?
OPC Unified Architecture offers: interoperability and standardization. While the conventional OPC has solved the problem of interoperability at Control level, the necessity has come up to standardize the layers from Enterprise level up to plantfloor, inclusively. The classical OPC is based on Microsoft DCOM which can lead to the vulnerability of these layers. The requirement for simplicity, interoperability and maximum security has determined the OPC Foundation to create a unified method of data communication regarding the OPC DA (Data Access) specifications, HDA (History Data Access), A&E (Alarms and Events) and Security. OPC Unified Architecture extends the successful OPC communication protocol, allowing data collection, information simulation and a more reliable and secure communication between plant-floor and enterprise layer.
OPC was designed to connect systems, networks, hardware having different operating systems (ex. Windows, Linux). Also, its role is to process and monitor the data received from hardware or software. It is an open standard which provides sure methods of accessing and describing field data which is conveyed directly or interrogated from the plant-floor devices. These methods remain the same no matter the source and the type of data. The OPC server offers many types of software packages with the method of accessing the data from the process control devices such as PLC (Programmable Logic Controller) or DCS (Distributed Control OPC / OPC UA Specifications System). Traditionally, whenever a software OPC is a set of interfaces grouped into package wants to access data from a device, categories, each of them being dedicated it is necessary to write an interface or a to a certain functionality. The category is
24
no 16/October - www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE also used to distinguish new versions of the same group of interfaces. Each category of interfaces is described in separate documents – each specification having a symbolic name and an explicit version number (ex. OPC Data Access 3.0, OPC UA DA 2.0).
The OPC UA Architecture
The following illustration represents a simplified architecture of OPC UA, made up of the two main elements: the server and the client. The server contains the Address Space made available for the clients (see more detailed information below), which in the example above may represent a device such as a heat sensor (thermometer probe), a manometer or a railway switch etc. The informational model contains the exact type of devices and the relations between them, for example, the value of the heat sensor is stored in a double type field, float or in a more complex one. The client interrogates the Address Space, for example, all the components of a railway switch and presents them to the user as a graphical interface. The client has the possibility to see all the data coming from the components and receives warning signals and events regarding their status. For example, in the case when the maneuver of switching a railway commuter was successful, the client will receive an event and meanwhile, all the data of the components involved in the maneuver will update for the client: the electrical energy intake, the temperature of the commuting engine, etc. In the case when the maneuver has failed, the client will get a warning signal containing the data which indicates the problem. In most of the cases, the connection
between the client and the server uses the network layer, for example, the Internet or LAN, which, depending on the configuration, can be a secured connection. The SDKs offer the possibility for the server and the client to be implemented in these nodes made available by the OPC different programming languages, and thus UA server is named Address Space and its they gain independence in relation to the description is called Information Model. platform. The illustration above represents a graphical approach of an already implemented The Information Model model. In view of a clearer explanation, the In order for the system to be interope- illustration can be divided into two parts rable, the data transfer mechanism must be by the horizontal arrow: on the right, there associated to a consistent model of repre- is the information model which contains senting the information. OPC UA uses the the types of data and on the left, there is object as a fundamental concept in order to the Address Space based on these types. represent the data and the activity of a sub- The horizontal arrow in the picture is the system. The objects are substitutes for the so called “HasTypeDefinition”. The “First variables, events and methods, being inter- Name” and “Last Name” nodes of the connected through references. This concept object “Who”, respectively of the “Person is similar to the well known object oriented Type” type are connected to them by the programming (OOP). The OPC UA infor- “HasComponent”. mation model provides characteristics such as data simulation, encapsulation, Address Space polymorphism and heritage. Address Space is an internal model The UPC UA metamodel allows the made especially of the nodes that represent definition of an informational model by the proper plant-floor (thermal sensor, defining the object, the variable and the railway commuter, etc.). We ask and wait data type, as well as the reference type. for data from it and we receive events. The specification defines the basic inforThe client application of UPC UA is a mational model, which in its turn already generic browser used in order to explore contains a series of basic types. and manipulate the Address Space of a One of the main goals of OPC UA is to certain server. The client is provided with display the information which can be used functionalities such as the navigation by the clients in order to manage the basic through Address Space, the reading and process in real time. Moreover, they also writing of a node’s attributes, subscribing to aim to integrate the control process and the events and data modifications (coming the management system into a homogene- from the layer of plant-floor or from that ous environment. of control) and many other possibilities of Usually, the cli- using methods. Address Space is stored in a ent s on ly ne e d special data source (data base or XML file) a certain part of and the moment when the server is started, the information it is uploaded completely into its memory, that is available providing thus the client with quick access to them at a given to the required information of the Address time. In order to Space. be able to respond The content of Address Space, respecto this request, the tively the data which represent the published infor- plant-floor, are created / modeled by modem a t i o n s h o u l d ling programs belonging to a certain SDK, be well organized and a code used by the OPC UA server is and accessible in a generated from the created model. selective manner, Each SDK comes with a modeler, which as a node having a helps to build the Address Space, namely concrete address. that model which represents the plant-floor The collection of device. www.todaysoftmag.com | no. 16/October, 2013
25
programming Industrial Automations through OPC UA A modeler application, by adding nodes and references, makes the visualization of the Address Space possible on the graphical interface, presenting the model designed hierarchically and graphically. The graphical presentation follows the OPC UA instructions and syntaxes. In the end, by a single push of a button, it generates a code such as C, C++, C#, Java. Thus, the implementation is faster and the software quality better, since the generated code is better structured and without any errors. By reducing the implementation to “modeling and generation”, even the complex models can be very quickly implemented.
The Events
Conclusions
Taking into consideration its independence in relation to the platform and the fact that it uses the Web service state-of-the-art technology, we can expect that OPC UA be applied to a larger and larger scale in industries and applications.
Caracteristicile cheie și beneficiile OPC UA sunt:
• capacitatea platformei de a rula pe orice sistem de operare, • configurare și întreținere ușoară, • tehnologie service-based, • transparență mărită, • domeniu de conectivitate mai larg, • performanță mărită.
The events are received by subscribing to the EventNotifier. Usually, they are not visible in Address Space, but there are a few exceptions, such as the Alarms and the Conditions. The events are The Key Characteristics and Benefits of OPC UA are: modular and depending on a certain type, the event has different fields. OPC UA defines a basic hierarchy of the types of events, Unified access which can be extended. In the case where the problem is unique, they must be extended by their own types, in order to be able to OPC UA integrates the existing OPC specifications: DA, A&E, HAD, Comreceive data regarding the state of the system, the process in the mands, Complex data and Object Types background, etc. into a single specification.
Methods (Functions)
The extended specifications of OPC COM focus on data or events, but many applications require more complex operations which cannot be reduced to a single fact or to a single event. By the OPC UA methods, the servers allow their clients to invocate complex functions through a set of parameters. The functions can be used to control a background process which triggers reporting events of its progress.
Access through Firewall and through Internet OPC UA employs security at message level, which means that messages can be sent through HTTP, UA TCP port or any other available port. Reliability
OPC UA Services
OPC UA implements configurable timeouts, error detection and failed communication retrieval. OPC UA allows redundancy communication between the applications of different providers.
Some of the OPC UA functionalities are offered as services. For example, the following services are implemented by the server and used by the clients: CreateSessionService – to establish the connection between the server and the client; BrowseService – to explore the Address Space; ReadService – to read the data on the server, WriteService – to update the data on the server, etc.
Security OPC UA is implicitly secure, with the possibility of encryption and it uses an advanced system of security certificates.
Data Reading (Read Service)
Read Service is used for reading one or several attributes of one or several nodes. It allows the reading of subsets of elements or of one single element from a group of values. In Address Space, each node has pre-established attributes which usually can only be read and they determine the state and the validity of the node. The attributes that are added during the modeling and development contain information that comes from the plant-floor layer. By using the Read Service, clients can require from the server information regarding the validity of a node and on the data it contains and which come from the plant-floor.
Data Writing (Write Service)
Write Service is used for writing one or several attributes of one or several nodes. It allows the writing of subsets as well as that of some individual elements from a multitude of values. As most of the OPC UA services, Write Service is optimized to write several operations at the same time and not to write one single value attribute. The OPC UA clients can write the existing data in Address Space, and these changes may reach the level of the plantfloor layer or they only reach the level of control.
26
no. 16/October, 2013 | www.todaysoftmag.com
Independence in relation to the platform OPC UA is designed to be independent in relation to the platform. By using SOAP / XML through HTTP, OPC UA can run on Linux, Windows XP Embedded, Vx-Works, Mac, Windows 7 and other classical Windows platforms.
References OPC Unified Architecture, Wolfgang Mahnke, Stefan-Helmut Leitner, Matthias Damm, Springer, 2009 http://www.opcfoundation.org/ http://www.commsvr.com https://www.matrikonopc.com
TODAY SOFTWARE MAGAZINE
programming
Automate all the things!
T
his article aims to give a high-level plan for automating a large part of the software lifecycle. It will also show, based on a concrete example, how such a plan can be implemented.
Foundational ideas Attila-Mihaly Balazs dify.ltd@gmail.com
Code Wrangler @ Udacity Trainer @ Tora Trading
But first lets mention some of the foundational ideas on which the plan is based. I posit that the following are “good things” which you should do or strive to do and that they will help you have a smoother software lifecycle: • Code review • Test Driven Development • Source control systems • Static code analysis (“linting”) • Agile/Lean methodologies • Infrastructure as code From the above list I would take code review and underline its importance: according to [CC2nd], code reviews can be at least twice as effective as testing (unit or other kind) in discovering software defects. It is also an excellent way to spread the knowledge about the system under development inside your team, reducing the risk of failure because somebody becomes unavailable (and s/ he is the only person knowledgeable about a piece of code).
Unfortunately code reviews can be very slow (one estimate puts the optimal speed at around 150 lines / hour) and time consuming. Thus the need for automated test suites and for automation which frees up time for developers to do code reviews.
What is continuous delivery?
Continuous delivery means that the organization has a mostly automated means of putting the developed software into production. In more concrete terms, if we consider the software development process depicted below, we can talk about a continuous delivery process if the highlighted areas are automated. This example process would work as follows: • After the requirements come in (which should be as small as possible, following the agile mindset), a “workplace” is created (this can be a feature branch if a DVCS like Git or Mercurial or a separate copy of the source tree) • Tests and code are written to implement
www.todaysoftmag.com | no. 16/October, 2013
27
programming Automate all the things!
the requirement (in this order if we respect the TDD methodology) • After the code is “complete”, it is “published” (again, depending on the particular tools used this step can take multiple forms - for example with Git this step would be done by “pushing” the code to a repository) • Automatically when the code is published the tests are run for it. If any failure is to occur the developer is notified to fix them • Automatically a static analysis step is performed on the code. If possible issues are detected, the developer is notified • If the code passes both unit tests and static analysis, a human reviewer is notified. Given that the code already underwent two checks at this point, the human reviewer is not bothered with trivial issues (like code not being properly formatted) and can focus on important, business level issues • Automatically, if the code reviewer gives the go-ahead, the code is integrated (this means merging into a particular branch for example if a DVCS is used) • Automatically, after the code is integrated, it is deployed into a staging environment • In the staging environment manual QA can be performed • Automatically, after the manual QA gives the go-ahead, the code can be deployed into the production environment Probably you are already familiar with Continuous Integration and you might wonder - what is the difference? And in fact there is very little - Continuous Delivery takes Continuous Integration to its logical conclusion - automating all the steps after integration, not just the ones leaving up to it.
28
Also, you might feel a little uneasy thinking “can I really trust a machine to take the same care as an experienced deployment engineer does? Let me counter this with the following ideas: • can you really trust that people always take the maximum amount of care? people become sloppy over time, have a bad day, can be distracted and so on (or even worse - they can become temporarily or permanently unavailable, possibly without warning) • people don’t scale - what if tomorrow you want to deploy into two environments? it would take twice as much time or you would need twice as many people. A program can be very simply executed multiple times (or even run in parallel) • people are slow - there are delays between the time an email is sent / a ticket is filled and until the deployment engineer sees it. What if s/he is on a break? In an automated system the deployment will kick of seconds after the code becomes available. • people don’t scale, take two - if your environment is composed of five servers, the deployment engineer needs to touch them one at a time. An automated process can update them all at once, taking one-fifth of the time overall • this is done by many companies which push tens of times daily into production without anybody noticing any problems (the only effect is that people see improvements and bugfixes quickly) • “if it hurts, do it more often” - people and organizations alike don’t become better by playing to their strengths. They must always look at the weakest link in the chain and improve it. If deployment is a bottleneck, you need to work on it,
it couldn’t possibly be automated. Relax, breathe and use the following steps: • create a checklist of steps the deployment person follows during the process. This checklist in itself is very valuable: it can ensure that steps are not omitted and it can serve as training material for other people • now go through the checklist and convert it to an automated deployment process • realize that there will be cases when the process won’t function flawlessly. When you see these cases remember that neither does a human based one. Keep a “X days since the last deployment failure if it helps”. Introduce a last, huma check before the new deployment is put live even so, at least the person is spared the boring gruntwork. Also, look into how you detect (or even better) avoid the failure next time, in an automated way.
Tools used
The “heart” of a continuous deployment process is a system which can react to external events (like source code being pushed to a repository) and perform the follow-up steps needed. The most commonly used solution is Jenkins (previously known as Hudson) which is very versatile and can interact with a lot of third-party systems through easily downloadable plugins. A couple of tips for setting up/ running Jenkins: • Jenkins can use “slaves” to do the actual build process. This means that the Jenkins “master” can run on a Linux machine while the slaves can be Windows, MacOS X, etc boxes (anything which can run Java) making it easy to run your build on all the platforms you support • Set limits on all the jobs. Specify the maximum time it can take to prevent a runaway job from consuming all the resources. Specify the maximum number of historical builds which should be archived to avoid filling up the disk-space. • Take advantage of parameterized builds to avoid the need for creating identical copies of the same build process • Take advantage of remote build triggering. This way a build can be triggered the moment a particular change was committed (look into hooks / webhooks for your VCS) • Break up builds into smaller steps You might also feel anxious that your for example one step would be running deployment process is so complicated that the unittests, the second would be
no. 16/October, 2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE running the integration tests and a third statistics, delta reports and so on. A couple running the static analysis. Small steps of tips for running SonarQube: give quicker feedback and also make it • it has a whacky architecture: the possible to run them in parallel analysis in run on the client which needs • When breaking a process into smaldirect access to both the web interface ler steps, be sure that each step operates and the backend database on exactly the same source files. Be as • analysis of a large project can run for specific as possible. Branches are not a long time and take up many resources specific enough, use commit / changeset (you can find tips specific for large Java identifiers projects on the Transylvania JUG blog). • Jenkins can notify you and your team This is a good indicator that you should in multiple ways about its progress (build break up your project in smaller modules started / succeeded / failed) - web inter• SonarQube needs a beefy database face, email, chat, programs in the system backend. Don’t run it with the embedtray, etc - set it up in such a way that it’s ded database or an underpowered convenient for the team members but MySQL instance. I would recommend doesn’t spam them. using a properly configured PostgreSQL instance. Some alternatives to Jenkins would be: TeamCity, CruiseControl and Travis-CI. Conclusions The second part of such a setup would Having a continuous deployment be a place to keep your source code and to pipeline has many benefits. It frees up review it. This can be one system or two your time. It makes it faster. It guarantees distinct systems (in which case you need to consistent results. It makes sure that your synchronize them - perhaps using Jenkins). build process is precisely defined (precisely Some alternatives: enough for a computer to execute it). It tea• Complete solutions (code hosting ches about the underlying tools which is an and review): GitHub, BitBucket, Google indispensable skill to have when you need Code, Hosted TFS to debug production issues. • Code hosting which you can install You can apply continuous delivery to on your server: RhodeCode, Gitorious, all kind of software systems, not just websiGitlab, gitweb, hgserv tes or hosted services (where it is the most • C o d e r e v i e w t o o l s : G e r r i t , straightforward to apply): your pipeline ReviewBoard, Rietveld can produce install kits or even complete virtual machines with your software preinThe third piece of the puzzle is a system stalled. Continuous delivery doesn’t mean which perform static analysis on the code that you have to give the new software to to give feedback on the issues which can be the client every time something changes, it automatically detected. For this I recom- just means that you have the option to do mend SonarQube (formerly known as so at any moment in time. Sonar). It doesn’t do static analysis on its A good book (though slightly outown, but rather consumes reports crea- dated) is “Continuous Delivery: Reliable ted by other tools (like FindBugs, FxCop, Software Releases through Build, Test, and Pylint, etc) and presents them in a nice Deployment Automation” by Jez Humble web interface, providing categorization, and David Farley. Also, you can take a look
at the presentation I gave about this topic, contact me for questions / advice or come to the next Cluj.PM meetup where I’ll be talking about this very same topic.
www.todaysoftmag.com | no. 16/October, 2013
29
startups
DoItFor.co
I
took part this year, for the first time, in the Startup Weekend Cluj. And not just like that, I went there prepared to present my own idea. At the first pitch, this idea was called TaskList, but by the end of the event it had changed into Do It For. I started with the idea of a site on which you could externalize those tasks you donâ&#x20AC;&#x2122;t know, cannot or donâ&#x20AC;&#x2122;t want to do yourself. I was thinking about cleaning, laundry washing, cooking, queuing, car washing, etc. Teodor Olteanu
Teodor.Olteanu@betfair.com End User Computing Lead @ Betfair Romania
30
no 16/October - www.todaysoftmag.com
Together with a numerous and energetic team we came in third in that competition. With this positive feedback and being extremely motivated to materialize this site which could help us have more free time, we continued to work on DoItFor in our free time. From the initial team, what was left is myself, Codin, Gabi and Victor. Motivated and eager to do something which could be useful to other people too, we worked happily to produce the site. After three months, on the 1st of June, we launched the doitfor.co site (I believe we were the first team from the Startup Weekend to launch after the event). As it is now, the site solves two big problems: the need to have more free time and the need of an extra income. The person who wishes to
externalize an activity, whatever it might be, is the one who has the most advantages. He/ She posts a task and those who are willing to help and to earn some extra money bid on the task with the price and the necessary details (when, how and under which conditions he/ she can perform the task). The person who posted the task is the only one who sees the price that was bidden by those interested, the users who bid can only see the number of bids, not their value. Thus, we avoid the race after the smallest price, which is not to the advantage of either part. Here are a few interesting statistics from the site: until now, there have been posted 150 tasks of values between 10 and 3500 lei. We have almost 1000 users registered on the site who have bidden for more than 500 times on the posted tasks. In the four months since the launching, the site has been visited by almost 10.000 unique visitors, who have paid over 17.000 visits and have visualized the pages of the site for 73.000 times. Almost 60% navigated on the site by using Chrome browser, 25% Firefox and only 6% Internet Explorer. 90% of the users used a PC in order to visit the site, 8% a
TODAY SOFTWARE MAGAZINE
mobile phone and 2% a tablet. Numerous activities have been successfully carried out: a sushi plate, wallpaper hanging, facebook pages administration, document typing, tiramisu cake, merchandising activities and many more. We are only at the beginning of our activity and there is much more for us to do, on all the levels: marketing, design, programming. Even though there is a lot of work and a lot of time when we could rest after the full time working hours which we all have, the satisfaction it brings to us makes it worth the effort. It is extraordinary to know you did something which makes people’s life a little easier. For the moment, doitfor is completely free of charge; people exchange money directly between them. We hope that this autumn we will manage to implement an electronic payment system.
to the IP, and then search into the data base the relevant tasks for the user, selected according to the distance to him. Still on the back-end part we needed a way to carry out asynchronous functions, such as, for example, sending emails or backup to the data base. For this, we used Celery configured with a broker based on Redis. Redis will most probably be used in the future for different tasks in the application, including for cache; that is why we chose it over the default broker RabbitMQ. For the front-end part, we integrated the powerful library from Twitter, Bootstrap, together with a dynamic language for presentation, called LESS. The interaction with the user is static for now, but as the complexity will increase, we will choose a front-end framework as well, most probably AngularJS. The deployment was made on the Amazon infrastructure. In the first phase, we are using three micro instances of EC2: one for the webserver, one for the data base, and the third one for administrative and asynchronous tasks. The webservers are behind a ELB load balancer, though the automatic scaling functionality hasn’t been implemented yet. Also from Amazon, we are using Route 53 for the DNS service, SES for sending emails and S3 for static files. If support for PostgreSQL will be added to the RDS service, we will probably migrate towards this data base. We already have a multitude of interesting technologies for a project that is only at the beginning!
which could help us to move quickly. In the initial team, there were Java (Android), .NET and Python programmers. We chose Python for the web application, and the programmers for the mobile developed in Java for Android a prototype application which was presented at the end of the event. The application presented in Startup Weekend required minimal functionality in order to demonstrate the basic idea of the project: two blanks, one for registration on the site and another one for adding a task, and for mobile, a simple API made of two functions: one for obtaining the list of tasks in your area, respectively for being able to bid on a task. For the web part, we chose Django as a framework. Since we needed to interrogate the data base according to the user’s locaI invite you to use the platform and tell tion, we used a variant of the framework us how we can improve it. – GeoDjango together with PostgreSQL with the extension PostGIS as a data base. Technical Details We bought an IP data base from MaxMind From a technical point of view, we nee- and together we were able to determine ded first of all a programming language first of all the location of the user according
www.todaysoftmag.com | no. 16/October, 2013
31
management
management
Gogu and communications
G
ogu looked - for the hundredth time – at the watch. It’s not normal, acceptable, or in any way excusable for someone to delay that much, he thought, and this time put his hand on the phone. He’d just dialed the number when he saw Misu entering, relaxed and with a wide spread smile on his face. - Now… why do you look so glum? He asked Gogu, then quickly added: Wait, I’m being sought-after ... He took the phone, he looked at the screen for a moment, gazed at Gogu, and then looked back at the phone and then again at Gogu. The smile was replaced by astonishment: - Now. .. he said and paused, looking questioningly at Gogu: What is it? - What do you mean? Gogu’s tongue stumbled and he couldn’t get out any other word. At last, they hardly made room among his teeth, but sounded more like a snake hiss: What is it... do you mean why do I look at you like a fool, why I don’t yell at or argue with you? What is it with my patience that has evaporated since half an hour, or what is it with that grin on your widened face?! Gogu worked up. - What is it, meaning why do you call me... Misu said, stunned by the hissing stream received in full face, trying - unsuccessfully - to understand what was going on. Gogu wanted to continue, but Misu’s face was so sincerely surprised that had disarmed him. He ended the call and continued calmer but still hissing and down: - I had asked you to come earlier today to establish together a game plan for the meeting with the client. Not only you didn’t come earlier, but you came so late that we missed the meeting! Misu’s face was still confused. He tried to explain: - But I sent another email last week saying that I will come later today, because I have to take the British to see the new office. I knew nothing about the meeting with the cli... - What do you mean you didn’t know?! Gogu interrupted him outraged. I announced all of you on Friday. Don’t you read your emails?! - Well, honestly... - What? Gogu ruffled. You didn’t read it, did you? Misu hesitated a moment before answering. When he spoke, his voice was calm, but firm: - Now… Gogu, we have to talk about this. You didn’t read my email also, right? You didn’t read mine and I didn’t read yours. We haven’t read many emails last week. And not only us, some others didn’t too. Gogu didn’t understand: - Do you mean it’s a strike?! - It’s not a strike Gogu , or at least not a conscious one. Remember what you told us two weeks ago at the project meeting? To put the whole team in CC in all the emails related to the project? - Yes, so that everyone is informed and knows what’s going on. There are many issues to consider and we can’t afford to lose sight of anything. - Aha ... And then the problem with the setup of the new equipment occurred. Do you know how it ended?
32
no. 16/October, 2013 | www.todaysoftmag.com
- Yes, Maria told me when they started installing the licenses. What does it have to do with our topic? - Maria announced you because you hadn’t read your emails, right? Seeing that Gogu was not saying anything, he continued: - Emails regarding the setup flew until no one continued to read anymore, except for three people that were strictly interested. And you probably sent me a reply to one of them telling me to come earlier today, right? Sure you did, because otherwise I wouldn’t have missed it. And I did the same when I announced the British visit. Nobody knew they were coming today... Gogu got the idea. Indeed, he had skipped some emails with the same subject, but hadn’t thought that all the others would do the same… although it was normal. Hmm, the desire to keep everyone informed, had actually overloaded them, and they tried to protect themselves. And what was he supposed to do now? He just couldn’t force them to read emails... Now he understood why Chief had missed so many emails: if he had been copied to all, he would have probably tried to protect himself too. He grimaced involuntarily; he had to find a solution. And the more he thought the more convinced he was that, unexpectedly for him, the solution was to send less information and only to those interested. The rest should be disseminated during the weekly project meeting... He dismissed Misu with a gesture, sat down at the computer, and opened the email. And there were plenty of them... Reflexively, he opened one to give a reply to the entire team, but realized immediately that it will not be read. It was clear that he had to try a new approach. He opened a new email and in the topic line he wrote “Gogu recognizes he was wrong”. He smiled to himself… this one will be read by all...
Simona Bonghez, Ph.D.
simona.bonghez@confucius.ro Speaker, trainer şi consultant în managementul proiectelor, Owner al Colors in Projects
sponsors
powered by