ted.neward@newardassociates.com | Blog: http://blogs.newardassociates.com | Github: tedneward | LinkedIn: tedneward
"Those who cannot remember the past...
"... are condemned to repeat it."
George Santanyana (philosopher/historian)
often-quoted
... by people who are trying to avoid making the mistakes of history
... usually while they make the mistakes of history
Germany invades France by way of neutral (and unguarded) Belgium
Alfred von Schlieffen, Chief of the General Staff, concocted this plan in 1894; in order to avoid a two-front war with France and Russia, strike a knockout blow against France by sweeping through Belgium (so as to avoid the French entrenchments along the French-German border). His successor, Helmuth von Moltke, lacked his boldness and continually drained strength away from the right flank in a series of decisions. Net result: Germany swept to within 30 miles or so of Paris, but never achieved that knockout blow. The lines were set for 4 years of stalemate.
Close, but no cigar: 4 years of stalemate
Germany invades France by way of neutral (and unguarded) Belgium
Germany tried again in 1940, this time making use of new inventions discovered at the end of World War I: the tank and the airplane. Combining both with motorized infantry, Germany attacked again through neutral Belgium (who believed that after that last debacle, Germany would never try such a maneuver again), along almost the exact same lines as those used in 1914 and 1870. France, meanwhile, had placed its faith in a series of forts along the French-German border, called the Maginot Line; while impressive, Germany had effectively outflanked them and they fell as France did in June 1940, in less than a month of fighting.
France surrenders
Napoleon takes 600,000 men into the steppes of Russia against a vastly smaller army
Wins a costly victory at Borodino
But enters a burned-out (and useless) Moscow
Stages a retreat back to France
And runs afoul of "General Winter"
Returns with only about 5,000 - 13,000 men
Hitler orders almost all of the German Army into the Russian steppes
Besieges Leningrad
survives "General Winter" of 1941
Comes within miles of Moscow
Almost completely occupies Stalingrad
survives "General Winter" of 1942
Russian units cross German borders 4 yrs later
we never make those kinds of mistakes....
we focus exclusively on 'best practices'
and always follow them diligently
international standards!
never use waterfall!
outsource your development!
microservices!
... in fact, if you Google "software best practices", you get a lot of hits
like using the programming language Ada!
or HTML 4! (because HTML 5 is not an international standard)
or C#! (but only 2.0)
because Agile projects don't fail!
"47% of agile projects are late, have budget overruns, or result in unhappy customers and on top of this a further 11% of agile projects fail outright and end up delivering nothing (Scrum, 2021)."
because Agile projects deliver better results!
"Agile is all about making sure you build the right product. Agile is not about making sure you build the product in the right way."
https://medium.com/@lucas.majerowicz/how-agile-is-killing-your-software-project-5083770055c3
For each of these quotes... are they for Microservices, EJB, or Oracle Tuxedo?
"Scalability": "Code can be broken into smaller parts that can be developed, tested, deployed, and updated independently."
"Focus": "... developer focuses on solving business problems and business logic."
"Availability": "back-end data must always be available for a wide range of devices... ."
"Simplicity": "... provides simplified development of large scale enterprise level application."
"Responsiveness": "... enables distributed applications to scale in response to changing transaction loads... ."
"Reliability": "Ensures no single point of failure by providing replicated server groups that can continue when something breaks. Restores the running application to good condition after failures occur."
Santanyana's quote tells us history is important
... but it never actually tells us what about it is important
... or how to view history to avoid repeating it
"The Uses of History for Decision-Makers"
by Richard Neustadt and Ernest R May; 1986
analyzing US government decisions in the 1900s
... and their use of history to arrive at those decisions
... including both correct and incorrect uses of history
... deriving a model of how to use history
an interesting read, particularly 40-plus years later
the Cuban Missile Crisis of 1962
the Social Security Reform of 1983
Carter's "First 100 Days"
defending South Korea in 1950
the Mayaguez Incident of 1975
the Swine Flu Scare of 1976
... (many more)
a "plunge toward action"
"What are we to do?"
overdependence on fuzzy analogies
"This is just like that!"
inattention to the issue's own past
"That's not important now."
failure to think about key presumptions
"Who cares why we're doing this?"
stereotyped suppositions about persons/orgs
"Of course the CIA did it!"
little to no effort to see choices as part of historical sequence
"All of this happened for no reason!"
released in conjunction with Sun
"it's Java!"
made to look like Java
"it's Java!"
ran in the browser, just like Java
"it's Java!"
for a given situation you want to analyze...
... start by creating 3 columns to capture the key elements
Known
Unclear
Presumed
... explicitly identify any past situations that appear analogous
... and for each, identify the
Likenesses
Differences
... define the objective
"What's the story?" (Goldberg Rule; how did these concerns develop)
time-lines: Start the story from its origin, plot the key trends
ask "journalists' questions": "when, what, where, who, how, why"
... array the options
history has but a limited role here
options are defined by current conditions/capabilities (context)
"what can we do now?"
... complete the sentence:
"For the objective of _____, doing _____ is the best option because _____"
try this for each of the options
remember that these are all bets not answers
...
Javascript!
a prototype-based object scripting language
dynamically-typed
"fields" for object members
holding either data or code
prototype-based inheritance
a prototype-based object scripting language
dynamically-typed
"fields" for object members
holding either data or code
prototype-based inheritance
a prototype-based object language
dynamically-typed
"slots" for object members
holding either data or code
prototype-based inheritance
microservices!
Erlang!
actor-based models
dynamically-typed
object-oriented
message-passing
(typically) executed inside a graphical "browser"
Architect, Engineering Manager/Leader, "force multiplier"
http://www.newardassociates.com
http://blogs.newardassociates.com
Sr Distinguished Engineer, Capital One
Educative (http://educative.io) Author
Performance Management for Engineering Managers
Books
Developer Relations Activity Patterns (w/Woodruff, et al; APress, forthcoming)
Professional F# 2.0 (w/Erickson, et al; Wrox, 2010)
Effective Enterprise Java (Addison-Wesley, 2004)
SSCLI Essentials (w/Stutz, et al; OReilly, 2003)
Server-Based Java Programming (Manning, 2000)
First two are from J2EE/EJB
Second two from Tuxedo
Last two, microservices
... but really, all six were said about all three