Recently in Agile Development Category

We're already deep in the holiday season, but it's never too late to add a bit of Xmas spirit to your Web Application!

I thought about adding Xmas lights, flying reindeers, working elves... but it seems to me that for an Enterprise Web Application something a bit subtler was in order. So I ended up just putting in a bit of snow on the Sales application:


Check the video to see snow in action, 
or visit the OutSystems Network to see it live in a real web page!

If you're using the Agile Platform and want to add some snow to your app, here's what you need to do:
  1. Get the "Xmas" component from the OutSystems Community
  2. Reference the component from your web app
  3. Drag the "LetItsnow" block to a particular page, or to the footer if you want snow on all pages
  4. Click 1CP, sit back, enjoy your eggnog, and let it snow!

If you're not using the Agile Platform, there's a bit more work involved...
  1. Get the Javascript file from this site
  2. Place the Javascript on all your front end servers
  3. Edit your pages and look for the <head> section
  4. Add the line <script src="snowstorm.js"></script>
  5. Customize the snow with a bit more Javascript
    <script>
    snowStorm.snowColor = '#cccccc';
    snowStorm.snowStick = false;
    snowStorm.animationInterval = 75;
    </script>
  6. Make sure you didn't break anything!
  7. Follow the "move to production" checklist (if you have one)
  8. Send the changes to your ops team and wait for them to move it to production... hopefully that will happen before Xmas! :)
Have a snowy Merry Xmas!
MobileI don't know about you, but I am getting asked more and more to deliver some type of application that has a mobile front end. Of course mobile is one of the big trends nowadays, and there are good reasons for it. In a recent Forrester survey, 75% of decision makers claim that deploying mobile apps has increased their workforce productivity.

The question I seem to get asked often is, how should you implement mobile? To keep it simple, I have found that there are three implementation strategies you can choose from to build your mobile app:

  1. Native Applications
  2. Mobile Web Applications
  3. Hybrid


Native Applications
These are apps built for a particular device and operating system. They're cool because you can build extremely rich and interactive apps that take advantage of all of the phone's features. The problem is they're hard to build, and you need to have different code (and sometimes different dev teams) for each different device - a maintenance nightmare...

Mobile Web Applications
These are applications that run on the device's browser. Using standards like HTML5 and CSS3, they provide a very good level of interactivity that is getting closer and closer to what you get from native. They run on a web server, instead of running on the device, which gives the possibility to deploy the same app for multiple devices and greatly simplifies application maintenance. The Financial Times is an example of a major player that has decided to move from native to Mobile Web.

Hybrid Applications
These are a mix of Native and Mobile Web. A thin native shell is built around a browser, where the bulk of the application runs. The thin shell allows the application to access phone features that are not available in HTML5 (yet!). It also meets the requirements of being native in order to distribute the application on the appstore. On the maintenance front, well you guessed it a bit of a mix between the native and mobile web. Major players such as Facebook have chosen this route by building their own "wrapper" and then executing all the site content as a web app in that shell.

So, which to pick?
I believe the best choice is Mobile Web Applications. Of course the decision depends on the context, but most of the time Mobile Web is the way to go - particularly if you're considering Enterprise Mobile Applications. Here's why:

  1. Use what you know: Reuse all the knowledge you have from web development. There are still new things to learn, but it beats learning a whole new system.
  2. No approval process: Skip all the steps necessary to have your app on the appstore. Just publish to your servers and you're done.
  3. Auto-upgrade: All your users will be using the latest version of your app. No need to manually upgrade the app on their devices.
  4. Ready for a lot of devices: Using standard technologies like HTML5, your app will be ready to run in a lot of devices in one go.
  5. Be Agile! By skipping the appstore approval process and by being able to release for multiple devices at once, you can have truly short iterations and release new features early to your users.


Click here to learn more about this topic by watching the "Mobile has arrived so start building those apps!" webinar. Happy development!
GrupoSataLogo.pngI was excited to read a story in PM Network profiling our client, SATA International, an airline headquartered in Portugal. The article highlights how SATA - using OutSystems' Agile Platform - built a custom airport operational management system after the packaged software vendor behind their previous application came to them at renewal time presenting a significant price increase.

"Buy vs. build" is a typical issue we hear from Agile Platform users, and as the PM Network article points out, the answer for SATA was "build" after they realized they could reduce costs and improve organizational efficiency by building their own application. For SATA, the airport operational management system is a critical application that needs to be fully integrated with SATA's operational systems. And after a short experience working with OutSystems' Agile Platform, SATA was certain they had the right platform to build their application .

As SATA CIO Paulo Ornelas said in the PM Network article:

"Even having this limited experience, the success of our first agile deployment instilled confidence that both the methodology and the technology would effectively support the project delivery."

Once SATA kicked off this project using the Agile Platform, they were able to deliver the application even quicker than expected. Paulo Ornealas told PM Network:

"We actually issued the final release a month early, with an even higher than- promised level of functionality."

And at the end of the project, SATA's decision to build its own custom application was validated, with substantial financial savings over what the packaged software vendor originally quoted them for their renewal:

"Financially, we were able to realize significant savings in both capital expenditure and operating expense," Mr. Ornelas says. The final solution came in at only 15 percent of the total cost proposed by the vendor, and it was totally tailored to the organization.

Congratulations to SATA on their successful projects! To read more about the success they've had with Agile Platform, check out their full case study.

IT professionals in the education space have a peanut_butter_and_jelly.pngdifficult task facing them - they have to meet the demands of students, teachers and administrative support staff with what typically amounts to a shoestring budget.

In the past few years, this has meant relying heavily on Software-as-a-Service (SaaS) solutions that, while inexpensive, tend to be difficult to integrate with existing school resources and rarely meet all the needs of a district. On the other hand, custom-developed applications can meet all of a school IT administrator's needs but are something of a pipe dream, thanks to the personnel, budget and equipment requirements.

This is all changing, however, thanks to the cloud and, in particular, rapid application development (RAD) Platforms-as-a-Service (PaaS) - a category which is defined by the flexibility and power of the Agile Platform.

For an example, take Faith Academy. A private school with brick-and-mortar locations as well as a virtual curriculum, Faith's vice president of IT, Dan Stueck, was faced with having to upgrade several important applications with a very small budget. Rather than turning to SaaS, Dan went with the Agile Platform, leading to a highly effective partnership in the cloud. You can read the full article at THE Journal.

Our own Mike Jones also offered up his take on RAD PaaS in schools at EdTech Digest - check out Mike's Q&A for great insights into what schools can expect from the cloud in the future and why custom app dev is the future when it comes to school IT.

What about you? What impact do you see RAD PaaS having on your school or your business?
Building a Mobile Web Application is the fastest way to get a mobile app in the hands of your users. You get to build an app at a fraction of the cost of building native, it works on multiple devices from day one, and you don't need to go through the appstore publishing process (if you want to find out why Mobile Web Applications are the way to go, check this free eBook).

But sometimes Mobile Web Applications just don't cut it... you either need to access a specific features of the mobile device - like the camera or address book - or you really want to get your app in the appstore. If that's the case, Hybrid Applications are a great solution.

In this video, we show you how to build such a Hybrid Application using the OutSystems Agile Platform to build the Mobile Web Application, and PhoneGap to create a native shell on top of your Web Application.


You can find the code snippets used in this video here, and the PhoneGap component for OutSystems is available from the OutSystems Network.
paas-cloud.jpg
I will bet that in some form or fashion you have Software as a Service (SaaS) in your organization. Now, I am not talking about packages that have been purchased and installed on your servers - I am talking about true SaaS. Where the software is running in the 'cloud' on your SaaS provider's servers. There is a lot of hype around SaaS and the hope that in the near future all your applications will simply be purchased in the cloud and start working immediately. Sounds great - right?

Reality check!

For most of us in Enterprise IT, the reality is that what makes our business different is the way we go about delivering our products and services to the market. This means that an off-the-shelf, standardized SaaS application is not going to solve our needs. Sure, SaaS is great for many of the commodity processes like payroll processing, accounting, etc. But what about the processes that make your business unique - is SaaS going to work here?

Many organizations I have talked to are trying to force-fit SaaS to work for these unique processes. They are struggling with wanting to customize their SaaS, which is difficult. I see things like only using pieces of the SaaS app and trying to build new application functionality for the processes that are unique. Why are they doing this?
 
Well, for one, the promise of getting the application up and running really fast is a big attraction to the business. SaaS makes this possible due to the zero time and cost associated with setting up the infrastructure to run the application. But all of these SaaS benefits are lost once you start customizing it. When you try to adapt the SaaS offering to your unique needs, what started as a really fast time to market initiative, will quickly turn into a nightmare of tweaking and hacking an inadequate API and data model.
 
This might seem counter intuitive, but I think the answer lines in Platform as a Service (PaaS). Let me explain, we are starting to see new, extremely productive and easy to use PaaS offerings that give you rapid application development (RAD) with 'instant' setup to get your project started immediately. I like to call this "RAD PaaS". Even more interesting... what happens when you couple free applications with the RAD PaaS environment? Now you can quickly deliver a custom fit application faster than you could configure the SaaS package. Thus, the new wave of RAD PaaS offerings will provide a custom SaaS experience, spelling the end of SaaS for anything but a truly standardized business processes.

OutSystems recently published a new eBook highlighting three customers who delivered unique applications in the cloud. Two of these examples are actually about replacing existing SaaS applications and taking advantage of this new generation of RAD PaaS offerings to accelerate deliverability and cut costs. Check it out here.
 
So, how about your business? Is SaaS working for you? Have you tried RAD PaaS yet?


Measure ProductivityToday, more than ever, analytics are the keys to success.  One of the areas that is still very hard to measure is the productivity of your application development teams.

While finding out how productive your teams are might seem scary, it is far better than not knowing. In this post I will provide three steps and some resources to help you start down the path to understanding the productivity of your application development teams. Once you have a means to measure and monitor, then you can iteratively improve your application development productivity.

1. Make the case for a metrics program

Measuring just for the sake of measuring isn't very useful. The real benefit of having metrics is gaining insight on what can be improved. Not only that, metrics also help you set objectives, what I like to call ultimate goals, and then focusing your team on achieving this goal.

Some of the best advice I have found is from the analysts at Forrester.  I know that a lot of you might not have access to their research so I apologize in advance.   This article (even if you don't have full access you can read the overview), by Liz Barnett, discusses why metrics for application development are important and gives some good advice on what you need to measure and why automating the measurement process is a good idea.

2. Measure your productivity

From my own research and experience, function points are one of the best mechanisms to measure application size and team productivity. As stated by the International Function Point User Group (IFPUG) using this metric for application development focuses measuring functionality delivered to the business, rather than how big the application is internally, how complex the code is, or what language was used to write the application.

Function points have been around for a long time and are a tried, proven and standardized approach.  There is a wealth of resources on how to measure function points, and I personally liked this PDF from a SoftwareMetrics training course and this 5 step process for counting function points from devdaily.

3. Compare to a baseline
After measuring your productivity, you need to determine how your team performs compared with other teams: poor, average or better than average.  There is good news - you can find benchmark information in numerous places. The one I like best is ISBSG.  They provide function point metrics from across the IT industry and with their data you can compare your results and act accordingly.

Go for it!
So, what are you waiting for?  Get a small team to spend some time coming up to speed on counting function points for your organization or go find a third party resource to count for you.  The investment will be worth it when you can accurately assess your application team's productivity and make decisions based on this knowledge.

At OutSystems we got our customers bootstrapped on this process by measuring their performance with something we called the OutByNumbers project. You can take a look at the results from that study here and see how we automated function point counting. I have to say the results are pretty surprising!
clock10.jpg
What's every manager's dream, after finding buried pirate gold, starting a unicorn ranch and marrying a beautiful globetrotting supermodel?  Why, improving  web application development productivity, of course!

Unlike the gold, mythical creatures and supermodel, this goal can be achieved. You can do it in small steps and realize slight improvements in team productivity. But if you're aiming at order of magnitude improvements, some deeper changes need to be made (it's still not as hard as starting a unicorn ranch).

When starting this process, it's important to consider the fact that both building new web applications and maintaining existing apps must be optimized. After all, the lion's share of a web application's cost comes after the first move to production! 

With this in mind, I have pulled together seven tips to help boost web application development:

1. Automate deployment
Moving a web app to production needs to be as simple and as fast as possible. To be truly Agile and keep up with the business, deploying to production must occur frequently, or delays will stack up across the development cycle. If it takes two days to place new versions in production, your productivity will suffer.
 
2. Reduce complexity
The more complex an application grows, the harder it is to change and adapt. The solution? Split the system into smaller parts when it starts getting too big. To do this, however, requires a technology that helps make sense of complex systems, as well as helping the development team split the system into more manageable components.

3. Aim for production, from day one
It's tempting to hack out a quick solution for an immediate business problem, and later clean the application up to make it production-ready. This may seem like Agile, but in reality, it's vital to not neglect things like monitoring, scalability, logging, user management and so on. The ideal solution is to build on top of a platform that let's you take these requirements for granted.

4. Impact analysis
To change quickly, the team needs to be certain that the changes will not break what's already working. This problem can be greatly minimized through three stages: First, use impact analysis tools during the development process: if a change to the database breaks the business logic, it needs to be immediately obvious. Second, use regression testing. Finally, make sure that the impact of changes can be measured, especially when placed in the production server with production data. 

5. Invest on Knowledge Transfer
Employee turn-around, different teams for development and maintenance, or the need to reallocate teams to different projects are all good reasons to invest in knowledge transfer. But don't put the burden of knowledge transfer on the developers. The documentation will never meet requirements and walking through code is slow and difficult. Use Domain Specific Languages or visual languages and relegate this work to the tools.

6. Flexible Control
The advantages of having a 10 second deploy process are lost in the face of a two day bureaucratic process to approve a move to production.  To have true flexibility, two things are needed: full accountability - to know who to ask for help if trouble occurs, and; most importantly, the ability to rollback a not-so-successful move to production.

7. Collaboration with stakeholders
The sooner feedback pours in from stakeholders, the sooner web app development will start moving in the right direction. There's no point in developing quickly if it's going the wrong way. With this in mind, it's highly important that stakeholders can easily provide feedback on what they would like to see improved.

Looks like a lot of work...
Correct - these aren't quick and easy steps (but it's still easier than that unicorn ranch)! But in following these tips, development teams can dramatically improve productivity.

As a case study for this, consider the Agile Platform. It was designed and implemented with all these factors in mind, and a recent study, based on function points, proved that teams using the Agile Platform are 10.9x more productive than using standard technologies.

What other tips would you add to this list? How would you make your team more productive by an order of magnitude?
I wanted to share a recent experience I had with one of our newest customers. We'll keep the name undisclosed for now, but these guys are a truly global company and a recognized leader in their industry. 

When we first met the customer's team, they were faced with the challenge of migrating away from antiquated technologies and hand coding into a platform that would allow their team to respond to business needs very fast but also with high quality and scalability. The team had evaluated tens of alternatives to achieve this goal and eventually decided on the Agile Platform as a technology that would allow them to achieve their time to market goals without sacrificing quality or scalability. 

I had the pleasure to be involved with this process from the beginning and on my last visit I was asked to help them define their migration strategy from the older technologies like Lotus Notes into a modern, web-enabled platform like OutSystems. Now for the challenge: the team has been very prolific over the years and had well over a thousand Notes applications that need to be migrated, discontinued, or rewritten from scratch. The big question behind this process was clear - what is the most efficient way to determine which applications go where?

What goes where?
With this many applications it was almost impossible to understand the entire portfolio usage - let alone determine each application's fate. Luckily, the team had been disciplined and kept track of useful information like application purpose, templates used, and change requests.  Using an Excel file with all this information, the team built an OutSystems application in 5 minutes using IntelliWarp. The application was then used to determine a conversion score for each application, taking into consideration five important factors:

  1. Type of application - Applications that were primarily discussion based were deemed more adequate for other technologies, like Sharepoint. OutSystems applications are typically high-value, highly customized applications that you just can't get out of the box;
  2. User population - Targeting  reasonably small groups of users seemed like a sound strategy to initiate a technology deployment;
  3. Usage patterns - Because value comes from usage, the team decided that highly intense usage would be a good scoring facet for the applications; 
  4. Development team - To ensure knowledge transfer happened smoothly, the old applications that were originally developed by team members staffing the new OutSystems dev group were preferred;
  5. Rate of change - The OutSystems Platform is all about change - the team wanted applications that are alive and evolving, with constant requests for new features or tweaks to existing ones. 

Taking into account the above factors, our "secret sauce" conversion score algorithm yielded a migration score that determined the benefit of migrating an application to the OutSystems Platform.  Because this was all done automatically and in just a couple of hours, target applications were defined and discussed much earlier than they would have been by any other means. 

Next, the team took advantage of the 'speed to change' capability of the Agile Platform by extending the new portfolio management application to record the proposed migration strategy (destination platform) when it came time to replace each old application. 

Curious to see what the new portfolio management tool looks like? The screenshot below shows the application (with data erased for privacy). 

app_profiles.png
By using the speed of the Agile Platform, combined with technical skill and a healthy dose of pragmatism, the team was able to create the new portfolio application that helped them optimize a fundamental process in their work and bring more value, faster! - This is the essence of agility. 

What about you? Do you have any similar success stories to share with us?
Logo_VA_group.png
Back in 2008, Van Ameyde - an international insurance claims manager from the Netherlands - came to the conclusion it needed to optimize their claims handling process in order to provide customers with the best service levels in the market.

To achieve this goal, a new project was launched to build an entirely new claims handling system called ECHO: European Claims Handling Optimization. Given the complexity and risk of such an ambitious project, it's only natural that Van Ameyde decided to move forward using Agile Methodologies.

As far as technology goes, it was also clear that using standard software wouldn't cut it. Not only does Van Ameyde have very specific business requirements, it also needed a technology that would allow them to continuously modify and align the ECHO solution with the business. At this point they decided to move forward with the Agile Platform.


Once the ECHO application went live, the business immediately saw the optimization results in the company's claim processing business. In particular, the business witnessed a 30% reduction in the time required to resolve a claim. Not only that, ECHO also quickly became a powerful sales and market expansion tool, allowing Van Ameyde to streamline its ability to open new branches to less than one week, a three to four-fold improvement over the old system.

On top of that, and even though the ECHO application supports 16 different countries with unique claim handling requirements, 12 different languages, and 6 different currencies, Van Ameyde now has unprecedented flexibility to customize claims processing for new customers, something that was not possible with the old system.

All this hard work and the amazing results achieved by Van Ameyde and the ECHO system were rewarded this week with the 2010 'Business Agility and Process Optimization Enabled by BPM and SOA' case study award, proving that vision together with technology can go a long way!

Congrats to Van Ameyde and the OutSystems delivery team!


Following Rodrigo's last post on Caixa Seguro's Programmer Day, I would also like to share with you my session on OutSystems' Business Process Technology. The Caixa Seguros team relies pretty heavily on Business Process Management, and they were eager to learn more about our capabilities and experience!

As such, I was pleased to show them how OutSystems' approaches with the application of BPM technologies and implementations for their specific industry: Insurance - Policy and Claims handling. 

I started by presenting some common concepts we felt were important to address with our BPM approach in the Agile Platform, we call this Business Process Technology or BPT for short.  The key concepts are:

  • Long lived processes: requiring process instances to be upgraded as new laws, conventions, or procedures are brought in.
  • Strong cohesion with line-of-business applications: processes are always supported by a business application (or more than one), and this application should work seamlessly with the process. 
  • Big benefits in the end: processes allow every organization to increase operational performance, especially those with clear procedures in their activity. Just getting everyone to know what they're supposed to do improves performance dramatically; according to Gartner, simply having the workflow users should follow on the wall leads to a 12% improvement on productivity. The set of monitoring tools and KPI collection provided by BPM engines brings focus on the need to optimize, and provides leads on how we can optimize it.
BAM_Screeshot.png
The next step was to point out the main challenges faced when setting up a BPM initiative to work with an existing - or new - set of applications that support the same goal. From real field experience, we identified the following set of challenges as the most relevant:

  • BPM_Glasses.pngSeparation from User Interface: having a process that redirects users to perform manual activities on an application is troublesome for the single fact that they live and are implemented in a separate environment from the application.
  • Complex API integration: the requirement to plug-in a process' inbox to an application and having the application ignite and advance the processes requires usage of the engine's API, which are not well integrated with the application and are usually hard to extend by the application developers.
  • Intermediate domains: When processes and applications are supported by different platforms, they still need to share data between them. This leads to non-business related and error prone developments of intermediate data dictionaries, being produced and consumed by each other. When either the application or the process change, these dictionaries also need to be refactored.
  • Upgrading existing processes: as process definitions change, thousands or millions of running process instances need to be upgraded to the new definition.
  • Distinct life-cycle between application and process: This leads to inefficiencies in both the application and the process, and can even lead to inconsistencies in the several releases integrations.
With this in mind, I picked a real application used for project management and did a live demo creating a process live during my presentation. The fact that in the Agile Platform, our BPT is implemented as a layer on top of the application removes all the problems mentioned above. While the process is being built, the Agile Platform's TrueChange engine detects changes in the entity model and fixes them immediately throughout the process, discarding the need for the tiresome task of creating intermediate data dictionaries. It was also clear that having the process near the application allows doing a lot of neat things, such as a chat like interface where a user leaves his comments on an activity and reassigns it to another user, all in the context of a common application interface.  

During the session I showed the audience how business users could check the performance of the just created process via the Agile Platform's built in Analytics application. Right in the session I demonstrated how you are able to immediately provide process feedback using our Embedded Change Technology. During the session I actually implemented the feedback, and made a change to the process right on the stage. The change required me to upgrade the process, which brought up the clear advantages of having an integrated Impact Analysis before putting new versions into production. This allows operations teams to easily measure the impact of changes in the process, before they are actually deployed.

By the end of the presentation, I believe everyone saw the advantages of having a platform that fosters a common development life-cycle between application and processes. This makes it much easier to build a process that leads the users through their tasks in the application, definitely bringing the Business and IT together in one same purpose: business performance.

Want to learn more? Don't miss our BPT workshop taking place on October 11th in Lisbon!
Annually, on the 256 day of the year, developers worldwide celebrate "Programmer Day"! This was a surprise to me but I was ready to join the festivities when I got the invitation to present at an event organized by one of our customers, Caixa Seguros. With a group of over 300 developers this company's IT management decided to celebrate this special day with an event dedicated to Development Practices, Innovations and Challenges. 

My presentation was focused on how the Agile Platform's latest version lets you build custom web applications faster than imaginable - what I like to call 'Warp' development. To show how fast you can have a full fledge application running using the Agile Platform, I actually built a complete app in 45 minutes... before a live audience!

progday-rsc.png
The application included a bit of everything. Here are some of the things I did during the presentation:
  • Created a new app from scratch
  • Built the initial data model from an Excel file along with all the needed logic to transfer the Excel data into my new application's database
  • Created the necessary UI to list and edit the contents of my new database. All Ajax enabled, of course
  • Customized the look of the app (well, just a bit, because my design skills aren't that great!)
  • Integrated my new application with an external database and created the needed UI to list and edit one of its tables. Form validation included.
  • Added functionality to an external database table! This was a products table, and I added a product image... without changing the original database!
  • Related my applications 'local' DB with the external database and created a master detail view, including pop-us to edit the data.
  • Obtained data from an existing Web Service and showed it in my new app
  • Then, I realized the Web Service was a bit slow, so I checked that this was in fact a problem and added a cache to fix the problem.

I actually did a few more things, but you get the point. 

In the end, I was really happy with the way the audience responded to the presentation. They seemed really impressed with both the development speed and the quality and robustness of the application that was built right in front of their eyes. 

And you know what's the best part? You too can do all this in 45 minutes or less! Try it out! Download the community edition and check the first tutorials. In no time you'll be building your own apps at 'Warp' speed!

How about you? Were you aware of the Programmer Day? How did you spend your Programmer Day?
what if sticky.jpg
There's no pattern for innovation in an enterprise - while R&D might be responsible for driving new products, someone in logistics or facilities might think up the multi-million dollar selling feature as opposed to a product-design PhD.  The same goes for innovation with corporate IT - new applications aren't always driven by developers but often by the specific necessities of a certain business unit, whether it's sales, HR or management.

These applications often start out as lowly Excel spreadsheets, passed around via email or on a shared drive within a division.  Then, someone internally with passable coding skills or maybe a sympathetic member of the IT team turns this spreadsheet into a low-level Web application, allowing it to be shared easily across the division.

The next stage of evolution occurs when someone higher up in IT or on the management team sees the app in action and envisions something greater.  Maybe the application could revolutionize the way the company tracks prospects internally or perhaps the app is a game-changer for the whole industry - they don't quite know yet.  What they do know, however, is that the application, once specific to a single department, needs to be standardized for the business as a whole.  Now IT's headache begins.

So how do you take what was once an Excel spreadsheet and turn into a standardized IT process?  It's elementary...if you are using the Agile Platform.

Video 1: How to turn an Excel spreadsheet into a web app

It's not just about turning an Excel spreadsheet into an application - plenty of point-and-click tools can do that.  The real problem lies in maintaining this application as it evolves into a strategic business tool - and the Agile Platform can help.  Business IT isn't static - ever - so you need a development platform that can help you maintain, change and evolve not only your newfound mission-critical applications but also your old warhorse commoditized IT applications.


Video 2: How to quickly change the web app

Learn more about turning Excel spreadsheets into Web applications.  Then, if you think our approach is interesting go do it yourself by downloading the free Community Edition of the Agile Platform and following the first tutorial.  I think you will find it amazing what you can do with the Agile Platform.
sogeti.png
Last Monday I had the pleasure of participating in a Sogeti event dedicated to Agile Platforms and Tools. The event was organized by Samuel Ranzato and it was split into three talks: one about Visual Studio 2010, presented by Clemens Reijnen from Sogeti; one about the Rational tools, presented by Ton van Velzen from IBM; and one about the OutSystems Agile Platform, presented by myself.

Both the Visual Studio and Rational tools presentation focused mostly on project management, and the life-cycle of issues and change requests. Some tools were shown that help developers keep track of what they have to do, and what they need to test.

Instead of going for Project Management, I decided to take a different approach and focused on the tools that help developers do actual Agile development. Time was short, so I picked four key aspects of a project we believe are fundamental to ensuring project success when going Agile. These four points were based on the more than 600 Agile projects OutSystems has delivered, and for each, I demoed aspects of the Agile Platform to show how we can help:

  1. Time to market: For agile to work, you need to not only show working software, you also need to put it into production. The Agile Platform's visual environment ensures development that's fast and accurate; while 1-Click Publish enables work to be moved to production without a hassle.
  2. Flexibility to change: Also paramount to Agile is being able to respond to customer requests quickly. TrueChangeTM gives developers the trust they need to change the application without fear of breaking something else. To gather feedback from the end-users, ECT is the tool of choice; allowing end-users to pinpoint the exact part of the application they would like to change.
  3. Full-Control: Developers need tools that provide them speed of delivery, but being able to control the end result is also mandatory. During this section I presented Service Center, the Agile Platform management console, and gave a quick overview on how to monitor the platform for performance and troubleshooting. I also gave a quick overview of how to control security and the deployment process.
  4. Productivity: I started this section by explaining that it is important to have something to show the customer regularly, even if it means a bit more work for the developers. With this in mind, the new version of the Agile Platform includes the new IntelliWarpTM technology. This allows developers to build fully working first versions of an application in minutes! This first cut can then be presented to end-users and adjusted based on their feedback.
In the end I was very happy with the reaction of the 40 odd people that were in the room! I had the chance to talk with some of the attendees after the event, and I was really glad the Platform had once again made a great impression.

My only regret was that I didn't have more time to talk some other Agile challenges. If you were doing such a talk, what Agile challenges would you pick?
We recently met with Lawrence Wilkes, Director and Principal Consultantlawrence wilkes.jpg with Everware-CBDi, to talk about how IT departments are addressing their legacy systems. 

We will post Lawrence's response to the following three questions over our next few blog posts:

  • What are the top three things you've seen people do to successfully address the competing demands of new build vs. legacy modernization with limited resources?
  • Is there a role for model-based tools like the Agile Platform in legacy modernization?
  • What are the top three mistakes people make when addressing their legacy?

#1   What are the top 3 things you've seen IT do to successfully address the competing demands of new build vs. legacy modernization when faced with limited or shrinking resources?

LW: My experience is enterprises that are really successful tend to buck the trend. They are more radical and don't just "follow the crowd". Rather, there are usually one or two key people who have an architectural vision that breaks new ground - at least from their organization's perspective. Typically they will:
 
  1. Combine application modernization and business improvement programs. They get business stakeholders involved in understanding the options for modernizing, both in terms of business needs and the applications that allow a more radical approach to be taken to requirements.  They avoid the knee-jerk reaction of buying a package or simply outsourcing the entire problem because they are seen as expedient options that, however, often results in something that is no better able to respond to change than the legacy it is replacing. Instead, they are keen to search out economies of scale and cost; capitalizing on existing investments in applications where possible, rather than just throwing them away, and break-down organizational and application silos to create solutions that are genuinely more flexible.

     
  2. Keep business design and architecture in-house; create strong architecture and Centers of Excellence (CoE) roles that are able to exert strong architectural governance over outsourcing and delivery. They do not allow the outsource parties to gain control, nor do they lose knowledge of their business, applications and environments.

  3. They use agile approaches but are not slavishly following the conventional "agile" manifesto - agile needs to be used within an architected, governed framework, not ad hoc. They establish a formal reference model and framework, which allows rapid delivery and governance of products, delivered by an agile process.

What steps has your organization taken to successfully address legacy systems while delivering new systems?

In our next post we will address Q.2 and the role of model-based development tools play with legacy modernization.


Lawrence Wilkes is a Director and Principal Consultant at Everware-CBDI. Lawrence is a frequent speaker, author and consultant on best practice in SOA, Application Modernization and Enterprise Architecture. Via CBDI Forum, the Everware-CBDI research capability and portal, Lawrence has led the development of the CBDI-SAE methodology and supporting Knowledgebase, which is used by both end-user organizations and system integrators around the world. Lawrence has an extensive background both within end-user and vendor organizations having worked both in the business and IT side, which brings particular insight into business/IT convergence.

trophy.jpgOutSystems is all about Agile - and the same applies to our internal R&D team which has been using Agile since 2002. Because we've been using Agile for so long all the principles are pretty much entrenched in our culture - but as the company and the department grew, we started to feel the need to share our Agile knowledge with newcomers to the team.

We considered several ways of doing this. We pondered doing a traditional PowerPoint presentation; we thought about assembling a mandatory reading list; we entertained the idea of adding support on our tools for some of the Agile tenets; and so on...but in the end we decided to organize a contest around Agile to help new team members learn about the methodology the fun way!

Let's play: Who wants to be an Agilionaire?

The idea is simple. Each week a question about Agile was sent to the entire team. The question was accompanied by 4 possibilities, and the contestants had to pick the right one. Everyone could reply to the question within 24 hours, and the winner would be the person with the most correct answers. You can check the questions & answers here.

This approach worked really well, and had a lot of advantages over any of the other methods - here are a few:

  • People were encouraged to look for an answer. This not only ensures people are paying attention to what you're teaching, it also promotes self learning.
  • The questions were picked based on the real issues we witnessed internally. This means that people were learning what they needed most, not every detail on Agile.
  • We sent a small justification of the answer with references to sites, blogs, and books on Agile - and provided more bibliographical references than we could ever hope to transmit on a single presentation.
  • We got an idea of people's knowledge on Agile. Now we are aware of how much people know about Agile (and the results were very good, I might add). We also have an idea of the areas where specific people need more help, and will use this knowledge to help them get up to speed.
  • Everybody participated. If we had done a Power-Point presentation, I'm sure we wouldn't have had everybody raising their hands.
  • It was really cheap! There was no time invested in preparing the presentation or in changing the internal tools. The only work required was preparing the questions and answers.
  • It was fun! Everybody liked this idea, and we got great feedback from the team! It was surely more fun than going through a 2 hour presentation on Agile...
2 months and 8 questions later, we have a WINNER! Miguel Melo had the brilliant result of 7 out of 8 questions right, proving to everyone that he's a true Agilionaire! To celebrate the victory, Miguel was awarded a priceless handmade trophy (built and designed at OutSystems;) an adventure pack to prove he's also Agile out of office; and he gets to show up in the Agility Blog! Congratulations Miguel!

winner.jpg

Agile2009 Trip Report

| 3 Comments | No TrackBacks
Last week's Agile2009 in Chicago was a pleasant surprise in a couple of ways.  First, in a down economy the conference attracted nearly 1400 attendees from around the globe - which is outstanding considering many conferences organizers we've talked to are reporting a 30% decline in attendance. According to the organizers 60% of the attendees were first-timers at the conference which is a testament to the quality of the event. And, there was a large international contingent - we met lots of Aussies, Kiwis, Brits and Europeans; in fact it felt like 50% of the Agilists we spoke to were from outside the US - and great to meet them all! 

attendees2.jpgSecond, after four days of interacting with other conference goers we noticed two trends that were very different from last year's conference:
 
a) The majority of attendees are now actively practicing Agile and have participated in multiple projects.  Last year it seemed many people were attending in order to learn about Agile in preparation for their first project.  This year, our informal (and unscientific) survey showed 53% have been personally involved in over 4 Agile projects.
outsystems team agile09 small.jpg
b) Sprint duration among participants has dramatically reduced from four weeks last year - to two week sprints this year.  During one of the conference sessions this year "Death by SCRUM Meetings," a session attendee told us he estimated the majority of the audience who were polled on the average length of their sprints said two weeks.  This prompted the OutSystems team to do an informal survey of the people we talked to, which confirmed the number - two weeks is the norm for sprint durations.

Agile is definitely becoming main stream. Alistair Cockburn's keynote "I Come to Bury Agile, Not to Praise It" made this point - the days of small co-located teams following the Agile Manifesto are dead and gone.  Today we have very large distributed teams tackling big problems which are changing the face of Agile as it was originally conceived.  The term Agile now encompasses so much more than just doing things faster - Agile is dead, long live agile.

attendees.jpg
As promised, here's a summary of some of our favorite sessions and our main take-away's:

I Come to Bury Agile, Not to Praise It - Alistair Cockburn
Main Take Away: Agile has grown up and no longer in the domain of the few; it has now received the attention of large scale enterprise and evolving faster in terms of maturity.  It is taking on a life of its own.  The speaker noted that he observed this to be true because Agilists are now in the "ri" stage of the "shu-ha-ri" concept.  "ri" being where an individual is now capable of inventing and blending concepts and into new approaches but still within the "Agile" umbrella.  ("shu" - learning a methodology, "ha" - collecting techniques, "ri" - inventing and blending techniques).

Introduction to SCRUM
- Henrik Kniberg
Main Take Away: Scrum seems to be the most popular of the agile methods because of its ability to incorporate any technique or tool in its use. Interesting quote for us agile & tools people "Do not develop an attachment to any one weapon or any school of fighting." Miyamoto Musashi, 17th Century Samurai.

WANTED: Seeking Single Agile Knowledge Development Tool-set, Brad Appleton, Peter Alfvin  Main Take Away: Companies in very complex environments developing embedded applications, corporate applications and everything in between will continue to struggle with disparate tools.  

Agile in the Enterprise Corporation, Panel: Israel Gat, Stephen Williams, Laureen Knudsen, Scott Killen  Main Take Away: Why Agile? It's about the money!  Do feature budgeting.  Develop and maintain a release model in a business framework.  Get the organization on board within the dynamics of your specific company - collaborate.  Re-organize to Operational and Executive teams that are cross-functional and make their interaction with R&D asynchronous.

Marriott's Agile Turnaround - Jesse Fewell Main Take Away:"Agile can't fix bad strategy"
                          
First, Kill All the Metrics - Niel Nickolaisen , Chris Matts
Main Take Away: Reward and punishment results in meaningless metrics and thus not all metrics we use are meaningful.  For a metric to be meaningful, it has to measure process and not people; they need to be aligned with the objectives and strategy of the organization; and should show trends.  Metrics that measure people tend to result in unhealthy competition between team members especially in a self-regulating / high performing team.

Strategies in Replacing Systems in Agile Projects - Niklas Bjornerstedt
Main Take Away: Presentation discussed a number of patterns in replacing systems and recognizing these patterns can help in the process.  Although there are patterns that can be used to help in transitioning users, migrating data, etc.; it still boils down to a case by case basis.

How to evolve a Product Backlog - Ronica Roth, Mark Kilby
Main Take Away: The main discussion centered on following the user work flow to evolve the product backlog.  Along with that, ask questions on the 'what' and the 'why' primarily.  The 'how' questions need to focus more on the current processes and not necessarily on the future although it would be good to note that.

Agile Metrics - Dan Rawsthorne
Main Take Away: The talk was directed to organizations that are new to agile.  One of the key points is to level-set on metric-related terminology like what "done" means so that there is no confusion between team and customer.  A suggestion was put forth to create a "doneness criteria" which essentially is a checklist.  Other terms were velocity and capacity that accordingly most folks new to agile get confused on.  The speaker suggested that velocity = capacity until proven otherwise.  Capacity is what you estimate you can do and velocity is what you have proven you can do.



Don't think about it - what's the one word that springs to mind when you think of "Agile" in terms of application development? Write it down somewhere.




The above video is from this year's OutSystems NextStep users conference where we asked Agile Platform users from around the world for the one word that they felt summed up Agile. Some of the responses: Change - Flexibility - Success - Efficiency - Time-to-market - Quick - Mandatory - Build-to-change - Web 2.0 - Faster - Quick - Success...

Most are about speed and flexibility - but interestingly "Fit for purpose" and quality of application (measured for example, in terms of how well it delivers what the business needs) are not mentioned.  

Why not?    Is it just this set of people who responded this way?   Does the Agile community at large think speed over quality?

I can't speak for the rest of the Agile community but in terms of the OutSystems community, I suspect a number of things:

1)    Waterfall has led to an expectation of extremely slow delivery...and so the excitement over rapid iterations and speed of delivery.

2)    Having the business guys on the team throughout the process, coupled with rapid iterations means by default the results are high quality ... and so quality is being taken for granted. Their main concern now is how to increase the number of projects that use the Agile approach without slowing things down.

3)    They're all using the Agile Platform (sorry, shameless plug) that enables rapid delivery of large-scale apps using Agile and SCRUM methodology and are very happy with the speed.

I'd love to hear what other practitioners in the Agile community think is their "one word" - but either way, I think one of the most important issues here is that we, as practitioners and people who are teaching newcomers about the benefits of Agile, remember that it's not about quality OR speed - Agile is all about quality AND speed.

 
You should follow us on Twitter here.

A Five Step Agile Roadmap

| 7 Comments | No TrackBacks
A recent LinkedIn question asked for advice on how to get a company started down a path to Agile and SCRUM. I thought it might be useful to share some advice and see if the OutSystems community had any ideas to add.

agile roadmap.jpgAt OutSystems, our roadmap is strictly a guideline because companies have different methods, cultures, and management approaches. When introducing Agile, here are the steps we generally go through. Concepts and activities that are emphasized will vary based on understanding of the customer culture, organizational structure (formal and informal), as well as their prior knowledge of Agile methodologies.

1. Education - first, level-set those involved in the roll out. We found that there are many different levels of understanding of what Agile is even if people say they "get it". Part of this process is to make them actually go through the process before the project begins. At OutSystems, we have "Agile-in-a-Day" training sessions that provide participants with a hands-on introduction to help develop real understanding of key concepts and activities. If you have a project already selected, involve the business sponsor, business manager, and key business users.

2. Project Definition / Selection
- Once everyone is clear on the vision and direction, a project can get started. The project may have been identified earlier but how the project is chosen or what criteria was used needs to be understood. Since this is the first Agile project, we need to make sure that risks at this level are addressed to help ensure success for both project and process. The criteria for selecting the project needs to include the solution's level of complexity, visibility, resources, and integrations.

3. Execute Project - Now we start the project by educating the target users if they were not involved in the initial Agile-in-a-day. Go through the project kickoff; explain the methodology, roles, responsibilities, timeline, deliverables, etc.; fairly standard project stuff and along the way - expunge the word "scope" from all project documents, thoughts, and discussions. Work on the backlog, feature negotiations, the sprints, scrum meetings, demos, etc. Once a sprint is done, do a retrospective and refine the processes for the next sprint and the next project. Once the solution is in production, conduct a tuning sprint. This is a special sprint we do at OutSystems to ensure 100% adoption by implementing features that will boost adoption and conducting both solution performance & platform tuning in the production environment.

4. Perform Project Retrospective
- apply lessons learned to subsequent projects and refine other processes. Note that this process improvement will involve Support organizations and dynamics between project teams. One of the things we often encounter is that Support organizations cannot move as fast as the project sprints and tend to delay Agile projects. Similarly, non-Agile projects have a difficult time addressing the integrations with Agile projects. As you execute your first project, you will find that you may need to bend or even break some rules to keep your project on track as defined by your timebox. Therefore at the end of the project, you will need to work with Support and other internal organizations to establish new protocols or processes specific to Agile projects.

5. Iterate Steps 1-4 - In our experience, we found it necessary to conduct multiple Agile-in-a-Day sessions to get everyone in the company level-set on the organization's approach to Agile. Agile is a mindset change; expect hurdles and naysayers. Besides, change is always difficult even if the participants are willing, able, and have executive sponsorship.

(Unofficial #6 - Be realistic and good luck)

What do you think of this roadmap? How have you introduced Agile into your companies?




Miguel and I were recently discussing an interesting presentation by Martin Fowler and Rebecca Parsons on engaging the Architecture team into your Agile methodology.  The presentation is titled "Agilists and Architects: Allies not Adversaries" and the summary points out that "As Agile becomes more accepted, concerns from architecture groups are increasing. Traditional ways that architects engage with development groups conflict with Agile methods."
boxing 2.jpg 
With architecture being a core component of the OutSystems approach to Agile application development and the role of Delivery Manager, we thought it would be interesting to share this presentation and ask the OutSystems Community how you have embraced architecture while practicing Agile in an Enterprise setting. 

For example, many of you are successfully delivering a high degree of reuse while focusing on delivering individual applications.  While OutSystems' Agile Platform provides a solid foundation for refactoring code and adjusting architecture in progress, we suspect that there are many instances where your Corporate Architecture team needed to play a role in moving the application delivery forward. 

So, if you are a Delivery Manager or Architect it is time to share your experiences of working together in an Agile application development project.  How much education was required?  Did you feel resistance? What were the lessons learned?

"Scrum brings the customer and the development team together as often as every sprint.  Because the customer is involved throughout the development process and is consulted once per iteration, the team can never deviate very far from the customer's vision." says Laszlo Szalvay in his recent Better Software Magazine article on SCRUM in which the author does an excellent job of providing an overview of SCRUM.
better software magazine.gif
Personally, I couldn't agree more and I think he nails this key point about SCRUM. I suspect that most of you will be aligned with this too.

As an application development practitioner from the "old days" for me, iterative development and continuous business user involvement is the ultimate Agile truth - it's the best way to keep projects on schedule and deliver a high value solution.  

But now for the real question about customer involvement:  What happens when you don't have the right customers involved?  

Last week I was discussing an Agile project with one of our OutSystems Engagement Managers and he described this exact issue. The team was very excited to tackle this project using Agile methodology as it was going to be the first for this particular client's business area.  The business was on board, trained on Agile and they had the full support of the management who were committed to participating in planning user stories, each sprint demo, backlog settlement, etc.  

trenches.jpgThe problem was that the supervising managers were not the ones who would use the application on a daily basis and were somewhat out of touch with the processes and issues on the ground. What happened? The management team met with resistance from the guys in the trenches about the initial app - and then what? ...they changed their minds about the functionality. Ultimately this proved to be a positive experience as the Agile and SCRUM-based approach they used caught the mismatch early and the resulting app was accepted.   So, the lesson here : beware - management participation is critical but you also need the real end users to make sure you don't get too far off track!   

Have you come across this type of issue on your Agile projects? How is Agile helping your projects deliver better software?

"The uncertainty of outcome is the only certainty" This should ring true to every Agilista out there.  Let me give you a minute to think it through.  When was the last time you worked on an application development project where the outcome was certain?

eye test2.JPGIn my 25 years in the IT industry the outcome has never been a given.  Oh, I tried ... we did formal analysis, with Information Strategy Plans, Entity Relationship Models, Process Models, Use Cases, Flow Diagrams, Class Diagrams and the list goes on.  But in the end, it only got us so far.  The reality was that things changed, we got stuff wrong and the result was not what was expected. 

I recently ran across a couple of great Agile techniques (with crazy acronyms) to help remedy all this outcome uncertainty that I wanted to share:

1. IWKIWISI - "I Will Know It When I See It."  For many of us this is a reality.  We have some general ideas as to what we want but will not be able to articulate it exactly. Agile's "deliver early and often" is key to addressing this issue.

2. GrASBI
- "The Great Axiom of Software and Business Indeterminacy".  This term was defined in a recent CIO magazine blog by Michael Hugos titled "Agile Techniques, Agile Hype and the Essence of Agile (in IT and Business.)"  The key idea is that having a general idea of what you will deliver will get you close to the expected result, and that having detailed definitions of what you will deliver will not get you any closer.  The challenge is, of course, getting the business to change habits and recognize this truth.

We all grapple with shifting the traditional development mentality (both IT and the business) to one based on Agile concepts.  One of the hardest behaviors to overcome is this new way of defining direction and refining as we go.  So, let's overcome GrASBI, empower our application of IWKIWISI and get Agile!  





There seems to be a growing amount of discussion around the Kanban approach to software development.  For those of you who, like me, had never heard of Kanban, it has its roots in Japanese lean manufacturing concepts.  I read a great article titled "Kanban Development Oversimplified" by Jeff Patton.  If you are interested in the Kanban way to organize your development then give this a quick read - it is well written and starts off with a good look at the origins of the Agile methodology. 

postit_blog_or.gif
From my perspective, having now done a little research into Kanban, the approach is very similar to something I practiced back in 2002 while looking after storage products for BMC Software.  In my opinion, Kanban is a great process for software product companies who want to drive efficiency across their product delivery process.  However, it is not ideal for corporate IT shops who are working on improving their application development processes and better alignment with the business.
 
Even though I'm an Agilista at heart, I believe we can learn from the Kanban approach, however, there are some things that just don't seem like a good practice.  For example:

  • Lack of Iteration: Kanban doesn't include an iterative approach - which I feel is one of the key Agile tenets that delivers real benefit.  It allows us to continuously align with the business and deliver exactly what the business wants - regardless of the set of requirements we started with.  Invaluable in my opinion.

  • No commitment to deliver: Without iteration and time boxed sprints you never have the opportunity to set expectations and then meet them - 'deliver early and often' as we like to say.  This is critical to drive business trust and Agile adoption. 

  • Writing Larger Stories:  Kanban proposes writing larger stories around the concept of a minimal marketing feature (MMF).  Once again, a concept that makes a lot of sense for software product companies in the commercial software world.  In my experience, writing larger stories results in longer development cycles for a feature, resulting in the opportunity to wander off the path before a user sees what you have done.  Historically we have never managed to get  the MMFs correctly defined, which results in rework and extra costs.  The approach of developing some of the functionality and then getting feedback is a hallmark of Agile and leads to better business alignment by allowing the team to react to change from the business.  This works better with smaller, role based stories.

Even with these shortcomings, Kanban's lean manufacturing approach is interesting as it should really help a team identify process bottlenecks, and I suspect could be applied in a more Agile manner of development. 

I am sure you all will have lots more comparisons and thoughts on how Kanban could make your Agile approach better. Let us know what you think! 

So, SAP is embracing Agile development for their new SaaS strategy (see Phil Wainewright's post on the recent SAP announcements); About time don't you think?  Most ISVs are way ahead of the hype around Agile and have been applying some form of Agile development since the beginning of this century. Now, for those of you working in corporate IT shops who think SAP's move is a great endorsement of Agile methodology and are going to run to your management shouting "the time is now!" ...let me caution you on a few key points where you might run into some bumps. 
Caution-agilists-beware.gif 
1. You probably don't have an ongoing product-based budget. This means that you can't simply keep on developing until the customer is satisfied.  In your corporate IT world you will still have to get funding for each project, which means some form of project scoping and estimating. If this is done the way it has been in the past it will not be very Agile! Also, if you really embrace Agile, those features that get pushed out of scope by the business (due to more important features) will have to be put into another project which will require more scoping, estimating, funding and perhaps even a bid process with your third party contractors - NOT very agile.  All this can defeat the benefit of Agile and leave your business with the Agile blues. (I discussed this issue in a previous About Agility Blog post)

2. You probably don't have a staff of full time Product Managers.  Of course you don't have product managers in a corporate IT shop.  This role is supported by the business users. Thus, you have to work really hard to change corporate culture and get these business users to play in an Agile way.  This will require more of their time, more trust and a shift of application ownership during development, that for many is a real culture shock.  Be prepared.  The good news is within a few sprints you should have them on board as long as you keep your sprints short (2 weeks max) and hit your sprint demo deliverables.  Once they get a good taste of Agile they will not go back!
 
3. Your self-organizing team isn't so well organized.
The challenge many of you in the corporate IT world face is a lack of on-staff resources.  Thus, a lot of applications work is co-developed or outsourced to third parties.  This makes the concept of self organizing teams a bit risky as it introduces lots of politics, negotiations, etc.  Once again, not very Agile.  You will have to find the right contractors and get your procurement organization to let them participate in an Agile manner so they don't risk losing their shirt or end up using non-Agile practices. 
 
So, while I am a big proponent of Agile, to be successful in the corporate IT world requires a lot of culture change!  And while SAP may go Agile in one big push, for the rest of you, I say "be Agile - take it one project at a time, think big but start small and learn with your business as you go."  

Calling all corporate IT shops - have you adopted Agile practices? Have you encountered these issues? How have you dealt with them?

This was a great session by John Rymer and Dave West.  They provided some interesting stats:
•    80-90% of IT spend is on software maintenance
•    Business are demanding innovation
•    Time to market is more critical now than ever before.

These three stats should be staring you right in the face - How can you be more innovative in shorter time frames than ever when 80-90% of your budget is spent on maintenance? 

A key message from this session is that software bloat is the biggest issue.  They pointed to five causes for software bloat:

1.    The sheer number of features we attempt to add to an application
2.    Specification and protocol stacks continue to grow
3.    Vendor consolidation leads to large suites which you have to purchase entirely
4.    Middleware continues to get more and more complex
5.    Traditional development processes lead to overly complex applications

Of course the key message is that lean software is the antidote to software bloat.  Agile methods can help us to focus on only the high priority features resulting in leaner software.  The key challenge is how to get your business to support an Agile approach and come to terms with the notion that, in many cases, it is more cost effective to not automate processes that seldom occur - they are better handled manually keeping your applications lean and focused on the key business processes.
 
Feel free to share examples where your business has embraced Agile and successfully de-prioritized application functionality as too low to implement.
  
Last week, I attended Forrester's IT Forum in Las Vegas, Nevada, USA.  In looking back over my notes I wanted to share some of the highlights.  The first keynote started off with the resounding words:  "Never Waste a Good Crisis".  Bobby Cameron, Vice President, Principal Analyst, Forrester  expanded on this notion it appeared that the main point is that during a crisis change tends to be accelerated which should allow those savvy IT organizations to address these key challenges:

•    How do I get leaner and reduce IT waste?
•    How do I protect and promote innovation?
•    How do I reshape my own role?
•    How do I measure and communicate value?

As I listened to the discussion and many of the sessions to follow, I learned that many of the analysts and attendees were becoming aligned with the idea that an Agile approach to application development will help on many of these fronts.  First, it will help IT get leaner and reduce waste by only delivering what the business needs while helping IT with business communication or alignment.  It was also pointed out that if organizations really embrace Agile and let teams be self directed, we should even break down some of the inefficiencies of big, inflexible architecture and allow teams to select the development tools, application stacks, etc to get their jobs done quickly with minimal cost / waste.  What a novel idea!

Bobby also discussed the importance of IT leaders really paying attention to IT Value.  The key point is that value is always perceived.  Some people see value in driving a Mercedes while others see it as a waste of money.  Thus for IT professionals we must make sure that the business sees value in what we deliver.  Thus, we must become more agile and deliver on business objectives in a way that facilitates communication and measures business value - the last key challenge in the list above.  As we all know, an Agile application development approach will dramatically lead to this outcome. 

I found it interesting that Forrester's analysis is showing that many traditional IT roles are being moved into the business - some of the examples given were project management and business analysis roles.  

I am interested to hear if any of you are shifting some roles out of IT and into the business.
Ana Paula of Whatever Consulting spoke this afternoon on "OutPractices: Agile Transformations of any Software Development Process". She talked to us about a subject close to her heart - the Eclipse Process Framework (EPF) which aims at producing a customizable software process engineering framework, with exemplary process content and tools, supporting a broad variety of project types and development styles. Ana spoke in particular on how OutSystems customers can leverage the EPF library to further develop their in-house processes especially when they need to include the use of other non-OutSystems processes or methods.

whatever.jpgFirst, she described the The EPF Agile Kernel - they asked "what is the minimum aspects of a process that make a method Agile?"...and came up with the idea of a Kernel which is the smallest process that you can have. Each agile-related method was broken up into small practices (from whichever method - SCRUM, XP etc) that can then be pulled together and have been made available in the EPF library.
 
Ana spoke about how she has documented the OutSystems processes and added them to the library - called OutPractices - within the SCRUM practice library.  Now people can learn about SCRUM with OutSystems guidance over it - which she believe to be very powerful as the OutSystems methods and supporting technology are based on real project experience and heuristics (and not examples about playing poker).

SCRUM roles were replaced with OutSystems roles and the OutSystems lifecycle has been replicated and documented in the EPF library.
 
Why is this important?  Ana asked us to imagine you are in an environment where you are required use RUP and its part of an RFP you're responding to. How will you do that as an OutSystems customer or partner?  Using the EPF library - Ana suggests that the audience can now select the Use Case practice from RUP and bring that into the OutSystems method.
 
Imagine you find yourself required to comply with CMMI-DEV. (much laughter from the audience here...small Portuguese joke that the blogger didn't understand!)  ...which is considered to be very bureaucratic and difficult to use in practice. So, what do you do? Ana suggested that you don't try and rewrite your method to fit within CMMI - but to leverage the EPF library and OutPractices - and for example, with respect to the CMMI Project Planning /Establish Estimate Practice - just select and add a link to the scoping & sizing task!
 
"What matters isn't following a method - but to deliver. Adapt the process you are working with and improve things as you go."

Can the EPF help organizations sustain and scale agile adoption? Not if it is used to develop new process dinosaurs. But, it can help if it enables your team to ride the agile wave and experiment with one practice at a time.
 
Ana asks the audience to remember the Agile Process Development Manifesto:
  • Scale small process up - over tailoring Big Processes Down. (Start small and add just what you need).
  • Incremental practice adoption - over Full Process Adoption
  • Continuous Improvement - over complete replacement (just improve what isn't working)
  • Open Process Collaboration - over closed process development (tell others when you discover a better way to do things and help the whole community advance!)

This last point seems to be the real crux behind the EPF endeavors - and BTW, blog readers - if any English speakers would like to help Ana in her work to document the Agile processes - please raise your hands! :) 

So, here's a question for our Blog readers - If you are using the OutSystems Agile Approach have you had to incorporate other methods as Ana described - and how did it go?
Our next presentation was by Stefan Meier, Associate Director, Software Development, Information Sciences Department at XDx. Xdx is a biotech company that relies on software and technology for their Molecular Diagnostic Technology. They assess patients who have had a heart transplant and whether they are likely to accept or reject the transplant. They are also working on a clinical study to provide the data to find correlations between genetics and pathology in disease/immune system-related areas.

xdx.jpg
 
Prior to Agile & OutSystems - the development team was 5 developers and 2 SQA and 1 project manager using classical waterfall methods - with 3 Web-based EDC systems for clinical trials, 2 internally developed LIMS applications (1 FDA regulated), several custom query/reporting/maintenance applications and Excel spreadsheets for reporting.

One key problem Stefan highlighted was that each member of the development team used their own chosen environment - Java, PHP, .NET and VB! This degree of complexity and development approach caused lower levels of productivity than they would have liked - for example before OutSystems and Agile, a project that should have taken 4 months took 1 year to deliver.
 
With all the requirements of the business and limited ability to increase the size of the development team, the Xdx IT team decided to create a unified software architecture using SOA and deliver new applications while reducing maintenance costs and developing reusable components.

One of the missing pieces of the puzzle turned out to be OutSystems and the Agile approach. They decided to choose a platform and not the method first...(a little different to most as they did not choose the methodology first). Several reasons - including the need for a rapid development platform to keep up with the needs of their scientists. Another nice side-effect of this choice was that it meant Xdx could side-step the platform wars - and introduced a new option - OutSystems and its Agile Platform.
 
After 15 months and many applications built with the Agile Platform - Stefan noted were several effects:

  • Probably the best benefit: A new way to interact with the business users, because with each demo the users could SEE the app as it was being developed, even in the very early stages...and the tangible results (even after the first sprint) helped build user's confidence and adoption of the idea of Agile within the company.

  • The biggest challenge was unanticipated: resistance of the Agile Platform within the development team itself. The resistance was because of perceived platform restrictions and potential skills deterioration. Stefan said that the second issue is probably more difficult to address - and they did it by enabling the developers to move around different projects. Stefan shared that the "Platform restriction" objection often went away as the developers got hands-on with the platform, although criticism was dependent on the profile of the developer. Stefan categorized the profiles as "The Programmers" who were OK with the Platform because they could get so much more done, the "Hacker Genius" who writes entire apps with 1 line of Perl code - who are likely complain the most and may or may not ever be a convert. And, finally the "Theorist" who just thinks the very idea of using a "platform" is just wrong - they may change their mind after getting hands-on with the technology but not always.

  • Integrating the 2-man QA team with the Dev team - the QA team was classically trained on the waterfall method and FDA approval requires rigorous testing. They tried combining the 2 processes - that didn't really work. So, they tried handing over pieces of the app for testing periodically - this worked to a degree but was uncomfortable for the testers since they didn't like testing a product that was incomplete.The third try was to integrate a member of the QA team with the rest of the team from the beginning of the project and they were able to start testing in the sprints...they were then much happier since they knew about all the decisions that were made during development process. Also - the testers were able to provide important input on how to improve system testability during development. The team's next step is to introduce an automated testing tool for regression testing - making QA even happier!

  • "Agile IS as valid a process as waterfall method in a regulated environment" since documentation is being developed along with the application - however it's important to keep the documentation at the appropriate level of details (e.g. patient care require very detailed documentation). Design reviews are the other requirement - and each demo is used as a formal design review - therefore implicitly fulfilling this requirement through the development process.
 
After 15 months with Agile & OutSystems it is now the de facto standard for building web applications at Xdx. They have built 3 apps (7 production releases) and around 5-6 reusable services. A great success so far!

They are also a step closer to having a unified software infrastructure with reusable services. They have shortened turn-around time from request to delivery - and providing high quality and high impact applications.

Last but not least - the new architecture, approach and tools have enabled consistent data across all divisions through integrated applications - a very important aspect in the clinical trial process!

Have you had any experience of combining Agile and Waterfall methods? What did you think of the XDx team's solution to the QA challenge?

 

Miguel Barreto, CEO of Home Energy spoke to us next on "Launching a New Company in a Fast and Agile Way" Home Energy is a new company that's part of the Martifer, a Portuguese renewable group. Home Energy was established in May 2008 with a goal of being a market leader in a new space opened up by new regulations related to Energy Certification and Microgeneration (small photovoltaic panels for home use) for the domestic housing market. January 2009 was when the market was going to take off and Home Energy needed to be ready to support a 200,000 housing market.

homeenergie.jpg
A little explanation: new domestic home sales require an energy certification on the Energy Class of their home and measures/recommendations that can be taken for improving energy efficiency. E.g. solar panels, window types and insulation. The Energy Class is dependent how much energy a house requires to keep it comfortable as compared to established benchmarks.

The big challenge was to be ready for a January 2009 launch with a company that was started in May 2008! The Home Energy business plan and strategy relied on strong technical support and had a goal of having a live system in place by October 2008, with just 3 months for development.
 
Miguel described the Home Energy system where a client has to call the call center (or real estate agent partners send in clients through the website) - a team of 50 field agents/consultants are scheduled throughout Portgual to visit the client homes and assess their Energy Class. This information is uploaded to the servers and the experts at home office execute the process to establish the Energy Class - customers then pay for the assessment online, at which point the team is able to make the home's Energy Certification available.
 
While other potential vendors said they could not address all of Home Energy's requirements within the timeframe - the OutSystems Partner Reditus proposal using the OutSystems Agile Platform was chosen because of its ability to address the aggressive timetable, develop rapidly and change while the systems was in production - as new business requirements came up.
 
Although Miguel was initially skeptical on the flexibility of the tool and how easy it would be to change things -he was very pleased with how it worked in practice. He felt that the multiple sprint approach enabled the business team to get a really good feel for the application as it was being developed -allowing them to make improvements while it was being built and ensure it addressed their needs.

Miguel showed a number of very cool screenshots of their complete application - including  integration with GPS systems for home location and aerial pictures of the house; the ability for consultants to draw on house maps, and assuming enough information...almost automatic generation of the certificate for the clients. Built with a team of 8 people in the first 3 months, this fully integrated system went into production on time and Miguel and team were extremely happy with the outcome.

Miguel wrapped up with a set of their key findings:
  1. A good RFP that focused on key user needs was critical - even though things have changed since.  Approx 70% of the original RFP was implemented - the other 30% were "wish list" items that the team realized they didn't really need...and were subsequently replaced by another 50% that came from market changes after the initial system was implemented.
  2. Short rounds (sprints) of demos with key users were extremely important, establishing a good working relationship and interactions between users and technology team.
  3. Flexible tools facilitate and enable entrepreneurial flexibility - a very important point that underlies the overall success of this case study.
  4. "Custom is better and more efficient than standard approaches" - Miguel's past experience with a packaged or standardized approach is that it became very difficult since the package too much functionality than was needed for the business users - but he felt that custom builds were possible without huge expense - even though they meant potential rough starts.
  5. The development team was dedicated to this project and their spirit and proactivity was very important for ultimate success - where they focused on the end result and drove overall success.
This is the second case study where we've heard about how changes in economy or regulation open up new market opportunities - for those who are the most innovative and nimble (the other was Andries Schilt at Main Energie) - are you seeing the same thing happen in your industry? What technologies are you using to take advantage of the opportunities?

Next up at NextStep - Marteijn Mout who is the project managers of the 'New meter market model' at E.ON Benelux. E.ON is one of Europe's largest Energy providers with over 30 million customers in 30 countries.  E.ON Benelux has around 270,000 customers and they have been a customer of OutSystems since 2004.

eon.jpgThe project that Marteijn talked to us about during this session was to support the new Government regulation which demands that Suppliers will be responsible for the collection and validation of meter data of smart meters from 2009 and for traditional meters from 2010. He shared a great deal of information about how E.ON developed their solution using Agile and working with OutSystems, SAP and other partners.

Describing the team's experience of using OutSystems Agile approach he told us that:
  • They started with 5 iterations (sprints), with a period length of 2 weeks
  • Sprint 6 was added to address new change requests
  • Weekly progress reports with 2 demo's after every sprint and 2 week testing periods after demos
  • Change Management requests were registered in OutSystems Agile Network (OAN), ECT and assumptions documented
Key challenges that the experienced:
  • They were initially skeptical of the OutSystems size and scope estimate for the project - but happy that the results were delivered as expected.
  • Intensive collaboration - Marteijn quipped that "I'm not sure how many emails I received from and sent to the OutSystems team - but there were a LOT. It wasn't bad - but was an indication of the degree of collaboration!"
  • "We had some initial challenges on combining Waterfall and Agile methods - especially in planning - we were lucky that OutSystems' approach was flexible on that front, and we were able to combine planning into a single planning/test plan."
  • The greatest issue was they found was the temptation to keep adding new requirements - and it was important to keep that reigned in where possible.

End results of the project were a success!

  • The Customer Portal and underlying SMDR "engine" meet all requirements and more!
  • OutSystems were a good sparring partner for architectural and functional matters
  • OutSystems were flexible as promised (planning/adaptability)
  • Communication lines efficient, effective and sound - even with a LOT of emails ;)
  • Realistic planning/sizing and no budget overruns
  • The Agile approach and technology is a big success factor for the project!

How are you coping with the amount of inter-team communications that's required by Agile - what tools are you using?


In this NextStep session Pedro Rosa Santos who leads the consulting services team for Keep it Simple, an OutSystems Partner, addressed how Dynamic Business Applications can play a big part in the Insurance industry.

Pedro described the quantum leap experienced in the Insurance industry from 2005-2008 as it tried to deal with market demand for new products, online self service, the need for real-time information exchange with agent & broker channels and the drive to invest in new technology in order to reduce costs. The problem, Pedro explains, is that this has created an extremely complex IT environment for most Insurance companies around the globe - and the goal of building an infrastructure that is responsive to market needs - actually started to have the opposite result - preventing responsiveness!  

kiss.jpgTo address the need for a responsive infrastructure and maintain low TCO - The Keep it Simple team are working with insurance companies to implement a Service Oriented Architecture (SOA) and build certain aspects of the systems as Dynamic Business Applications. They recommend to the insurance companies they work with (and which is probably applicable to the audience in other industries) the following:

Pedro describes Dynamic Business Applications as applications where you can change business rules or change the front-end extremely rapidly - in a couple of hours or a couple of days. In order to move forward in this way, Pedro recommended the following steps:

  1. Identify a back-office dynamic business application
  2. Migrate business logic and rules that can provide functionality to other services (like portal, CRM or BI)
  3. Portals, product pricing & management + claims management - adapt them to be changed easily, on a dialy basis and delivered to the end-user.
  4. Bring business process and business rules from the portal to the back-end, and make available to the portals and other apps.

"Portals should be built as Dynamic Business Apps, built with technologies like OutSystems - which can enable rapid change."

Pedro and the Keep it Simple team recommend that their customers and (probably applicable other industries)

  • Improve your organization's time to market
  • Use Agile methods get closer to end-user and address their needs
  • Identify which components should be embracing change. You don't have to change everything all the time, but some systems need to adapt to change faster than others.
  • Invest to consolidation of  IT IS around Dynamic Businss Applications.
Have you heard of Dynamic Business Apps and Lean & Agile Development - what do you think of it? Will it work for you?

The "Agile Delivery Experiences" track was kicked off by Rosa Mimoso, Director of Global & Support Systems of Caixa Seguros.  Rosa shared how Caixa Seguros e Saude,Portugal's largest insurance group used Service Oriented Architecture (SOA) and OutSystems Agile technologies to address their extremely large and complex business and technology environment (millions of customers & claims, 4 companies, 5 brands and hundreds of legacy apps.)  

caixaseguros.jpgRosa told the audience how they decided to break up their complex environment into 3 layers - Front-end, Services and Core Systems. They used the Agile Platform to enable their channel portals for customers and brokers. This was supported by existing services in the SOA architecture. OutSystems' Agile Platform is also exposing reusable services to other applications in their environment.

Rosa described the benefits that SOA & Agile brought to Caixa Seguros e Saude:
-A single point of access for all solutions
-Formally documented services supported by WSDL
-Real time control: centralized logs & reporting; performance indicators and alerts.
-Simplified management of multi-channel configurations, dynamic content and a common security model
-Faster component upgrade
-Simplified B2B Integration

Rosa wrapped up her presentations with the Caixa Seguros e Saude team's 5 key findings:
 
1.The systems in different layers need to be able to evolve at different speeds.
2.Integration needs to be independent from system evolution
3.New systems need to be introduced smoothly and without disruptions
4.This approach requires a paradigm shift in the core systems classification
5.Technology needs to allow Business and IT to be aligned.

Mike Jones and Carlos Alves of OutSystems got the audience's brains thinking with a discussion on "Changing The economics of Application Development" with a set of questions:

"Can a company really innovate in today's economic environment?" - they think "yes", and gave examples of how new ideas are coming up from the business, they are small but they are making a significant difference to business success - however, they may need custom built software (not packages) due to the need for speed and flexibility.

whatrole.jpg

*"Is it all doom and gloom?" *- the guys argued that NOW is the right time to innovate and get Agile. They challenged IT teams to be ready for whatever comes next with the economy -and suggested that the only way for the Audience and their businesses to not only survive but thrive, is to get more Agile.

"WTBWITD?" - Mike joked with the audience that this wasn't really easy to pronounce and needed some marketing spin - but "What The Business Wants IT Delivers" Carlos said, is the essence of Agile which is basically "a systematic approach to accommodate innovation"

"What is Lean?" - the process to making sure IT delivers what the business needs - Agile is the secret to becoming Lean.

"What is Agile and how is OutSystems different?" -Industry agile projects: iterative development with 4-6 week sprints, continuous business participation and deliver vertically integrated solutions at the end of each sprint.

-The OutSystems Agile Approach: able to pre-size the project with high accuracy; time-box principle, smaller up-front analysis and more prototyping; 2 week sprints that deliver vertically integrated solutions at the end of EACH DAY. Leverage SCRUM practices.

A great question came from the audience about how to become MORE agile when your team is on the other side of the world and difficult to reach - they are doing 3 month sprints...which is not Agile, its waterfall.

Answers from the OutSystems team: The first issue is likely to be the lack of commitment from the business side to attend the regular weekly sprints. The second is that they need to have a business sponsor with authority who attends the regular sprints. Final suggestion - to ensure that an Engagement manager is local to the business-team, and that the Delivery Manager and the Engagement Manager are in constant communication.

Wrapping up, Mike and Carlos challenged the audience on "What role will you play in today's economy? You have two choices: put your head in your hands and hope it all goes away or take the opportunity to embrace change and innovate."

Wise words that we can probably apply to all our lives in these uncertain times.

Evergreen applications are business applications that continue to evolve as the business changes and so provide constant value, year after year. At OutSystems virtually any solution that is deployed using Agile methods is required to stay evergreen and subject to a continuous Agile Evolutionary Maintenance process. Part 1 of this article explored the main phases of the Agile Evolutionary Maintenance process and defined the three key project types that are most common.

In Part 2, I will shift my attention to defining the different types of backlog items that typically make up an evolutionary maintenance sprint. In addition, I will define some key technology challenges you must overcome in order to deliver on the promise of evergreen applications. Finally, I will describe how OutSystems can help in this process.

Backlog Items of Evolutionary Maintenance

The typical backlog items that are part of an evolutionary maintenance release include:

  1. Defects - fixes to application defects and business processes that are not correct for real life conditions, and therefore impact daily business operations;
  2. Application inefficiencies - over time, applications composed of multiple services will experiences changes in performance profiles due to changing business use and shifting service load. It's key to identify and overcome performance inefficiencies such as:
    • Slow Web pages;
    • Slow database access;
    • Integration bottlenecks in distributed services architecture.
  3. Usability improvements - overcome annoyances that impact user efficiency or adoption;
  4. Change Management - Incrementally deliver new valuable features. Either selected from ones left out of previous releases or newly identified during the use of the live application.

 

Challenges of Implementing Agile Evolutionary Maintenance

To achieve an effective Evolutionary Maintenance process it is imperative that the maintenance team has the right tools. They need access to development and project management tools which:

  • Allow them to assess application performance;
  • Assist with capture and prioritization of change requests;
  • Streamline the change, test and deployment process.


Without the proper application delivery and management environment your maintenance teams will not be able to deliver the agility needed to keep your applications evergreen. Let's explore these key challenges in a little more detail: 

  1. Automated instrumentation of the application that doesn't require expensive operational support, extra coding, etc. This is important in order to understand where to invest in code optimization when dealing with application performance issues. Areas on which to focus attention:
    • Identification of the application web pages visited, their rendering time and isolation of slow screens that should be reengineered;
    • Identification of slow queries that may require optimization;
    • Performance assessment of the web services and APIs being used by the application to provide access to external systems;
    • Review of application error logs;
    • Centralized analysis of all application feedback including performance logs, audit logs, etc.

  2. Enhanced capabilities for end-user collaboration to gather feedback on application usage. This capability is critical in order to address incorrect application behavior and improve usability and adoption. Areas on which to focus attention:
    • Provide the end-user with the means to give feedback on the application behavior. This process should be intuitive for users and result in unambiguous feedback for the maintenance team;
    • Streamline feedback management to effectively classify, prioritize and transform the user feedback into manageable backlog items.

  3. The availability of enabling technology which supports rapid change and boosts delivery efficiency. Areas on which to focus attention:
    • Provide adequate application documentation when planning for evergreen applications. This is because the person performing maintenance tasks is typically not the same as the one who developed the original application; therefore it is critically important that the application's structure and logic is easy to understand;
    • The development tools must make it easy to respond to change by supporting the change process. In our experience this includes tools that automate impact analysis and isolate change , which in turn, minimize testing and improve overall development team productivity;
    • The application configuration and build environment must be automated to remove errors and support a rapid deployment of changes to test/production environments.

 

How OutSystems Helps with Going Evergreen

OutSystems' Agile Platform and project management tools provide the technology needed to shorten delivery cycles, increase software development agility, project predictability, responsiveness to business change and overall development productivity. For Evolutionary Maintenance teams, OutSystems technology addresses the key challenges faced by maintenance teams when going Evergreen:

  • The Agile Platform automates the logic required to collect performance data and audit information. In addition, it supports the automatic logging required to address performance tuning, including monitoring third party integration done via the platforms Integration Studio toolkit;

  • The Agile Platform's Service Center tool provides the necessary functionality to analyze performance data and audit logs collected from the application during run-time;

  • The Embedded Change Technology (ECT) and the Agile Network's Issue Management tool ensure end-user collaboration :
    • ECT provides an easy way to collect application feedback from testers, end users, etc. ECT provides meaningful information based on feedback directly from the application screen, and all feedback is automatically registered and stored in the Issues Management tool for the project;
    • The Issue Management tool handles end-to-end issue management, from capturing user feedback, to issue classification and prioritization. Issues can then be included in the maintenance release backlog for delivery.

  • The Agile Platform's TrueChange™ engine supports automated impact analysis and self-healing. This streamlines the change process and assures that quality applications are delivered. Self-healing is unique to the Agile Platform and is made possible by the fact that development is done in a model-based environment. This allows the platform to understand and manage all changes across all the development artifacts. For example, a simple change request to "add a new field to a Web page form that is only visible to a Sales Manager" might require changes to the User Interface, Data Model, external Service APIs, Access Control rules and Business Rules. With its full reference checking and self-healing capabilities, TrueChange™ safely rebuilds the sections of the application that can be automatically inferred, and provides the Business Developer with impact analysis on any manual changes he or she may still need to make to fully address the requirement;

  • The Agile Platform's 1-Click Publishing streamlines the configuration management, build and deployment process - effectively reducing common build errors and the typical build and deploy time to minutes.

 

An Evolutionary approach to Maintenance is key to keeping your applications evergreen and delivering the best business ROI. As you expand your teams' Agile processes, you can apply the Evolutionary Maintenance phases defined in Part 1 of this article across a variety of different project types and architectures. To be successful you will need to overcome the technology challenges described in Part 2.

Be sure to review how OutSystems can help for your web business applications!

Evergreen applications are business applications that continue to evolve as the business changes and therefore provide constant value year after year. At OutSystems, virtually any solution that is deployed using Agile methodologies is required to stay evergreen and subject to a continuous Agile Evolutionary Maintenance process. Part 1 of this article explores the main phases of Agile Evolutionary Maintenance while Part 2 identifies some key technology challenges you must overcome to deliver on the promise of Evergreen Applications.

Setting the Stage

Once your application goes live, it immediately enters the Agile Evolutionary Maintenance phase and will stay in this phase in order to keep up with changing business needs and to address application inefficiencies that are only identified with "real life" demand and conditions. To successfully deliver on this concept, the Agile Maintenance team schedules regular sprint releases focused on delivering the "next most valuable features" for the business.

Through this sequence of regular Evolutionary Maintenance releases, the application will keep up with business needs while minimizing the impact of change on the business. The underlying principle is the same as for general Agile development - fast deployment of the most valuable features, delivered on time and aligned with the business.

The Agile Evolutionary Maintenance Cycle

The Agile Evolutionary Maintenance process is a continuous cycle of application releases. Each cycle includes the following steps:

  1. Gather defects, user feedback and new business needs for the live application. This step is actually
    a continuous process that normally occurs in parallel with the applications' release process;
  2. Classify and prioritize all the feedback collected;
  3. Convert the classified feedback into project backlog items, agreeing on the next release content.
    The focus should be on the most critical defects and highest value change requests;
  4. Develop and deploy the Backlog agreed for the next release.

OutSystems - Agile-Evolutionary-Maintenance using Agile-Methodologies

 

Evolutionary Maintenance releases depend on the volume and type of change required. In my experience these releases fall into one of the following three categories:

  • Hot Fixes - quick intervention required to fix a critical defect that is dramatically affecting business operation, and deploy it immediately. These interventions are required to be completed in less than 24 hours and in some cases during the next couple of business hours.
  • Sprint Releases - made up of one sprint, lasting one or two weeks. In Agile Evolutionary Maintenance it's common to set regular short releases to keep answering accumulated user feedback and correct non critical defects.
  • Evolutionary Projects - When there is a more substantial business change, then a specific evolutionary maintenance cycle may be extended to a small/medium project with several 2 week sprints. This is a common approach to deploy a very large application: incrementally release extra functionality that has not made it into the initial agile project. Experience has proven time and time again that waiting for the perfect and complete solution leads to a less than expected return on investment due to constant changes in business scope and delayed benefit from the new application features.


The Agile Evolutionary Maintenance cycle is critical to keeping your applications evergreen. Following this approach will dramatically improve overall return on investment over the life of your application.

In Part 2 of this article I will identify some key technology challenges and how you can overcome them to deliver on the promise of evergreen applications.

What happens when your application software change cycle time shrinks from months to hours or days? Over the past four years, we have overseen the deployment of hundreds of Web business applications all following agile methods. During the course of these projects, we have faced many challenges and found some surprising benefits.

This article describes some of the lessons we have learned and provides advice on how you might overcome some key challenges in your own agile projects.

Introduction

In 2001 when I assembled a team of seasoned Web professionals, we looked back at our frustrated past of trying to release complex Web applications in Extranet and Intranet environments. While we were always able to deliver these projects, the process was painful.

The review of our past performance showed that it was impossible to accurately analyze and document the real business requirements. Following a traditional waterfall method meant that projects were doomed to be late and over budget. We were plagued by changing requirements, unanticipated integration challenges, usability annoyances and ultimately the formidable task of training thousands of users in a short amount of time.

So we decided to look at the problem from a radically different point of view where we embrace and nourish change. Fundamental to this shift were two key project assumptions:

1) Assume that the application scope can never be accurately defined.

2) Let the application scope evolve during the project based on user feedback.

Agile methods align nicely with this approach. When complemented with tools that allowed us to time-compress the change and upgrade processes, we were on our way to dramatically improving our ability to deliver complex Web business applications.

Fast forward to 2008 and 500+ projects later. Today, we have successfully adopted an extreme change mantra where we constantly enhance and re-factor applications as we drive toward meeting the real business requirements.

Agile - A Mantra for Extreme Change

Our mantra of extreme change is well served by agile methods. Over the years we have found that embracing extreme change has helped us meet our project milestones and deliver applications that are aligned with business needs and easily rolled out to large user bases. We have also found that business users actually make pretty good testers and that incorporating them into the process early and often results in a better end product.

On the flip side we have faced several unforeseen challenges. Collecting feedback from end users early and often resulted in a need to find a better way to manage and prioritize the feedback. In particular, help desks and documentation present a big challenge with embracing extreme change and must be addressed up front or you will suffer when you roll-out your application.

Over time, we've developed a tried-and-true Agile approach to help overcome these challenges and continue to work on improving our agile skills and ability to deliver dynamic applications that support extreme change.

Let's look at some of the lessons we have learned.

Listen to Users at Large

Over time, we formalized our mantra of extreme change around an agile method and delivery platform based on Scrum. In the process, we learned how difficult it is to capture timely feedback from a large user base through the help desk and one-to-one conversations.

About two years ago, we started experimenting with embedding feedback functionality in the applications themselves. We added a non-intrusive hovering button to the bottom of every application page that can be clicked to expand into a feedback form. The user points to the relevant area of the page, types the feedback and submits it. The page contents, user name and session information are collected automatically, packaged into a Change Request and, sent to the agile delivery team. The results have been staggering. In one case where an application was launched to 25 users, we collected more than 200 suggestions, bugs and comments in two days. Out of this 200+, 10 were identified as critical by the agile team (IT and the business) and they were implemented in three days. This tuning process skyrocketed adoption of the application and allowed a smooth roll-out for the remaining 1,100 users.

Transform Business Users into Testers

One of the great side benefits of having your users so heavily involved is that they make excellent testers. That is why we make efforts to get more business users participating in the early betas delivered at the end of each sprint. Taking this approach we can spot usability inefficiencies, functional errors and optimize the experience for first time users early in the process. The end result is that final acceptance testing and QA sign-off is simplified because we eliminate the delivery bottle neck.

Prepare for Life after the "Go Live"

Rapidly responding to change is especially valuable in those days after launch where the business users get to use the application and experience the harsh reality of a new way of working. It is important that the project team stay around so they can quickly tune any remaining usability and performance issues. That is why we have restructured our typical project schedule to include a Tuning sprint after the application has been rolled out into production.

The impact on the team is substantial. First, you need to prepare the Product Owners and Business Stakeholders for the influx of post-launch work resulting from business user's first impressions and feedback. This feedback is valuable because it helps increase the usability of the application and decrease the need for a help desk or user manuals. But it requires an extra effort managing a growing backlog, prioritizing features and approving changes.

Secondly, the handover from development teams to maintenance teams needs to happen later on in the application life cycle. Therefore, it is always a good idea to keep the development team in place after the production release to take care of the Tuning sprint.

Manage the Help Desk Challenge

Our extreme change mantra usually extends throughout the life of the application. After the Tuning sprint, the application typically decreases its level of critical change and is then passed over to maintenance teams. Agile maintenance teams keep a steady, continuous release cycle, launching new features every two to four weeks. This short release cycle requires constant retraining of the help desk which is simply not cost effective.

One solution is to release less frequently. In fact, some of our customers have artificially slowed the release cycle for application updates to accommodate the learning curve of the help desk. However, this becomes problematic as the business quickly learns you can now make changes very rapidly as experienced during the Tuning phase of the project. Thus slowing down the release process in maintenance mode requires resetting expectations with the business.

We have found that a better solution--especially effective for Intranet applications--is to spread the help desk function among the business user community. In a specific situation, one of our customers launched a Requisitions Management application to 1,400 employees, most of whom were first time browser users. To distribute the help desk load, they used 45 departmental administrative assistants as first points of contact. The agile delivery and maintenance teams then focused on keeping this smaller number of power users in sync with the new releases.

You might wonder why we did not simply incorporate the help desk team into the delivery process in order to train them all at once. Our experience has taught us to look at the problem in a different way. Because of the large amount of applications supported by this staff, they had no specific domain expertise, and that prohibited them from efficiently participating in the delivery phase.

Dispense with Useless User Manuals

If you think maintaining a help desk is difficult, keeping a standard user manual in sync with a continuously changing application is tougher. Here the best solution has been to embed contextual "Help" into the application itself. This way, changes in the application and in the Help or instructional content are always incremental, keeping everything in sync. We have found that a content management framework embedded within the application simplifies this process of delivering user documentation in sync with each new code base.

In traditional development projects the user documentation task can, and often is, performed fairly independently of the development work. Since in agile projects the scope evolves at each sprint, documentation and development teams must work side by side and contribute to each new release. Expect a substantial impact in your delivery, maintenance and documentation teams as you shift into an agile way of working.

React Fast to Increase User Adoption

Assuming change as part of the software delivery process is crucial to Agile delivery. In addition, we have found that this approach also dramatically increases the adoption of our applications.

Let me give you an example. In a recent project, we had to implement a Web-based invoice approval system that would replace a complex set of manual processes. A particular sub-process involved the final invoice approval by cost center directors. In the manual process, the director's personal assistants (PAs) brought them an explanation of the invoice with an approval form ready for signature.

The new Web invoice approval system involved a "small" re-engineering of the process that assumed a pure self-service model without PA intervention. (Note: all of the cost center directors were part of the steering committee that helped define and approved this innocuous process change.) However, during roll-out we realized that half the directors had shared their passwords with their PAs, so they could do the pre-validation. Suddenly we had administrative assistants with $100,000 approval power.

As you might guess, the capacity to change fast was crucial here. A new PA profile was added to the application, the work flow was changed to include the pre-validation process, and most importantly the PAs provided input on requirements. During the original analysis, the PAs were not even considered as stakeholders.

This change was implemented over a couple of days driving end user adoption and making IT a hero!

During the project postmortem, we met with the consultants responsible for the initial requirements analysis to figure out why they did not foresee this problem. In addition, we wanted to understand why the cost center directors signed off on the process design. We discovered that the directors were embarrassed to state they relied so heavily on their assistants so they approved the process change hoping it would work.

When it comes to predefined business requirements, adopting an extreme change mantra can help you overcome poor requirements, "wishful thinking" and re-engineering challenges. We have dozens of these stories that reinforce the need for continuous change, even after the application has gone into production.

Conclusion

By far, the greatest benefit of pursuing our mantra of extreme change is delivering what the business needs, on time and on budget, both predictably and well. When a company is able to react quickly to unforeseen situations, and overcome them successfully in a rapid manner, there is a direct correlation with user satisfaction--adoption simply increases and IT regains its rightful place, aligned with the business.

Agile Platform

Build your next great Web App today: Take a tour of the Agile Platform