Friday, July 19, 2019

Taking Mobility-as-a-Service Seriously

This week I have made it public knowledge the Ideal Interface has joined MaaS Scotland.
https://blog.idealinterface.co.uk/2019/07/19/ideal-interface-joins-maas-scotland/

Although technically we joined just before I attended the MaaS Scotland Annual Conference in Edinburgh on June 20th... this announcement is part of my growing aim to get more involved in the ongoing development and industry acceptance of an Open Transport API for account interoperability.


Wednesday, July 17, 2019

LIFESPAR cloud architecture principles to follow

With more and more organisations adopting cloud technologies for their applications, I've seen the tendency to just "life and shift" architectures. Physical servers are replicated as virtual machines and the same software applications as before are run "on somebody else's computer". 
  • Latency-aware
  • Instrumented
  • Failure-aware
  • Event-driven
  • Secure
  • Parallelizable
  • Automated
  • Resource-consumption-aware

But this approach doesn't leverage many of the benefits of software-as-a-service (SaaS) or the new cloud-only components available as platform-as-a-service (PaaS). It also means that architects creating cloud-native solutions need to have a different set of principle to before.
Some of the best guidance I have seen in this area comes from Gartner, who use the acronym LIFESPAR to explain those principles to follow for designing cloud-native architectures.

So what is LIFESPAR and what does it mean to an architect?

Latency-aware:
Understand that every application needs to be designed & implemented knowing that it may not get an instant response to each request. This latency could be milliseconds, or it could be seconds, so ensure each solution elegantly deals with delays and is tested to prove it works under these conditions.

Instrumented:
Every solution and every component must generate sufficient data about their usage and ideally send this information back to a central location, so that real-time & subsequent decisions about the architecture, cost, volumes, etc. can be made. In this way, as instrumented approach supports an elastic automatically scaling system (scaling both up AND down).

Failure-aware:
Remember that things fail (hardware, processes, etc.) and that software, created by humans, is never usually bug-free. So always design solutions that wait or fail & re- in the way you need them to. Failures must also be comprehensively tested - if necessary, writing code to force failures (e.g. the Chaos Monkey). Also bear in mind that in some scenarios... latency and failure are the same thing.

Event-driven:
Applications used to developed with synchronous actions (as the performance, etc. of the target system was known). But now in a decoupled architecture, messages need be sent as events. This also simplifies scaling and makes them more resilient to failure.

Secure:
Always assume your solution will be subject to some sort of malicious activity and try to prevent it. This means restrict events and users, minimising attack surfaces and following best practice data handing and security processes.

Parallelizable:
Many small systems are usually cheaper that one large one, even in the cloud. Therefore find ways to scale-out your solution and its processing & messaging, rather than scaling-up.

Automated:
Every cloud-based component and also your overall solutions should be able to be deployed, started, stopped & reset via scripts. Remember to test this from a command line, from the beginning of development through to your Operational Acceptance testing (and even as a means of testing Disaster Recovery processes).

Resource-consumption-aware:
So, you now have almost limitless processing and storage resources at your fingertips. But you also either have your credit card charged as you use the service or are going to get an invoice for what you use very soon... Therefore, always consider using the least amount of cloud resources possible. Simplify your solution, build & burn of components & environments, automate components to start & stop only when they are needed and don't store more than you need (e.g. by sharing test data across solutions & environments).

Thursday, June 20, 2019

MaaS Scotland Annual Conference 2019

Today I attended the MaaS Scotland annual conference event in Edinburgh. Which brought together representatives from across Scotland, the UK and Europe to discuss recent developments and projects in the area of Mobility as a Service.


There were many interesting presentations, including those from Eric Mink from the Dutch Ministry of Infrastructure and Water Management (who mentioned the Dutch API Blueprint for MaaS)
And also Michael Matheson MSP, who is the Cabinet Secretary for Transport, Infrastructure and Connectivity. Plus also there was more information about the MaaS Investment Fund from Transport Scotland.

Thursday, June 6, 2019

Config versus Code - what's the difference?

I have worked on a few projects lately where the the conversation typically went as follows:
"We aren't coding anything, we are simply changing the configuration within the product"
or "We don't need to deploy our changes to Subversion/CVS/BitBucket/GitHUb as it is config not actual code" (and sometimes the word "actual" is stressed).

Sound familiar?

So I thought I would define what I thought are the traits and differences between config and and code:

Config is:

  1. Customisation of mature code, without affecting that code
  2. Held in a source control system, wherever possible
  3. Setting and changing parameters via simple instructions
  4. Carried out using a visual tool or interface
  5. Limited in scope (to what the developer wanted to expose)
  6. Best suited to making changes to SaaS (Software-as-a-service) products

Code is:
  1. Scripted or compiled
  2. Always held in a source control system
  3. Carried out using an IDE (Integrated Developer Environment) such as Visual Studio or Eclipse
  4. Far less limiting in scope (to what the developer wants to do)
  5. Where repeatable functionality is held
  6. Best suited to the creation of bespoke applications

Or put another way:
If you need a developer to make a code deployment once a configuration change has been made (to implement that config).... it is not config!


Wednesday, May 29, 2019

Launching the Open Transport website

Today I have launched the website for Open Transport:
https://opentransport.co.uk/

This website explains the aim of creating an online account open data standard across the transport industry.

I have seen the start of the benefits that Open Banking has has in the Financial Services industry and I think the same thing needs to happen for the transit and transportation industry in Scotland, The UK, Europe and wider afield.

Perhaps this standard may even be adopted in other industries too.. perhaps the travel one.
(Can you imagine the possible benefits of all airlines being able to link their accounts, so that a customer could use just one login to manage all their details and see the data about their flights on different carriers?)

Thursday, April 18, 2019

Architecture vs Agile

There are various technology "holy wars" that have been fought throughout the years.
PC vs Apple
Thin client vs Desktop computing
etc.

Some have been resolved and some still continue to this day.

And now, as more digital / business transformation projects are adopting an agile approach to software configuration and development... another battle, albeit one that has been raging for some while, is growing in its intensity and prominence.... That of the agile approach vs the need to define architecture for a solution in advance.

As both a supporter of agile to create products & get feedback quickly, and an architect of digital products and services (both large and small) I understand both sides of this war.

Agile:
Wants to develop minimum viable products as quickly as possible, then get this in front of users and rapidly iterate towards completion. The focus is on "good enough" not excellence and likes the flexibility to change & improve features.

Architecture:
Designs those things that do not move... and the resemblance to buildings IS intentional. Architecture is usually fixed for the long-term and gives the foundations for other more nimble practices around it. Technical Architecture (what I define as the combination of the Enterprise Architecture and Solution Architecture disciplines) should provide general directions (e.g. public cloud/hybrid/private, buy vs build, etc.) and standards. Plus architecture should also make  higher-level decisions on technology and principles which would be hard to change subsequently (e.g.coding language, integration methods, etc.).

Where things get messy is in the lower-level design of applications and their solutions. Here is where the agile versus architecture battle is waged. Where teams need to be empowered sufficiently to create products that meet the user stories... but also need enough guard-rails and check-points to operate within governance.

Thursday, March 14, 2019

When not to use an API

In an earlier post, I covered how there are now "APIs with everything"

However, it is not always that a system designer would use an API for integration. Here are some scenarios where you would consider NOT using an API:

  • When an API is not available, for example the vendor has not developed one yet
  • When an API does not meet the necessary non-functional requirements (for example: security, performance, volume, availability, etc.)
  • When you already have a tightly coupled integration between two systems and there is no need to change/upgrade this 
Have I missed any?

Friday, February 15, 2019

Non-functional requirements - is that the best description?

Thought for the day:
The term "non-functional requirement" is a bit daft really. As it implies that you have a requirement for a feature that does not help functionality.
Perhaps they should be called operational requirements?

Wednesday, February 6, 2019

How to write online testimonials

My consultancy help a number of clients with their website content & optimisation. Most of the time we find that providing a testimonial helps provide 3rd party validation of their product or service.

So how do you write an online testimonial? Well the most obvious thing to state is that “less is not more” and usually the more that is written (within reason) the more the testimonial is useful … for content, usability and potentially search engine optimisation too,

So consider building up your testimonial beyond just a single one line quote to:

  • A sell-worded longer quote*
  • Quote plus image**
  • Quote plus hyperlink***
  • Quote plus hyperlink plus image
  • Quote plus full case study

* the quote is usually a few short sentences or a paragraph statement from
 an existing client (ideally with name, title & company) or customer review
** the image is usually of person, but other obvious image can be used

*** the hyperlink is typically a call-to-action" (e.g. "contact us to get a quote now" "read our case study here" or "find out more about xxxxx".

Thursday, January 24, 2019

Picking what NOT to do is an IT Strategy

Technology change and progress never stops. There is always a newer version, a better alternative piece of software or another way of supporting an evolved business process or two.
For internal technology departments and especially those within larger organisations, this rate of change means there's never an end in sight. In a world of infinite need and finite resources... there's usually a long list of things to do once the current projects & programmes have been delivered.
With all this demand and the expected pace of implementation (that can come from all angles including: business stakeholders, vendor sales people and consultants) it can feel like everyone wants to change everything at once:
New finance system? Yes
New HR software? Sure
New B2C website? Of course
New B2B website? No problem
New sales portal? Yeah
New customer data platform? Naturally

Faced with a these requests, perhaps along with a potential new-found investment in technology to fuel a "digital transformation", senior IT people will want to say yes. Who wouldn't want more resources, increased budgets, the chance for some new "toys" or the opportunity to stick a big 'look what I've done' post on their LinkedIn profile?
But like the proverbial plate spinner, who (theoretically at least) should know how many plates they can spin at once... those in a position to take on technical work need to understand how much change they can take implement before they hear the sound of virtual crockery smashing. Experience needs to inform them (and so do their managers, subordinates and peers) just how much change their organisation can take on in parallel.
But when the demand for so much change outpaces the organisation's ability to deal with that change, someone has make the important decision as to what to do and therefore what NOT to do. 

Nobody, least of all IT people (prehistorically noted for saying "the answer is no, now what's the question?") want to tell a business stakeholder that their project is less important than another... but sometimes there is only so much change you can do at once.

Wednesday, January 23, 2019

Advice on Video Search Engine Optimisation

The aim of video SEO is simply to make it as easy as possible for both YouTube and Google to understand all video content. And why wouldn’t you? With Google being the largest search engine and YouTube being the second, it is more and more important that companies now factor online video optimisation into their marketing efforts.

Since Google can’t fully understand what your video is about without help (not yet, anyhow) optimising your clip currently means providing as much textual information about it. This is so that search engines can properly index it and then show it in their relevant search results.

My advice here is therefore:
Creating an optimized title is perhaps the most obvious thing to do, yet is probably one of the most overlooked. The clip title should be several words long (we tend to keep to the same 55 – 60 character range we recommend for web page title optimisation) and include the major keyword(s) you want to your video to rank for. Note: There are differing opinions on whether the keywords at the beginning of the title give more of a boost than those added subsequently… but I have found no definitive proof of this.

Description
Insert as much text as you realistically can into the description field of your clip. Add words about the video content, the people or characters, the situation or product it shows, and the usage or benefits being explained. In short… consider this a blog post and use several hundred words if possible. Obviously, any content placed in the description needs to include your targeted keywords from your SEO strategy, plus don’t be afraid to sometimes repeat keywords or derivative terms here
If your clip contains people speaking (e.g. a voice-over or some dialogue) strongly consider obtaining a transcript of the text and inserting this in the description too.
Don’t forget the transcript can also be:
  1. Used to correct or improve the closed captions, which you must consider - Sure, YouTube can auto-transcribe your audio content, but not any visual content than you may also want to describe
  2. Added as additional content into any web page that embeds this video clip (potentially providing some on-page SEO help too)
Video Tags
There is growing consensus in the SEO community that tags for YouTube clips have minimal optimisation benefits (but they do help with cross-linking between clips with the same tags). So still use them to describe your content in the same way you would a social media or blog post. However, remember to use those tags which highlight the uniqueness of your video (and therefore avoid very generic and therefore very competitive terms).

  
Title information
Remember to provide bespoke information about each different clip uploaded.  Don't upload the same clips with different info title & descriptions.
(Although I have no personal proof that this is "black hat" SEO activity... it does go against the very premise of what Google is trying to do. Plus, if it was suddenly treated as such... it could have a lasting negative effect.)

Comments
Encourage comments, ask for them and respond back when you do get them.

Friday, December 7, 2018

Still making the same SEO mistakes?

I'm amazed that so many existing & newly
-developed websites are still making so many Search Engine Optimisation mistakes. It seems to me that so many organisations are ignoring the basics when it comes to organic improvement of their main online asset.

I see it time and time again:
- Poor keyword analysis
- Unrealistic placement targets
- Poor quality coding
- Duplicate (or very similar) content
- No redirects for deleted pages
- Badly written content

Why is this?

Friday, November 9, 2018

Site launch checklist

I was recently asked for a checklist of essential items to check on a website before it launched. So I have shared it with you all here:

Page titles
You should know by now that every page must have a page title. It's what appears in the top of the browser for that page and how it gets shown by default as a bookmark or Social Media post.
However it is also a key Search Engine Optimisation ranking factor, so ensure that it is relevant, the right length (approx 55 characters including spaces seems to be fine) and ideally unique across your new site. There is also a significant consensus in the SEO community that the keyword you are targeting for this page should be as close to the beginning of this title as possible.... but I will leave that for you to assess the value of.
Also since Google usually displays just the first 50–60 characters of a title tag, I would keep to that range without very good reason.

Meta data / Meta tags
These have grown in the number and function they perform over time, with some having a bearing on Social channels and SEO. But the key one here is Meta Description.
I'm not going to give you advice about what to exactly write in this field... as I've covered it in so many other blog posts. However, ensure that have a description on every page (correctly placed inside the <head> of the page). Plus consider that the current average length of the description field for desktop results is around 160 characters, whereas an average of 130 characters for mobile seems to be the best.
Note: Ignore using Meta Keyword tags

Sitemap
This little text file (mostly named sitemap.xml) usually sits in the root directory (or obvious sub-directory) of your site. It is a tried & tested way to tell search engines which pages are available for them to be crawled. It does this by giving a list of URLs for every public page in the site along with extra metadata about them.

Robots.txt
This little text file (all lower-case only please) should sit in your root directory of your site. It is usually the first file a search engine bot checks on a site and is there to tell all or individual bots what they are NOT supposed to do. For example, they are supposed to ignore certain directories or files.
So in this way it is the opposite of a sitemap.xml file and care should be taken to not have pages in both.
Note: some search engines may ignore the robots.txt so do not use this as a way to  hide site content or data you definitely don't want found.

Redirects
When launching a new site, URLs can change.
At the most fundamental level, this can mean a change of domain (e.g. brandx.com to brand y.com) or a change of sub-domain (e.g. blog.brand.com to brand.com/blog). So sites should ensure they understand and handle all redirects correctly at new site launch.

Wednesday, October 31, 2018

Minimum Viable Experimentation


Those who work in the digital and agile world should be pretty familiar by now with the implementation of a Minimum Viable Product (MVP). This is the creation of a working product that doesn’t have to meet all requirements, but allows further testing, feedback & iterative improvements. It is an approach pretty well understood and used across the industry and one that should lead to better products sooner.

So perhaps we need to use this approach, not just in the creation of the initial product, but in the way we release further functionality & features to our products? This would mean focusing less on the usefulness what each new piece of functionality provides (in economic terms the 'utility'), but basing each successive development on what it tells us about the product's overall ability to meet the wider strategic objective?

In other words, rather than add new stuff that simply compliments the overall richness of the experience... shouldn't each new tangible delivery be based upon a hypothesis? And in-turn, shouldn't this hypothesis be derived from insight that is focused on improving the user's needs or outcomes?

For example... if your project aim (which I assume directly linked to your strategic objective) is "to have a better online sign-up process for a new credit card", then each successive sprint or release from the initial product launch should be delivered to address this aim. However you shouldn't just assume that this is the case. 

Firstly make sure that each time you plan your deliverables you are actually answering a question, such as:
"How can we stop [a specific type of customer] exiting the online form before the end of the process?"

Secondly develop a hypothesis that can be tested in a small experiment. Such as:
"We believe that by adding [1: a specific feature] at [2: a specific point] we will create [3: an expected behaviour] by the user and therefore they will reach [4: an outcome] that will improve [5: a goal]."

Where in our new credit card sign-up example this could be:

1
A specific feature
A reassuring statement about financial approval
2
A specific point
The 4th of 5 pages in the process, where the most users drop out
3
An expected behaviour
The user is reassured that they could be approved easily
4
An outcome
The user moves to the 5th (and final) page of the process
5
A goal
Form conversion improves


It is worth stressing the point that these experiments don't have to be huge or complex, and in some cases making changes to a piece of content or image may be sufficient. They just have to be enough to prove or disprove your experiment's hypotheses…. a minimum viable experiment and nothing more.

Tuesday, October 30, 2018

What question are you really trying to answer?

Agile
Digital Transformation
Self-service technology
Faster delivery
<yawn>

Heard it all before? Yes, so have I... numerous times and across many different clients.
Each is craving to "move to become a digital organisation" or "reinvent their online proposition to embrace change" and other similar modern and (to be honest) pretty meaningless statements about themselves.

But I think they are approaching this the wrong way. 

On the basis that each company exists to provide a product or service to another (person or company)... why the heck are they not focusing on asking more questions about what their customers need? Or questioning what stops their valuable users buying/using/engaging more? And more fundamentally... why aren't more people tasked with trying to answer those questions with the creation of better products and services, increasingly delivered as software?

So rather than saying "we need to redevelop our website to improve our KPIs"...
You need to ask "why don't we make it easier for customers to convert?"

And rather than stating "we need to reduce the number of clicks in our online booking process".
You need to ask yourself "why do customers seem to have a problem getting past the 4th page?"

It is only then that you get to the creation of an insight-based hypothesis to change a process or product. 

Friday, October 19, 2018

Is data driven marketing that simple

In a Linkedin.com post recently I commented about the increased adoption of data driven marketing ...

It's simple really:
1. Build insight with real data
2. Foster loyalty
3. Communicate creatively
4. Analyse to improve

But is it that simple?

Friday, October 12, 2018

How HCI and API design are similar

All software needs an interface. Having one makes it possible to use the functionality and consume the data that lives within that software.

Humans use interfaces for software all the time, with the World Wide Web arguably being the biggest interface there is (OK, perhaps some websites aren't the best examples of usefulness in this mass experiment).  But put basically... they allow human-to-system interaction, also known as Human Computer Interaction or HCI for short.

Human Computer Interfaces have the following principles:

  1. They remove complexity:
    By making it clear what each function does (e.g. do not have two ways of doing similar things)
  2. They follow standards:
    By following established conventions (hyperlinks, buttons, tick boxes, etc.) they provide consistency.
  3. They make interaction easier:
    By enabling swift and efficient relationship with the underlying data & processes and providing feedback or a response when something happens.

And Application Programming Interfaces (APIs) play a very similar role, but in a slightly different system-to-system manner. They:

  1. Remove complexity, by (hopefully) providing a single request & response for each individual function
  2. Follow standards, usually in the form of an API specification, to allow consistent development against them
  3. Make interaction with the underlying systems easier via a standard set of methods (GET, POST, DELETE, etc.)

Ultimately, whether interacting with a human or another system... a well designed interface benefits both parties.

Wednesday, October 10, 2018

Behave, Deliver and Grow Like A Digital Company

Delivering digital interfaces to your organisation's customers, partners and employees is no longer optional. It is now essential for long-term effectiveness (and survival).

But this means unlocking the data, systems and functionality your business operates with and exposing this both internally and externally to meet increasingly shifting needs. But it is not easy... hardly any sizeable company has an entirely blank slate to work from. Legacy applications, processes and thinking tie any business down so that it can work well. But it is these very constraints that often limit speed and agility, which are needed to succeed now.

Digitally enabling your business means changing the way you behave, deliver and grow.

Behaviour:
Being customer focused means creating a better customer experience that can win and maintain custom in the competitive digital landscape. It also means understating and controlling your data, so you to make informed decisions quickly based on what you are observing or being told.

Delivery:
Start by using new platforms, tools and methods to build products quickly, plus then to evolve them rapidly over time. If you think your quarterly website functionality is fast now, consider that over 7 years ago Amazon stated it makes changes to production every 11.6 seconds (it may even be faster now) and Facebook releases to production twice a day.

Growth:
Don't be afraid to unleash the creativity and innovation within your boundaries to help you build. Employees must be part of the Digital journey (not observers) and everyone, not just your test manager, must work towards the continuous improvement of products and services.

Friday, October 5, 2018

Wake up and smell the data


Does your organisation value data?

Does it know how much value there is in each customer account & interaction it records?

Does it really appreciate that the timeliness, accuracy and depth / richness of the data captured stored or created has competitive advantage?

No... I didn't think so, and I'm pretty sure most other organisations don't either.

That's a shame. 


Tuesday, October 2, 2018

Evolution doesn't care how good or big you once were

I believe that is was Charles Darwin who stated “It is not the strongest of the species that survives, it is the one that is most adaptable to change”

But this fact is not only relevant to organisms, it also now applies to organisations. This means that the rate of change in customer expectations, technology and even the competition now means that being "agile" is not a strategy... it is essential to long term survival.

And I'll make a prediction...
"The rate of change in your company right now may seem like a sprint, but it will seem like a leisurely stroll compared to what's to come".

Or to put it even more bluntly...
"Hang on kids, this ride is about to get faster and there's no point screaming about it." 

So what happens to those organisations that don't adapt quickly? Well they won't perish overnight. But recent history has told us that those who believe their current business model or state of their technology/product/service is competitive now could swiftly find out things are less than good enough. And just like living things, it only takes a generation to go from being the hunter to the hunted.

Just look at how some retailers have failed to embrace technology: book shops, department stores, video rentals, etc. have all collapsed as digital services quickly ate their lunch using innovation or fast iterating software (or both). Digital evolution doesn't care how good or big you once were.

Agility not size is what matters now for corporate survival.