Brown-nosing is commonplace in hierarchical organizations. It is also known as ass-kissing, throne sniffing, and sucking up. Here is a proper definition: Read the rest of this entry »
Highly complex systems like societies, economies, and evolution are also non-deterministic because they represent unpredictable life forms interacting with each other in chaotic ways. Long term weather forecasting, hurricane prediction and earthquake prediction are similarly complex and non-deterministic. These large-scale systems have emergent behaviors where we can create probabilistic models that predict the range of outcomes and likelihood of outcomes, but never the exact outcome. Why? There is uncertainty inherent in the interacting elements (i.e., humans with free will, random or unpredictable acts of nature, mutations, innovations, etc.). This does not mean that these predictive models are not useful. It simply means that we must reason about things differently and understand both the distribution of outcomes and the uncertainty inherent in that distribution to make better decisions.
Successful software outcomes are highly dependent on continuous negotiations, accurate predictions, value judgments, innovations, team collaboration, architects, agility, market conditions and user demand. Success is much less dependent on quality of contracts, Gantt charts, critical path schedules, earned value measurement, laws of physics, material properties, mature building codes and certified engineers. Software delivery is more a discipline of economics than it is of engineering because it is a complex endeavor that is inherently non-deterministic…there is much more uncertainty.
The thesaurus at Dictionary.com defines a wisenheimer as:
Main Entry: smart-aleck
Part of Speech: noun
Definition: wise guy
Synonyms: bigmouth, know-it-all, smart ass, smarty-pants, wiseacre, wiseass
The principles of agile software development are more than 10 years old. Many practical ideas have been, piloted, practiced, and evolved. Agile practices are now neither novel nor extreme. What differentiates the enterprises that significantly improve software productivity from those that flounder? One significant discriminator in achieving scalable agility is transforming to an appropriate governance model that complements the dynamics of agile principles and practices. We call it economic governance: a quantified foundation for planning, decision-making, measuring, and assessment that resolves uncertainty earlier and unifies constituencies on managing a shared set of expected target outcomes.
My Blog posts for the next couple months will be extracted from a draft white paper I am writing with Murray Cantor on development analytics. Here is the abstract.
The trends in changing executable software baselines and particularly the cost-of-change trends are the true measure of the agility. Agility means changing easily so we need to quantify change trends. Both architectural integrity and process effectiveness will drive the cost-of-change. Therefore, agility is NOT just a process attribute, it is equally, if not more, an attribute of good design.
For many people, a key obstacle to communicating better is the tendency to be verbose. We use several words when we need only one meaningful word. We end up sounding overly long-winded (a self-defining example). Long-winded, a word that has teeth, is memorably self-descriptive. It means verbose or overly wordy in getting to the point. Overly long-winded therefore means overly, overly wordy. Why take the emphasis off a great word like long-winded by adding a redundant word like overly?
To transform successfully from conventional engineering governance to more agile economic governance requires a significant cultural transformation. This is best achieved through the pursuit of one simple change theme: Integration testing should precede unit testing. In practice, this theme is overly simplistic and a bit stark: Integration and unit testing actually proceed in parallel. However, to accelerate the transformation to increased agility, it is best to simplify and clarify that the highest priority is to achieve intermediate milestones of executable test cases of integrated functionality.