Simplify | Strategize | Semantify | Cognify
My recipe for innovation and change starts with principles that look at IT infrastructure, systems development and product management differently.
originally published on LinkedIn on January 30,2017
Reduce system complexity, Distill important elements, Abstract component layers
I have written and spoken about simplicity many times.
The reason itself IS simple. Most of the problems and challenges I have encountered in my career have a root cause of a too complex solution design or people process.
Complexity is defined by a combination of many simple things, each of which is transparent and easy to understand. Complexity can quickly devolve into complicated which is often opaque and difficult to understand.
My first questions about a problem seek to break apart complexity make things simpler.
To decompose systems, keep asking the question can it be simpler?
But remember one of my favorite musing of Albert Einstein “Make things as simple as possible, but not simpler” . Wise man
One advantage of simplifying of an issue, set of objectives, or parts of a system is that abstracting the pieces allows teams to view the whole and not just the details.
Abstraction allows viewing things from a different vantage point, a different point of view, focus or dimension.
Different perspectives often provide insights that were not accessible previously.
Complex systems can also be broken down into independent groups, factors, facets or layers.
A major value of this is to separate concerns into independent buckets of activities or capabilities.
This is exactly what numerous business management domains or perspectives do. It is also what technical standards layers and dimensions do.
An often overlooked benefit is that domain specific methodologies and practices have superb applicability to other completely different problems
Similarly complicated and industrial strength methodologies are often to heavy and take too much expertise and reliance on certificated experts.
I on the other had have always a fan of lightweight (lightweight methodology) applications the most useful principles of heavyweight methodologies
For me it provides excellent insight into alignment of maturity models, best practices and business goals, objectives and processes.
In particular it has inspired my use Enterprise Architecture perspectives and business capability mapping.
As I point out in “And Now For Something Completely Different — IT Business Alignment Strategy Map”, Not only should IT activities be aligned with business objectives, but IT system capabilities should directly align with business architecture (BA) value chains.
The guardrails are then well established and gaps in capabilities are apparent, allowing the organization to move faster.
The path to this type of holistic cross-discipline mapping and alignment is simplicity and abstraction.
These lessons have also driven simpler systems design alignment with logical service layers, Microservices, RESTful API’s, Single-Page Apps, Blockchain and Serverless Computing.
These have all been topics of my Pulse Posts.
As the world moves faster, innovations much likewise move faster.
Complicated solutions will be replaced by those that are simple and quick to implement.
Never before has “Perfection is the enemy of good” been more relevant.
Do things on purpose, with desired outcomes, benefits and outputs defined; continually refactor
Using a strategy planning process makes sense, but is most often not employed or even understood.
Strategy can be seen as difficult, tedious, expensive and unnecessary.
But a good strategy provides directional guidance, milemarker waypoints and navigating principles for a journey from where you are to where you want to go.
It is the GPS tool for your project.
Strategy defined as “a plan of action or policy designed to achieve a major or overall aim” suggests that the activity of strategizing should be hard.
Understanding that humans are tactical and not strategic by nature helps to explain why ‘strategery’ is hard.
I find it helps to remember this and to first prepare a services questions or self-checks to myself, and the team, to ask to ensure the project / process stays on track.
Strategies are important for most IT business efforts and can be high level: deliver SaaS product offering to penetrate market XYZ; mid-level: use Cloud services for non-proprietary and non-critical capabilities, or low-level: manage development with Agile Scrum tools and methods.
At all level of activities establishing the desired outcome, the reason why of value to be generated, and measures and metrics of success are appropriate and valuable.
In many areas of business, best practices (or next practices) exist as frameworks and maturity models to base strategic planning and execution upon.
One example is Product Management, where using good practices and a strategic framework can prevent significant issues from arising and reduce project risks.
As pointed out by the AMA , product management needs to be done differently to prevent many of the problems seen:
- Lack of a strategy to guide product development.
- Insufficient understanding of the market to identify important customer problems.
- Lack of a defined and strategically integrated portfolio management system which leads to the selection of the wrong projects.
- Inadequate infrastructure of tools and metrics to support product development.
- Lack of clear roles and responsibilities for both the project and executive team.
Organization, team structure, and culture that are unaligned with the goals of product development.
By defining and using a product management strategy and tools, a project can take a comprehensive, systems approach, to multiple dimensions or aspects of product management.
Each are simpler than the whole and each are made up of simple components.
A strategy that defines what each is to accomplish and how they fit together can result in faster — better — cheaper, aka innovative, software product development.
Over that several years I have developed, utilized and written On Strategy Driven Software Development (SDD) .
Each has their virtues and place, but strategy driven has two unique objectives.
- Define traceable top down software product strategic value chain definitions that are supported by value streams of capabilities supported by software features. The capabilities are processes that are enable people using (software) tools to achieve.
Define capability process workflows with outcomes that drive value generation and deliver to the user or organization.
Each workflow is a set of task that are enabled by supporting software features.
These features (Epic) have outcome benefits and Agile User Stories required to enable each feature.
Each story is a user-centric description of what the software needs to do, or enable the user to do.
By defining traceable links from high level value statements to low level user store is “As a…, I want…, So that…, It works when…” elements the entire system is easier to understand by all team members.
The definition of user acceptance criteria is clear and the comparative return on investment for each requirement is understood.
A major goal of and strategy is to simplify and clarify how all activities contribute to the desired outcome(s).
Most plans however are incomplete, and therefore ineffective, as I illustrate in “How is Strategic Planning like Paint by Numbers?”. A good strategy doesn’t have glaring holes because planner wanted to concentrate on important things.
How often are staff heard mumbling, strategic initiative are great but I have ‘real’ work to do.
Hmmm, if the real work is not in the strategic plan, should it be done at all? I think not.
Battle plans cover all contingencies and direct all resources. Standard Operating Procedures (SOP) are ingrained in the plans, in fact are the foundation of operations.
The major strategic elements may deserve more attention in the plan, but all activities need to ‘fit’ into to pyramid of activities, outcomes and measures.
Of course things change during the journey so managers and team members need to be able to adjust quickly, to refactor the plan.
Plans are made, plans are changed.
The act of planning is often more important than the plans itself.
By using basic strategy planning methods and borrowing from methodologies from other domains, Agile software development project management is simpler, faster, cheaper — Better.
Transform and extend data to produce information; Embed knowledge relationships meaning into graphs
Consider what the word semantic means:
- To make semantic, of or relating to semantics or the meanings of words.
- (software design, of code) Reflecting intended structure and meaning.
- (linguistics) A branch of linguistics studying the meaning of words.
The study of the relationship between words and their meanings.
To Semantify data is to establish data relationships and their meaning. In traditional data models and representation in database systems, a primary purpose is to collect and manage relationships between things the data represents.
The purpose of Relational Database was to create relationships between abstract data model via tables of columns and rows.
The function of normalization was to use First-order logic to decompose entities into data structures that could be easily managed.
This decomposition makes the data digestible by machines.
Unfortunately in the process results in data towers that require high priests of analysis and administration to access and interpret.
While the Relational Model represent relationships between primary key and foreign keys in a RDBMS they do not record that actual meaning, or semantics, of the relationship between things.
As data about things is collected in semantic structures, the additions of new and different relationships begins to turn data into informations.
As we add new property relationships about a Person entity such as GivenName, MiddleName and FamilyName we can infer new relationships. FullName as the concatenation of first middle and last names is the simplest of inferences.
We can also add object relationships that establish connections between entities.
For instance, we can add a fact such as person entity ‘Jeffrey A. Stewart’ resides in the ‘State of Illinois’.
From here we can understand all types of information and potential relationship.
The stack of data in a semantic format are collections or three elements that follow a pattern of Subject-Predicate-Object or Object-Relation-Object.
These patterns can are the elemental types of RDF triples, central to Semantic Web and Linked Data.
For instance a set of triples can be defined for a Person named Jeffrey Stewart:
Person id _jeffreyastewart
_jeffreyastewart givenName ‘Jeffrey’
_jeffreyastewart middleInitial ‘A’
_jeffreyastewart familyName ‘Stewart’
_jeffreyastewart fullName ‘Jeffrey A Stewart’
_jeffreyastewart state ‘Illinois’
The assembly of these simple triples start to paint a picture of _jeffreyastewart, but that is just the start.
The Wikipedia page for Illinois (https://en.wikipedia.org/wiki/Illinois) contains many facts that can be used to draw relationship inferences from.
It also contains numerous links to other entities and is continually curated by an open source community.
The deduction / inference facts can be added to the information for _jeffreyastewart such as
_jeffreyastewart county ‘United_States‘
_jeffreyastewart demonym ‘Illinoisan’
By sementifying the wiki page, the information is structured and accessible via a standardized way.
In fact the DBPage page for Illinois (http://dbpedia.org/page/Illinois) is the result of an automated semantification process.
DBPedia information can be view as an HTML page and it can be accessed in a number of machine formats such as a series of 17712 RDF triples (http://dbpedia.org/data/Illinois.ntriples) or a somewhat human friendly Turtle format.
DBpedia is a complete and continually updated sanctification of WikiPedia.
It is open and accessible by anyone to use in sematification of systems data.
Adding more data to information already gather helps transform information into knowledge management and a critical component of innovation and cognitive computing.
I have written often on these processes and their importance in posts including, “Social Graphs, Linked Data, and of Course Kevin Bacon”, “Automated Serendipity, leveraging linked data improves interconnectedness and growth opportunities” and “The Building Blocks of AI: Cognifying our Apps Bit-by-Bit, Tag-by-Tag, Service-by-Service”.
We can Semantify our data to extend it, transform it, connect it, MeGraph it — “Steal the Best, Invent the Rest”
Discovering and exploring adjacent possible knowledge and embed insight discovery cognitive services
Innovation processes and transformations are the ingredients for much of my work. Innovation is always taking the already known, mixing them together and “Finding Your Next Big (Adjacent) Idea”.
In 2002, theoretical biologist Stuart Kauffman proposed that “systems are able to morph into more complex systems by making incremental, relatively less energy consuming changes in their make up.”
Innovation systems can stimulate further innovation given raw materials of current knowledge plus insights generated of what could be adjacent possibilities.
“The ‘Adjacent Possible’ of Big Data: What Evolution Teaches About Insights Generation” observes “how new insights can be generated in previously unexplored areas.” systematically and that the theory of adjacent possible “extends to the insights generation process.
Knowledge Management systems try to discover new knowledge from analysis of current knowledge.
The step beyond knowledge management is “tools have to help us understand and discover unexpected relationships across all sources of information.”
Enter Cognitive Computing
Sue Fieldman, on Cognitive Computing “There’s a certain amount of natural language involved. That’s absolutely true.
It’s probabilistic, it’s non-deterministic and it drives a lot of IT people crazy because they expect the answer, not some possible answers.
It’s very iterative. It’s conversational.
It’s contextual. It learns in-depths about not only to you but about everybody else using the system, and it keeps getting smarter.”
Whatis.com says “Cognitive computing is the simulation of human thought processes in a computerized model.
Cognitive computing involves self-learning systems that use data mining, pattern recognition and natural language processing to mimic the way the human brain works.”
The begin of Cognitive Computer is often attributed to the 2011 IBM computer “Watson” besting two human champions at Jeopardy.
I referred to this in several previous posts.
The act of Cognifying systems is to enable knowledge systems to begin to have cognition.
- the mental action or process of acquiring knowledge and understanding through thought, experience, and the senses.
synonyms: perception, discernment, apprehension, learning, understanding, comprehension, insight, reasoning, thinking, thought
Cognitive services are increasingly available to enable system enhancement and progress beyond expert (rules based) systems.
IDC’s predicts that, “by 2018, over 50% of developer teams will embed cognitive services in their apps” this is what I am referring to Cognify systems.
Remember that complex is made up of simple.
Knowledge is the result of layers of information and the ability to extend and infer.
Wisdom occurs when dissimilar things are compared and new understanding or insights are discovered.
Using the principles of Simplify, Strategize, Semantify and Cognify people, process and tools can deliver previously unknown innovative capabilities.