Recently in Tools & Technology Category

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!
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?
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?


VISourceCode.PNG
It is now widely accepted that source code is not an asset, but rather a liability. This is a very strong idea that has a lot of impact across the IT industry and in the way developers view and perform their day-to-day work.

One of the earliest articles on this subject was published on "Object Mentor". The article is really good, but while reading it I spotted something I really can't agree with:

"The problem doesn't go away if you artificially reduce the code. (...) Moving it into metadata and models and other forms doesn't make it any smaller, and often makes it worse. Hand-crafted code is almost always more readable, smaller, more optimal, more focused, more literary in its style than generated code or funky data tables. 

Models will help!
I'm a strong believer in Model Driven Development (MDD). I think models are a great way to abstract low-level code, and can make software much easier to understand and change.  I'm not talking about using models as an intermediate stage to generate a portion of your code. True MDD means the entire development process is done on top of the model. Much like you use C# or Java instead of assembler language, in MDD you use models instead of C# or Java.

This may not completely fix the problem: following the article's reasoning, at some point the model will become the liability. But it will greatly reduce the risk of this liability for a very large part of your software. Why?  Models mean abstraction, which equals less objects to know and manage thus reducing complexity. Models let you focus on the business problem and not worry about all the plumbing to deliver a scalable, robust application.  Models reduce risk when change is needed and speed up the delivery process.

Hand-crafted code is beautiful... for 5 minutes!
The best guy on the team (you!) builds this really amazing beautiful code. It's totally optimized, and it's so wonderfully written that angels weep as they read through the lines of code... And then things change.

The code is handed out to the maintenance team, the requirements change, and assumptions used to build it turn out to be wrong... it really doesn't matter what the reason is, someone will have to touch your perfect code. And it's all downhill from there.

Blame complexity
It's not that other developers who will touch your code are idiots. It's just that the context surrounding your code is huge, documentation is typically inadequate, and although they think they get it, more often than not they miss something. The system is just too complex.

Once again, MDD provides a huge help in making the system look simpler. It makes it much easier to see the full picture, and it really improves knowledge sharing between developers. Of course there will always be problems so complex that even the model is hard to understand, but fixing the vast majority of situations is a big plus! 

Some words of advice
As you probably noticed, I'm a big fan of MDD. But you do need to be careful when picking your tool of choice. A whole article could be written on that subject, but let me just leave you with three tips: Make sure your tool supports the full development lifecycle, prioritize fast change higher than fast build, and make sure the application generated by the model is based on standard technologies, is fast and scalable.

My final advice: quit piling up the debt and start investing in MDD now.  

Happy modeling!
cloud.png
Putting applications in the cloud offers the promise of reduced costs, flexibility, accessibility, not to mention the possibility to dramatically improve the way your IT works. But to reap all these benefits, you need to make the correct decisions when defining your cloud strategy - especially when it comes to your choice of development platform.

And if you deal with custom enterprise applications, more likely than not you'll have to choose a cloudy-ready platform to develop, build, test, and deploy them.

Here are 7 things you should take into account before picking your brand new cloud-ready platform:

  1. Avoid lock-in - Code and Data: Your code and data are part of your competitive advantage. You must own them. Make sure that, if the need arises, you can smoothly and safely transfer your code and data away from your cloud provider with minimal business interruption.
  2. Easy to move between on-premise and cloud: What's departmental and on-premise today, may need to be global tomorrow. What's currently published on the cloud may become regulated and required to move on-premise the day after. Having the flexibility to easily move back and forth between the cloud and on-premise is a big plus.
  3. Easy to scale horizontally: One of the big advantages of the cloud is that it allows you to grow your data-center as you need. The platform you use needs to be able to take advantage of this flexibility.
  4. Lifecycle support - ready for fast change: It's not just about running applications in the cloud; your choice of platform needs to support the full lifecycle. You need to be able to develop, test, and change your application really fast.
  5. Easy, fast & safe to deploy: This is part of the lifecycle, but it's important enough to have it's own bullet! In order for you to be as fast as your business demands, you need to be able to deploy your app quickly and often. And you need to know that, should something go wrong, you can quickly revert back to a previous instance.
  6. Easy to integrate: Integration will always be a big part of custom application development. You need to make sure the platform you pick integrates easily with your apps running on premise, with your cloud apps, or with off-the-shelf packages. 
  7. Secure: One of the biggest concerns around the cloud-computing is security. Pick a development platform that seamlessly handles this issue for you. This is important not only at time of deployment but also from the application execution perspective. If your platform handles this for you, you will save you a lot of time and headaches in the future.
What would you add to this list? What are your main concerns, and what do you look for when thinking about your cloud strategy?
xmas-logo.PNG
Dear Santa,

I've been a good girl in the last few years, providing ITs all across the world the ability to have a productivity they could never imagine. I help all kinds of developers, from juniors to seniors, to implement large and robust web applications in a fraction of the time they would take if using traditional frameworks.

But I miss something... I miss a fast way to reach those developers that have not heard of me before. I miss a good way to let them know how valuable I am. Every time I want to introduce myself to someone I always need to take my friends SQL Server, IIS and MSMQ with me, turning that first introduction into a very formal commitment.

This Xmas I would like to be tried by those developers much more easily. I would really like you to bring me a cloud trial service. That way I would only send them Service Studio, my IDE, to show them all the awesome things I can provide. It would really be fun if they could play around in my cloud sandbox for a while.

Oh, and meanwhile, I could give them an engaging learning experience, with game-like tutorials that go straight to the point, contextually helping them whenever they need to know more.

I bet all of this would really bring my users closer to me. And that would make me an even better girl.

Thank you Santa. Hope you drop by this December.
The Agile Platform

Guess what... The R&D team pulled up their sleeves and made sure that Santa would come sooner this year!

Version 5.1.1 was released as a technical preview on Dec 2, and you are all invited to try it out.

The entire team made such a fantastic job in focusing on the most relevant user stories, in order to deliver a valuable release in a much shorter amount of time, that in the end we got ourselves a small party... And we even got a new mug!

cloud-release-collage.png
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?
It's a known fact: R&D engineers are part of a special breed of IT professional who usually live behind closed doors, in a high-security area of the software vendor's ivory tower.

This means information about what's needed in their products comes from marketing folks and nagging sales reps (yikes!) and the feedback is usually shielded behind an online form that "takes only 2 minutes to fill."

This is all wrong!

Opening up the communication channel between R&D and the rest of the world is the best way to find out what users really need, understand how they are using the products you build and what they think is missing.
 
The problem with an open communication channel is that it also needs to be manageable. Setting up an email account where users can send in their suggestions is a recipe for email flooding; it will require massive manual work to get all feedback and ideas into a workable wish list; it's difficult to provide feedback, and will probably become unmanageable very quickly. So, how do you solve this problem?

Give a warm welcome to crowdsourcing!

The concept is simple; let a community of professionals interact, share their thoughts, vote and comment on other people's ideas. As participation grows, bad ideas will be filtered out, good ideas will bubbled to the top and a lot of great feedback on what's working (or not working) will become crystal clear. The ways this idea actually work have been published in James Surowiecki's best-selling book Wisdom of the Crowds.

This concept led us, at OutSystems, to create a Wisdom of the Crowds application; one that we could use to trigger, nurture and manage this creative process. We built the first version in just 5 days using the Agile Platform, and started using it internally to gather feedback and ideas from our own employees.

We added some functionality, tuned the usability a bit, solved some minor bugs... and then made it available to our user community. Every community member can now add their own ideas, comment on other user ideas or simply vote on the ideas that they find more valuable.

Here's what we achieved in the first two weeks:

388 users have contributed 189 ideas with 537 comments and 1719 "likes" (votes) by the community. Ten ideas have already been implemented and have been made available in the latest version of the Agile Platform. Thirteen ideas are set for implementation in the next release.

During the time it took to write this post the idea count rose to 216, with three additional ideas implemented and sixteen more coming soon!

If you're a member of the OutSystems community, you can access the Wisdom of Crowds here and participate in the online brainstorm.


PS: This app is free, and can be deployed on any Agile Platform installation (including the free Community Edition). If you'd like to use the Wisdom of Crowds app in your company contact us and we'll give you the pointers on how to set it up.

Image credit:Hideyoshi algn
Today we released a new version of the OutSystems Agile Platform - 5.0! In this version we're taking agile a step further; not only are we supporting the entire application lifecycle management for web applications, we also added support for IT teams to rapidly develop business processes using agile methodologies.

Traditionally, business process development was done at a different pace using different tools than IT used for application development. However, one of the biggest challenges facing the business process world is the integration of business processes with applications; which meant one of them was always waiting for the other.  And, in the case of our customers who already use the Agile Platform, web application development was happening faster than business processes development.

integrated agile process and application management.jpgWith version 5.0 of the Agile Platform, we have closed that gap! Using the new Business Process Technology capabilities of the platform, IT teams can develop business processes totally integrated with web applications in an agile manner. All artifacts that the Agile Platform provides for Web Application development - like TrueChange technology, 1 Click-Publishing, Real Time Monitoring, and so on - are also available for business process development.

To develop this new capability, the OutSystems R&D team partnered with one of our customers, Van Ameyde, to design and implement this capability. Van Ameyde uses business processes intensively for insurance claims processing and has very heavy change demands for those processes. Customer participation has been key to the development of the new 5.0 functionality, and we believe that it led to a pragmatic implementation of Business Process Technology that will allow IT teams to fulfill the needs of the business from a process perspective, as fast as they have been doing for web applications with the Agile Platform.

Along with Business Process Technology, version 5.0 includes many other improvements that will make developers a lot more productive. If you're already using the Agile Platform, check the videos of some of the improvements we made to the platform. If you want to give it a try for yourself, the best thing to do is download the (free) Community Edition and try out the new capabilities of the platform.

team.pngOf course, we could only release such a great version of the Platform with a great team! We had a lot of help from a lot of people, in particular from our Beta customers who provided such excellent early feedback, and a special thanks goes to the 5.0 team that delivered such a great product! Version 5.0 of the Agile Platform will definitely raise the bar for agile.  Give it a try, the 5.0 development team promises you that it ROCKS!

Presentations1.jpgAs promised, the customer, partner and OutSystems presentations that were given at the NextStep '09 conference are now available online.

These include great case studies on Agile development, Agile technical tips and tricks, and discussions on the future of agile, adoption and business value.

 

Also, if you have not yet completed the Agile Adoption Survey - it only takes 2 minutes and we would greatly appreciate your input!

 

Agile Platform

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