When I was 12, I wrote my first 'computer program.' It drew a picture of a house (pretty sad, but it was exciting at the time and opened up a world of possibilities). Since then I have written many 'computer programs' that have performed a variety of functions and been referred to using a variety of terms; program, component, module, application and web application (and in some cases, in the early days, some less polite phrases!). Programs, components, etc. are all things the layperson would not really have ever associated themselves with, or even imagined them being something they would be able to use. But over the past few years things have changed fast. 'The app' appeared and has caused one of the greatest shifts in human/computer interaction, ever.
Ask pretty much anyone what an app is and they will tell you it’s something they can download onto their device that performs a specific function. They will tell you about the app that lets them update Facebook, or the one that lets them check the weather, or even the one that generates random insults (although to be honest I use my business partner for that purpose). Some will go further than that and tell you they can also install apps or widgets on their PC, or go online and use an app that gives them driving directions but then a few, and it’s a growing number, will point out that they see apps in everything, from the webpart on their intranet that shows them the 5 most recently published news articles, to the one that lets them book their annual leave. What they have done is identified that pretty much each block of functionality on a webpage, device, and touchscreen is actually an app and they are correct. Just like apps that run on your mobile, these apps require underlying services. The holiday leave booking app requires the core service that stores and books staff leave. The navigation app requires an underlying mapping service and also a service that can figure out the fastest way from one point to another. Once you have these services in place then supporting apps can be built for a variety of devices, e.g. browsers, mobile phones, tablets, phones, PC's.
Service Orientated Architecture (SOA) has been around for a long time but it’s only really meant anything to Enterprise Architects. This has changed in the past few years and SOA is now a core part of pretty much all architectures. The idea that you build something that exposes functionality that a variety of applications can interface with and utilise is well understood and implemented. The functional aspects to projects are now very often split into services and apps, although not always referred to as such. If you take a company Intranet as an example, it may be split into departments; HR, marketing, etc. Each of these departments performs functions or offers services unique to them, e.g. the marketing department may be responsible for all digital assets. A service created that stores, categorises and indexes digital assets and Apps would be built to expose these to other internal users and also commonly to websites. An IT department may offer a service that registers all electronic assets and stores service history, service patch information, etc. against them. An app may be developed that allows users to log issues on the intranet or an IT service engineer may have an app on his phone that allows him to scan the code on the device and view the information on his phone. Both of these apps would use the same underlying service.
Everything is an app
So next time you visit a website or your Intranet, look at it in a slightly different way. See if you can identify the services and the apps. Remember, from the news summary, to the advert in the corner - they are all apps. Look at the services that exist, use your creativity to think of some cool app to expose those services to a particular audience. Services are a core part to any business but they are nothing without the apps that expose them.