2. When we put amazing technology into people’s hands
amazing things become possible.
3. “Today, companies have to radically
revolutionize themselves every few years
just to stay relevant. That's because
technology and the Internet have
transformed the business landscape
forever. The fast-paced digital age has
accelerated the need for companies to
become agile”.
Nolan Bushnell
4. Topics
• How mobile application development illustrates
important issues for the future
• Moving away from architectural design as a purely up-
front activity
• The benefits of architects’ complete engagement in the
solution delivery process
6. Mobile is the future
• The huge effects that were being predicted as
a result of the wide distribution of technology
are being realised through our mobile devices
first and foremost.
• Many of the things that are happening in
mobile will propagate everywhere
15. Level of Effort
Native Hybrid
• Often needs larger,
specialised teams to
cover multiple platforms
• Longer duration projects
• Higher overheads
• Smaller teams with more
general development skills
• Apps are cross-platform
• Much shorter development
projects
• Lower overheads
16. Integration approaches for mobile
Integration Approach Desirability
RESTful web service based APIs
specifically designed for mobile
applications
1. Most desirable. Minimises cost of mobile
solutions while maximising efficiency.
SOAP web service based APIs used for
general enterprise integration
2. Useful but not always ideal. Sometimes
too heavyweight for direct use in mobile
solutions.
Direct database access 3. Less desirable.
This approach often only allows reads as
writes and are often not supported by
system vendors.
Offers poor scalability.
Screen scraping from existing web
application user interfaces
4. Less desirable but occasionally effective
for simple lightweight mobile front-end
development.
19. Agile Principles
1. Customer satisfaction by early and
continuous delivery of useful software
2. Welcome changing requirements, even
late in development
3. Working software is delivered
frequently (weeks rather than months)
4. Close, daily cooperation between
business people and developers
5. Projects are built around motivated
individuals, who should be trusted
6. Face-to-face conversation is the best
form of communication (co-location)
7. Working software is the principal
measure of progress
8. Sustainable development, able to
maintain a constant pace
9. Continuous attention to technical
excellence and good design
10. Simplicity—the art of maximizing the
amount of work not done—is essential
11. Self-organizing teams
12. Regular adaptation to changing
circumstance
21. What does Agile deliver
• Systems that are fit for purpose
– Especially when that purpose only emerges over
time.
• Systems that are cheaper
– Because they’re leaner
– Omitting features that users don’t need
23. What can go wrong?
• Hidden technical debt - Hygiene factors
• Being dogmatic about roles:
– “Scrum does not define a role Architect and therefore an
architect is not needed in an agile IT project".
• Not documenting adequately:
– “Agile means more talk and less documentation, doesn’t it?”
28. True Agility
• Reducing overheads in the delivery process
• Applying best practice to get things right first
time, more of the time
• Application templates
• Component re-use
• Writing only as much software as necessary
31. Architectural Design
• Starts with:
– High-level, easily grasped diagrams of the system
– Identifies the class of the solution along with:
• The solution’s key components and interfaces
• The services it consumes and publishes along with formal
definitions
I'd like to talk about enterprise agility and the role that architects can play in achieving it
I've worked in software development for a little over thirty years, moving through various roles including 5 years at Telecom, 3 years with Sybase in the London financial district and 11 years as a solution architect with Solnet.
I've worked with Mobile Mentor as an enterprise mobility consultant and I'm currently working with Fletcher Building in their newly formed Digital Innovation Lab which aims to revolutionise the way technology is used across New Zealand's largest enterprise.
We're working with rapid cross-platform mobile app development, drones, augmented reality and lots of other really cool stuff.
Started at 16
Interested in cutting edge tech, IoT, Drones, CNC, Mobile Apps
Examples:
* Uber , iTunesU, Google Maps, Evernote, Air New Zealand App, Spotify
When you put amazing technology in peoples' hands, amazing things become possible.
I believe that empowering people who are passionate about the future is the best way to build a better world as the pace of technology accelerates.
I'm quite fond of this quote from Nolan Bushnell, an Electrical Engineer who founded Atari. He was named one of Newsweek's "50 men who changed America" and is known for Bushnell's Law which states:
"All the best games are easy to learn and difficult to master".
I think that applies to more than games, I find it applies to a lot things in life.
Here, he has something to say that I find particularly apt:
"Today, companies have to radically revolutionise themselves every few years just to stay relevant. That's because technology and the internet have transformed the business landscape forever. The fast-paced digital age has accelerated the need for companies to become agile".
I'd like to draw a distinction between agile as it's meant here and the Agile Methodology. They often go together but not always. I've come across enough poor implementations of Agile to be a bit sceptical but I'm always impressed by teams that demonstrate a commitment to true agility. That's not something you get just by following a methodology, it takes a deep commitment to addressing fundamental issues.
I think that true agility for enterprise has a lot to do with embracing the pace of change in technology and the pace of change in business practices. It's about driving your organisation to harness the volatility in the environment as a source of competitive advantage.
If we can adapt more quickly to new requirements than our competitors then our products and services will be a better fit for our customers needs. They'll simply be better products.
It's not just about transforming our organisations. It's about being prepared to do that repeatedly and efficiently in depth.
This is hard.
Organisations naturally resist change.
And yet that's what's required.
I'd like to cover three main topics in the next half hour or so
* What's happening in mobile application development and how that illustrates important general issues for the future
* Why we need to move away form the idea that architectural design is something that's just done at the start of projects
* The benefits of having architects engage in the whole solution delivery process, influencing everything from the way requirements are gathered, how tools and frameworks are selected, how code is written and tested, how products deployed and supported
So what about mobile application development, what's so interesting about that and how is it changing
From my perspective:
The personal computer of our time is in our hands.
It seems ridiculous to call it a phone.
It's a powerful computing platform.
The phone bit of it is just an app, one of dozens (hundreds if you're like me)
Many of the huge disruptive changes that have been anticipated because of the pace of change are being realised through our mobile devices first and foremost
It's being felt everywhere
This is an app I helped produce about 10 years ago .
Written in Java using J2ME
It was launched to around a thousand users and proved very popular. At that stage mobile browsers were almost a waste of time and being able to do general searches of a national business directory was pretty groundbreaking
We built detailed metrics into the app and found that there were a significant number of people who used it intensively. It was clearly making a difference to how they did things.
Unfortunately it was considered ahead of its time and never got launched publicly
I would have been one of just a handful of similar apps in the world at the time
So, a couple of years later in 2007 the iPhone was launched and the year after that, the iPhone SDK. Things have never really been the same since. Apps are everywhere, mobile is turning into a dominant computing paradigm and very few organisations would be able to do without a mobile strategy of some kind when it comes to engaging with their customers and employees.
This is an update to a Margin Calculator app that I first launched in 2009. I wanted to learn Swift and tackle some of the newer iOS features so I spent the Christmas holidays working on this and re-launched it at the beginning of the year. It's got a cool interactive graph and a dynamic sales calculation form which I quite enjoyed building.
In about the same timeframe a couple of guys launched an app called Uber. Their making $10bn a year and their company is worth $50bn.
If you think about how much things had changed in that time it's really incredible, not just in terms of the devices but the change in users' expectations and the businesses that serve them.
Imagine how differently things might have worked out with Telecom Directories if they'd had any idea what was coming.
Things are changing faster now if anything.
This is Microsoft Hololens.
If you're familiar with things like Oculus Rift and other virtual reality headsets it might look familiar
What's not immediately obvious is that this is (or will be) a self contained computing platform and
It combines your computing environment with your physical environment.
Any surface can function as a screen
You can use gestures to interact with 3D objects in the space in front of you.
I'm pretty excited about what the future holds when giants like Microsoft, Google and Facebook are all competing to bring technology like this to market. It changes peoples expectations of the technology.
The future isn't just more of the same any more, its something else, new and unprecedented
and I think smartphones may have an important role to play as well. Driving the cost down for consumers and developers too.
This is Google Cardboard. It uses your smartphone
Its as basic as you can get but it really works.
Transition
and you can get one for less than a cup of coffee.
Something else that I find really interesting is how mobile application development is changing
There's a lot of interest in what's called hybrid mobile applications
To understand that you need to appreciate what it's a hybrid of
On the left you've got Native apps
A good example is the Air New Zealand app
Its a big budget mobile application that produces amazing results
but this has a high price tag and not many organisations can afford that kind of investment
expensive to build, expensive to maintain given the volatility of multiple target platforms
If you developed for iOS and then decided to add Android (or vice versa), you'll end up paying at lease half as much again to re-develop.
On the right you've got HTML5
HTML5 (catch-all term) representing the state of the art for web browser capability. You can produce web apps that work on-line for desktop and mobile browsers. There are libraries that make it possible to product nice responsive UIs that look at home on any platform,
including examples that are nearly indistinguishable from native
The great things here are speed and cost - you can get a prototype working in hours or days
JavaScript is really the driving force here. It's an amazing language that's often underestimated
It allows for new ways building software that many people don't appreciate, using:
functional programming
prototype-based inheritance
Asynchronous code using Promises
Theres an amazing level of innovation here and it takes a lot of effort to fully embrace it and appreciate it.
The client-side code is capable of so much more than a few years ago.
Hybrid combines the best of both worlds using a native wrapper like Apache Cordova that allows HTML/JS apps to be packaged as native apps and access low-level device features
This is particularly interesting for mobile enterprise apps where cost/speed of development and functionality are more important than platform specific polish
the future. Look to tools like Ionic based on Angular
Arrival of powerful frameworks that let you do more in the client app, requiring less of the platform
Enter MBAAS products to serve this type of app
Needs more sophisticated development teams
Can produce amazing results at speed
At Fletcher Building Digital Innovation Lab we've produced 9 apps in 3-4months with a really stunning return on investment using tools like Ionic and cloud based hosting services
Examples of interesting frameworks in each category:
Native:
Objective C +
Cocoa Touch
Java + Android SDK
Swift 1.0
Swift 2.0
Hybrid:
Examples:
jQuery Mobile
Sencha Touch
AngularJS 1.x + Ionic 1.x
AngularJS 2.0 + Ionic 2.0
Web:
Twitter Bootstrap
Zurb Foundation
Angular Material
Sencha Ext JS
Angular JS 1.x
NodeJS
Angular 2.0
React
(Anon) example soap service (20k line message), REST without shchema → trial and error v time consuming
MongoDB Parse - nosql, schema-less
So, if you're interested in driving an organisation to be agile and embracing the accelerating pace of change, you could do a lot worse than taking an interest in whats happening with mobile technology and mobile software development.
Scrum is not Agile, Agile is not Scrum
It is actually IT agnostic
It originated in the design and development of consumer goods
Scrum is a deliberately sparse methodology which is not meant to replace years of IT best practice
Its sparseness gives the reader credit for having common sense
Its interpretation is vulnerable to a lack of this.
Diagram from: http://jesusgilhernandez.com/2012/10/28/scrum-in-a-nutshell/
It’s like a game that follows Bushnell’s Law: …easy to understand difficult to master
Bushnell's Law or Nolan's Law is an aphorism by Nolan Bushnell about video game design:[1]
All the best games are easy to learn and difficult to master. They should reward the first quarter and the hundredth.
Events
· Sprint
· Sprint Planning
· Daily Stand-up
· Sprint Review
· Sprint Retrospective
Roles
· Product Owner
· Development Team
· Scrum Master
Artifacts
· Product Backlog
· Sprint Backlog
· Increment
· Burndown charts
Rules
· Tasks on the backlog
· Prioritized by value
· Sprint: non changing goals
· Done: working software
· Self-organized teams.
Architectural Design
Importance for fast-paced mobile projects
The requirements evolve
The technology evolves
e.g. JS frameworks landscape changes every week
Need oversight from senior engineers with an enterprise level mandate to ensure that projects don't introduce large numbers of components with overlapping functionality and scope
We can’t do that as outsiders, we need to engage closely with development teams and how they use the latest tools and frameworks.
Architectural Design
Importance for fast-paced mobile projects
The requirements evolve
The technology evolves
e.g. JS frameworks landscape changes every week
Need oversight from senior engineers with an enterprise level mandate to ensure that projects don't introduce large numbers of components with overlapping functionality and scope
We can’t do that as outsiders, we need to engage closely with development teams and how they use the latest tools and frameworks.
Architectural Design
Importance for fast-paced mobile projects
The requirements evolve
The technology evolves
e.g. JS frameworks landscape changes every week
Need oversight from senior engineers with an enterprise level mandate to ensure that projects don't introduce large numbers of components with overlapping functionality and scope
We can’t
* Projects (not just Agile ones) more often find themselves working with new tools, technology & frameworks
* more likely to find pre-existing architectural recommendations obsolete or irrelevant
do that as outsiders, we need to engage closely with development teams and how they use the latest tools and frameworks.
We can't be the architectural riot squad. Wading in like enforcers when projects innovate and look like they might do things that aren't strictly in-line with strategy. Project teams will end up working around any barriers:
cite: use of cloud services that empower teams to operate without the blessing of those who control access to corporate infrastructure
cite: the more direct relationship between business units and development teams, giving them more direct access to funding that isn't mediated through enterprise IT.
To exercise the required level of influence, we need to engage with development teams as software engineers and actively participate in the software development process.
This is hard. It's worth it.
The big payoffs are:
* continued technical relevance at a personal level. The kind of relevance that doesn't come from reading about new technology, it only comes from using it to build real systems.
* respect for our recommendations.
We can't ask projects to follow our advice about responsible service development with one breath and dish out obsolete recommendations about application frameworks with the next.
We have to stay current. For me, that means reprising my role as a software developer and working as closely as possible with development teams working with the latest mobile technology as much as I can.
I think there's a version of that, that applies to some extent to all of us.