March 14, 2019 - Processes and Software.
A small word with revolutionary impact (if well-executed).
Processes.
Essentially, everything is a process, or part of a process.
If you can get a handle on your processes, and model them well, the whole world opens up.
I call this "Intellectual Cartography".
Processes are part of Systems, and roughly speaking run across structures/environments.
There are "active" parts of Systems, which are dynamic during operation.
"Software Engineering" is a mental model which is highly distorted and encourages a very poor approach to software systems.
Not only that, even if it is "Engineering", the obsession with this part of a Program makes it clear how people using the term are happy to ignore the majority of a Program operation.
What works better?
- "Systems-First", inside of a Product or Operation
If you can get processes sorted out and then start dropping into lower levels of detail, you should eventually land in "code" (software programming).
This is a "Drop-In" approach, instead of having a vast gulf or chasm between "Software Engineering" and the "Business" (customers/owners) of the Product or Service.
An approach and set of models that are "shareable" are urgent to make this happen. One of the major failures of RUP for example, is that customers could not read the models - they were opaque and unreadable by the very people who needed more than anyone to understand and refine them.
Barriers?
- leadership at all levels (including Chief Programmers, AKA "Principal Software Engineers") are against anything outside their micro-realm.
- inability to understand what Systems and Processes are, and far far more difficult is understanding how to *Integrate* them across teams and products
So the challenges are social, not technical. Time pressure, inability to see the long-term value, the delusion they are going "fast" (like a "Sprint"), and lack of skills and available domain experts roadblock these efforts.
A lot of these principles are decades old, from things like Lean Manufacturing (such as VSMs), and long ago with less technology, people engaged in person and dealt with physical entities.
This forced a shared understanding and integration. In today's software world, the tools and the lack of physical entities enables a never-ending chaos.
It is no surprise that a constant stream of "methodologies" have appeared over the last 4 decades to "solve" the problem. Scrum is the current fad that is in vogue. Once these methods become "obvious" as the "right answer", all real thinking is banned, and Doctrinaires are placed in charge, who rule with blind rigidity.
No amount of reason, much less asking questions, will be tolerated.
Current solutions are mostly built around:
- the "magic" process/method/philosophy that will make a perfect product in minimum time and cost, no matter all the other critical needs for a successful project
- the idea of the "super-engineer", who uses magical coding powers in super-exciting-and-advanced programming languages (and means you can ignore everything else that's important in a Program)
Obviously neither of these solves anything beyond a very narrowed and localized problem across an entire Program.
What are some of the business benefits from using Intellectual Cartography to enable optimized Systems, Products, and Programs?
- Shared Understanding of the business and the associated processes and systems (dramatically reduces training and confusion; increases morale, quality, and results)
- Visual models leave "no room to hide" processes/models that are nonsense, disconnected, conflicting, etc.
- Requirements Definition & Management
- Processes that optimize Program and Project work, and enable visibility into the development/operation workflows (not just isolated textual "Cards")
- Integration across efforts, teams, products, activities
- Impact Analysis
- Optimization/Improvement Analysis
Intellectual Cartography is a super-power, which can revolutionize approach, cost, efficiency, morale, clarity, innovation, integration, quality, etc.
It is as obvious as a fleet of delivery trucks needing street maps, yet is not recognized as being just as critical for Software Systems.
I would like to see islands of sanity start to tackle this problem and demonstrate the value in it, and then see if it can be expanded to the larger industry, and eventually to all human endeavors, such as Governance.
Thank you for reading.
In the future I'll outline some items that are key to success on large-scale complex Programs, such as:
- Process Flows
- Program Cycles
- Structural models of the environment
- Lifecycle models
- Roles/Rules/States
- Nomenclature
- Trees (hieararchies, parentage)
- count-to-count (like 1:m)
- Exception Flows
- Business vs Technical
- Build vs Operate
- Cross-Functional joint-decision points
- treed reporting
- Authority roles
- Single-source authority reference
- Request-vs-Offer integration dates
- Goals vs Objectives vs Requirements
- Vision/Mission/Values
- Discovery/Definition/Build/Operate-Support
- Program Roadmaps (Releases/Milestones/Integrated-Timelines)
- Maturity Model, Program Phases
- KPI, TPM, BI, Metrics, Dashboards
- Communication Management
- Risk/Issue Management
- Change Control
- Program drivers, assumptions, constraints, rules, standards
- Workload Management
- Outside Review
- Program/Project proposal management
- Coupling & Cohesion
- SLAs
- Powers of Ten
- HDI (Human Decision Improvement - any decision, not just technical)
Comparative Decisions (system, criteria, candidates, selection, readiness)
Human Biases, Agnotology
Four Questions (good/bad do/not-do)
Criticality - Data Science secondary to System Models & Bias/Tradition
- Trade Studies (technical)
- Technical Readiness
- Shared Services/Platforms/etc
- Workforce Training, Rapid/JIT Learning
- Decision Processes and Tracking
- V&V
- etc.
October 04, 2018 - Shaaneesh: Cloud Services Master Model.
Revising visual model - will be posted by the end of March.
The "Big 4"
The Enterprise leader for decades - lost their way recently with the "Watson" obsession, a far larger player in public cloud than most software people realize.
It also has by far the largest commitment and foundation on OSS. Originally based on Cloud Foundry.
Sadly, since the big rename from "Bluemix" (for Halloween 2017, after renaming from "Softlayer" for Halloween of 2016), you can't google the name of their cloud offering...
IBM Cloud
The dominant player for the software masses.
A stockbroker turned bookseller beats 80,000 experts at Google - by far.
Amazon Cloud - AWS
The former "Evil Empire" has changed a lot and in today's world is closer to the good guys than bad.
They are also *not* trying to take market share from their major customers, and do not charge a fee for .NET (like Java does now).
Microsoft Cloud - Azure
A web crawler company who loves monopoly power and vacuuming up every part of your life for profit is trying the enterprise services market.
Other than their projects which have gone big in the OSS world (Kubernetes and TensorFlow; they left Hadoop behind long ago with GFS), probably the least OSS-based cloud.
Google Cloud - GCP
The long-time giants
HP tried and gave up. Based on Cloud Foundry.
HPE Helion Cloud
Century Link tried and have essentially given up. Based on Cloud Foundry.
CenturyLink Cloud
General Electric tries in a specific area (Industrial IoT with Analytics). Based on Cloud Foundry.
GE Predix
Oracle tried, gave up, and is now trying again - new platform new name.
Oracle OCI (Oracle Cloud Infrastructure)
Other Vendors
The major player for Cloud from China.
Alibaba Cloud
The most popular for private dev projects, very affordable dedicated VMs, great documentation.
A VPS offering which competes with AWS Lightsail, Azure VPS, GCP micro-instance, etc.
Digital Ocean Cloud - DO
Note this is the only non-vendor link in this posting, but I liked it and thought it could help private devs:
"Always Free" machine on GCP
The Linux giant has a Cloud offering, built on Docker and Kubernetes. Company was acquired by IBM near Halloween of 2018.
Code is OSS as "OpenShift Origin". It is PaaS level, not IaaS, and can run on top of RHEL, CoreOS, VMware, KVM, AWS, or OpenStack.
Runs on-prem as "Container Platform", or on AWS as "Online" or "Dedicated".
Red Hat OpenShift
Built on SmartOS (based on Solaris/KVM, and not to be confused with Red Hat Container Linux/CoreOS).
Company was acquired by Samsung in June 2016.
Samsung - Joyent Cloud
Pivotal Cloud Foundry. Tri-backed by Dell, EMC, VMware.
Pivotal Cloud - PCF
Hard to even tell if they have their own offering, or just help manage your software on other clouds...
As one of the founders of OpenStack, that is their platform for any cloud offerings.
Rackspace Cloud
The leader in the commercial PC-based virtualization/hypervisor market (they offer many cloud products; did not spend the time needed to sort them all out).
They do offer an interesting product built on AWS Outposts (similar to IBM Cloud Private or Azure Stack), for an on-prem platform.
They also offer a tested package of OpenStack to run on top of VMware.
VMware Cloud Foundation
VMware on AWS Outpost
VMware OpenStack
The company behind Ubuntu Linux uses OpenStack for their (on-prem only) cloud platform.
They also offer professional services to help you run your own OpenStack platform.
Canonical BootStack
Canonical OpenStack
Other Cloud
Major player in Cloud standards, and other projects too, such as Kubernetes, gRPC, etcd, etc.
Cloud Native Computing Foundation - CNCF
Was the first major PaaS project, and was adopted by 4 of the long-time giants (IBM, HP, GE, CenturyLink).
Cloud Foundry - CF
An effort to build an OSS cloud platform. Started in 2010 by Rackspace and NASA.
Long-time giants had a lot of interest and were supporting, questionable future for public cloud, or for wide usage as an on-prem cloud platform.
OpenStack