No. 9 • March 2013 • www.todaysoftmag.ro • www.todaysoftmag.com
TSM
T O D A Y S O F T WA R E MAG A Z I NE
ons i t a c i pl p A b e p in W ny
a stra omp t c o T I o rB y an e b t t d i e t Tw ia s init y oject r p essit l c a e r n u d or Cult a f a ptiv – a d a gn Desi
Introduction to Grails III The Challenge of Leadership Who is the Business Analyst and why would I need one? Barcelona mobile world Agile or idle? In search of the perfect domain ABAP in Eclipse
Book review: OSGi in Action Google Web Toolkit – Overview Cluj IT Cluster Implementing a successful metrics system in an IT company The Psychology of initiating and maintaining behaviors
6 Cluj IT Cluster Echipa Cluj IT Cluster
8 Cultural projects initiated by an IT company Florin Pârlea
31 Microsoft in Open-Source Radu Vunvulea
33 The Challenge of Leadership (Part 2) Martin Mackay
9 The Cluj IT History (IV) - IT Map
35 Who is the Business Analyst and why would I need one?
Marius Mornea
Daniela Haliga
10 Mobile World Congress - Barcelona 2013
37 Introduction to Grails (III)
Codruța Nicolescu, EMBA
Tavi Bolog
13 Twitter Bootstrap in Web Applications
40 Agile or idle?
Ioan Bercea
16 ABAP in Eclipse Victor Ionescu
19 Google Web Toolkit – Overview Alex Luca
22 Implementing a successful metrics system in an IT company Ramona Muntean
26 In search of the perfect domain Radu Popescu
28 Design adaptiv – a fad or necessity Bogdan Nastasa
Adrian Lupei
42 Book review: OSGi in Action Silviu Dumitrescu
48 The Psychology of initiating and maintaining behaviors Antonia Onaca
50 Gogu and Agile Simona Bonghez, Ph.D.
editorial
In the previous issue, we have seen that statistics showing successful projects indicate that the success rate is 24%, considering the results of 2009. To reduce the risks of failure, each company adapts to difficult situations by applying mechanisms to turn a potential loss into a success. The intensive use of processes or highly experienced teams may usually become effective approaches and solutions. There was a dramatic increase in IT in Romania and it is a convenient time to think about best practices that may be applied at an individual and company level. Their definition and implementation will in time provide a better result prediction based on common KPI statistics (key performance indicator) available at the community level. Therefore, we welcome the foundation of IT Cluj Cluster and also hope to see similar initiatives in other major cities in Romania. Mobile World Congress, the biggest worldwide event, took place at the end of February in Barcelona. We would like to congratulate the ANIS initiative to facilitate the participation of 11 Romanian companies in a Romanian joint stand.
Ovidiu Măţan, PMP
ovidiu.matan@todaysoftmag.com Founder & CEO @Today Software Magazine
Recognizing the value that cultural identity disclosure and heritage preservation offer to a community, the company Gemini Solutions demonstrates how IT can be actively and effectively involved in supporting Romanian cultural projects. Details about each of these initiatives can be found in the first part of this current issue. March begins with a series of events to which you are invited: Startup Weekend - addresses those who have a startup idea or want to be part of one. All tickets have already been sold for several weeks. …even mammoths Can Be AGILE is now at its second edition and will be held in Cluj and Bucharest. You will enjoy a day in which representatives of local companies and international speakers will talk about how to apply Agile to organizations to which they belong. Innovation Days is organized by the Cluj IT Cluster and is its first public event. Issue no.9 of TSM brings about a number of interesting articles such as using the Twitter Boostrap in Web applications framework, an introduction into the world of SAP by using ABAP in Eclipse. They are followed by a reminder / introduction to GWT and then Implementing a successful Metrics System in a software company. We also have The Challenge of Leadership (part two), Who is a business analyst and why do we need one in companies or How to get the support of your team in a project. Turning to the technical side, we mention In search of the perfect domain, Adaptive design - a fad or necessity, Introduction to Grails (part 3) and the book review of OSGi in Action. Moreover, there are a few unusual articles like: Microsoft in the world of Open Source, Growth Hacking applied that teaches you how to increase the audience of a site based on the interaction of users.
Ovidiu Măţan
Founder & CEO of Today Software Magazine
4
nr. 9/2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE Editorial Staf
Authors Ioan Bercea
Fondator / Editor in chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com Editor (startups and interviews): Marius Mornea marius.mornea@todaysoftmag.com
Martin Mackay
ioan.bercea@3pillarglobal.com
CEO @ Neverfail Group.
Senior Web Developer @ 3Pillar Global
mmackay@neverfailgroup.com
Florin Pârlea
Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com Marketing:: Ioana Fane ioana.fane@todaysoftmag.com Translator: Cintia Damian cintia.damian@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com
florin.parlea@geminisols.com
Alex Luca
alex-dan.luca@ihp.com
General director @ Gemini Solutions
Senior Developer @ HP
Silviu Dumitrescu silviu.dumitrescu@msg-systems. com Java consultant @ .msg systems Romania
Radu Vunvulea
Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest
Marius Mornea
Simona Bonghez, Ph.D.
Founder of Mintaka Research platform
Owner of Confucius Consulting
marius.mornea@todaysoftmag.com
Simona.bonghez@confucius.ro
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
Ana Soviany
Ramona Muntean
Projects coordinator @ AICC
Measurements & Best Practices @ ISDC
Codruța Nicolescu, EMBA
Daniela Haliga
Executive Director @ADESCO
Business Analyst @ Endava Iași
ana.soviany@iccromania.org
codruta.nicolescu@businessdays.ro
ramona.muntean@isdc.eu
daniela.haliga@endava.com
ISSN 2285 – 3502 ISSN-L 2284 – 8207 Radu Popescu
rpopescu@smallfootprint.com
Bogdan Nastasa
Bogdan.Nastasa@endava.com
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
victor.ionescu@msg-systems.com SAP IT Consultant @ .msg systems Romania
QA and Web designer @ Small Footprint
Copyright Today Software Magazine
Victor Ionescu
Mircea Vădan mircea.vadan@gmail.com Co-founder @ Use Together
UX/UI Design Lead @ Endava
Tavi Bolog
Mihai Nadăș mihai.nadas@tss-yonder.com
tavi.bolog@nokia.com
CTO @ Yonder
Development lead @Nokia
Antonia Onaca
Adrian Lupei alupei@bitdefender.com Project Manager and Software Engineering Manager @ Bitdefender
anto@aha-ha.com with 10 years of experience, psychologist, consultant as an entreprenour
www.todaysoftmag.com | nr. 9/2013
5
business
Cluj IT Cluster
R
ecognized for its tradition in higher technical education and currently a major IT center in the region, Cluj has a favorable environment for the organic emergence of an innovative cluster. As cluster initiatives are considered an engine for the regional development and innovation, the recently formed CLUJ IT cluster is getting a lot of attention from the local IT community as well as from the local and national authorities.
An innovative cluster
The cluster concept was introduced in 1990 by Michael Porter as a “geographic concentration of interconnected companies, specialized suppliers, service providers, and associated institutions in a particular field that are present in a nation or region”. Nowadays, clusters are are very high up on the agenda of governments, companies, and other institutions. Cluster development initiatives are an important new direction in economic policy. Building on earlier efforts in macroeconomic stabilization, the clusters have the potential to increase the productivity of the companies in the cluster, to drive innovation, and to stimulate new businesses in the field. CLUJ IT was set-up in September 2012 as an innovative cluster which is based on an association /agglomeration of companies active in the IT sector combined with universities / research organizations with the role of generating up-to-date research that can be applied in this sector and can benefit the companies, and also with public institutions& catalyst organizations that can provide direct support for initiatives, facilitate financing or networking. So, from an organizational perspective, Cluj IT is an association of members active in the
Information Technology field including: 23 IT services and software solutions providers; 2 universities; 7 public institutions and catalyst organizations. The full list of cluster members is available on the cluster’s official web site www.clujit.ro. These organizations acknowledge that they should cooperate in order to address current challenges in areas such as Human Resources, Research Development & Innovation, Business Infrastructure, Financing and Marketing /Sales. The CLUJ IT cluster is very representative for the local IT community as it brings together companies with cumulate revenues of approximately 70% of the IT sector in Cluj and a headcount of over 3,500 employees. The member companies specialize in Business Applications & Solutions, Web 2.0 and Rich Internet Applications, Mobile Applications, Embedded Systems, Applications & Infrastructure Management and Hardware, and they are working for clients in mainly in Financial Services, Telecommunications, Pharmaceuticals, Logistics, Retail, Automotive, Manufacturing and Public Sector. The Cluj IT member companies and the innovation partners have the capabilities to cover the complete value creation
chain. The two universities in the cluster, Technical University Cluj-Napoca and Babes-Bolyai University, have strong research capabilities ranging from artificial intelligence and future robotics to challenging IT solutions for medical network, involving more than 300 people in over 30 research projects.
Cluj as a regional innovative IT hub
Cluj IT Cluster represents an organizational business initiative aiming at increasing competitiveness and attractiveness of the Romanian IT sector overall and positioning Cluj as a regional innovative IT hub. The cluster’s vision is to become by 2017 one of the most credible suppliers from Eastern Europe for innovative IT services and products as well as organizational support systems. The cluster has the support of the Romanian Government and the local authorities, which acknowledged Cluj IT as an initiative of national importance, while several renowned professionals in the business and public fields were co-interested so that a Strategic Council for the cluster was established, with an important role in guidance and lobbying. The top focus points for the cluster are: • Extending the international market footprint through increased competitiveness and innovative products / services; • Building an efficient cooperation mechanism between the IT industry and the academic sector which will result in a highly skilled workforce;
6
nr. 9/2013 | www.todaysoftmag.com
business Planning and building an extensible Cluj IT City where the IT community will have all the infrastructure needed to do business, innovate and collaborate. To achieve international exposure, the cluster will be very active in promoting the capabilities of the cluster and is looking to generate international projects as a joint team, while it also aims to work with the Romanian government to increase awareness for the IT sector in Romania and stimulate exports. The current markets for the companies in the CLUJ IT cluster are mainly USA, Germany, UK, Canada, but also countries such as Austria, France, Switzerland , Scandinavia , CEE, Japan, China, Korea. At the same time, innovation is seen as a key factor for boosting exports. In order to switch focus in software development from outsourcing to building innovative products, the cluster will aim to initiate common projects based on existing interests, conduct fundamental and applicative research to generate market oriented products, and facilitate financing of R&D
TODAY SOFTWARE MAGAZINE projects, either by private investments or public-private partnerships. The universities will also have an important role in leading the innovation process. Other important aspects to consider are increasing the number of highly skilled professionals and building a vertical integrated chain structure that would be able to generate complex products. To address the objective of increasing the highly skilled workforce the focus will be on improving the quality of the education to meet the industry’s demands by stimulating curriculum change and competition in education. The cluster will work to identify and promote methods through which the Romanian government can support Universities in increasing the quality of their programs, stimulating internships programs and developing alternative solutions, such as vocational studies. The CLUJ IT Innovation City is an urban development project based on a Brained City concept. The aim is to attract international capital to stimulate the development of innovative IT projects and technologies, within a very creative work
environment, which will attract many IT companies. The CLUJ IT Innovation City will consist in building offices, research labs and education facilities, hotels and restaurants, as well as in ensuring the services required for operating such a business development platform in the IT sector. The city is planned to occupy 300 HA and reach a total investment of 300 mil. EUR, with over 20.000 IT specialists in 20 years. The complementary services needed will generate many jobs in the region, which in turn will have a very positive social and economic impact, contributing to a sustainable regional development. Echipa Cluj IT Cluster pr@clujit.ro
www.todaysoftmag.com | nr. 9/2013
7
culture
Cultural projects initiated by an IT company
C
ontemporary Cultural Identity Association (CCIA) was born in 2012, out of a desire to fight stereotypes associated with Romania and to show that we live in a normal country. Moreover, „natural” is the concept that NGO members often invoke in the discussions about the need for projects undertaken by them. Their approaches could be translated as an attempt to show that Romania is not the ‚different’country, where ‚everything is possible’, but a ‚natural’ and normal one. If such a goal seems naive, maybe you should know that the organization is not made up of bohemian kids: the core members of the association consist of team members from Gemini Solutions. How to reconcile full-time work at a software company designing and organizing cultural projects? „It’s a common passion that helps the cohesion of the group of professional engineers,” says Florin Pârlea, general manager and president of Gemini Solutions, CCIA Romania. The first major project launched by CCIA is the Romanian Letters website (http://romanianletters.ro), a portal that brings together external links with the one Romanian subject in the foreground, be it personality, special places or Romanian wine. ’The purpose of Romanian Letters is to show that our country isn’t better or worse than any other, but only to cherish its uniqueness. We want to rediscover Romania’ shows description on the project’s website. In turn, Florin Pârlea says: ‘We must oppose the decreasing of quality information that the public gets from media, such as information about what’s cooking and what diet Zavoranu Oana and Daniela Crudu are on’. In the spirit of this ‘opposition’ CCIA started a partnership with the Active Radio eFeM, so that Romanian Letters became a radio show. Every Tuesday night from 6pm the association’s members are the host of the Romanian Letters show, which aims to promote Romania beyond stereotypes. The show can be heard online (http://www.
drumsfor ¬ fem.ro /) or on the 92.7 FM frequency (Bucharest). The website with beautiful stories about Romania is not the only CCIA project. Last year, many of the key points of the telecultural scene in Bucharest (Romanian Atheneum, Romanian Academy, Şutu Palace) hosted exhibitions with images of lesser-known statues of ancient Roman Dacians made by artists during the reign of Traian. Exhibitions were organized under the aegis of ‘Statues of the Dacians’, which is another important project undertaken by the association. Http://statuidedaci.ro website aims to bring public attention to these statues, which are now in the museums worldwide. The site designed by CCIA brings together photographs and descriptions of these statues, and details about where they are. The portal has been conceived in collaboration with historian Leonard Velcescu, PhD in Art History at the École pratique des Hautes Études (Sorbonne) and the Nobel Prize ’Hurmuzachi Eudoxiu’ of the Romanian Academy (December 2012). CCIA’s activity has just started and the team has big plans for 2013, including the organization of a series of events to mark the 1900 years anniversary since the inauguration of Traian’s Column in Rome. ‘For Gemini Solutions, social involvement is a duty’, as Florin Pârlea says. ’The government and ministries cannot do everything; the civil society is also us, the private business environment. If not us, then who? Housewives, retirees? Obviously, it’s our job. „ ‘Nothing in this world comes down to stereotypes. Romania is not the country of vampires. No stray dogs, no beggars, no hackers.
8
nr. 9/2013 | www.todaysoftmag.com
Romania is confined neither to the People’s House, nor to Nadia and Hagi, polenta and stuffed cabbage. We believe that Romania is a combination of people and places, traditions and food, wine and history. If you want, it’s a combination of flavors. Flavors that do not make us better or worse than other people, but they certainly make us unique.’
Florin Pârlea
florin.parlea@geminisols.com General director @ Gemini Solutions
Ana Soviany
ana.soviany@iccromania.org Projects coordinator @ AICC
history
The Cluj IT History (IV) IT Map The planned title of the current article was: “From education to personal development” and it built on the idea that the business environment took the lead in moving IT forward in the post-communist period. In short, both access to hardware resources and specialized training were transferred form the state to private companies. The first businesses in Cluj’s IT landscape were mostly hardware resellers. They answered both to a local market need, the previous generations of IT pioneers, but mostly to the personal computer trend that swept the globe. Similar to the hardware/software stacks, on top of this initial hardware offering layer, telecommunication services started to develop (ranging from improvised neighborhood networks, to professional services), complete IT infrastructure solutions for the business environment, software solutions distribution and their customization, and finally local software production, both outsourcing and product based development. Current efforts try to add another layer: start-up scene. Naturally, this stack of services was joined by a similar trend of specialists development that covered the human resources demand. Starting from system administrators, going through several iterations of programmers and reaching the actual generation of IT entrepreneurs. An important aspect is that the business environment took over, a long time ago, the social effort of training specialists. Ranging from simple Internet-Cafe administrators, dedicated trainings aimed at high-schoolers and university students, internal on-the-job or trainer based sessions for employees, to the multitude of specialists communities and events, very active in the last few years. I still remember the gap between our highschool curricula: Pascal, C++ (in a few lucky cases), FoxPro, and the Java courses offered for high-schoolers by Recognos and for college students by iQuest. These took place twelve, fifteen years ago, and had a fundamental role in raising the bar for the locally produced specialists and inherently the technical level of the projects they could
9
tackle. Other initiatives followed , but with the explosive raise in numbers of the local IT companies, an internal growth process came into focus for each company and the general education initiatives became strongly diluted. Only recently the entrepreneurs community restarted the educational trend and I wish them at least the success of their predecessors. The above trends can be easily visualized by comparing the number of companies, the nature of their service offering, the number and profile of their employees and their clients, throughout the years. Thus we reach the new article name: “IT Map”. Out of a need to chronologically validate the above information, I tried making a list of the local IT companies, sorted by founding year, with a few extra details about their activity: number of employees, total revenue, profile, etc. After a few searches through my memory, followed by some on BestJobs, Aries, Cluster IT, I’ve found one candidate for the first successful IT company: NET Brinel (founded in 1991). But things got complicated very fast, from the simple attempt of classifying a sinuous evolution between hardware and software of the first candidate, to discovering the occupants of the second and third position, the evolution of IT in the nineties is already shaded by the passing time. As a result of this effort an old project of mine, that was waiting for its proper time, resurfaced: building an interactive, intelligent map that allows an exploration of the local IT evolution. A very brief description: the kind of visually rich application, easy to use, with that WOW factor that makes it an instant favorite. In the background there would be an initial database, holding the above information, and the front-end
nr. 9/2013 | www.todaysoftmag.com
would be filled with colored spots, anchored on the map at the company’s headquarters address, proportionally sized to reflect all kinds of filtered metrics. Of course that the Wow factor isn’t complete without a merry animation of spots to show the ecosystem evolving in time. For starters, I’m asking our readers to help executing the following plan: • finding an initial data source detailed enough to raise an interest. For example a list of IT companies from: The Commerce and Industry Chamber of Cluj, ANAF, or alternatives like BestJobs, Aries, etc; populated with some details; • the development of a simple Google Maps based application; • promoting and building a community capable of validating, updating and enriching the data to allow for more valuable information to be displayed; I ask the community’s help, because the map can only bring benefits, once it’s users understand the direct relation between the quantity/quality of the information they can extract versus the one they add. More precisely the usefulness increases thorough a raise in valid and relevant data. As always I close the article hoping that we will receive your feedback and support.
Marius Mornea
marius.mornea@todaysoftmag.com Founder of Mintaka Research platform
business
Mobile World Congress - Barcelona 2013 What does it mean for Romanian companies?
O
n February 25-28 the fifth edition of the GSMA Mobile World Congress took place in Barcelona. It is organized by the GSM Association (GSMA), founded in 1995 and encompasses nearly 800 mobile operators in more than 200 countries. The event is the largest in the industry of mobile devices and in this article we will present the expectations of three Romanian companies participating in the event. These mini interviews were conducted using Business Days www.businessdays.ro.
APPSCEND
networks in mobile advertising and What products or services will you prepre-integration with the system in App sent during Mobile World Congress 2013? Purchases - Apple and in-app billing 1. Services: - Android. • development and testing of mobile applications; The year 2012 brought a number of • development of offshore and technical innovations to our platform, nearshore software system; which contributes to the full experience • hire staff of companies seeking a complete platform 2. Products: to develop mobile strategy. The biggest • OptimallSFA – a sales force autostep forward was achieved through the mation solution developed on the launch of a framework called Dolphin, the Android platform only one in the world that provides PHP programmers with the ability to develop What do you expect from this event? cross-platform mobile applications using Firstly, AROBS representatives want the most popular scripting language for to know what the trends in the field are by web technologies. participating in communication sessions We now have over 3000 registered com- and discussions with exhibitors and fair panies and over 2500 applications running. visitors. The 300 Appscend platform apps already The second objective is to identify reached 1 million users from all continents. potential customers for our development
What products or services will you present during Mobile World Congress 2013? At MWC we will present Appscend, a cloud-based platform that facilitates the development of native mobile applications, cross-platform iOS & Android, and the suite of management tools that are associated with this product. In terms of tool management we will speak about: 1. Appscend’s mCMS (mobile content management system) – the information management system of mobile applications. 2. Smart Push Notifications: the advanced targeting and management platform sending notifications of native applications. 3. Appscend App Analytics: the system of measuring the indicators’ performance within mobile applications, similar to What do you expect from this event? Google Analytics web system. 2. From MWC 2013 we have high 4. Appscend Mobile Monetization: expectations. We have already scheduled the integration with the most popular several meetings with strategic partners and customers, and, like every year, this is a very good opportunity to inform a selected audience about what we do and how products we make have a fundamental contribution to the success of companies that want to embrace the opportunity offered by the mobile environment.
AROBS
10
nr. 9/2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE and testing services for mobile applications, namely software outsourcing for development and testing of Web and cloud applications.
QualteH
What products or services will you present during Mobile World Congress 2013? IQteh – a business platform available on iOS, Android and BlackBerry; IQroute – an integrated solution designed for transportation and logistics having an importantmobile component; MobIO – mobile reporting. What products or services will you present during Mobile World Congress 2013? QUALTEH is present for the second year as an exhibitor at the MWC 2013 and we primarily aim to strengthen the partnerships we have developed. Our IQcrm and IQsfa solutions, designed primarily for the enterprise sector, registered a significant increase in 2012 and we are confident that this trend will continue in the following years. This year we are presenting two new applications - IQroute and MobIO. IQroute was developed from the need and specifications of some of our partners and integrates all the necessary facilities for transport and logistics companies, starting with the server, database and the mobile component - used by drivers, supervisors and managers. MobIO is a new concept in the region and has been developed as a „mobile reporting” solution that, when required, helps companies in accessing and processing different information on mobile devices. Virtually, every company needs or will need in the future some information from the internal systems on mobile equipment, as representatives of companies operate mobile and mostly outside the office. MobIO facilitates the easy and safe access to useful information from the internal systems of production, management and accounting, logistics and transportation.
Codruța Nicolescu, EMBA
Ovidiu Măţan, PMP
Executive Director @ADESCO
Fondator & CEO @Today Software Magazine
codruta.nicolescu@businessdays.ro
ovidiu.matan@todaysoftmag.com
www.todaysoftmag.com | nr. 9/2013
11
communities
TODAY SOFTWARE MAGAZINE
Cluj-Napoca IT communities
O
ut of last month’s events I’ll pick two, placed at opposing sides of the business development spectrum, but very much alike as far as the atmosphere and quality of the participants. StartupWeekend is addressed at the ones just getting started in defining and developing a business. This is why the atmosphere was rich in enthusiasm, supported by a healthy and polite competition, just enough to build up the tension and joy of winning. Joined by a very large and involved team of mentors, the organizers main challenge was their great public success and implicitly the large number of participants (a challenge we wish upon all the local Calendar events). Cluj IT Innovation Days was the closest thing to an aristocratic event for the local IT. Both the event organizing, but even April 4 more the attendees: a mix of political figures, representatives of the Launch of issue 10 of TSM magazine biggest local IT companies, invitees form other towns, university www.todaysoftmag.ro professors and organizers of most large IT events, have joined in creating a business atmosphere of the highest level. Standing proof April 4 that the local ecosystem has reached a critical mass which allowed Ruby in iOS: Introduction to RubyMotion the leap to a new level of collaboration in the community. www.meetup.com/cluj-rb/ Transylvania Java User Group Java technologies community. Website: http://www.transylvania-jug.org/ Started on: 15.05.2008 / Members: 533 / Events: 41 TSM community Community created around Today Software Magazine. Website: http://www.todaysoftmag.ro Started on: 06.02.2012 / Members: 520 / Events: 8 Romanian Testing Community Community dedicated to QA. Website: http://www.romaniatesting.ro Started on: 10.05.2011 / Members: 582 / Events: 1 GeekMeet Cluj Community dedicated to web technologies. Website: http://geekmeet.ro/ Started on: 10.06.2006 / Members: 533 / Events: 16 Cluj.rb Ruby community. Website: http://www.meetup.com/cluj-rb/ Started on: 25.08.2010 / Members: 133 / Events: 33 The Cluj Napoca Agile Software Meetup Group Community dedicated to Agile development. Website: http://www.agileworks.ro Started on: 04.10.2010 / Members: 297 / Events: 24 Cluj Semantic WEB Meetup Community dedicated to semantic technologies. Website: http://www.meetup.com/Cluj-Semantic-WEB/ Started on: 08.05.2010 / Members: 137/ Events: 21 Romanian Association for Better Software Community dedicated to IT professionals with extensive experience in any technology. Website: http://www.rabs.ro Started on: 10.02.2011 / Members: 208/ Events: 11
April 9 Jim Bagnola – Lead the Change, Cluj-Napoca www.jimbagnola.ro/evenimente/cluj/ April 9 AgileWorks Remote Open Space www.meetup.com/The-Cluj-Napoca-Agile-SoftwareMeetup-Group/ April 10 Facebook graph search www.meetup.com/Cluj-Semantic-WEB/ April 10 Functional Programming http://lnkd.in/CijSms April 26 Romanian Progress User Group http://it-events.ro/events/romanian-progress-user-group/ May 27 Windows Azure Bootcamp it-events.ro/events/windows-azure-bootcamp-at-clujnapoca/ May 16-17 Romanian Testing Community Conference 2013 http://www.romaniatesting.ro/ May 23-24 ITCAMP 2013 - TSM reccomands it http://itcamp.ro Thursday/weekly OpenConnect www.facebook.com/groups/355893314491424/ Wednesday/bi-monthly OpenCoffee www.facebook.com/opencoffeecluj www.todaysoftmag.com | nr. 9/2013
12
programming
TODAY SOFTWARE MAGAZINE
Twitter Bootstrap in Web Applications
I
like to define myself as a web developer, which means a person who performs web application rather than a performing websites presentation, the latter being my opinion and responsibility of the implementation of a web designer. However, Web applications have their web interface component, so for small teams or even „one man show / freelancer”, it exists the necessity of help in making an interface to make the user experience a pleasant one and ease of use and work for it to be as low as effort and time.
Ioan Bercea
ioan.bercea@3pillarglobal.com Senior Web Developer @ 3Pillar Global
Like any web developer, I prefer to spend as little time on the UI, but at the same time I would like the final product to look great. For this we continually search resources and tools to help me reach this result. Some of the resources currently available which helps not only to achieving a short while user friendly, modern and adding value through the experience that we have end-user use deliverables will be presented in this article
UI Framework - Twitter Bootstrap1
Twitter Bootstrap is a framework for designing HTML / CSS and Javascript by encapsulation of functionality in jQuery. Also, is a framework that has as main task to provide the necessary elements to achieve a finished product in a short time. As open-source project initiated by the development team at Twitter, caught fast in the online community, with an exponential trend in several directions. Thus, not only reached version 2.2.x and is among the most popular open-source projects on GitHub, but also triggered the development of third library libraries and extensions that are designed to supplement and refine a whole package of necessary resources around this framework. Among thes e res ources can b e mentioned: • Templates Twitter Bootstrap (free or 1
http://twitter.github.com/bootstrap/
commercial license) • New fonts • UI Elements and components • Other useful aesthetic elements (arrows, graphic libraries for generating templates, etc.) Twitter Bootstrap also offers another feature, which is not easily overlooked: the great compatibility with most web browsers, including Internet Explorer 7. And the mobile devices are supported by implementing a responsive CSS. Regarding support for mobile devices, Bootstrap Twitter can not replace a framework exclusively for them, such as jQuery Mobile, which is built and defined as an optimized web framework for smartphones and tablets, while Twitter Bootstrap support they provide only by creating responsive layouts depending on the device you are accessing. To the ongoing development of the Twitter Bootstrap framework is preprocessor LESS, mainly because the code compilation speed (6 times faster than Sass), and the elegance and use of JavaScript. As a result, provides a developer can adjust the design by defining / setting a set of variables / parameters and recompiling LESS sources resulting in a new set of style files (CSS). LESS is not only CSS pre-processor available in currently existing multiple preprocessors pintre who stood out front end
www.todaysoftmag.com | nr. 9/2013
13
programming developers: LESS, Sass and SCSS. Their use adds value to any frontend framework. But their performance is similar, each seeking to provide developers easily write quality code, and develop a finished product. The web browser is able to render CSS styles only files, code written for these precompiled pocesoare is generating a set of CSS styles broswere interpreter. These pre-processors have emerged as a necessity following limitations involved in using CSS styles (no variables, and ease of reuse in multiple selections CSS styles). Although at first glance, the use of pre-processors could be considered as an additional job in making an application or website, one of the major advantages is gaining time in development with cleaner code (DRY = Do not Repeat Yourself), a CSS file cleaner and easier to maintain
tabs, tool tip’s, carousel, and a few newer <button type=”button” items scroll spy, affix to add a touch of data-toggle=”modal” data-target=”#myModal”> novelty to any web page. Launch modal When using Twitter Bootstrap package, </button> along with the ability to build your own The second method is based on package using preprocessor functions LESS Javascript calls: locally installed, you can use and custo$(‚#myModal’).modal(options) mize the package by defining the variables, parameters and even plugins required before downloading the package from the web that the hosts. This can translate into reduction package customization and end user exposed, resulting in faster webpage loading. In the example in the following picture, you can see: fixed top navigation with drop down, groups of buttons, full calendar widget, and DatePicker calendar. A clean set with some widgets footprint Or using jQuery library functionality is offered and those of UX Fuel Controls. of plot: Including the complete datagrid offered Templates for Twitter Boostrap Besides plugins provided by the team by them is the one shown in the following Following the success and popularity figure: gained by this framework html / css, web communities have emerged with the staFonts in Icon representation2 ted purpose of providing (free and / or Another trend is the use of a font in commercial) User Interface packs complete representing icons for some action and and ready for built-in applications in varirepresentation of auxiliary information. ous fields. of developers behind this package, there One of these: FontAwesome is even defiare many sites that complement ned as an iconic font developed to be the various extensions, the gra- used together with the Twitter Bootstrap phics of useful information, to framework. But not the only, being comextend certain widgets classical plemented by several fonts in the same level. category. For integration, Twitter An example is Socialico, which proviBootstrap offers 2 ways, one of des a set of icons representing characters them is interesting because it for the most popular social networks. does not require knowledge of JavaScript for use. This method This is a new method type disclosure uses only HTML special attri- icons that comes with many advantages butes attached to existing tags such as scalability representation without to trigger some Javascript functionality loss of quality (as represented vector font), One of the most popular {wrap} bootstrap provides templates by category: • Management and Dashboard • Presentations Pages • Pages Business and Corporate • Portfolio and Galleries Besides this there are many other commercial service that provides complete templates under a free license, one of which is Bootmetro, Metro Style style replica offered by the new Windows 8. (http://aozora. github.com/bootmetro/)
jQuery in Twitter Bootstrap
jQuery has been integrated since the first version, and with him a few plugins that are commonly used: windows modal,
14
nr. 9/2013 | www.todaysoftmag.com
2
http://fortawesome.github.com/Font-Awesome/
TODAY SOFTWARE MAGAZINE Integration of these templates in a completer PHP MVC Framework
Pachetul Twitter Bootstrap este independent de tehnologia server side folosită, ceea ce îl face atractiv pentru web designeri și dezvoltatori web, indiferent de limbajul de programare utilizat. Folosirea acestui pachet de UI, împreuna cu un framework de tip MVC avansat, care pe lângă functionalitatea standard, și un design arhitectural oferă si un generator de module de tip CRUD (Create/Remove/ Update/Delete și altele dacă se intervine) ar fi un caz complet de implementare de tip a smaller footprint (smaller files), less work „x” which is rendered for in web broswer Rapid Aplication Development (RAD) cu and of course Photoshop to create / modify user as icon representing the action area). rezultate și privind experiența userului. CSS styles, but also some disadvantages: a limitation on the number of icons available In conclusion in each font, and even a small problem for Package „Twitter Bootstrap” presented SEO (google bot can not interpret the letter in this article is not the only one currently available online. Another interesting package Foundation, reached version 3.2 and the Zurb provided by the Foundation. Again this is a UI framework built this time using pre-processor Sass, but provides the facility like Twitter Bootstrap. All this is just a collection of resources made dispoziţiedisponibila on several websites, but can be combined into a unified form the final product. Burden is still on the developer to use creative and analytical sense to create a useful interface and easy for the end user by combining resources.
www.todaysoftmag.com | nr. 9/2013
15
programming
ABAP in Eclipse
W
hile SAP’s reputation has been built around the business solutions which the company is able to offer to its enterprise clients, the technical platform supporting these solutions has not necessary been the center of attention. However, the recent initiatives indicate that SAP wants to change this fact. Among these initiatives is also the decision to migrate the classical ABAP development environment from the standard SAP GUI interface to a more modern platform, namely Eclipse.
Victor Ionescu
victor.ionescu@msg-systems.com SAP IT Consultant @ .msg systems Romania
But, while a programmer unfamiliar with the SAP environment will assume that Eclipse is just “another IDE”, an ABAP developer will immediately realize that the transition to this new IDE is not one that can be made straightaway. The reason is the fact that the ABAP development process follows a different pattern than the one normally encountered in projects developed using the Eclipse platform. In the following paragraphs we will analyze these processes, the differences between them and the way in which the integration of ABAP in Eclipse has been designed.
IDE such as Eclipse Usually in such cases the project is stored in a central repository, but, the actual development is performed on the local workstation. Each developer will have a local copy of the project, and perform the development using the locally installed IDE, which provides a series of tools and functionalities to this end. Once the development has been finalized, the changes can be transferred back into the repository. By using this approach, a versioning of all changes is implicitly performed, the issue of concurrent access to the development objects is solved and the project consisSoftware development using Eclipse IDE tency is ensured through the periodic For starters we will take a look at the builds performed in the central repository. way the typical software development process takes place when using an IDE such Software development based on the SAP as Eclipse. The analysis is conducted parti- platform cularly from the perspective of continuous To underline the differences between code integration and how it “affects” the ABAP software development and the prodevelopment process. cess outlined above, we will present some Fig. 1 The typical versioning and con- of the main features related to SAP devetinuous integration process when using an lopment. Once these aspects have been presented, a more precise evaluation can be performed with regard to the consequences of switching to ABAP in Eclipse.
SAP system landscape and transport management Typically in a SAP project we are dealing with a “landscape” of systems, each system having a specific role, such as development, QA, integration, production. Figure 1 - Versioning and continuos integra-
tion process using an IDE like Eclipse
16
nr. 9/2013 | www.todaysoftmag.com
The development is only performed on the development
TODAY SOFTWARE MAGAZINE system, and every time the ABAP proan object is edited, an inactive version grammer performs a change, it is recorded of it is created, version which contains in the system’s internal versioning register all the changes made on the object. For and assigned to a “transport request”. This the changes to take effect at runtime, request is basically a container whose role the object must be activated. Through is (among others) to group changes made activation the ABAP application server on the system which logically belong generates a new “runtime object” version together. Once the implementation is conof the edited object. sidered to be complete, the request is used to transport these changes from the deve- ABAP Workbench lopment system to the other systems of the To facilitate the server-side developlandscape, following certain predefined ment and editing of objects from the R/3 transport routes Repository, the ABAP application server provides an integrated development environment: ABAP Workbench. It consists of different tools, designed to support the entire ABAP software development lifecycle. The software development in SAP would not have been possible without these tools. Consequently any develop-
Figure 2 - SAP System Landscape
The server-side development paradigm
various companies have created plug-ins to make ABAP development in Eclipse possible, plug-ins which in the meantime have achieved quite a high level of maturity. Nevertheless, in this article we turn our attention to the solution which, although launched less than a year ago, will probably become the de facto standard solution for ABAP-Eclipse integration, because of the fact that it is the official solution provided by SAP itself
SAP ADT
“ABAP Development Tools for SAP Netweaver” (short: ADT) is the official name under which the package which makes ABAP development in Eclipse possible is promoted. According to SAP, the aim of ADT is increasing the ABAP programmers` productivity by providing a workplace which integrates the ABAP workbench capabilities in a powerful and modern environment based on the Eclipse platform.
In order to have a powerful ABAP development environment, it is necessary to provide the tools which are normally found in the ABAP Workbench through Figure 3 - Utilitarele care formează the Eclipse platform too. Workbench-ul ABAP, allows to manipuThe question one might ask is: How has late objects from R/3 repository the integration of ABAP in Eclipse been designed in order to make this possible? The short answer: Providing REST1 serment environment which aims to replace the ABAP workbench has to provide these vices through the ABAP application server and consuming those services from the functionalities Eclipse front-end.
In the case of SAP projects, the development itself does not take place by locally editing the objects, but live on the ABAP application server. This brings other issues to be solved, such as: 1. Concurrent access to objects, an issue solved by using pessimistic locks at ABAP into Eclipse To elaborate the answer – the ADT pacthe level of every object. The first attempts to migrate the 2. Determining when a certain change ABAP workbench to Eclipse have been kage consists of two components: 1 Definitia conceptului de servicii REST: en.wikipedia. becomes active in the system. When made about a decade ago. Ever since then org/wiki/Representational_State_Transfer
www.todaysoftmag.com | nr. 9/2013
17
programming ABAP in Eclipse • An extension of the Netweaver ABAP the integration of the ABAP Workbench SAP GUI client, is started and displayed application server, which allows the defi- into Eclipse possible, in what follows we embedded in an Eclipse tab. will analyze the ABAP Development Tools from the perspective of funcAccording to SAP, some of these tools tionalities which are available in the will be integrated in future releases of ADT, current release.
Connection to systems Figura 4 - Arhitectura ADT
The connection to a certain ABAP application server is achieved by means of the Eclipse projects. Each ABAP project in Eclipse is mapFigura 5 - Aplicație SAP GUI inteped to a single system and internally grată într-un tab Eclipse maintains the necessary connection information. By using this approach it is while for others currently new solutions are possible to simultaneously have connecti- evaluated, which better fit the long term ons from Eclipse to multiple SAP systems. platform strategy devised by SAP.
nition of resources in the ABAP backend, resources which can be identified and addressed using a URI (unique resource identifier). The application server publishes the resources at these addresses, allowing REST clients to use them. • A series of Eclipse plug-ins designed to use the REST services and thus create the interface between developer and Coding ABAP server. If within the ABAP workbench the code editing is possible both in “source-code If we were to make an analogy, we could based” and “form-based” mode, Eclipse compare Eclipse with a web browser which will no longer support the form-based allows browsing through the object reposi- approach. SAP argues that studies in this tory R/3, instead of web pages. In this way area have shown that “source-code based” the development paradigm remains server- development using a powerful code editor based: the objects are not stored locally, but is more effective than editing the source edited directly on the server by using the code “fragmented” in multiple forms. REST services. Aside from this aspect, the power and Functions commonly used in ABAP flexibility of Eclipse editor can only bring development (“where-used list”, checking benefits to ABAP programmers on the long & activating objects, transport manage- run. ment etc.) are performed by calling the corresponding back-end services and dis- Functions & Tools playing the result on the Eclipse interface • Object checking and activation accordingly are among the features which have been fully integrated in Eclipse from the first ADT version and which are working just ADT SDK as well in Eclipse as they did in SAP GUI. Considering the service oriented archi• Also, by using Eclipse, the user tecture of ADT, which comes with a great will have simultaneous access to two indepotential for enhancement and reuse, SAP pendent versioning systems: the one from has decided to also provide a Software the ABAP application server and the local Development Kit (SDK) for ADT to ABAP Eclipse version history. developers. The SDK allows anyone to • The transport management create third-party tools which can further feature also falls in the category of tools improve the ABAP in Eclipse development completely ported to Eclipse is the: experience. Given the size of the Eclipse ADT offers the whole range of functions community, it is expected that the ADT necessary for management of the transport SDK will significantly contribute to the requests embedded directly in the Eclipse improvement and rapid maturing of the interface. ADT platform. A pilot project based on • However, the same cannot be said ADT SDK has already been started, which about other tools considered essential for aims to integrate the SAPLink2 into Eclipse. ABAP development. The utilities used for editing Data Dictionary objects, screens Result and other objects were not yet migrated to If from a technical point of view, we the Eclipse interface. As a temporary meahave determined that some innovative solu- sure, and in an attempt to compensate for tions have been designed in order to make this shortcoming, when a user whishes to 2 SAPLink is a tool that makes easier to distribu- edit such objects, he will have the surprise ite ABAP applications, allows creation of packages containing objects(“nuggets”), and import/export them into SAP system. to see that the legacy tool, running in the
18
nr. 9/2013 | www.todaysoftmag.com
Debugging One of the essential features missing from the first ADT version was the possibility to use the Eclipse debugger for debugging of ABAP applications. However by the end of 2012, together with a new version of ADT (2.0) an upgrade for the SAP Kernel(v.7.21) was released, which among others enables the integration of the native Eclipse debugger with the ABAP application server.
Conclusion
Although ABAP developers might currently still be reluctant regarding the “migration” from the ABAP Workbench to ABAP in Eclipse( and this is justified considering the gaps that the latter currently still has ), it is expected that in the future, along with the maturation of the product, the balance of power will shift toward ADT. SAP has made its intention public to stop investing in the further enhancement of the ABAP Workbench, and even more than that – to encourage the switch to Eclipse by offering certain functionalities exclusively through ADT. An example in this direction is SAP HANA Studio, the collection of tools used for managing the SAP HANA in-memory database, intended to be used mainly in Eclipse. Considering all these factors, one might come to the conclusion that the switch of the ABAP developers to Eclipse is not as much an uncertainty, but rather a matter of time.
programming
TODAY SOFTWARE MAGAZINE
Google Web Toolkit – Overview
T
he present article is an introduction for those who haven’t yet worked with Google Web Toolkit (GWT) and also a source of interesting information about GWT for those who are familiar with this toolkit.
Alex Luca
alex-dan.luca@hp.com Senior Developer @ HP
In essence, GWT is a toolkit that allows Finally, common JavaScript errors such creating complex web applications with as incompatibility of types or typing errors minimal knowledge of HTML / JavaScript. are detected by the compiler by default This is possible because the GWT compiler because the code is written in Java. translates Java code into HTML / JS. For example, creating a button in GWT can be GWT and web technologies done using the below code: Button button = new Button(“Click here”).
GWT and JavaScript
When using GWT we have to adopt a The above Java code sequence will be write model - compile – run cycle devetranslated into: lopment. This slows down the speed of implementation of a product compared to <input type=”button” value=” Click here” />. JavaScript, where results are visible immeAdvantages diately after the code is written. GWT includes out of the box components that can be extended and customized The good news is that the people at according to your needs. Google have thought about it, so in GWT It also provides a history management there is a way to run the application called framework, using the ‚back’ button of your DEVMODE, in which the code written in browser. This mechanism is very useful Java is translated into JavaScript at runtime because without it, the button causes the line by line. Therefore, always the latest user to exit the application when he actu- written application code is running, which ally wants to return to the previous action means you can make changes in the code inside the application. and reload the page in the browser and the Another great advantage of GWT is changes made are visible. that it provides support for standard Java If it is necessary, we can write JavaScript debugging. More specifically, the applica- code that will not be changed by the comtion runs in a web browser as JavaScript, piler. For this, java native methods are but in our Java code we can inspect the declared and JavaScript code is written in value, use breakpoints just like the applica- a comment below: tion would be executed in Java. public static native String The promise Google makes with GWT getNativeLocationURL() /*-{ var currentURL = $doc.location.href; is similar to the promise Sun made with return currentURL; }-*/; Java. (Write once, run anywhere). Thus, if Java promises independence from the GWT and CSS platform a program is running on, GWT Even if most available GWT compopromises independence from the browser nents have a good look in terms of visual on which a web application runs. appearance, we often want to change the www.todaysoftmag.com | nr. 9/2013
19
programming Google Web Toolkit – Overview look of the web application. In this case CSS knowledge is required. Of course you can also use CSS libraries to get to a satisfactory result faster. GWT provides support for editing the CSS class of an element at runtime. For example, for the button defined in the article’s introduction we apply a CSS class very easily, using setStyleName: button.setStyleName(“awesomeButton”);
There is also support for adding or removing class names.
GWT and HTML
Working with GWT does not mean that we are constrained to a specific set of Web components. In the end all generated code will be HTML and therefore there is support for pure HTML components. It is also not mandatory for an application to be entirely written in GWT: you may place just a GWT component on a web page, and the rest of the page can remain unchanged. Also, GWT provides direct support for HTML5 elements. For example, to check if HTML5 video tag is supported in the current browser (in which the application is opened), you can simply call :
products, etc. These can even be missing completely, in which case the web application generated by the compiler can be installed on any web server, even without Java support. In this situation we are talking about an application that not require data persistence (ex: an online calculator or an application that manages its data using web services). In order from the Client code to call Server code, it creates Asynchronous calls. For example, for a method myMethod, from a service myService, the call myService.myMethod will execute instantly and after a certain period of time the method onFailure or onSuccess from AsyncCallback will be executed. myService.myMethod(myParam1, myParam2, new AsyncCallback<ResultType>() { public void onFailure(Throwable caught) { handleException(caught); } public void onSuccess(ResultType result) { doSomethingWithResult(result); } }
Where and how GWT is used
GWT is used by some Google products and many large companies both public and especially in the private sector. Many applications written in GWT are not public and are used inside organizations. Video.isSupported(); As apps written in GWT we can mention: Google AdWords, Google Flight, A GWT project’s structure Google Web Fonts, Speed Tracer extension A project that uses GWT is composed of the Chrome browser, desktop version of of three main packages: Client, Shared and the game Angry Birds, Google Groups and Server. the administration interface of Blogger. The code from packages Client and Shared will be translated by the GWT comEfforts made by Google programmers piler in HTML and JavaScript code. For in their spare time, to port Quake2 in GWT this reason, code from these two packages are noteworthy. Specifically they used an is limited to a subset of classes from Java, existing Java port of the game, and with called the JRE Emulation Library. Code GWT managed to run it as a web applicafrom the Server package is purely Java code tion. To operate multi-player mode they and can use all the available classes. Broadly, in the Client package lays code that describes the graphical interface. From this package we cannot use classes defined in the Server package directly. In the Shared package we have data transfer objects, which are used to transfer information between our web application and the server. Classes in this package can be accessed and by code from Server and used in HTML5 WebSockets by code from Client. They are seen as Java classes by the code on Server but, in same time, are translated in JavaScript by the Frameworks based on GWT compiler, for their use in the code from GWT is the basis of many useful Client package. frameworks. In the Server package there are classes GXT from Sencha is a comprehensive which ensure data loading from other library of graphical components that can sources: databases, integrations with other be used in a web application. It provides
20
nr. 9/2013 | www.todaysoftmag.com
support for loading large data sets using client-side or server-side paging and other benefits. Vaadin is a framework for developing RIAs (Rich Internet Applications), which focuses more on the server side. More specifically, using standard GWT is possible that a click on a button does not generate a call to the server, but updates another element to or changes the layout. In Vaadin, any action carried by the user will send a call to the server to determine what effect that action will have. PlayN, a framework for developing games that run on multiple platforms (Java, Flash, Android, iOS, Web), is using GWT for implementing the web version of the game. Finally, mGWT is a library for GWT to create web applications for mobile devices
GWT Community
Since its launch in 2006 until GWT last year, Google was the main decision maker regarding the future of this project and the main contributor to the source code. Other companies that improved or developed components for GWT did not have a way to contribute to the code. Last year Google decided to set up the GWT Steering Committee. Member of this committee are persons belonging to companies as Vaadin, Sencha, RedHat and mGWT. The role of this committee is to ensure the continuity of the project and contribute to the improvement of its code.
The Future
Vaadin created a report called „The Future of GWT” based on a survey answered by approximately 1300 companies on how GWT is used within their organization. 80% of GWT applications are developed for the business segment and 1% are games. More than 36% of applications provide support for tablets and over 25% for mobile phones. As satisfaction is concerned, 49% of respondents are dissatisfied because of the compilation time, 34% because of the small number of components available from Google and 27% because of the refresh time of the application when it runs in DevMode. On the other hand, 60% are satisfied with the fact that you do not have to write a single line of JavaScript, 25% due to the speed of the application at runtime (when deployed for end users), and 15% of the ability to quickly find and fix defects . Most importantly, 89% of respondents would use
TODAY SOFTWARE MAGAZINE GWT in a project in the future.
Conclusions
Using GWT, a company can move quite quickly from an application that uses the standard Java libraries (Swing, AWT) to build the user interface, to develop a web application while using existing Java programming knowledge to structure the application in an efficient manner.
https://vaadin.com/gwt/report-2012 http://code.google.com/p/quake2-gwt-port/ http://chrome.angrybirds.com https://developers.google.com/playn/ http://m-gwt.com/
Links https://developers.google.com/web-toolkit/ https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5 https://developers.google.com/web-toolkit/speedtracer/ https://groups.google.com/forum/#!forum/gwt-steering http://sencha.com/gxt http://vaadin.com
www.todaysoftmag.com | nr. 9/2013
21
management
Implementing a successful metrics system in an IT company
T
he current article is mainly addressed to managers and executives and describes the approaches, factors and pre-requisites to be considered when implementing a measurements process in an organization. Ideas and recommendations outlined in the article are drawn from the experience and practices of an IT company whose focus is continuous improvement.
Ramona Muntean
ramona.muntean@isdc.eu Measurements & Best Practices @ ISDC
A well-known paradigm says that we can manage what we can measure. The myth that certain things cannot be measured is already outdated. If one thing or one aspect of our life turns out to be really important for us, and we need to know it and understand it better, we can find ways to measure it. There is a tendency to avoid using measurements in the organization as it is assumed they are not accurate. It is important to understand the difference between counting and measurement. By counting we determine the exact number or value of an indicator (hours worked, billable hours, Facebook fans, defects), while measurement can be defined as a quantitatively expressed reduction of uncertainty, based on one or more observations. So, no matter how fuzzy or inaccurate a measurement is, it is still valuable if it tells us more than what we knew before.
In today’s software industry, where dynamism, adaptability to change and competitiveness are the key words, measurements have become a necessary and important process in the organizations. Using “gut feeling” or intuition to make decisions regarding development opportunities for the company is no longer sufficient to support its growth objectives. We need to know how to manage workload, resources and decide what to do, how to do it and when to act, without walking in the darkness of uncertainties and assumptions. Before deciding to implement a metrics system in an organization, it is important to have a clear picture of the company’s capabilities, its business objectives and strategy on medium and long term. If the organization does not plan ahead for what it wants to achieve in the future and what it needs to know, the metrics and data collected is not likely to meet its needs. A metrics system is a long term investment that will prove its real value after collecting a first set of data, which, when successfully collected, will help to review objectives, to determine the next set of metrics to be defined and implemented. The measurement process should be understood as a continuous cycle of measurement, review, setting goals, refining and defining new metrics.
In business we need to be prepared to make decisions under uncertainty. When it comes to decisions with big impact, the bigger the uncertainty, the more valuable its reduction. Measurements don’t need to be precise, therefore, in the context of measurements we refer to confidence intervals, numbers in ranges, thresholds, trends, and not necessarily to exact numbers. In order to reduce uncertainty sufficiently, most of An effective solution for defining and the time we do not need that much amount implementing a measurement process in of data. We’ll be surprised how much we the organization involves two approaches: can learn from a small amount of data that 1. Top-down approach, when the meais understood and correctly used. surement needs are defined by the top
22
nr. 9/2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE management based on the company’s business objectives, high level targets and its performance indicators; 2. Bottom-up approach, when the measurement needs are defined at project level, based on project specific goals and objectives. A measurement process is implemented successfully when the measurement needs collected from the two approaches meet and complement each other, and metrics provide useful and meaningful information for all levels of the organization, their value being recognized both by executives, managers and employees.
TOP DOWN APPROACH: company goals and targets
First aspects to be considered when we implement a metrics system using the topdown approach are the business objectives of the company. These should be defined and communicated within the organization as SMART objectives and expressed in terms and indicators that are easily understood and can be further translated in KPI’s which in turn can be used as reference at project level, such as: profit margin, business growth rate, customer satisfaction, personnel turnover and so on. The challenge comes when setting and communicating a company’s targets related to quality. Getting a certification to attest that certain standards and quality assurance practices are implemented can be
considered as an objective of the company, but how can it be translated into KPIs? By controlling the projects’ compliance against the stated standards and by setting a certain level of conformity to certify that the projects are compliant to these standards? Such an approach would certainly not be the best option. People need to understand the company’s vision on quality and believe in it, not feeling “forced” to be compliant with something that they cannot really understand. Quality should not be limited to a certificate hanged on the wall. It needs to be perceived as part of the organization’s DNA, its culture and maturity. Quality stays in the improvement mindset of its people. Standards, processes, policies are only tools to support such culture and mentality. It is important to reach this level of quality awareness and a maturity mindset in the organization before implementing a measurement process. Without this maturity, the collected metrics will not be seen at their real value and will not be recognized as a tool for improvement and learning. In addition, a set of work processes and standards need also to be in place, roles and responsibilities need to be clearly defined and understood. A Quality Management System, including both Quality Assurance and Quality Control should be in place and its contribution should be recognized as real support, and not as a “control tower” that directs and requests certain standards. This assumes that Quality Assurance team is working close to the project teams, providing support and guidance at every stage
WE HIRE
of the project, tailoring the standard processes according to the project’s specifics, coming up with recommendations for best practices. Meanwhile, Quality Control is focusing on all of the verification and validation activities, such as review and testing during the development cycle. Considering all the aspects mentioned above, we should take into account several pre-requisites that are necessary for implementing an effective measurement process, namely: • proper tooling or systems for time registration for different types of activities, • applications for tracking progress on tasks (e.g. Jira/TFS), applications for code reviews (Crucible/Team Review); • specific configuration standards for these systems and applications together with “How to use” recommendations; • discipline on accurately recording data in these systems and applications; • qualified, skilled and trained persons for the collection and analysis of metrics; • specific trainings and knowledge transfer sessions (KTS) on measurements related topics; • company databases and repository for templates, best practices, lessons learnt. Measurement as a concept needs to be properly understood and responsibility for defining, implementing and managing the process of measurement should be assigned to specialists in this field. Measurement
IN GOOD COMPANY PROJECT MANAGER
.NET DEVELOPERS JAVA DEVELOPERS JAVA ARCHITECT .NET ARCHITECT
ISDC.EU/CAREERS
WE DO PROJECTS
OUR CUSTOMERS
ISDC
WITH IMPACT. WE
ARE IMPRESSED
ENGINEERS
DELIVER RESULTS,
BY OUR AWESOME
YOUR
NOT RESOURCES.
TECH TEAMS.
DREAMS!
RALUCA HIREME @ISDC.EU
SIMONA HELLO @ISDC.EU
www.todaysoftmag.com | nr. 9/2013
23
management Implementing a successful metrics system in an IT company Specialists are able to change a complex perspective into a simple one and translate a non-specific goal into a set of measurable dimensions. By exploring the facts in detail, they are able to present alternative approaches that make quantitative evaluation possible, clear and highly meaningful. They are also aware of the considerations according to which certain dimensions should not be measured (e.g. cost effectiveness reasons when the effort to measure is higher than the benefit of the measurement, or sometimes purely ethical reasons).
These being defined and agreed with the top management, the responsibility of the Measurement specialists together with the QA team is to manage the implementation of the process in a planned and organized manner. It is important that the management and development staff are involved at the appropriate times, and that the Measurement specialist ensures that metrics are collected uniformly and consistently, that they are meaningful and useful to all levels of the organization and that they determine whether the goals and objectives are progressing as planned or if Measurement specialists, as part of they need adjustments the Quality Assurance team, will be the ones responsible to identify the company’s BOTTOM UP APPROACH: project’s measurements needs, to define the measu- performance indicators rements process, standards, guidelines and When the development of a project methods to be used for metrics collection starts, a member of the Quality Assurance and analysis. team is there to guide the project manager to set the processes and standards to be Considering the company goals, used (selected from company processes Measurement specialists together with library), to tailor and adapt them to the the QA Manager and executive team are specific needs of the project. This is the defining: moment, when based on the criteria defi• the list of the metrics needed to ned in the top-down approach, to assess determine the progress on the objectives and decide whether the project falls within and to identify trends, the category that is relevant for the use of • the collection procedures for data standard measurements process or not. that supports the measurements, • the analyzing and reporting proceduIn the start-up phase of the project, the res and schedules, Measurements specialist together with the • the criteria to be used in assessing Quality Assurance team member who has which projects are relevant to be con- been assigned to the project will guide the sidered in scope for the measurement project manager and the team in setting process. These criteria will consider the the project’s performance objectives, idencompany’s specific business, types of tifying appropriate metrics to be collected projects, development strategy and can and the way they can be analyzed to moniinclude for analysis: the project’s size tor the progress on the objectives. and duration, the project’s relevance for the company’s future development, An efficient way to guide and help the the possibility to customize and adapt team identifying the project’s performance the systems being used for metrics col- objectives is asking questions like: lection, the innovation degree of the • Which are the key aspects that project, etc. will best characterize your project performance? Performance Indicators Project effort Productivity Defects Detection Rate (DDR) (defects found prior to delivery divided by total defects found) Cost of Non-Conformities (re-work)
24
nr. 9/2013 | www.todaysoftmag.com
• What factors impact your project’s quality in a significant way? • How do you know that the customer will be happy with the product you deliver? • If the company would have a historical metrics repository which information would you like to know? Most of the time the answers received will refer to: “deliver on time”, “deliver within budget”, “no defects found by customer”, “as little as possible re-work”, “a better expertize of the development team”, “better capacity and capabilities of the testing team”, ”distribution of effort per different type of activities” and so on. Sometimes it is useful to provide examples of common metrics to help the team identify its performance indicators. The table below presents examples of project’s performance indicators, metrics to be collected and analyzed. Once the projects’ performance objectives are identified and agreed with the team, the next step is to define metrics (data) to be collected and the collection frequency. When the company’s metrics repository already has historical data from similar projects, it should be discussed how it can be used in the context of the current project. Using this approach, the project team members will identify by themselves the indicators and metrics that define the performance of the project they work for. In this way, they will be able to refer to a set of clear goals and will work to achieve a specific level of performance, will understand where the line between poor quality and good quality is and this is also a highly motivating factor for the teams. Once the metrics to be collected are
Metrics (data) to be collected
Measurements analysis at project level
# hours planned (per iteration) # hours spent (per iteration) story points (SP) function points (FP) #defects found in reviews #defects found by testing team #defects found by customer after delivery #hours spent on re-work after review #hours spent on fixing defects #hours spent on re-testing
Estimation deviation per iteration Estimation deviation overall velocity (SP/sprint) hours needed to develop a Function Point DDR Review per iteration and trends DDR Testing per iteration and trends DDR Customer per iteration and trends Re-work trends during iterations % of re-work from project total
TODAY SOFTWARE MAGAZINE identified and defined in the project context, the Measurement specialist can present to the team the metrics defined in the top-down approach and check which one of them have already been included in their project’s metrics. Most of the times the metrics defined by the project teams will include a good proportion from the metrics defined at the organization level. If there are metrics that have not been identified yet by the team, and the Measurement specialist considers them relevant, their usefulness and the possibility that they are collected will have to be discussed. Using this approach we avoid demotivation by imposing the collection of some metrics defined by the top management whose utility may not be understood by the team.
Once the metrics system is in place at project level, it is important to ensure that the indicators that are measured are then analyzed and they really matter to the success of the project. Measurement specialist may participate from time to time in the team’s retrospective meetings to see how the data collected is analyzed and used to improve team productivity, quality and to increase customer satisfaction.
This might seem the point where one can say a successful metrics system is in place, but can we consider that these are all sufficient? An agile company with a continuous improvement mindset will not stop here. To compete successfully in an ever-changing, fast-moving and competitive industry requires efficiency, a more productive way of working and a high level of quality for the products being delivered.
Measurement specialist will regularly meet the project manager and team leader to analyze the accuracy of the metrics collected, to discuss trends, to identify thresholds, to evaluate the metrics’ added value for the project and to determine whether there are other needs identified, or if there are difficulties in collecting and Metrics that are to be collected in the analyzing metrics. project need to be correctly and clearly understood by everyone in the team, so that The effort involved in the collection of later on they can be analyzed and aggrega- metrics at project level (time spent, investted. Even though their definition may seem ment in training and tooling) should be obvious, it is amazing how many different evaluated not only from the project’s cost interpretations can occur. For example, if perspective but also from the perspecone of the performance indicators refers to tive of the additional value they bring to productivity expressed in function points, the organization. Some metrics will be we’ll need to analyze hours/function point used exclusively for the project (e.g. proat different stages of the project. We will ductivity, when referring to Story points) use these values as reference for other pro- while others can be also used at company jects or for benchmarking our company’s level (e.g. productivity, when referring to productivity against industry values. In Function Points). It is the Measurement this case it is very important to use the specialist’s job to ensure that project same standards in counting and analyzing metrics that bring added value at comthe Function Points and when referring to pany level are selected and stored in the effort (hours) it has to be clearly defined organization’s metrics repository. what activities are considered in the calculation (e.g. requirements analysis, design, Are all these practices sufficient? coding, and so on). When a metrics system is in place for a longer period of time (over a year), The responsibility for recording and consistent historical data are available collecting the metrics will be assigned to in the company’s metrics repository. At project team members or to specialists, this stage, and further on, metrics values according with the specific of the metric. can be analyzed in correlation with other It is important that those responsible metrics, trends, and thresholds values can understand the need and usefulness of the be identified. This information is very metrics and are properly trained in stan- valuable to the company and may be predards, practices and tools that are specific sented in charts, dashboards using Excel to each metric. functionality or, if possible, using Business Intelligence applications. This information Metric collection systems can use the must be available to each relevant stakeholexisting data collection systems that the der, being used in decision making at any company has already in place (time regis- level for better estimating pre-sales protration, JIRA/TFS, Crucible/Team Review). jects and increasing competitiveness in the It is important to define standards and gui- market, for better allocation of resources in delines on “How to use” these systems in the projects, for challenging project teams order to ensure a uniform way of recording to set more ambitious objectives, learning data and collecting the metrics. from the past and continuously improving.
The measurement process and standards require continuous refinement, in line with the specific objectives of the organization and the projects it develops. As new metrics are made available to the company repository, they need to be analyzed and weighed against the business objectives and market positioning. As the measurement capability and expertise of the company develops and improves, more efficient and intelligent tools can be implemented and used as support in metrics collection and analysis. A company which continuously monitor and effectively manages its metrics system will find this to be a unique source of competitive advantage.
www.todaysoftmag.com | nr. 9/2013
25
programming
In search of the perfect domain
T
he purpose of this article is to assist those who wish to buy a web domain, giving them useful information to find the perfect name. Choosing a domain name is one of the important steps in creating an online presence. At this point it is becoming increasingly difficult to find domain which are free and match your expectations. The domain name has an important role when people discover, manage to remember, thinking or talking about a website. Imagination and some strategies presented in this article also contributed to finding a good domain name
Radu Popescu
rpopescu@smallfootprint.com QA and Web designer @ Small Footprint
Restricted TLDs
One of the most controversial TLD is .edu. This is one of the first seven TLDs and was created in 1985 in order to be used by educational institutions around the world. There were people who register.edu for personal or commercial use. Since 2001 purchase of these domains was restricted. It can only be purchased by post-secondary level educational institutions in the United States. All domains owned by other entities at that moment could be kept. Thus after 2001 it began a link hunt from .edu domains which is said to have more weight in SEO. Other restricted TLDs are: .mil (used by U.S. military sites) .aero (used only by organizations related to aeronautics) or .gov (U.S. government agencies). As mentioned previously restricted domains generated over time a lot of discussion about how they are seen by search engines. Many people say that these domains are privileged and have a higher rank because they are restricted and their content is in a high proportion of quality. This is not entirely true. Much of the high rank is coming from other sites. For example, WhiteHouse.gov has over 50 million links, a figure that canâ&#x20AC;&#x2122;t be matched by many sites.
mainly Individuals in Romania, use.ro. Regional domain will perform better than global ones in local search. An experiment conducted by SEOMoz. com show that all TLDs are approximately equal except.net which has a small advantage on search engines. If we count the fact that in the last two years this TLD had a sustained increase, reaching second place in the overall ranking, we can understand why some people are thinking about purchasing a .net TLD and permanent redirecting it to their main domain. TLD Nr. domenii COM 106,935,825 NET 14,948,129 ORG 10,166,191 INFO 7,028,193 BIZ 2,284,272 Tabelul 1 : Top 5 TLD active (RegistrarStats.com)
With or without hyphen?
In the early 2000s was common to have a domain which contained several dashes (eg. silver-jewlery-shop.com). After a few years, people have realized that simple domains without hyphens or numbers are remembered more easily. Without these characters the probability of visitors to type the name wrong was low. Ben Regional TLD vs. global TLD Milleare made a few months ago, an experiChoosing between a regional domain ment whichconfirms that domain without (.ro) and a global (.com) is very simple. If hyphens performs better in SERPS. Search through your website you want to target engines see hyphens as negative signals.
26
nr. 9/2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE
Domain name length
Often domain names become brands and this propels businesses very much. It is generally recommended to choose short and catchy domain names that can turn into brands. However, depending on the type of site, you can opt for an EMD (Exact Match Domain). This type of domain is based on some keywords called Long Tail Keywords (eg „Toshiba U300 laptop”), which is targeting a certain product or service (directly). Before Google launched the EMD update (September 2012), ToshibaU300Laptop.comdomain appeared in SERPS among the top SEO results without too much effort. Currently they have lost this advantage and are seen just like all other domains.
Be careful with “misspelled” domain names
• Although these domain names seem like a good choice when you want to create a brand, it can be a mistake to register one. The best example is flick.com photo-sharing website. Approximately 3.6 million visitors per year visited flicker.com by mistake. Yahoo needed to get that domain and to redirect it toflickr.com. Its owners have refused the offer of $ 600,000 for it and followed several lawsuits. Only in 2010 was transferred to Yahoo after two years of negotiations. • Other things you need to consider when choosing a web domain are: • Between singular and plural domain names choosethe one that sounds better and is easier to remember; • Avoid domains that may create copyright issues; • You can use acronyms or jargon of the industry which includes site; • Avoid number 0 because it can be easily confused with the letter O;
Resources
Below I have created a short list of useful resources and tools to choose and purchase a domain name: DomainTyper.com allows you to search for domains composed with subdomains and folders. For example, if I would like to create a new personal website, I write my name „popescuradu” and will receive a list of composed domains: http://radupopes.cu (cu - Cuba), http://radupope.sc/ u (sc - Seychelles) http://radupop.es/cu (es - Spain), http://radupo.pe/scu (pe - Peru). NameTumbler.com generates a list of domains composed from a keyword you entered. You have the option to exclude domains with hyphen or use the keyword in the beginning or end of the string. RoTLD.ro is the website of the National Institute for Research and Development in Informatics through which you can buy .ro domains. This institution deals and manages this TLD. It offers you the possibility to change online name servers for hosting too. ICANN.org is the website of the nonprofit organization dealing with management of the Top Level Domains. Here you can find information about web domains and new TLD launches us. DomainSuperstar.com contains a search tool fordroppeddomains. In general, companies that gone bankrupt or out of businesses don’t pay the periodic fee for their domains which became fee again. Sometimes you find treasures with this tool.
www.todaysoftmag.com | nr. 9/2013
27
programming
Design adaptiv – a fad or necessity
W
hat exactly is adaptive design? The answer lies just in the title, namely: it is a design that fits and looks great on any phone, tablet, computer or even smart TVs.
Bogdan Nastasa
Bogdan.Nastasa@endava.com UX/UI Design Lead @ Endava www.nastasabogdan.eu
You are probably wondering why it is content: necessary to use this approach instead of { carrying out strict applications targeted to .main margin-left: 20px; a specific device. Basically, according to the } budget, needs and the complexity level, one .sidebar { of the solutions will be chosen. width: 200px; float: left; Before making a web project with an } adaptive design we must take into account the several key elements: Adaptive Media Elements Media elements may represent images used in the projects, video or audio players. For example, the images can be adapted to the size of the container, and this implies that the images have the length set in percentages.
A flexible scheme
A grid-shaped flexible scheme can help you to structure your information better displayed on the screen. These columns help to position and guide the content on the page depending on the device it is displayed on. Of course, the grid may be greatly simplified using only two main columns, one for menu and the other for
img { width: 100%; }
When we talk about adaptive design, we must take into account the performance. Images used are optimized for an optimal viewing on phones. One of the „tricks” to perform this optimization is the use of javascript to manipulate the image source attribute („src”) and to replace the image depending on the size of the window. Another method is to use a server-side solution provided by http://adaptive-images.com /. This method is particularly easy to use. All you need is to modify the. htaccess file, adaptive-images.php and enter a single line of javascript in the <head> beginning of the site.
Media queries
CSS3 gives us the opportunity to
28
nr. 9/2013 | www.todaysoftmag.com
programare
TODAY SOFTWARE MAGAZINE a. b. c. d. e. f. g. h.
6. JavaScript functions available for: a. tabs, b. carousel pictures c. tooltips, d. Lodges alert.
identify and determine the size of the screen, so you can change the properties of elements based on what you need. Example: @media screen and (max-devicewidth: 480px){ .main { width: 100%; } .sidebar { width: 100%; float: none; } }
Fortunately, the available frameworks that can help us to realize these adaptive projects are available, without being forced to start from scratch; among them we can find Twitter Bootstrap (http://twitter. github.com/bootstrap / index.html) What does this framework offer? 1. A fluid grid system on 12 columns. This means that it uses percentages instead of fixed size. Of course, the grid has the features of an adaptive design. 2. Content predefined layouts that may contain columns adaptable to the screen or fixed. 3. Support for adaptive design with
Font, Tables, Menus, Paging Forms, Buttons, Images, Icons.
a set of predefined queries to cover all devices.
/* Large Monitors */ @media (min-width: 1200px) { ... } /* Tablets in portrait or landscape */ @media (min-width: 768px)and (max-width: 979px) { ... } /* From mobiles in landscape to tablets in portrait */ @media (max-width: 767px) { ... } /* Mobile in landscape or with smaller size */ @media (max-width: 480px) { ... }
4. Styles for various components:
For a complete list and examples, see http://twitter.github.com/bootstrap/ In conclusion, it is quite easy to realize an adaptive web project on the size of the screen devices. Let us see now what the advantages are: 1. The projects provide a good experience for the user, being a consistent project from the point of view of style and content on all displayed versions. 2. Best optimization for search engines. (external references to only one address and not to multiple ones, e.g. www. starbucks.com, mobile.starbucks.com, m.starbucks.com) 3. It works on all devices, regardless of the operating system being used (for example iOS, Android, Windows) 4. A shorter time allocated for one project instead of several projects with the same functionality. This of course implies much lower costs for the project owner. 5. Reduced maintenance time of the site content, rather than synchronizing the
www.todaysoftmag.com | nr. 9/2013
29
programming Design adaptiv – a fad or necessity content on two / three versions of the site. 6. Updating content / style / flow is will be just for one project. But besides all these advantages there are of course some disadvantages: 1. Some resources can be unnecessarily loaded for mobile version, when referring to javascript, styles and images. All this implies a longer time for the page to load. 2. The effort spent on compatibility between versions of browsers. 3. The interactions are different from the touchscreens to site control from a personal computer with a mouse / keyboard. Excellent! Now we know that three essential steps we need to follow and we know how a website with an adaptive design will look. But is this all? Although we have an adaptive site, it does not mean that we have a tailored solution for phones or tablets. In order to achieve a reliable solution that is versatile for most mobile devices, we must take into account the following aspects:
to achieve a complete apparatus, adapted for conglomerates around us.
email validation will be made. <input type=”email” name=”email” placeholder=”bogdan.nastasa@endava.com” required/>
number - in editing, modern browsers will display only the numeric keypad datetime -when changing the box, modern browsers will display a calendar list - attribute list together the item „datalist” will display a selection of relevant words entered in the field. <input type=”text” name=”person” list=”catalog”/> <datalist id=”catalog”> <select> <option value=”Bogdan Nastasa”> </option> <option value=”Bob Marley”> </option> <option value=”Ben Johnson”> </option> <option value=”Bernadette Peters”> </option> <option value=”Halle Berry”> </option> </select> </datalist>
Ergonomics
We presented above only a few of A project with good ergonomics can HTML5 facilities. A complete list of provide a number of benefits. A graphical components can be found at: http://htmlinterface must be intuitive, making easier 5please.com/ the decisions which a user should take.
Performance and Optimization
Content
For mobile phones, scrolling down information can become an ordeal. Therefore, it is important that the displayed information to be conditioned by the screen size.
Html5
Applications whose load time is reduced will get a better mark for SEO. Also, it is important that the content display may be one as relevant and adapted as possible for the user.
Small facilities HTML5 can offer do make a difference and create an extraordinary experience for a user. For example: autofocus - the field that has this attribute will automatically be selected when loading the page. In conclusion, an application with an email - the field will be interpreted adaptive design is a recommended solution by modern browsers as a mailbox and, for any web application, but we must take together with the attribute „required” an into account all aspects to be implemented
30
nr. 9/2013 | www.todaysoftmag.com
programming
TODAY SOFTWARE MAGAZINE
Microsoft in Open-Source
A
s we all know, the open-source project exists from the moment when the first line of code was written. In this post we will see what open-source meant for Microsoft in the past and what is the relationship between open-source community and Microsoft nowadays.
How everything started
From their perspective, open-source projects could not bring any kind of value or revenue. From their perspective, the quality and the performance of an open-source project was questionable. In 1976, Bill Gates writes an essay about open-source. The name of this essay was “Open Letter to Hobbyists”, where the Altair BASIC community is indirectly attacked and people using software without license. From a corporation point of view, open-source represents a threat, especially from the financial perspective. With or without Microsoft, the opensource community goes forward and in 1983 they launch the GNU project. The scope of this project was to develop an open-source operation system that is free to everyone and without any kind of dependency to different companies. All the code would be open-source and anybody could change it and use it. This project leads to a new form of licensing, because of the need to license open-source projects. In 1989, the GNU General Public License appears. After this different operating systems and products appeared under this kind of license. In the last 20 years, a lot of open-source projects had a real success on the market. A perfect example is Apache. Also, around Netscape we have a pretty interesting story. At the beginning, Netscape was not an open-source project. After Netscape became open-source project, the code source was used for different projects. For example the Firefox browser and Thunderbird. Open-Source and Microsoft before 2000 Meanwhile, Microsoft remains the In the first part of the period, Microsoft enemy of open-source projects. The quahad a rejection position. In 1970, Microsoft lity of the open-source projects is putted didn’t used to sustain open-source projects. under question. In 1998 a series of articles The open-source community in one way or another appeared for the first time in 1950-1960. In those days, the code was usually written by researchers from universities, in colaboration with corporations. The IT industry was alone at the beginning and the accent was put on collaboration. Why? First of all, when a discovery was made, people tend to share it. In that period of time, people were open to collaboration and to share their ideas with the rest of the world. Also, each hardware device was different and if someone wanted to run an application on a different device he had to make some changes on the application. Because of this people used to share their code. A good example of the collaboration is from 1960, when a lot of researchers worked to define the communication protocols. The output of this collaboration is the internet that we know nowadays. Officially, the internet appeared in 1969 through ARPANET (Advanced Research Projects Agency Network). From 1970, applications began to be more and more complex. Different companies started to invest a lot of money in the software research and development of new software products. In time, this led to the appearance of new notions like license, trademark and copyright. Besides Microsoft, there were other companies that started to use licensing system. A good example is AT&T, that decided to make profit from UNIX system – and they started to sell it.
named “Halloween Documents” appeared. In these articles, the open-source is seen as a bad thing and is compared to a cancer. During the years, there were a lot of lawsuits between Microsoft and different companies because of the patents.
Open-Source and Microsoft after 2000
After 2000, Microsoft position against open-source starts to change. With the entrance in the new era, Microsoft started to sustain and work at open-source projects – directly or indirectly. In the meantime a part of Microsoft projects become open-source. A good example of collaboration between Microsoft and open-source community is related to Hiper-V. At this open-source project, Microsoft works on drivers. Another example is jQuery where Microsoft sustains the project and works directly with jQuery team. A big change was made in 2006, when an open-source portal was launched by Microsoft. Codeplex is the name of the portal and during the years, it becomes an important site in the open-source world. The community of Codeplex is large and very active. This portal is used by Microsoft to publish their open source projects. One year later, even if the relationships between open-source community and Microsoft were pretty tense, Microsoft launches two types of licenses for open-source: • Microsoft Public License • Microsoft Reciprocal License This is the real turning point, when open-source projects are seen like something good, that can have a business potential and the quality of them is extremely good. www.todaysoftmag.com | nr. 9/2013
31
programming Microsoft in Open-Source Date 31 October 1998
May 2001
June 2001 June 2001
Iune 2005
Iune 2006 Octomber 2007 in present
Event A first memo appears under the name of „Halloween Memo”. Open-source is seen as a threat because of the licensing mode A message appears which gives the example of companies that had provide the source code hoping to earn some money and failed B. Gates describes the Generic Public License as Pac-Man-Like S. Ballmer says that if you write an open source operating system then you need to provide everything related to that project (source code, documentation etc.) S. Ballmer says that Microsoft works every day to carry out projects and doesn’t compete with movements (Linux and open source community) Codeplex is released Two license modes for open-source There are many open source projects supported by Microsoft
Table 1 Open-source and Microsoft
Open-source project developed by Microsoft
There are a lot of open-source projects that came from Microsoft world. We don’t talk about small projects. Projects like Entity Framework, ASP.NET MVC, ASP.NET Razor, ASP. NET Web API is open-source. Anybody can inspect this code. Every day, a new project that came from Microsoft world become open-source. In the last period of time, there was some news announcing that Git will be integrated in IDE of Visual Studio. In this moment Git is consider one of the best and used source-control mechanism. People react in different ways, but what is important for Git is that more people will be able to use it. By this integration, Microsoft will need also to offer maintenance for Git. Because of this we could expect that bugs that are discover on Git to be resolved by Microsoft. The integration of Git in Visual Studio IDE was made some time ago. If we look over the check-ins that were made on Git, we can observe that name of Microsoft employees appear. Another interesting project that has all the API documented and can be used by the open-source community is VM Depot. This is a service where people can share, rate and use different images of operating systems (including Linux)
Project Name
Description
Reactive Extension
Common interface for different data sources (FB, Tweeter, NetFlix, GitHub, etc) Allows working with different asynchronous data streams
Reactive Extension
P h on e G a b, j Q u e r y Mobile, SQLite, Senqua Touch SQL Server Connector for Apache Hadoop EF, ASP.NET, MVC, WebPI
Different frameworks supported by Windows 8
VM Depot Type Script
A catalog of virtual machines for Windows Azure Is a superset of JavaScript that complies to normal JavaScript.
Allows data transfer between SQL Server and Hadoop Well known frameworks have become open source
Tabel 2 Open-source projects sustained by Microsoft
Microsoft Open Tech Hub
For an easier collaboration between Microsoft and the open source community, Microsoft Open Tech Hub appeared. In this hub there are people paid by Microsoft to contribute to open source projects. Through this hub they are hoping that people will be more involved, the communication between open-source community and Microsoft to be much better and easier and to facilitate the development of various standards. We need to understand that open source doesn’t mean only sharing source code. It means more than that. In addition to the code share, information sharing is also important, perhaps even more important. We can have available the source code containing 20 million lines of code if there isn’t any documentation. Is exactly the same as having more than one assembly. From this point of view, Microsoft is trying to bring value by providing not only the source code but also the documentation for it.
Conclusion
An open source project should be more than a source code you put on a server and share it. You need to provide documentation, support and be careful to be functional. The future seems to be quite promising for the open source community. Microsoft has come to recognize the value the community and began to sustain it. In conclusion we can say that until a few years ago open source didn’t existed for Microsoft, but now these things have changed enormously and in the future we might have some more surprises.
Radu Vunvulea
Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest
32
nr. 9/2013 | www.todaysoftmag.com
business
TODAY SOFTWARE MAGAZINE
The Challenge of Leadership (Part 2)
T
his is the second in a series of three articles on the challenge of leadership by Martin Mackay, recently appointed CEO of Neverfail. In the first article Mackay laid out the strategic framework he is employing at Neverfail to drive change. Here he discusses in more detail the five key responsibilities a leader has to recognise.
Being a leader of any organisation represents significant responsibility. All stakeholders are ultimately depending on the leader to deliver their expectations. Investors want a return on the capital they have deployed; employees want job satisfaction and career development as well as to feel proud and secure at work; customers and partners demand service and solutions which meet their requirements and deliver real value. All of this creates pressure on the leader to perform. In my experience this pressure translates into five core responsibilities a leader carries; in this article we will explore these in detail and provide a guide for leaders to put into practice. The first responsibility (and perhaps the most important) is to create vision and purpose for the organisation. As we discussed in the first article an organisation with vision and purpose which inspire will have engaged employees; engaged employees will work harder, be more excited about what they are doing, feel good about themselves and ultimately deliver a superior customer experience which will drive commercial success. Creating vision and purpose is therefore a primary responsibility of leadership. At Neverfail vision and purpose is defined by our Company Spirit. Creating the Company Spirit is the most effective way I have experienced to deliver vision and purpose to the organisation. We are reinventing ourselves to create a powerful culture with a clear set of authentic values and behaviours – this is our Company Spirit and it has three principles: staying true to our roots, living our passion and fulfilling our vision. What this ultimately means is that we have embarked on a journey to build strong, sustainable relationships with our customers based on trust. Staying true to our roots as a company means understanding the way we operate
when we are at our best and constantly “feeding our roots” so that we remain at the top of our game. For Neverfail this means three things: delivering technology which is on the leading edge of the business continuity market; being agile in responding to market shifts and opportunities but remaining focused on our core business continuity domain expertise; and operating globally as a single “family”, collaborating and celebrating together. However for any organisation the exercise to define its roots (how it operated when at its best) is fundamental to understanding the Company Spirit and hence creating vision and purpose for employees. The second principle is the simple definition of our core ethos or operating philosophy: in other words its passion. For Neverfail our passion is that we keep our promises. We are absolutely committed to delivering on our promises whether those are to customers, employees, partners or investors. If we fail to meet a commitment we take the immediate action to rectify the situation; we do not seek to make excuses or to blame others, we just fix the problem. This means we have an open culture where anyone can raise any issue which needs fixing and which is making us a less good company to do business with. However, whatever the core operating philosophy of the business it must be constantly called out and referred to by the leader to reinforce its importance. The final principle is of the Company Spirit is the company’s vision. This does not necessitate spending weeks wordsmithing a vision statement or a mission statement (or arguing about the difference and definition of both) but moreover is the simple but powerful definition of what you want your customers to say about you. In our case at Neverfail our vision is for customers to say that they trust Neverfail to protect their business. This vision is what
informs our product and service strategy, our sales and marketing engagement with our customers and our internal processes. So with vision and purpose defined by the Company Spirit the second responsibility of the leader is to define the strategy. We discussed in the first article how this should be approached, taking into account the three dimensions of innovation, operational excellence and customer intimacy. At Neverfail not only have we defined a clear product direction and innovation process and focused on building a high performance organisation, we have extended the concept of the Company Spirit to a set of core behaviours which we are programmatically embedding into the organisation. These behaviours are designed to create a memorable customer experience where the image we portray (our “brand promise”) and the reality of the experience match; where employees feel valued and engaged in the development of our business; where we drive innovation across product, service and process by having a deep understanding of customer needs; and where we are willing to be bold in our decisions but disciplined in our focus and execution. Vision, purpose and strategy are therefore defined by the Company Spirit. Crucially this then defines what customers can expect when they do business with the organisation. The Company Spirit of course complements the key strategic planning disciplines which any organisation needs (market and competitor analysis, product strategy, go-to-market strategy and talent management strategy) but it is really the foundation on which organisational success is built. I referred to talent management as a key component of strategy and that is in fact the third core responsibility carried by the leader: nurturing and developing www.todaysoftmag.com | nr. 9/2013
33
business The Challenge of Leadership (Part 2) talent. This starts with the leader’s own team. Creating a cohesive, high performing leadership team is absolutely essential as a basic building block to a high performing organisation. A cohesive leadership team will maximise its capabilities to focus on external matters to drive the business forward; equally organisational energy will not be spent on political in-fighting but will be channelled towards the market, the customer and the competition. A leadership team which is divided will waste huge energy and time on internal matters and turn on itself. Moreover this will be immediately apparent to the rest of the organisation and such introspection and political self-justification will flow downstream to all employees. Building such a leadership team takes huge time and effort on the part of the leader but in my view is ultimately the most rewarding activity he or she can undertake. How to achieve this cohesion is the subject of a complete set of articles in itself but a simple recommendation at this stage is to read Patrick Lencioni’s “The Five Dysfunctions of a Team” as a clear guide to doing so. Beyond the leadership team talent management is about three things: creating a high performance environment; hiring the right talent; and allowing the talent to flourish. Creating the high performance environment is not just about implementing an annual appraisal process. Although it is an important building block many leaders believe the responsibility ends there. As a result the annual appraisal process becomes a chore rather than an integral part of organisational development. The high performance environment has clear overall company objectives set and everyone’s work linked to those objectives so all employees can understand the relevance of their contribution to the success the business. It is also about giving regular coaching and feedback, both positive and constructively critical. The ability to coach through constructive criticism is absolutely fundamental for the leader but in my experience the focus should be much more about encouraging behaviour and performance you want to see rather than always emphasising the negative. Formal employee recognition programmes and informal encouragement both play a huge role here. Ultimately it is also about being willing to take the tough decisions to weed out those people who are not performing but more of this in the final article. Hiring the right talent is of course a
34
nr. 9/2013 | www.todaysoftmag.com
key ingredient to developing the business. Unfortunately I have seen many leaders hire based on skills and restrict the calibre of candidates because they are intimidated by people whom they perceive as a threat in terms of capability or experience. A much bolder and infinitely more rewarding hiring philosophy is to hire based on character and organisational fit and deliberately to seek people who are more talented, experienced and “better” than you. That way not only can you learn from your employees but also you can create a powerful team of people who are going to drive your own success. This is a completely different perspective where the leader’s job is not to be the smartest person in the room but to create the environment where the talent can be unleashed. Finally a common mistake leaders make is to say that internal promotions and job changes are part of how the company managers talent but then to stop such moves because an employee is doing a critical job and to move him on would cause a major headache for the leader. The only result I have seen of this ultimately selfish attitude is to watch talent walk out of the door to an environment which will encourage them to develop without limitation. Of course there may be a short term constraint but this can usually be handled with appropriate transition plans and training for the new hire who backfills the promoted employee. If creating and nurturing talent is a critical responsibility of the leader it is equally important for the leader to embrace the fourth responsibility: keeping the energy up! Vision, purpose, strategy and talent management will when first introduced to the company unleash an energy which will astound. However, that energy needs to be sustained and driven by the leader. The leader’s behaviour in this regard is absolutely essential and in the final article in this series we will explore the key behaviours a leader must demonstrate. Keeping the energy up is not just about cheerleading –although that is an important aspect particularly when the business may be facing challenges which appear insurmountable and “just too hard”. I think there are two key aspects to maintaining energy levels: consistency and communication. As I say we will explore these in detail in the final article but in terms of organisational energy they mean setting a direction and modus operandi and sticking to it, rather than being diverted by the latest fad or losing interest after the initial launch and
then regularly communicating progress so that the effort employees are exerting is clearly seen to bring rewards in terms of the company’s progress. This is not just about major set-piece communication (the quarterly update on results, for example) but about frequent and regularly updates on progress and incremental successes which are contributing to achieving the vision and purpose and which validate the strategy. Finally even with a strong team and clearly defined vision and purpose, engaged employees who are executing against the strategy, talent being hired and developed and organisational energy creating momentum the leader has one final responsibility to bear in mind: self-development and self-renewal. Given the emotional and intellectual energy the leader must exhibit on a daily basis there are times when he just needs to “look after himself ”. This may be taking time away from the business to network with and learn from industry peers or indeed executives from other industries to garner fresh ideas and inspiration. It may mean simply making time in the week to exercise to practise a hobby completely unrelated to the business or just spend precious time with his or her family. This process of what I ultimately call selfpreservation is fundamental. There have been too many examples of “burn-out” which clearly will damage both the individual and the organisation. By practising self-preservation the leader will actually deliver much greater value to his organisation as the sense of personal renewal will flow through the company, unleashing fresh waves of collective energy. There you have it: five responsibilities the leader carries to respond to the exciting but massive challenge his role entails. So with the strategic framework for change leadership defined in the first article, the responsibilities of leadership understood here, what are the key behaviours the leader should exhibit? This will be the subject of the final article.
Martin Mackay
mmackay@neverfailgroup.com CEO @ Neverfail Group.
management
TODAY SOFTWARE MAGAZINE
Who is the Business Analyst and why would I need one?
A
ll over the world, business analysis is a highly interesting field which concerns equally the companies and their customers. But the gap between theory and reality proves that this practice is still a fresh one. Despite their domain knowledge, from non-governmental organizations to finances, banks or constructions, the difference between success and failure depends on the capacity to change and adapt to market needs, at customer’s requirements which are more and more diversified. Daniela Haliga
daniela.haliga@endava.com Business Analyst @ Endava Iași
To answer quickly and satisfactory to the client’s needs, companies must define and recommend solutions that will bring value to the interested parts. The preparations for obtaining and maintaining the quality of services and products provided can be a long journey that can get you out of your comfort zone, that can force you to expand your domain knowledge, to improve your processes and to value your resources. Getting more deep in business analysis by understanding the need that drives the business, the environment (internally and externally) of the business, all these represent key requirements which will guarantee your success. If we are dealing with a dynamic environment, the clients, the customers, the market and the investors don’t wait. To do things efficiently and as expected, is a challenge to witch all market players can respond properly.
The role of the business analyst
In this context, in which the events dynamics push us to pragmatic solutions that will bring influence on the way we act, who can investigate, control and make things go further? Here comes the Business Analyst. He understands the complexity of the modern business environment, making the difference between the success and the failure of a project. And who is exactly this Business Analyst (BA)? What does he do and
especially why would I need a business analyst? “The Business Analyst is an agent of change” (The International Institute of Business Analysis – IIBA). To be more explicit, the business analyst investigates and analyses the new opportunities, emphasising the needs to improve the way the companies work. He facilitates the process of change and implementation. Identifies and defines the solutions that will increase the benefits and will reduce the costs. He is involved in all functional levels of the companies and can bring significant contribution to the process of defining and implementing the strategy, the objectives and the business requirements. More than that, the business analyst acts like a mediator, facilitating the communication among departments, business and stakeholders, and even among different stakeholders. This way he makes sure that the business vision is clearly understood and transparent. Facilitating answers to the following questions: “Why do companies exist?” “What are the company’s products and services and who are they addressing to?” “Who are the customers and the competitors?” “How does the market evolve?” “What needs to be changed in order to better accomplish objectives or to meet www.todaysoftmag.com | nr. 9/2013
35
management Who is the Business Analyst and why would I need one? new challenges or clients?” • the Business Analyst helps companies understand and apply better the principles of business analysis, which will ensure their success.
Business Analysis seen as a discipline
In a broader context and from another perspective, the Business Analyst represents a discipline and not necessarily a person who makes an effort to improve the way the companies interact with the market and the competitors. Romanian companies, mostly those who operate in the IT field, started to give a greater importance to the role of the Business Analyst, and following the results, they began to increase the involvement in the process of developing the projects. Many times, the motive that stands behind the failure of the great business ideas, are the communication barriers. These barriers generate ambiguous requirements, incomplete documentation, unwell defines purpose and therefore a business without a clear direction on the long term. Acting like a negotiator, the business analyst ensures the liaison between teams, resolves conflicts and if it is necessary facilitates a compromise so that the project won’t be in danger. Emphasising the strengths and weaknesses, motivates the team, helping it to growth, to overcome the obstacles and to excel in finalising the tasks. Among Business Analyst’s objectives we can list: • identifying the real business needs; • defining a business case; • planning, analysing, monitoring the requirements;
36
nr. 9/2013 | www.todaysoftmag.com
• considering perspectives; development process is consistent with the • facilitating conflict among the team; business requirements. • evaluating the impact, the cost and Both roles share the main purpose: benefits. the one that facilitate the success. Used in the correct way, the role of the Business More than that, the Business Analyst Analyst is unique and the added value is ensures that all the above are communica- evident when the BA is involved from the ted and well understood by the team and early stages of the developing process of the stakeholders, facilitating the process from projects. As results, we have lower costs, “as is” to “to be.” The Business Analyst refi- minimized risks, quality, performance and nes the development process by elicitation, the most important satisfied clients. gathering, analysing and communicating the business requirements, using speci- A growing community fic methods, techniques and practices to International organizations (www. show and control the workflow (e.g. inter- iiba.com), local community (www.codeviews, workshops, modelling processes, cap.ro, www.linkedin.com/groups The BA negotiations). Lounge), all these promote the importance of the business analysis and the impact that Business Analyst vs Project Manager the Business Analysts have on the developConflict or partnership? ment and implementation of the software The role of a Business Analyst is some- projects. The number of young, talented times associated with the role of a Project and passionate people who embraced this Manager. So the question is: “Why do I need profession is growing. Living proof s are a Business Analyst when I have a Project the conferences and presentations that Manager?” Both roles are necessary and if takes place on different topics in this field, the two of them join their forces, then this aiming to promote and encourage professithing can lead only to a growing perfor- onal development as Business Analyst. mance ensuring the success of the project. Don’t forget: The Business Analyst conAlthough there are common areas, each is nects the dots in your company! responsible of certain tasks and possesses certain qualities, abilities and knowledge. Source: (“Business Analysis”, second While the Project Manager holds the edition by Debra Paul, Donald Yeates responsibility over the all project, adminis- and James Cadle; “The Business Analyst’s trating the necessary resources (humans role” by Allan Kelly; www.iiba.com; www. and technical) and ensuring that the pro- businessanalyst.com; http://www.bridgingject is delivered on time and on budget, the the-gap.com) Business Analyst ensures that the scope, the objectives and the strategy of implementations were well understood, that the
programming
TODAY SOFTWARE MAGAZINE
Introduction to Grails (III) I hope the previous articles about Grails raise your interest on the framework to give it a try. Here comes the last article the “Introduction to Grails” series, presenting the following topics: • Custom validators • Internationalization • Tag libs • Url Mappings • Persistence
Custom validators
In the previous articles we discussed about constraints on domain objects. Grails provides a rich set by default: nullable, blank, size validators, etc. In case we need to enforce additional validation on our domain objects, we have to write our own validators. Let’s add a custom validator which doesn’t allow word “test” as part of our messages. For this we need to enhance the Message class with the additional custom validator:
Internationalization
Most web applications are targeted to users speaking different languages. As well, the default messages that Grails provide to handle error cases, are not always user friendly (see above). Grails internationalization support is based on the underlying Spring MVC support. The language settings are managed using the user’s Locale . Grails is storing the message bundles under grails-app/i18n as Java properties files. The convention is that a message bundle file starts with “messages” and ends with the locale name. Few examples: • messages.properties • messages_en.properties • messages_pt_BR.properties • messages_ro.properties
For our application, we will use only 2 files: • messages.properties Then we define the validator method in • messages_ro.properties the Message class: private messageValidator(val) { Let’s take the example above, where the if (val.toLowerCase().contains(„test”)) { return „test.is.not.allowed” custom validator error coming from Grails } return true was not very user friendly and add the vali} dation error text key in the properties files. The validator takes as parameter the value to validate (in our case the text of Open https://github.com/tavibolog/ the message to post). If the data passed is GrailsSocialNetwork/tree/master/grailsok according to our rules, the validation app/i18n/messages.properties and add: method should return “true”. Any other message.name=My message test.is.not.allowed=Test is not allowed! expression will be considered as a validation failure when “validate” method is Now retry to add a message called on our Message object and our appli- containing “test”. We will notice cation will display an error message. We 2 things: will see in the next section how to custo• Grails knows that the mize the error messages of our application, error returned by the custom by adding internationalization support. validator has to go through t h e i nt e r n at i on a l i z at i on framework • Grails automatically loads an internationalized resources from messages.properties if not found in more specific i18n files. S i m i l a r, w e s h o u l d do s ome changes on t he static constraints = { message size:5..100, blank:false, validator: {val, obj -> obj.messageValidator(val)} }
messages_ro.properties (https://github. com/tavibolog/GrailsSocialNetwork/ blob/master/grails-app/i18n/messages_ ro.properties ): test.is.not.allowed=Test nu este admis! message.name=Mesajul meu
As you can see we added a new internationalized key-value and we would like to use this into the gsp files. This is pretty straightforward with Grails. Open https://github.com/tavibolog/ GrailsSocialNetwork/blob/master/grailsapp/views/message/create.gsp and look for the string “Message” and replace it with: <g:message code=”message.name”/>. This will instruct Grails to look on the internationalization files for a key called “message. name” and to use its value according to the current locale. Our application doesn’t have a language picker, but Grails helps us to test switching languages, by exposing a “lang” request parameter that can be used to set the language in our application. If we want to switch to Romanian, just make a request using “lang=ro”, for example: http://localhost:8080/ GrailsSocialNetwork/message/ create?lang=ro Then, the create message page will look like (and the error message coming from the custom validator above will be displayed also in Romanian):
Sometimes we need internationalization support at the controller level. This is simple in Grails. Let’s say we want to have internationalization support for the message we displayed when the user and password do not match at login. Cu r re nt i mpl e m e nt at i on l o ok s www.todaysoftmag.com | nr. 9/2013
37
programming Introduction to Grails (III) like (https://github.com/tavibolog/ GrailsSocialNetwork/blob/master/grailsapp/controllers/com/todaysoftmag/gsn/ UserController.groovy ):
need to keep changing the gsp file for so it seems the proper way to display the any change to our greetings message and greetings: eventually needs to be replicated to other <div id=”grailsLogo” role=”banner”><a href=”http://grails.org”><img files src=”${resource(dir: ‚images’, file: ‚grails_ logo.png’)}” alt=”Grails”/></a></div> render(view: „login”, model: [message: Let’s extract this as a tag lib. For this we <display:greetings/> <g:layoutBody/> “Wrong username or password!”]) have to create the tag lib class, by running Since the localization is done via a the Grails command: Url Mappings “message” tag, what we need to do is to call Grails offers a good support to play with create-tag-lib com.todaysoftmag.gsn.Display the tag with the right parameters. Here is the URLs of the application. The playgrothe changed code: This will create the tag lib called und is the UrlMappings groovy class, render(view: „login”, model: [message: DisplayTagLib and the associated test file located in grails-app/conf (https://github. message(code:”error.wrong”, args:[message(code: „error.usernameorpassword”)])]) DisplayTagLibTests. com/tavibolog/GrailsSocialNetwork/blob/ Looks a bit dirty, but I wanted to highli- package com.todaysoftmag.gsn master/grails-app/conf/UrlMappings. ght that Grails also supports parameters in class DisplayTagLib { groovy ). static namespace = „display” the internationalized content. In our case, Up to now, our application was always def greetings = {attrs -> we want to display a text defined by “error. if (session && session.user) { showing a Grails default index page each out << „<div id=\”login\”>Hello, wrong” key, which has parameters, defined „ + session.user + „!</div>” time we accessed: http://localhost:8080/ } else { in the “args” list – these could be internatiout << g.link(controller: „user”, GrailsSocialNetwork . Now, we would like action: „login”){„not signed onalized as well. In both cases, we just have in”} } to call the “message” tag with the needed } parameters: “code” – to specify the text } to be displayed and “args” - to specify the Let’s look now at the tag lib eventual parameters to be replaced in the implementation and let’s explain text. it: Next step is to define the key and values • the package is the same as for the internationalization support in for any Java/Groovy class to change this and always show the login messages.properties: • “namespace” – this is defined to page. More, we would like to show a nice error.wrong=Wrong {0} make sure our tag lib methods to not name for the login url, which by default is error.usernameorpassword=username or passwordd collide with the ones coming from Grails /user/login. We prefer something simpler and messages_ro.properties: or other developers or just to fit the like /login. error.wrong={0} sunt gresite methods into the proper context. To use To accomplish this we need to change error.usernameorpassword=username sau parola the tag lib method, you have to call them some url mappings as follows: Now, if you login with the wrong like: <display:greetings/> „/login” (controller: „user”, action: „login”) password, and ask the application to use a • “greetings” is the method we would „/”(view:”/user/login”) specific Locale, you will be prompted with like to use to show our greetings, defined First change is to have the nicer url for a localized error message. as closure the login form (“/login” instead of “/user/ • “attrs” - is a hash that contains login”). Second change is to instruct Grails Tag Libs parameters that are passed to the to afișeze the login view each time the Tag libs are a nice way to build reusable tag lib. In case we call the tag lib as: application request is http://localhost:8080/ components for the view (GSP files). The <display:greetings greetingName=’Hi’/>, GrailsSocialNetwork – e.g. root of the tag libs are stored in grails-app/taglib folin the “greetings” closure we have access application. der. Tag libs are defined as Groovy classes to attrs[“greetingName”]. Because of these change, our applicaand can have multiple methods. We can • tag lib methods have access to the tion looks better now, when accessed for specify namespaces for our tag libs, to make user session the first time: sure they do not collide with other tag libs • “out” – is the stream where (coming from Grails or other developers). were we can write the output Let’s build a small tag lib that will be of the tag lib methods used to show the greetings message for • the logic of the tag lib is: our user. Currently we display this in we check for the existence of list.gsp (https://github.com/tavibolog/ the session and user object on session. If GrailsSocialNetwork/blob/master/grailsexists, we show the user greeting. If not, Persistence app/views/message/list.gsp ): we show a link, asking user to log in. As So far, our application was using an exercise, you could try to add interna- an in-memory persistence mechanism. <g:if test=”${session?.user}”> <div id=”login”>Hi ${session.user} tionalization support to this link. In this section I would like to describe </div> </g:if> how to add a persistent data source, still Now that we have the tag lib define, through GORM mechanism. Data sourThis approach has multiple issues: let’s use it in the proper place: main. ces configuration happens in DataSource. • It works only in this view gsp (https://github.com/tavib olog/ groovy (https://github.com/tavibolog/ • It doesn’t display any message to sign GrailsSocialNetwork/blob/master/grails- GrailsSocialNetwork/blob/master/grailsin if not signed in app/views/layouts/main.gsp ). This is the app/conf/DataSource.groovy ). • It’s complicated to maintain since we skeleton than embodies all our pages, First step is to define few configuration
38
nr. 9/2013 | www.todaysoftmag.com
programming of the data source, like pooling, driver used to connect, user and password:
TODAY SOFTWARE MAGAZINE rect column specifier for column ‚id’
Bibliography
Fortunately, this is easy to fix. It hapdataSource { pened because the “id” of our user class is http://grails.org/documentation pooled = true driverClassName = „com.mysql.jdbc.Driver” String and GORM is trying to set it up with http://www.springsource.org/downloads/sts-ggts username = „tavi” password = „tavi” AUTO_INCREMENT attribute, which is } not working for non-numerical types in All these configurations could be over- MySQL. So, let’s change the type of our written for each environment as described “id” to “long” and let GORM and MySQL below. Let’s take the “development” envi- to handle generating our user ids: ronment, the one we use when writing our class User { long id // prior it was String id = application: UUID.randomUUID().toString() development { dataSource { dbCreate = „create-drop” // one of ’create’‚‘create-drop’, //’update’, ‚‘validate’, ‚’’ url = „jdbc:mysql://localhost:3306/gsn” } }
This one defines the url of our data source, in this case being a MySQL server, running a database called “gsn”. As well, when the application starts, it will drop the existing tables and create a new set as specified by our domain classes: User and Message. This is pretty handy for development purposes; of course, not a setting for the production database. One last configuration is to enable the MySQL dependency for our project. In BuildConfig.groovy (https://github.com/ tavibolog/GrailsSocialNetwork/blob/master/grails-app/conf/BuildConfig.groovy ), we add the MySQL connector as runtime dependency: dependencies { runtime ‚mysql:mysql-connector-java:5.1.16’ }
Assuming that you have a MySQL database available on this url: jdbc:mysql:// localhost:3306/gsn and a username/ password combination to access it, let’s restart our application. Hmm, Grails is throwing an error saying: | Error 2013-02-24 21:37:48,821 [pool-7thread-1] ERROR hbm2ddl.SchemaExport - Unsuccessful: create table user (id varchar(255) not null auto_increment, version bigint not null, first_name varchar(10) not null, last_name varchar(10) not null, password varchar(10) not null, user_name varchar(10) not null unique, primary key (id)) | Error 2013-02-24 21:37:48,823 [pool-7thread-1] ERROR hbm2ddl.SchemaExport - Incor-
… }
String String String String
firstName lastName userName password
Now, the application will start without any problems. If we take a look on the “gsn” database, we see that it contains 2 tables: “user” and “message”; GORM (via Hibernate) created the proper tables definitions from the domain Groovy classes, taking in consideration the attributes and relationships between our classes. Due to the initialization routine from BootStrap. groovy, “user” and “message” tables have already some pre-loaded content.
Conclusion At this point, we managed to build a sample application by using the most common Grails and Groovy features. Of course, not production ready, but good enough to kick start learning a new development framework. Grails helps developers to be productive after couple of weeks of development to the level where they can build a web application with a lot of dynamic content. Of course, the universe of Grails and Groovy is pretty vast and mastering it takes longer time. I hope with these 3 articles I raise your interest in trying out Grails and Groovy in your web development activities. This framework really paid the investment for my team.
Tavi Bolog
tavi.bolog@nokia.com Development lead @Nokia
www.todaysoftmag.com | nr. 9/2013
39
management
Agile or idle? How to get the support of your team in a project
W
hen we think of Agile, we think of individuals and the interaction between them, the functional software, the collaboration with customers and the responsiveness to change. These four values are the foundation of Agile methodologies! Values like „responsiveness to change” or adaptation must become a way of being even outside the world of the Agile manifesto. We have to become agile as an individual, team, organization or company. Adrian Lupei alupei@bitdefender.com Project Manager and Software Engineering Manager @ Bitdefender
Why do we want to be agile?
The responsiveness to change translates in creating possibilities to adapt to new situations. The business environment (if we speak about companies) or the labor market changes every day through new obstacles or opportunities. Adaptation is the only answer to those changes. We can of course try to change the change, but can we do this regardless of the circumstances?
Not only sometimes, but usually our agility is based on the business environment where the company operates, the culture of the country the people work in and, by default, the culture of the organisation. Bitdefender is an innovative company in the data security field. But can we innovate just by displaying this mantra? Don’t we really need to have that organisation that sustains innovation? I don’t believe that there are a lot who come to work carrying the innovation in their lunch sandwich, but I rather think we carry something that can become alive in a company that sustains innovation. The environment of the company, organisation or team, together with the individual’s upbringing is an essential factor for innovation and agility. What can you do if you innovate but you cannot adapt, so as to reap the benefits of your new creation?
Why do we come across problems when using agile metodologies? Why cannot we be truly agile?
I am sometimes idle and I could just simply say that not all people or companies are agile. But that “sometimes” mentioned previously is in fact “it depends”, a term used by an expert to answer all questions.
40
nr. 9/2013 | www.todaysoftmag.com
No matter how agile the people and teams are or how much they use an agile methodology, problems still occur and that is very common, as things are always changing. There are new requirements every day, either on the market or in methodologies, processes and tools that we use.
business However, most of these are situations when people are not ready for an Agile methodology, due to the fact that the team or organisation doesn’t work towards creating an Agile environment. The organisation leaders, either project managers or team leaders, are most responsible for creating change and also an Agile methodology. Therefore, it is their duty to help create an environment without any of the following problems: • Inconsistent teams that are not trustworthy; • Teams that value success, rather than the opportunity to learn; • Unsupportive colleagues inside the team members and also between the team, clients and sponsors; • Lack of discipline due to no definition of done. The above list could be several times longer and more specific, depending on the organisation, ruling actions and team members. It is not often when changes create a huge tension inside the team, but such a list is a big opportunity for every leader.
TODAY SOFTWARE MAGAZINE How can we motivate the team?
So we have the problems and sometimes problems cause even bigger ones. A list of big problems creates demotivation, especially when this list grows and no one handles it, and team demotivation has a great impact on final results. Consequently, we have a list of problems, we have an organisation, we have teams, we have people and last but not least, we want to show the clients the best results. We can throw the list away, but the problems are there until someone handles them. What do we do with a problem? Even if we instinctively pass it to our boss, an agile team should state the problem and solve it, keeping in mind that we are our best motivators. What do we benefit from this, apart from solving a problem that is still unknown for our boss? We obviously get motivated teams and individuals. For this matter, we could take into account the following: • autonomy – the change is inevitable and the results are an instrument of progress, so the team can decide for some changes in order to become more efficient; • mastery – we are born with the desire of improvement, but when we cannot improve something, we blame a problem; • purpose – in the same way in which we help the organisation through our projects, we should understand what the causes of change are and what we want to obtain by solving the problem.
What do the project’s sponsors and clients see?
We have Agile methodologies, we have motivated people who understand and use them, but we miss the support of our clients and sponsors. The clients and sponsors are particularly the ones who generate or mediate changes in the organisation. To make them understand the context and the real needs, the team has to lure them into the trap called coopeartion. So what matters is what the team sees in clients or sponsors to carry out the demands we need. How can a team be open to changes if those who join us are unsupportive or unresponsive, as long as it is necessary?
This simple approach can be applied both to a list of problems but also during a sprint, but it has to be accompanied by trust, support, encouragement and appreciation from leaders.
www.todaysoftmag.com | nr. 9/2013
41
programming
Book review: OSGi in Action by Richard S. Hall, Karl Pauls, Stuart McCulloch, David Savage
O
SGi stands for „Open Services Gateway Initiative” and is a framework that defines a dynamic module system for Java. Framework’s origins are somewhere in the early 2000s.
Silviu Dumitrescu silviu.dumitrescu@msg-systems.com Java consultant @ .msg systems Romania
42
nr. 9/2013 | www.todaysoftmag.com
The type of technology used by OSGi, although it is based on Java, is relatively different from what we know so far: object-oriented programming, or later, in enterprise, components-oriented programming. OSGi in Action, the book I bring into your attention, written by Richard S. Hall, Karl Pauls, Stuart McCulloch and David Savage, is one of my favorites, as type of approach. If you can manage to read and understand the book and all its details, surely you will know OSGi. Moreover, you will be able to contribute to the development trends of programming technologies. It is an area where I would like to accompany you. The first aspect I would like to highlight is that OSGi specifications have multiple implementations. Eclipse RCP version 4 uses Equinox implementation, which is a runtime environment that Eclipse applications are based on. In Eclipse the smallest unit of modularization is the plug-in. The terms ‘plug-in’ and ‘bundle’ are almost synonymous: a plug-in Eclipse is an OSGi bundle and vice versa. Eclipse Equinox boosts the bundle concept with the concept of extension point. I will make a short description of the model used by OSGi. It is divided into three layers: • The fundamental logical unit of an application that uses OSGi is the
module or the bundle, as it is known. A module is a jar (collection of class files and artifacts) together with metadata file (manifest). Metadata contains, among other things, of the packages name that are visible (accessible) from outside the bundle. In this way, the concept of visibility modifier (private, public, protected or package) offered by Java is extended. Also, the manifest file explicitly states which packages that the bundle depends on are. An important aspect to be considered is that consistency of the dependencies is checked accordingly to the version. Thus, for the same module we can have multiple versions simultaneously loaded. • The life cycle of a module is handled by a special layer. This is somewhat similar to the concept of enterprise components life cycle. That life cycle was handled by the container, but through callback methods the developer could do various operations when passing from one status to another. The fundamental difference was that modifications were done at runtime and not at compile time, as in OSGi case. Life cycle control in OSGi plays an important role in dynamic management of the bundle. Thus, the bundle can be added or deleted from the application without restarting it. • A third important element in framework is the service, managed by the
TODAY SOFTWARE MAGAZINE
service layer. The service is somewhat similar to a web service through which bundles can communicate. The basic idea, also considered a best practice, is that we expose only an interface, considered a contract between the service provider and the customer. Service may be published in a directory service where customers can browse it. These are some of the most important concepts provided by OSGi. Details and many useful examples can be found in the book. The content of the book is divided into three parts: introductory elements (modularity, life cycles, services), details regarding the basics of OSGi (transforming a jar into a bundle, dividing the application in bundles, testing the application, debugging of an application, versioning, application management) and advanced topics. As we have seen so far, this framework changes the classic style of developing an
application. The natural question would be where is this framework integrated? First of all in application that develops fat clients. The penetration of OSGi in the world of Java Enterprise is still at the beginning. Maybe the only known and appreciated applicability of OSGi is the level of application servers: Glassfish V3, Websphere etc.. In addition, the model of OSGi divided into layers is more or less similar to what EJB offers. Also, OSGi is used as a model or integrated in: network service JINI (like RMI, but more advanced) JMX technology (Java Management Extension) and others. In the advanced concepts presented in this book, the authors present the relationship between model and component (Chapter 11, page 345). The conclusion is interesting: the modules work with static code and dependencies at compilation while components work with instances and dependencies at runtime.
OSGi defines a model component, which is actually a special component called service-oriented component model. This model is based on linking the execution of a requested service using a service-oriented interaction pattern. This leads to increased flexibility in composing the application. The great weakness of OSGi component model is that it leaves to the components the manually managing service dependencies from the service layer although the layer is automatically managed. The solution was found by the OSGi Alliance through a framework component called Declarative Services. In addition to this, the authors also present iPOJO as component model (section 12.2, page 391). iPOJO simplifies the dynamic creation of OSGi services-oriented applications. The final part of the book deals with the relationship that may exist between web applications, more precisely how OSGi can work in a web context. Just as the authors stated, the models used by OSGi are still in a primitive condition. Some people even claim that OSGi is where object-oriented programming was 25 years ago. The trend, however, is the wide of this technology. Although it seems difficult and a bit uncomfortable, OSGiâ&#x20AC;&#x2122;s use brings many improvements in the dynamic world of applications. Just the fact the update and installing modules without stopping the application give developers many reasons to think. Perhaps the last thing that should be mentioned is that going through this book requires advanced knowledge of Java Standard. Java Enterprise skills are useful only for understanding parallel made by the authors and for fully valuing the progress brought by OSGi to the world of software developers. I wish you pleasant reading and I am looking forward to comments and opinions!
www.todaysoftmag.com | nr. 9/2013
43
HR
The Psychology of initiating and maintaining behaviors I truly think a lot of people are already tired of anything even barely related to Time Management. For this specific reason I want to rephrase the issue a bit. When we say Time Management we are actually tricking ourselves. No matter how relative time is, in our own reality the day will have 24 hours regardless if we feel they will pass slowly or not. As a consequence we are trying to solve a false problem because it is not about managing time, it’s not about planning, to do lists or calendars. If it were about this nobody would be late ever again and each one of us would know how to use all programming languages. (Except me ) Than what is it about? Exactly! Let’s rephrase so that we figure out a solution. When somebody complains that they have time problems, they don’t tell us in subtitles that they don’t know how to use a calendar (that’s rarely the case). Instead that person is telling us that putting the task in the calendar is the smallest of challenges. Following the calendar is the big issue. If the Snooze button would wear out probably the writing wouldn’t be readable by now. Approaching the issue like this gets us at rephrasing it: “How to start and stay at what we schedule/plan?” Thinking about it like this we arrive at the conclusion that the issue is to manage us, our behaviors. We are lucky, since this is one of the most researched things in psychology:
Why we do what we do and why we don’t do what we don’t do?
Talking with a few friends from IT and following Ovidiu’s recommendations I learned that one of the challenges is learning a new programming language. I think we are all facing the same challenge. Not to learn a new programming language but to stay up to date in our field, read that great book we bought, read a book every month, go to the gym, eat healthy, and so on. It became obvious for everybody that just writing things down on a to do list or to a calendar doesn’t mean it will actually happen in reality. We have tons of experience with things from calendar that got from SNOOZE to DISMISS and not because IT WAS DONE. The answer to this question is extremely simple and we can summarize it in a very easy to follow and to remember scheme. What you find bellow is from Behavior Psychology, who’s founder was BF Skinner, and the ABC behavior model, one of the most researched models in psychology.
44
nr. 9/2013 | www.todaysoftmag.com
This time we will discuss about the first step. See you for the next articles to figure out steps 2, 3 and 4. The first problem in managing behaviors or managing time is that rarely we are clear about what we want to do. If we don’t define our brain has trouble because it does not know what’s expected. How do I define correctly? • I always use action verbs and never, but never, the verb “TO BE” • I specify clearly how often I want something done and schedule how to get there • I admit I’m human and I set from the start how many times I can postpone and for how long • I define clearly what I want to do (just being there probably won’t do it) Not helping:
First step in learning Python:
I study Python I start studying Python I will learn about Python I will get awesome at Python
I study Python: Frequency: three time a week (Monday, Wednesday, Friday) Schedule: morning, before going to work Duration: one hour Snooze: I can postpone to next day Process: What I do when I study (like an instruction manual) I read x pages from the manual/blog/ site, I take notes, I extract 4 concepts that I write down, I make an outline to what I learn, I talk to a peer about what I learned, I write a blog post about what I learned)
Când e vorba de prevederea amânărilor (butonul de Snooze), avem ceea ce se cheamă complexul Superman. Când planificăm, mai ales dacă suntem entuziasmaţi, avem tendinţa să planificăm ca şi cum altcineva, nu noi, ar veni mâine să pună în realitate ce am planificat. Aceasta este una dintre marile probleme, când e vorba de planificare. Recomandarea mea este că atunci când planifici să nu te bazezi niciodată că “DE MÂINE” altcineva cu mai mult chef, neobosit şi super motivat va face treaba. Planifică luând în considerare experienţa trecută când ai făcut asta sau ceva similar, în cea mai proastă zi a ta. Lasă neapăsarea butonului de Snooze să fie o surpriză plăcută nu o aşteptare.
programare Not helping: Design a website
Helpful: Frequency: three time a week (Monday, Wednesday, Friday) Schedule: evenings from 10 to midnight Duration: 2 hours per session, 3 weeks to finish Snooze: I can postpone to next day Process: I install a DB, put Wordpress on it, make sure it’s connected, set the config file, design on top, communicate with client to make sure specifications are met, agree with client on final version, find hosting, upload site, check the site is functional, send all final details to client.
TODAY SOFTWARE MAGAZINE much it took to do it when you did it the first time.
The brainers
We are facing a small challenge. What do we do when we cannot define like this? There are situations, especially with the brainers (the ones that need to think, create, solve things) when we cannot define upfront how it should be done. Brainers have a catch; they need to work step by step on a situation until they figure it out. Well, the answer lies in the definition itself: “work step by step on a situation until they figure it out”. That means that I’ll never plan the whole process but instead I’ll plan one step and won’t plan the next until the first is done. It’s just like writing a book. Rarely, if ever, I have the whole book in my head (the plot, the characters, the scenes, and so on).
I study for .net Frequency: three time a week (Monday, certification Wednesday, Friday) Not helping: Helpful: Schedule: evenings from 10 to midnight Wr i t i n g t h e Write the first chapter Duration: 2 hours per session, one Saturday book! Frequency: Three times a week every two weeks, 4 months to finish Starting to write! Time: two hours per session, 3 weeks to finish Snooze: I can postpone to next day Become a writer! Snooze: Postpone to next day Process: Download manuals, Print manuals Writing the best Process: What do I do exactly when writing and organize book! the first chapter: Each session I read one chapter and code the For each session: Read the previews work, exercises Write the first paragraph, continue to write for Verify correctness if code is available an hour even if it doesn’t make sense, re-read, Simulate tests every three chapters. Read correct to make up for logic, rephrase, check, assessment feedback correct, save as Draft1.docx Reread the content where I have incorrect answers. Re-do the test. Find out what I need for certification When it comes to complex plans it’s actually not recommenSchedule the test ded to plan everything ahead. By the time you finish planning Practice for final test (three times) someone else wrote the book. Take the test. It takes significantly longer to do things this way (define ahead) but it is the first condition to getting things done. If I don’t know what and how and when things need to get done it won’t happen. There are two things that need some more explaining. Defining is just the first step; we have the rest of them. For that When scheduling the postponing permission or the snooze I invite you to read the next TSM issues. button we have what we call the Superman Syndrome. When we Thank you for your time (for me and not studying). plan, especially if we are excited about what we plan to do, we tend to do it like someone else would have to carry out the plan. This is one of the main issues when planning. I recommend, that when you plan, to never assume that “from tomorrow” someone more cheerful, fresh, in the mood and extremely motivated will come and make the plan reality. Plan while taking in consideration your experience when you did something similar in your worst day. Let the “not pushing snooze” be a surprise not an expectation. When it comes to forecasting duration of a specific task analyze the actions required to do the task. Even so we will estimate erroneously. I once heard a good advice about this: Estimate as if someone else would do the task and then add 20%. Another good suggestions is to find a similar task (especially when you need to estimate something you’ve never done before) and remember how Antonia Onaca
anto@aha-ha.com with 10 years of experience, psychologist, consultant as an entreprenour
www.todaysoftmag.com | nr. 9/2013
45
misc
Gogu and Agile - You prehistoric mammoth, you feed extinction! You must be flexible, you must adapt ... Gogu was very involved, it was a subject he loved and which he had often debated with Chief, so now was very sure of himself. - No, it’s not true, even mammoths can be agile. Haven’t you heard those guys with the event?... even mammoths can be Agile is actually the title of the event. - Don’t bother me with this stuff, now everyone is smart and knows Agile, yeah right?! They know nothing! - No, no, these guys are supported also by Ovidiu, the one with the magazine. - It’s not like this Ovidiu of yours has any idea. Hasn’t he worked for Nokia? Nokia is now closed! See? – Gogu ended trimphantly. He loved to confuse Misu and he was delighted by the sight of Misu’s puzzled face. Misu recovered slowly, at least enough to be able to articulate: - You’re crazy, Gogu!... Let’s return to the subject. We were talking about the process. Agile does not mean chaos, the frame is clearly defined. You don’t do whatever we want whenever we want. If the SCRUM Master says he will not deliver because he is in the middle of a sprint, then that’s it. There is a process and the process must be followed. - Ha-ha, you’re right, partially. Yes it must – he copied Misu – be thought this process of ours. It is true that our methodology follows some rules, and it’s normal. The SCRUM applied by the people working in development... And here me out, don’t stumble against unimportant details in the context. Misu wanted to add something, but Gogu’s sight stopped him. So - Gogu continued, excited by Misu’s reaction, or better said Misu’s lack of reaction – this Agile methodology that we are using has been defined by others, and we are applying it according to various books and certifications that we have read, accepted, embraced. - Right – Misu jubilated. You’re right, Gogu, this is what I wanted to say. And therefore, you can’t change the requirements during a sprint. And you can’t pull out someone from the team. It’s all thoroughly calculated.... - Uff, you prehistoric waterfall mammoth, buried in funeral sprint pace! Agile does not mean that you change one rigid methodology with another one as rigid. Agile is a mindset, a culture that we must understand and adopt throughout the entire organization. We gave up waterfall and started doing Agile because we wanted to be closer to our customers, faster to deliver something useful and relevant to them, and be more flexible in accepting change... Shouldn’t we apply these principles indoors also? So, if I ask the SCRUM Master for a man, it means it’s important for the client, for what we deliver, and therefore for our results, our company and its image, right? - If you put it that way ... yes, it’s correct.
46
nr. 9/2013 | www.todaysoftmag.com
- Then why doesn’t he give me that man?! Gogu raised his voice. - He said it would affect the team’s commitment to the sprint... - Oooh, don’t say! - What’s the matter, guys? Stop arguing, we might still close the contract. Chief appeared - as usual – in the critical point of the discussion. On Monday we’ll go to the client, have you talked to the guys from development? I have spoken to the Product Owner, he is on vacation, but he will return on Monday. We still need Flaviu, have you talked to him? Gogu grinned triumphantly and beckoned Misu to answer. He hesitated, but finally muttered: - The SCRUM Master won’t let him because he says it will affect the sprint... Before Misu finished the sentence, Chief was already talking on the phone. The conversation lasted less than 30 seconds and ended with a phrase that left the two speechless: „Well, you know? I like to see that your attitude is Agile as well, not only the methodology. Thanks and bye”. Chief returned victorious to the guys: - Well, are we Agile or not? - Depends on who’s asking, Chief...
Simona Bonghez, Ph.D.
simona.bonghez@confucius.ro Owner al Confucius Consulting
sponsors
powered by