The Tribe Metachallenges in Software Development
Total Page:16
File Type:pdf, Size:1020Kb
Place Your Bets What will be the next breakthrough software development platform? Billy Hollis Agent Provocateur @billyhollis billyhollis –at– live.com There are 10 types of people. Those who understand binary and those who don’t. I am not a member of the tribe. I’m more like an anthropologist observing the tribe. I don’t like writing code. But the tribe does. I talk to users and executives a lot. Their concerns are often very different from yours. For example, for applications that require significant investment, executives expect ~8 year lifespan. The tribe works fine – until a wave of radical change hits them • 1985 – IBM owns 70% of IT spending • 1999 – IBM is irrelevant, Microsoft controls 40% of IT spending, driven by Windows • 2010-2013 – Modern UI takes hold (iOS), open source proliferates, browser-based software predominates • 2017-2019 – the Cloud starts its ascension… Every previous transition radically changed the way software was developed • New languages • New tools • New architectures But there is a period when transition is resisted Spry Angular Dojo Kendo Breeze React Knockout Bootstrap JQuery Socket.IO Wakanda Polymer From my buddy David Neal He sells these on Amazon. He’s selling a lot of them. Or you can buy this coffee cup “Javascript at a point becomes kind of unmaintainable. The fault basically lies in the language itself.” John Robertson, Microsoft executive, spoken in a session at Build 2015 Other indications • “Page rot” – web pages created ten years ago with simpler technologies still work fine, but pages created two years ago don’t work because one of the n libraries they use has changed • Lack of entry point for new developers • They have to learn too much just to get started in todays HTML5/JS world • Learning to program in JavaScript is suboptimal • Browser incompatibility is a struggle • Tensions between web and native (React Native, WebAssembly, PWA) • Decision maker disenchantment increasing A question: And I need an honest answer. How many of you feel overwhelmed by the complexity of today’s application development and the constant, unrelenting change in development technologies? If you are, I guarantee that the decision makers in your company are too Most don’t understand what you do. You might as well be stirring a cauldron and saying magic spells. Visual Studio Difficulty How easy it looks in Microsoft demos 1998 2000 2002 2004 2006 2008 2010 2012 2014 2016 2018 In a cloud world, is the answer to layer on more complexity? • AI APIs • Voice APIs • Bot APIs • 3D APIs for virtual and mixed reality • Distributed events (Azure Message Bus, Signal R, etc.) • Telepathic APIs (OK, that one’s not really available. Yet.) Voice, Maps Plumbing layer 4 Plumbing layer 3 Transportation Plumbing layer 2 Routing Maybe some Plumbing layer 1 (Azure function) business logic buried in these layers Data access and modelling somewhere Chat bots Cloud APIs You may not see these problems as clearly as your management • For many developers, as long as someone is paying them to write code all day, they don’t care about anything else • But I talk to development managers and higher executives, and I can tell you that they are more dissatisfied each year • They just don’t know what to do about it yet Right now we’re patching our way around some of the worst problems • TypeScript, for example But the cloud is a platform change, and that will almost certainly lead to a completely new way to do software development Other forces driving change • Necessity for apps to support multiple platforms • Xamarin is currently the leader for that capability, but has deficiencies • The changing role of data • The emergence of AI • Cloud based engines Changing role of data Up to now Going forward • Lots of screens to enter and edit • Data comes from many sources data • Most data no longer entered by • Up to 60-70% of pages/views are a human “CRUD” • “CRUD” drops to smaller fraction • Data often used in searches to of pages/views find a master record and its • Data often used for analysis and detail records decision support • Data commonly displayed in • Data commonly displayed in data grids ways that make it easy to consume Changing role of data • The cloud makes it easier to bring together data from different sources • Some are traditional databases, with text-based data about entities • Others are based on sensors, measurements, activity counts, and other ways that data can be automatically created and stored Using AI in business apps • Image analysis and recognition • Facial recognition • Language translation • Detecting customer dissatisfaction or unprofitable customers • Calculation of risk • Shopping recommendations • Fault prediction and maintenance management Cloud-based engines • Besides AI services and engines, other engines with more traditional logic become more feasible with the cloud • Tax calculation • Medical diagnosis • Drug interactions • Malware detection • Block spam calls • Data validation of various kinds • Workflow management An indicator of need for change – multiplicity of new tools and platforms Browser iOS Android Windows native Xamarin ✓ ✓ ✓ (for comparison) Google Flutter ✓ ✓ Uno Platform ✓ ✓ ✓ UWP Kony AppPlatform ✓ ✓ ✓ WinRT PowerApps ✓ Zoho Creator* ✓ Blazor ✓ Google Flutter • Very compositional – oriented around assembling the app by putting pieces together • Uses the Dart programming language • Uses Android Studio as the development environment • Targets iOS and Android today, but likely to target other environments later To get started… • Go to flutter.dev • Several steps for complete setup • Flutter doctor is your buddy – tells you want you still need to do • Key steps – Install Android Studio, and install plugin for Flutter development • All the stuff you learned about emulators using tools like Xamarin apply • Also nice to have a connected device. Uno Platform • From nVentive in Montreal – fairly large company • Uses XAML as its UI markup • A subset of Universal Windows Platform (UWP) XAML • Targets all major device/OS platforms • Use Visual Studio for development environment • C# is the programming language Targets • Windows via compile to UWP native • iOS and Android via compile with Xamarin techs • Browser via WebAssembly • Blazor uses WebAssembly too To get started… • Visual Studio 2017 or 2019 • Need to install extension for Uno platform • Got to http://platform.uno Kony AppPlatform • Includes Visualizer for front end development and Quantum for back- end cloud development • Visualizer is built on top of Eclipse • JavaScript for what is effectively code-behind (front end and back end) • Works best with their own cloud back end • Development experience for multiple platforms is pretty good • I did some videos for it last year • First one at http://bit.ly/KonyPWAvideo1 To get started… • Create an account with Kony at kony.com • Go to https://www.kony.com/get-started/ • Download and install Visualizer • Sample cloud data will be available • Use the “Hikes” capability to learn to use the dev environment Microsoft PowerApps • Part of the “Power Platform” to build business apps • Targeted partially at users, letting them build low code / no code apps • Based on their work in Dynamics • Target is HTML / browser based • Responsive design allows usage on mobile devices • PowerApps Studio to create simple apps • They call these “Canvas apps” • Other designers and capabilities for more complex apps, including a “site map” based designer To get started… • You must have a Microsoft account associated with an organization • That usually means an O365 account • Random email won’t do to create account • Go to http://bit.ly/PowerAppsGS • That will tell you to go to http://make.powerapps.com Zoho Creator • Intended for users, not developers • Fast creation of web sites with some data • Lots of pre-written pieces, easy to integrate to your app • Intended to produce simple apps with no code To get started… • Go to https://www.zoho.com/creator/ • Set up an account • It’s pretty self-explanatory from there • Walkthrough of the basics • So easy, even a vice president can do it Blazor • From Microsoft • For client side, single page apps • Razor components, which combine HTML and C# • Visual Studio for dev environment • App execution via WebAssembly, which runs on the client and executes compiled C# code To get started… • Go to http://bit.ly/BlazorStart • You’ll need .NET Core 3.1 • Note that WebAssembly is still in preview Crafting your own strategy • Xamarin still mainstream • Flutter looks good for iOS and Android • But Google is notorious for abandoning things • If you already know XAML, Uno might be a good choice • If you use Dynamics and want to stay in the browser, PowerApps might be a fit • If you just want to slam out a website, Zoho Creator is a low investment choice Which will succeed going forward? Image by ritter99 on DeviantArt Where will we end up? • My vision is a development environment created from the ground up for cloud-based apps and intended to be an entry point to development • It would generate UI automatically for web and devices, based on generalized markup that was mostly filled in via templates • It would integrate cloud capabilities transparently • It would be compositional – putting pieces together would be a primary activity • A subset of functionality could be used with little or no code • Coding would be in isolated segments associated with small pieces App starts with data, UI layout metadata Compositional designer to let user assemble the either defined or - Vertical stacks, app by plugging pieces together and writing small imported panels, etc. amounts of glue code. (works with everything in diagram) Traditional DB schema - Data type - Field name - Nullable flag Web UI - Etc Engine for Plus metadata for app generating generation iOS app user screens - Validation rules (with (data and states such as initial, final) actions) Android app - Label to use in UI User-written components that - Order/priority in UI access engine APIs – minimal code - Role required to access Windows 10 app - Etc.