Featured Post

Friday, December 23, 2016

A Critical Look at Agile Software Development

Since the Agile Alliance formed and met at The Lodge at Snowbird Ski Resort in February of 2001 to explore better ways of developing software, an apparent love affair has developed with agile practices in the Software Engineering Community. Yet it is particularly strange that there is little in the way of critical analysis and evaluation of agile methods and whether the net result of the adoption of agile brings those adopters any measurable benefit.  Could agile be little more than a shell game and sleight of hand? Regardless, we are concerned that the lack of serious critical scrutiny of agile methods may be contributing to far greater challenges among Software Engineering organizations throughout the world than they started with.  To be certain, there has been to date a dearth of critical academic scrutiny of Agile or the multitude of self-proclaimed Agile Methodologies and the practice of Agile within the profession. Such a critical perspective is necessary.  An objective perspective is needed.  The authors do not intend to simply take a contrary perspective to those of the various proponents of Agile.  Instead, we wish to provide a critical assessment of the Agile Software movement and report a purely objective assessment of Agile Software Engineering in concept and in practice.

1. Introduction

The Software Engineering world is rather in love with the concept of Agile Development.  We cite and reference Dingsøyr, et al.[1] who published a paper trumpeting A Decade of Agile Methodologies, though the intent of this paper is to laud the success of Agile Methodologies versus conducting critical research as to the advantages and disadvantages of Agile Methodologies.  There is a large community of Software Engineers who see Agile as a magic bullet that will solve every problem under the sun.


We will proceed on the Converse assumption.  First, we will examine the Agile Manifesto itself and look for fallacies or pitfalls in the original document.  Second, we examine the most prevalent approaches claiming to be agile and examine the strengths and weaknesses of each approach and attempt to distill whether these agile methods are producing measurable results that differ meaningfully from the results teams achieved using more conventional methods.  Finally, we conclude our critical analysis of Agile Software Development and summarize our findings.

2. The Agile Manifesto – Strengths and weaknesses


Clearly, the team that produced the Agile Manifesto vetted their concepts in a rather formal manner.  They attempted to provide a set of principles -- in the Aristotelian sense -- that Software Developers would employ and that would improve the way that they worked.  Each member of the group assembled to draft this document brought with them a set of experiences and a vision of what they believed constituted best practices in Software Engineering.  In the end, they published a document not unlike the United States Constitution or the Communist Manifesto.  Clearly, the Agile Alliance was keen on starting a revolution against traditional methods.   What is not clear is whether Agile in practice actually solves any real problems or if it results in a superior outcome.  Working software is not a guarantee of any material results.  There is an awful lot of working software in the world that never gets used or which is used incorrectly thus negating the overall benefit of the software.  The Agile Alliance missed the point with the focus on working software.  It is far more important that the software be intuitive, adaptable and maintainable over the full product lifecycle.


One post on “agilemanifesto.org” reports the history of the team, self-named “The Agile Alliance” that drafted the Agile Manifesto on February 11th-13th of 2001, and states, “…a bigger gathering of organizational anarchists would be hard to find, so what emerged from this meeting was symbolic – a Manifesto for Agile Software Development – signed by all participants”  The result has been somewhat striking in that there is scarcely a software engineering team throughout the United States that does not aspire to be an Agile Team.  It is not absolutely clear why Software Engineering Teams are striving to evolve their methods from conventional techniques toward agile methods.  Nor is there any empirical evidence that Agile methods improve software engineering in a tangible manner such as reduced overall cost.  On the contrary, it would appear by the enormous size of a typical agile software engineering organization that Agile has accelerated more than the software development process, it appears that Agile is vastly superior to conventional methodologies in using up whatever financial resources are available. It is also unclear how agile techniques are evolving the role of the Software Engineer within the profession and whether the outcome is actually desirable.


3. Strengths of the Agile Manifesto


The Agile Manifesto is a brief document stating that the authors were uncovering better ways of developing software by doing it and by helping others to do it. Clearly the 4 core values that they focused on are intriguing.  We will explore these first:

1)      Valuing individuals and interactions over processes and tools
2)      Valuing working software over comprehensive documentation
3)      Valuing Customer collaboration over contract negotiations
4)      Valuing the ability to respond to change over following a plan

Objectively, there doesn’t appear to be anything particularly subversive about these modest principles.  Clearly there is notable good in valuing the individuals and their interactions over the processes and tools.  To wit, some organizations, especially large organizations had, at that time, become so overwhelmingly stagnated by process and governance that it became prohibitively difficult to get any real software developed at all.  We applaud the work of the signatories and admit that the emphasis on process that was the norm in the 25 years prior to the writing of the Agile Manifesto had reached a threshold of being stifling and often impeded the development of software products. 

Valuing working software over comprehensive documentation sounds pretty good, but we must pause to assess the implications, namely: Is this a good principle?  We have doubts which we will examine in the next section. 

Valuing Customer Collaboration over Contract Negotiations also sounds good insofar as we feel better about Collaborating with a Customer versus engaging in Contract Negotiations with that Customer, but at this too requires further analysis.

We also agree that it is important in many situations to be able to deviate from a plan in order to respond to changes that were not anticipated at the outset of a software project.  Such changes are ultimately guaranteed to occur in all but the most trivial software engineering endeavors.

Thus, on the surface the Agile Manifesto appears to be a rather intriguing document with generally good intentions.

4. Pitfalls of the Agile Manifesto


There are several fallacies and pitfalls associated with Agile Development in practice today. We trace these pitfalls to central omissions in the Manifesto:

1)       Agile methods turn over much of the systems analysis, design and technical architecture to software engineers/developers who may not have the proper skill set to analyze, design or architect such a solution. More often than not these individuals are sequestered from the users of the software and even the key stakeholders who are on point for the system requirements thus there is rarely any means to achieving effective requirements analysis and reaching a clear understanding of the solution domain.  The Agile Manifesto does not discuss the vitally important concern of systems architecture. 

  •        Agile practitioners tend to take the quintessential square peg of solution requirements analysis and stuff it into the round hole of a 2-week sprint.  For the most trivial of information technology problems where the teams have access to the system owners and key stakeholders, the time-frame may be acceptable, but for more interesting problems, it is not. Examples where two-week sprints work in opposition to the business need include

    1. A quoting system for insurance products, which demands extensive information gathering, and which is governed by complex actuarial tables and regulations is a far-fetched goal for a 2-week investigation.
    2. The solution requirements for the guidance and anti-collision systems for a self-driving automobile.
    3. The analysis of a system that uses human genome mapping to aid in the development of medications for human diseases also should not be packaged into even a series of 2-week iterations – this is an entirely unreasonable expectation.
  • Agile also tends to bracket engineer learning cycles into these two-week intervals.   In reality, some learning takes more time than 2 weeks.
  • Agile is not an architectural discipline even though it clearly requires tremendous architectural discipline to implement the requisite continuous integration processes which are at the core of most agile practice and embodied in the statement by the signatories, “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”
  • In fact, Agile practitioners have widely learned that Agile methods in practice violate the first and over-riding principle of the Agile Manifesto, namely: that of valuing Individuals and interactions over processes and tools.” If we are to be honest with ourselves, Agile techniques the world over are emphasizing processes and tools even more than conventional project philosophies and methodologies.  An important maxim is suggested: When adopting agile, avoid the adoption of complex processes and tooling like the plague!
  • Too, it is foolish to believe the second principle of the agile Manifesto: that of valuing “Working software over comprehensive documentation” Teams that forego comprehensive documentation are doomed to a vicious cycle of software artifacts that need to be rewritten far too soon after they are delivered, as they will have failed to capture important knowledge relating to the modules that were developed.  Moreover, Testing, even exhaustive testing is not a replacement for comprehensive system documentation, nor is it a substitute for a thoughtful and carefully considered systems architecture that takes into account the functional and non-functional requirements of the solution.  Poorly documented products are almost always used incorrectly!


In the best-case scenario, Agile practices place solution architecture responsibilities are in the hands of a software architect who is secluded from the software engineers, and the software engineers must blindly trust that the analysis of the solution requirements was performed correctly.  Assuming so, they can proceed to build a solution that fits the need. Otherwise, the developers are routinely foisted into the role of back-slope architects cleaning up the mess made by the Software architect whose work is not vetted.  This is most often the crux of the problem:

1) Companies frequently do not employ software architects and do not consider the importance of preparing a sustainable software architecture
2) Companies place the responsibility for defining the software architecture in the hands of individuals who are either poorly suited to the role or who lack access to the sponsors and key stakeholders of the solution.
3) Companies are relying increasingly on Software engineers on agile teams to back in to a solution architecture that will satisfy the needs of the business and we see this as fraught with disaster.

5. Dominant Agile Methods


There are several dominant agile approaches that have been widely adopted within Software Engineering teams over the past 16 years:

  • eXtreme Programming (XP)
  • Scrum
  • Lean Software Development
  • Crystal Methodologies
  • Feature-Driven Development


            We will examine each of these methodologies in detail in the following sections.

Extreme Programming

    This methodology is predominantly focused on pair programming; however, eXtreme Programming is also underscored by a formal methodology that emphasizes ceremony and checkpoints referred to as feedback loops common to most traditional software processes.  The process diagram for Extreme Programming (below) seems to be quite busy, and seems to add pair programming solely as an afterthought




Scrum


Scrum and its derivatives which include SAFe Agile (an acronym for Structured Agile Framework for Enterprise) are among the most process- and ceremony-heavy of the agile methods.  While, most Scrum teams disdain comprehensive documentation, they employ a broad complement of tooling including tools for continuous integration, test driven development tooling and with increasing frequency they choose to implement convoluted release management and branching strategies which would seem to be entirely contrary to the first principle of the Agile Manifesto, it makes us wonder if Scrum methods are even considered “Agile” by the members of the Agile Alliance.

Lean Software Development

The Lean Software Development concept was developed by Mary Poppendieck and Tom Poppendieck. Their approach presents traditional lean principles as typically found in manufacturing, in a modified form, as well as a set of 22 tools and compares the tools to agile practices. The Poppendiecks' involvement in the Agile software development community, including talks at several Agile conferences has resulted in such concepts being more widely accepted within the Agile community.  Clearly the Poppendiecks are interested in marketing their methodology more than they are interested working software or any of the other principles of the Agile Manifesto.  It seems most process heavy, and therefore, contrary to the first principle of The Agile Manifesto to require the employment of 22 tools to achieve agile practices. Lean Software development would be intriguing if not for these 22 tools needed to employ the methodology. And the authors have not observed any teams actually adopting this methodology in practice 

Crystal Methodology


The Crystal Methodology is an encompassing collection of eight different project lifecycles or methods; however each reflects 7 common characteristics:
1.   Frequent delivery
2.   Reflective improvement
3.   Close or osmotic communication
4.   Personal safety
5.   Focus
6.   Easy access to expert users
7.   Technical environment with automated tests, configuration management, and frequent integration
The focus on frequent delivery and frequent integration in Crystal Methodology is a concern as we have observed that all approaches that focus on Continuous Delivery tend to suffer from the inevitable complexity that Continuous Delivery implies. Notwithstanding, the emphasis that Crystal Methodology places on reflective improvement and personal safety are admirable.  Nevertheless, we have observed in practice that when Personal Safety and open communication are valued, there is the occasion for highly negative influences to monopolize the time of the team thus contributing to bottlenecks and reduced team throughput and performance. Nevertheless the value placed on easy access to expert users is a mitigating factor that is likely to further advance projects employing Crystal Methodology.  We have employed technical environments with automated tests and configuration management and frequent integration and release cycles.  What we conclude is that each software product must be architected with these activities in mind and when software is architected to support such an environment and such processes and is founded in stable architectural patterns, there is no better approach to building quality software 

Feature Driven Development

After examining the remaining approaches to agile we finally arrive at Feature-Driven Development.  FDD is founded in Peter Coad’s concept of Software Features, where a feature similar to a use case in the context of the Rational Unified Process (RUP).  The major activities of FDD include:

1)      Develop an Overall Model
2)      Build a features List
3)      Plan by feature
4)      Design by feature
5)      Build by feature

Each of these steps or activities produces a defined deliverable.  Most important the Feature List is the product of step 2 and is a governing document for the entire methodology.  FDD unlike the other methodologies reviewed here actually incorporates a formal Requirements Analysis process (termed Requirements Envisioning) as part of its Iteration 0: Envisioning, which consists of Initial Requirements Envisioning and Initial Architectural Envisioning the team then transitions to Iteration Modeling followed by Model Storming and Test-Driven Development, which comprise the parts of an Interation 1: Development activity.  Though FDD also has substantially more process and ceremony than indicated by the first principle of the Agile Manifesto, it is clear that the concept of FDD provides a more transparent process than the remaining dominant Agile approaches.  Moreover, it appears that FDD is rooted in the Coad and Yourdon methodology of Object-Oriented Design and incorporates practices that we view as similar to Rapid Application Development with FDD’s focus on Requirements Envisioning (reminiscent of JRD) and architectural modeling as well as joint design activities (reminiscent of JAD). The emphasis on Test-Driven Development (TDD) is excellent, but in the end analysis FDD, while a self-proclaimed agile methodology is difficult to classify as agile, due to its notable departures from the first principle of the Agile Manifesto.  Still the approach is compelling due to the fact that it appears that the knowledge gained over the course of developing the software is documented, if only informally, thus the knowledge is not lost which seems a cornerstone deficiency in the other methods which we studied. 

The purpose of this critical perspective of Agile Software Development is not to say that there are no benefits and nothing to be learned from agile software practices and methods.  Rather, we must be realistic in terms of what we expect from the adoption of agile methods.  There are some good ideas in the agile manifesto, but there are also ideas that are intrinsically in conflict with the reality of business and software engineering principles.  Good engineering principles should not in practice be shunned solely due to what amounts to religious fervor.  There are no magic bullets in Software engineering and as scientists, we should take exception when our leaders parade through the main thoroughfare of our profession without their knickers, asserting that Agile Software Development is the most beautiful paradigm they’ve ever seen.

In short, before adopting Agile, it is vital to frame the issue carefully and ask, “What problem are we attempting to solve by changing our fundamental approach to how we develop software within our organization?  The authors have observed some organizations that employ the ceremonial aspects of agile – such as the daily scrum -- while keeping much of their traditional waterfall process intact.  The end result is the ability to more closely manage the time-sensitive topics within a project while providing a higher level of communication within the team.  The authors are also familiar with certain CTOs who are strongly opposed to Agile methods in any form as they assert that they have been burned by Agile and will not accept such notions within their organization.  One team in working under a particular CTO was already practicing a lean approach to software engineering, which was not, strictly-speaking, Agile.  The team simply reported that they were practicing lean software development and truthfully testified that it was not “Agile”. The reality of this team's culture was as follows:
  1. They did not lack documentation of the knowledge gained throughout the development effort
  2. They were not over-burdened with either process, tools or ceremony
  3. They worked together harmoniously
  4. They had tremendous knowledge of the domain in which their products were targeted
  5. They understood their mission and purpose with great clarity

As a result, this team consistently delivered outstanding software and exceeded expectations time and time again.  In the end analysis isn’t this the reality that the Agile Alliance was really targeting?

Leaders and leading researchers in the Software Engineering discipline must strive to keep in front of the trends in the profession and caution practitioners from dealings with snake-oil purveyers and hair tonic salespeople.  The tremendous flocking to agile that we observe throughout the profession should be a cause for alarm.  There has been no legitimate vetting of Agile practices and no metrics to help practitioners to make an informed decision whether Agile offers and tangible benefits in terms of cost or time to market.  Without such data points there is no way for software engineering teams to make any informed decisions about the advantages or disadvantages of adopting Agile methods.



1Dingsøyr, Nerur, Balijepally and Moe -   A decade of agile methodologies: Towards explaining agile software development, Journal of Systems and Software V85, Issue 6, June 2012 Pages 213 – 221 (http://www.sciencedirect.com/science/article/pii/S0164121212000532)

Wednesday, November 9, 2016

A Meltdown for the Ages - Of Politics Even...

A Meltdown for the Ages - Of Politics Even...
Echos of the New England Patriots infamous meltdown in Superbowl XLII to the New York Giant, We now have another historical meltdown in Sports. This time the Golden State Warriors totally melted down against the Cleveland Cavaliers in the NBA Finals. Turn our focus to American politics and we most recently have Hillary Clinton, the Steph Curry figure in American politics who could do no wrong and remained politically correct at least in her own mind throughout the Presidential Campaign. How did she manage to lose the Presidential Ballot that she has coveted so dearly for so much of her life when it was, according to all of the pollsters well within her grasp?

I have a theory. Contrary to popular belief, Secretary Clinton, former First Lady is not a politically correct figure. She has played the victim in the public spotlight and threw her old man under the bus in the process. As much as we've grown accustomed to this sort of trashy existence through Reality TV -- from which our current President Elect owes his popularity, we are all getting a little tired and bored with real-life drama, and we certainly don't want any more of that in the presidency.

HRC played the "presidential" card in a way that was seemingly effective during the final months and weeks of the campaign, but in the end analysis her abrupt efforts to smear the Donald, much as she smeared her husband during his presidency may have cost her the place in history that she so strongly felt was her destiny.

Don't get me wrong, I am no bell ringer for President Trump. I voted independent this election. I merely want to explain how this analyst scores the campaign. Clinton had the media doing her bidding almost since the beginning of her campaign. Moreover, she had the loyalists within the Democratic party - down to the last registered Liberal in the Country - eating out of the palm of her hand. I cannot tell you how much intolerance that I endured from my leftist friends who were supportive of Secretary/Senator/Former First Lady Hillary Rodham Clinton. The thought that I would not support her as I supported her Husband nearly 3 decades before was unimaginable - a point of contention and even damaged friendships and familial relationships.

Enough about me. The question that I'm here to answer is: how exactly did this Meltdown begin? First, we must recall the smear campaign that she waged against Donald Trump. All of the advertising that Mr. Trump was not a role model for our daughters. While Mr. Trump may very well not be the role model that we need for our daughters. What Father or Mother in their right mind could conclude that HRC was that desperately needed role model? Mr. Trump parried that attack perfectly, by not responding. Second, and moreover, HRC was so visible in the final days of the campaign between her truly nasty commercials and her personal appearances, that It's not hard to imagine that many undecided voters became tired of her shtick, much like many faithful NFL fans have grown weary of NFL football being broadcast live 4 out of 7 days of the week! Third, some props are due for the Donald who held his tongue during much of the waning days of the campaign. He did not try to Battle Mrs. Clinton during the final days of the campaign outside of the final debate and even then, he perfected the salesman's pitch by re-directing his opponent rather than grappling with her on her carefully prepared turf.

In the end, we were left with this:

1) Where was our favorite son, Bill Clinton during the campaign, and where was Barrack Obama -- certainly they weren't out stumping for Hillary on the campaign trail?

2) Social media did not work for HRC the way it helped Obama in 2008? There was no mistique, no grand message of "Change".

3)What we were left with in HRC, was, in the final analysis, another 4 years resembling the past 8 which were not that terrific, frankly. Most everyone, by now, considers the Affordable Care Act to be a disaster - It's the singly largest sell-out to big insurance companies and big Pharma that could ever be imagined. Not one person in the country is truly benefiting from this policy disaster and good luck trying to sign-up for healthcare on the government website that cost nearly a Trillion Dollars to build and support, but works barely better than a 1976 AMC Gremlin or a 1973 Ford Pinto.

4) We are not better off than we were 8 years ago. Inflation is up slightly, and Salaries have remained flat, while healthcare costs have run amok!

5) When people finally went to the ballots, it's clear that they reminisced the Media prince who tugged at their heartstrings when he said, "You're fired!" on his weekly television show. They considered the self-confident man who spent more time in their households than anyone who ever campaigned for the presidency; A man who was not afraid to speak his mind even if what he had to say was not popular; A man whose excesses largely mirror the excesses that pop culture has conditioned us to aspire to even if we all know that those excesses are wrong; A man who is willing to name Vladimir Putin as a problem even if it makes the world a more dangerous place. A man who is willing to spar with the Military Intelligencia, who utterly botched the Persian Gulf War and failed to provide Washington with the necessary intelligence that was required to save lives and deal with a most serious threat.

6) We all secretly want a President who will give 'em hell, and there is little doubt that The Donald will do just that. We may be frightened by the reality of it, but a little bit of fear can be a good thing.

7) When casting our ballots this year, it appears that the collective conscience of the American People was at work. We rejected the guarantee of 4 more years of Washington Gridlock and business as usual. We asserted our uniquely American idea of individuality with a collective voice so unified that we shocked the world not merely by electing the supposed underdog, but by ensuring that he led in electoral college votes from the time that the first polls reported until the end of election day 2016.

And we were left to ponder how the woman billed as our favorite daughter fell from grace so quickly -- perhaps we ultimately rejected the corruption of the campaign that snuffed out Bernie Sanders and only had to sacrifice the Democratic National Committee Chair to avoid the blemish of scandal, perhaps we ultimately rejected the innocence of HRC whose husband made famous the comment, "but I didn't inhale" and were left wondering if she had inhaled, perhaps we were confused by the absence of Bill Clinton on the Campaign trail, perhaps we found a significant void in HRCs message if not a lack of substance and in it's place a politically correct message that just didn't resound for the American People, and finally, Perhaps we soured on the more fluff than substance message that we are "better together", instead feeling that we'd like to hunker down in our bunkers and let the bastards come at us one-on-one and show them how a down and dirty 'Merican protects his home and country.

Maybe there is no explanation for HRCs meltdown, but it's clear that at least a few hundred thousand loyal Bernie Sanders supporters went all in for the other nominee!

What I can say with certainty is that on election day, my thoughts were rising and I was not swayed by any party loyalty or ideological biases.  I voted my conscience and it appears that a great many Americans did as well, perhaps more than we have seen in over 50 years.

It is ironic that HRC melted down.  In a peculiar way The Donald brought us together despite his now infamous propensity for divisive messages. We now know that people in Pennsylvania, Wisconsin and Michigan are fed up with being out of work and few job prospects.  We also know that the middle class is desperately screaming for relief from wage stagnation and medical cost inflation, jobs fleeing overseas and even being filled on-shore by people who are willing to accept the work at a fraction of the salary that natural citizens had commanded for decades.  We are tired of corporations getting away with felony crimes, when many of us can barely make ends meet.  We are tired of the finger pointing and we recognize that the economics of this century are vastly more complex than the economics of the previous one. We also know that its not preordained that it should be thus, and we're prepared to disrupt the status quo by hacking our very system of government if need be even if it took a pompous, womanizing philanderer who is no stranger to bankruptcy in both the financial and moral sense. We applaud the fact that a man so famous for airing his dirty laundry was able to keep a lid on most of it during his campaign for the presidency, and perhaps some good will come of this cultural petrie dish and experiment in democracy if we do mix things up more than a little bit. Do we fear the concept of Donald Trump being the man who can press The Button? Not in the least.  Should we? Perhaps not.  After all his ego wouldn't be well served by destroying the world and the country that so gratefully stroked it for more than 2 decades.

Wednesday, May 25, 2016

A Meltdown for the Ages

Echos of the New England Patriots infamous meltdown in Superbowl XLII to the New York Giant, We now have another historical meltdown in Sports.  This time the Golden State Warriors are in an apparent meltdown  in the Western Conference Finals contest with the OKC Thunder.  Maybe we'll all wake up from this nightmare Next week after the Warriors, fresh off their record setting season, shake of this upstart team which recovered from the brink of disaster agasint the San Antonio Spurs and dominated a team that had the second best season in the league.

Or perhaps the reality is that both Greg Popovich and Steve Kerr have been outcoached.  Not that Billy Donovan is without a resume. It's just that he's building his NBA resume right now, and he's doing it with poise, determination, grit and toughness, and his team has followed suit demonstrating exaclty those same qualities.

On the other end of the spectrum, Steve Kerr seems completely uncomfortable steering the Warriors to the inevitable NBA championship that they were destined to win.  If Steve Kerr was to be completely honest, he cannot blame the floundering of his team to unispired play by Steff Curry and Draymon Green, though it is a convenient excuse.  The fact is that Steve Kerr began hedging about repeating as champions long before the record-setting season was on the books.

Granted, it's difficult to repeat as champions in the NBA.  The league has a gruelingly long regular season and NBA basketball is a contact sport in every sense.  Players get banged up and injured to the point of immobility each year.  But, by all appearances, the Golden State Warriors waltzed into these 2016 playoffs at the peak of health and running like a well-oiled machine, winning game after game with style and flair. But the playoffs are a different creature and these Golden State Warriors should know that every team brings its best effort to the playoffs and Coaches are determined to make adjustments and coax the very best out of every player on the roster -- even for role-players who rarely make it off the bench in the regular season.  Terry Stotts out-witted Steve Kerr to a degree  in no less than 11 quarters of play over 5 games.  Now Billy Donovan is demonstrating full command of all of the weapons in his arsenal -- the formidable weapons that he has on his roster as well as the weapons in his playbook and his strategies. Steve Kerr has been reduced to a bystander -- bewildered by his players' unmotivated performance and acting visibly frustrated and anything but poised on the sidelines -- out-witted, out-muscled, out-hungried, out-coached.  Perhaps after two games in Oakland, we'll be able to look back at this as an aberration.  But for now, these Golden State Warriors are a team that has been out-coached.

Ultimately the puzzle to be solved is: Team Defense.  Certainly Kevin Durant and Russell Westbrook are incredible offensive weapons, but it is always said that Defense wins championships.  Golden state has ruled the league not only with its spectacular offensive prowess fueled by 3-point field goals thrown in from nearly ever spot on the court.  It is important to recognize the defensive mastery that the Splash Brothers, Draymon Green, Andre Iguodala and the rest of the cast have displayed in every one of he magical 73-win season.  That team defense translated into an amazing transition game and many easy baskets.  Without fabulous team defense, Steph Curry doesn't score 17 points in overtime against Portland in Game #4 of that series.

Friday, March 25, 2016

phpBB and how I hate Spammers

Among other things that consume my time, I Web-Master for a non-profit organization  We have a phpBB blog within our site and  have been battling Spammers for quite some time, many of which are little more than spambots or botnets orchestrated by Russian Hackers.  Let me be clear, I love phpBB.  It's remarkable ease of use cannot be denied.  But this spam problem really needs to be addressed in some way.  By banning the poster's  using their IP and e-mail Address as well as user name, I managed to reduce the daily spam-post content to about 3 to 5 a day, but it isstill a hassle.  I scoured the web in an attempt to find reliable guidance as to haw to block all of this nonsense.  Truly, there was nothing of value except for a suggestion to use a Filtering Service to weed out connections from known domains that host the vast majority of Russian spammers.  As our site is very regional to Arizona the only downside to this approach is that these services require you to pay a recurring service charge and it's not really advantageous to a small non-profit to incur such charges.  In addition this approach would not block the various fake accounts that these spammers have set up on Google and Yahoo. and others which they make to appear like a US-Based account by impersonating a US-based IP address when they post spam content.

I had been searching for some time for a reliable technique to block these spammers, but they kept breaking through regardless of what I did.  I started contemplating -- instead of just banning individual e-mails, what if I could ban entire domains or sub-domains such as *@*.ru (most of Russia) or *@yandex.com (another common Russian subdomain used by Russian Spammers   Ultimately I found that this can indeed be done within the phpBB Administration Control Panel.  I'm just puzzled why people have not identified this solution.  it seems crazy simple.  By doing this from the "Users and Groups" tab of the ACP, I am rather confident that I will block the vast majority of the Russian Spammers, with the exception of a few that use Gmail Accounts.  Any of this sound remotely related to the Russian Social Media Advertising scandal that is receiving attention in both the media and in the ongoing US Congressional investigation?

Gradually the number of breaches by these leeches will dwindle to a very small and manageable number until I achieve that blissful nirvana of a pristine site of people helping each other without advertisementss for Viagra and Porno sites clogging up the Bulletin Board. --- HAPPINESS!!!!

Well, not quite total HAPPINESS....some of these bastards are still getting through, but I also noted that phpBB also provides the ability to wildcard ban IP addresses.  By looking at the various IPs that I have banned, one can easily deduce the IP sequences that correspond only to Russian addresses.  By blocking those IP sequences I am seeing fewer and fewer spam messages geting through.  Should have them all blocked by the end of the week. ;-)

Another helpful hint.  If you have doubts about banning or blocking a particular IP Address, you can check the IP Address here to see which country it originates in:  Lookup IP Address country - Geo IP Multi-Lookup  What's great about this site is that you can see how long the IP has been assigned and you can also put multiple IP Addresses in the text box and get a set of results.

Tuesday, March 8, 2016

Agile Software Engineering in the Proper Context

Corporations the world over have misunderstood the value and the proper application of Agile Software Engineering.  Some companies have latched onto the "fun" factor and the empowerment of the developers as leading to a workplace with higher morale.  This is a good outcome to be certain, but it is but the tip of the iceberg.  You simply cannot infuse fun into the workplace with agile and expect to solve the problems of a 10, 15 or even 30 year legacy code-base and less so would you be wise to expect agile practices based solely on the "fun' factor and the empowerment of the developers alone to achieve high quality software.

Enterprise alignment with agile practices and business model alignment is needed at a bare minimum. If the business model of the organization is incongruous with the software engineering realities imposed by the underlying business model, then it is difficult to achieve a high level of software quality.

For example a high level of commercial flexibility is often perceived as a market advantage, but what is the point of delivering a scalable, public cloud based solution for your customers, if the business model requires the same engineering team to support a branch of the total code-base for each customer who has purchased the cloud solution the company offers commercially, The likelihood is that such competing demands will  result in even more defects in the codebase and a rather difficult juggling act to keep each of the customers happy.  A better solution is to design core Business APIs following the practices employed by Amazon.com.  When employing this strategy, there is an emphasis on building a stable core with a focus on a highly extensible architecture.  It is precisely this approach that allowed Amazon.com to deliver the substantially high level of customization of their web marketplace which allows them to quickly stand up highly customized store-fronts for many customners without having to write substaantial amounts of custom code for each client.

Over and over again, we in software engineering are told that the linchpin to high quality software is software that is developed in an iterative manner and most importantly that it is designed for testability and is inherently testable.  We are also advised that the processes for supporting the solution must be inherently and highly repeatable.  Lastly, we know to insist that the software is tested, comprehensively and repeatedly.  Some of the most respected software engineers that I have had the pleasure to know have adopted an additional principle which they strive to incorporate into their solution architectures, designs and coding; namely; "software solutions should be as simple as possible and no simpler."  I have adapted this principle and simplified the concept further, my mantra for software solutions is: "To produce high-quality sustainable software solutions, they must always be designed and constructed as simply as possible"  I do not invoke the caveat of "no simpler".  In my opinion, sustainable software is designed and developed as simply and elegantly aas possible and sustainability can only be achieved through simplifying relentlessly.

Frequently, developers in their excitement to chase the next new thing, thereby increasing the tools in their tool-box -- be it a new library, a new language, a new engineering technique or even a new design pattern -- will adopt the most convoluted and complex stack and tooling with negligible benefit over doing it in a more conventional manner.  For the software engineer in question, this provides some measure of accomplishment, perhaps some job security and allows that individual to flex his or her muscle to show how talented they are.  Such displays of bravado have no place in a software engineering team unless there is simply no better way of achieving the solution, but we in the profession must have the integrity to say "No." to needlessly complex solutions.

The most likely result of employing needless complexity in our technology solutions is that the software will be difficult to support and sustain. While there are many ways to achieve the simplicity, repeatability and sustainability of which I speak is by employing the concepts of Software Stability which I have blogged about in other posts.



Thursday, February 18, 2016

Ryan McDonough is the biggest A-Hole in Pro Sports

I'm sorry, but someone had to say it!  Moneyball just doesn't work in the NBA -- perhaps not in any pro sport.  Robert Sarver is a cheap son-of-a-bitch too!  Perhaps that's why he hired the most frugal GM on the market.  In addition, the Suns succeeded possibly in making two teams worse after trading away Markieff Morris -- the reigning best active player on the Suns Roster -- for a man that Kim Kardashian couldn't bear to sleep with - She traded Humphries away for a second-string rapper and no draft picks.  Kris Humphries isn't exactly the guy who engenders team chemistry either.  Even The Brooklyn Nets collectively didn't shed any tears when he was unceremoniously jettisoned from that mediocre roster.

This trade is not a rebuilding move for a roster that is so insanely lacking in talent after sending two superior point guards away so that they could keep one inferior, injury-prone point guard and trade for another inferior point guard who is also injury-prone.  While Bledsoe and Knight were licking their wounds, Isaiah Thomas appeared in the All-Star Game.

But hey, everyone makes poor decisions from time to time, right?  The Phoenix suns are so obssessed with Team Chemistry that they can't see how much they have destroyed the chemistry of the team over the years by repeatedly trading away exceptional players for Mediocre talent.  This is the problem with Robert Sarver he's so concerned about the bottom line that he doesn't realize that the seats in Talking Stick Resort Arena are emptying out faster than burgers used to sell in the Carl's Jr just outside the Main lobby.of the arena.

And to sell tickets for those empty seats, Mr. Sarver has to resort to cheap promotions with a Burger Vendor and THEY can't even sell the seats with a combo meal thrown in for more than $20 a seat, keeping in mind that a combo-Meal at Carl's Jr. is quickly approaching $10 without Basketball tickets bundled in!

I'm just Glad that Jerry Colangelo didn't live to see what Robert Sarver did to the franchise that Jerry built. -- Oh my god!  I'm wrong.  Jerry is alive and well  and working on rebuilding the Philidelphia 76ers...Perhaps Brian Colangelo is ready to come back to Phoenix and lend the Colangelo touch to this franchise.  Just about anyone would be better than Ryan McDonough..  Heck, Vlade Divac would be an option by my assessment, and admittedly, Vlade has no business acumen whatsoever!

This post requires a follow-up after the Markieff Morris trade, which ultimately did occur prior to the trade deadline and most recently the news announced on April 19th of the inking of Earl Watson to a 3-year contract.  Given all of the talented coaches with a track-record of success who have been available in the market and potentially will be available this off-season, it's obvious that Robert Sarver's hand has played heavily in this woeful decision to sign Earl Watson for the long-run.  What's next? The second coming of Kris Humphries??? Or will they double Eric Bledsoe's contract just to pacify him that the Phoenix Suns organization are not controlled by the biggest tigh-twad on the planet?

Honestly, "WTF?" is appropriate here.  How does Phoenix attract any free agents this summer with the hobbling cast of under-achievers and D-League retreads that are on the roster today, not to mention a coach who won 9 out of 33 games.  Watson has to be giddy about the prospects of being measured only by improvement over this season's  performance.  Assuredly he could accomplish that without ever holding an actual practice assuming that he and Ryan "too stupid to live" McDonough and Robert "to greedy to be taken seiourly" Sarver can actually upgrade the roster.  Otherwise, we can most certainly expect the Suns to part ways with E.W. next January and find themselves in a nearly identical situation at the end of next season.  Of course, a substantial question remains about what to do with the overpriced contracts of  Eric Bledsoe and Brandon Knight, who simply cannot be counted on to remain on the floor for more than a few weeks at a time.

Wednesday, February 10, 2016

Life Lesson, The missed assignment

Who doesn't enjoy dessert from  time to time?  Sharing ice cream shakes at the local hangout with your spouse or your child can be a rich memory.  Certainly I've enjoyed such experiences with my wife, my son and my step-son.  But my story is a different one and highlights not just Dessert, but Just Desserts.  In 1982, I took a leave of absence from College to decide what I wanted to do in life. While the following years would prove this to be a wasted effort, I did learn a great deal about what I did not want to do with my life.  I worked for a period of time with an insurance company in the commissions department preparing distributions to he agents each month.  At nights, I found that I had time to work a second job and was ultimately hired to work as the night manager at Orange Julius in Thousand Oaks Mall.  For those not familiar with Orange Julius, they are a purveyor of the most delicious Orange Shakes that you will ever taste..  The store mamager was a strange, shifty character, but the job paid quite a bit better than Minimum wage and I was very happy to get the job.  When I started work at the store, The Store manager took great care in introducing me to the night staff, and walking me through the store shutdown procedures.  The job was not especially difficult. or taxing.  My role involved:

1) Supervising the night shift
2) Assisting customers during busy periods and closing down the store at the end of the evening.

For this second responsibility, the Store Manager spent some time carefully describing the closing procedures:

a) The store had to be cleaned so that the day crew would arrive to a clean store ready for business the following day.
b) The cash registers had to be closed out which required the final totals to be run on each machine, the cash was then removed and placed in a bank depository satchel.  Then the satchel along with the cash from the register drawers was placed in the store safe so that cash could be deposited  in the bank the following day after the register drawers were restocked from the satchel.

Each night, after I returned home from my day job, I would freshen up and then drive to the Thousand Oaks Mall, clock in and begin my duties.  I would start by going to the back office and reviewing any special instructions left by the day manager.  every so often, I would be called to the front of the store to assist with customer service during the many evening rushes.

I  found a comfortable routine in my two jobs.and I continued in this vein for several weeks.  about this time, I was contacted by the vanpool administrator for the insurance company and asked if I would be interested in taking a hand at the vanpool job which had recently opened.  I needed to commute quite a distance to the office which would be relocating nearer to my home in a few months, so, I needed to travel regardless and I accepted the position, which paid an additional $50 per day.

As time passed, I learned why the prior vanpool driver quit.  Everyone in a vanpool is very particular about how the van is driven and they complain loudly when there are near misses or sudden stops which are frequent in Los Angeles area traffic.  After 3 weeks, I was asked to quit and I complied with this request.  Shortly after quitting the vanpool driver position, I became aware that there was an intense drug culture in the commissions department at the insurnce company.  Furthermore, the old-guard employees were not happy about the department's relocation to Ventura County, as they all lived in Downtown Los Angeles.  This created a schism between the old guard and the new recruits, including myself.  I found that the training that I received was incomplete; as a new-hire, my work was scrutinized more heavily than the other staff and any errors in my work caused by the old-guarrd employees were pinned to me.  When my 90 day review came, I was fired citing errors in my work - errors that were caused by my co-workers mind you, but it did not matter.  The only person that I would be held accountable to was the Manager who was currently doing everything that she could to keep the department in Los Angeles until she could find a new job with equal or better pay.

The evening of my dismissal from the Insurance company I smiled as I went to work at my night job. No longer would i have to work two jobs.  No longer was I driving he vanpool.  I just had a rather easy gig as the Night manager for Orange Julius.  However, as fate would have it, I was greeted at the Orange Julius by the store owner.  It turned out that the Store Manager had informed the owner that someone had been stealing from the night depository satchel or the register drawers and that this theft had occurred on the night shift, which was my responsibility.  I was advised that I was fired. I asked the owner if she trusted her day manager, and explained that I knew for certain that he had been stealing the money.  She told me that if I didn't leave immediately that she would call the police and have me removed from the premises.  As I walked away I asked her why would her store manager would specifically advise the night manager not to talley the cash before locking it in the safes?  I also asked if my fate was the same as the prior night manager.  I never got an answer.  She simply pulled out her cell phone and started dialing -- perhaps to the police or the security office.  A scam like the one perpetrated by the store manager cannot be played indefinitely and even a store owner can only have the wool pulled over her eyes a few times before the certainty that the store manager is the culprit begins to dawn on her.  I suspect that this store manager after finally being relieved  of his duties a few months later moved on to bigger and better scams, before finally getting caught and spending 5 to 10 years in state prison, all stemming from an experience with that delicious dessert drink: Orange Julius!  Lesson learned:  Always be diligent and look over your shoulder and question authority relentlessly.

The reader may wondrer, ,what does this haft to do with "The Missed Assignment"?
Allow me to explain.  Now Jobless, I tucked tail and returned to college, Where I signed up for a creative writing class.  In the first month, I was given a writing assignment to produce  a story about a conflict. The most important requirement is that it could not be a story about a courtroom conflict.  I punted and wrote the courtroom conflict anyway as I didn't recall any conflicts, in my then short years on plaaet earth, that I felt would make for a good read...

Dear Professor,

Here is my rewritten assignment  I'm sorry that it is a few years late!

Thursday, February 4, 2016

When Democracy isn't

Rarely is it debated whether we live in the greatest country on the planet.  We Americans living in the United States arguably still enjoy the highest standard of living than most of the balance of the earth, yet our experiment with Democracy has snaked toward some very dangerous ground. The country was founded on the concepts "Of the people, For the People, By the People".  Yet, from time to time I wonder: which people?  Over the years, Democracy has morphed into various forms of Aristocracy and even Tyranny of the Majority.  It is the Tyranny of the Majority that I wish to discuss now.  Politicians are beholden to this Tyranny.  Should a politician favor a policy that does not suit the Majority and even fail to endorse or promote policies that are supported by the Majority, they will not have long careers in politics.  of greater concern is the fact that our state legislatures and State Courts are virtually uninterested in the opinion of the general public.  It appears that they have concluded that the majority of the people who take time out of their days to address policy issues in committee meetings are not among the mainstream.  Public input and open meeting laws are ignored even to the point of violating state law to move court rules and legislation through the political engines that have been built.  Certain legislation is voted into law with language that clearly intends to help people, but once the legislation is in place how does anyone learn that they have new rights or benefits that they may avail themselves of?  It appears that it's not the job of our branches of govenment to get the word out about legal rights, government benefits or services that may be beneficial to Jane Q Public.

I have recently studied a law that provided rights to a certain class of citizens in my home state of Arizona.  As I read further, I discovered that the right could  only be vested 30 days after some life event occurred, but that it was up to the individual to recognized the life event and to know that the 30-day limit applied to them.  Furthermore, there is no publicizing of the law and people who experienced the same life event prior to the enactment of the law do not qualify; thus, they are unable to enjoy the same protections under the law as someone who experienced the same life event just days after the law was enacted.

In my opinion this is all smoke and mirrors -- a mere pantomime of democracy.  The pretense of enacting such legislation is little more than a snub at the grand experiment in democracy that  so captivated Alexis De Toqueville.  In many respects, technology and especially the Internet has been the great equalizer, but in an era where the internet provides the means for any two people anywhere in the world to communicate at almost no expense whatsoever, It is enourmously disappointing that our government has done so very little to provide the public with access to the policy machinery that is in place.  It is ludicrous that an interested citizen must take off time from work and physically travel to their respective State Capitol to attend legislative or Judicial hearings  where policy decisions are made.  Why can't these hearings be streamed live over the internet and permit private citizens to comment in advance of committee votes on policy so that our legislative and court committees have public comment right at hand when they are voting on policy matters?  The only rational answer is:  because our government bureacracy has determined that this is not desirable.  In the end analysis, technology -- the greatest force in democacy is not wanted in government because of one unshakeable truth:  Democracy isn't.democracy anymore.

Tuesday, February 2, 2016

Phoenix Suns - Decision to fire Jeff Honacek, keep Markieff Morris

The media is abuzz with question why Phoenix has fired Coach Jeff Hornacek and kept allegedly disgruntled Markieff Morris on the team.  How exactly does the organization rationalize these two intertwined decisions?  In my Opinion, this is a no-brainer for anyone who has been a careful observer of the Phoenix Suns Coaching and Players.

Jeff Hornacek could not justify keeping his job during a winless stretch where Markieff Morris was largely relegated to being a role player, coming off the bench.

Regardless of his summer tirade in response to the trade of his brother Marcus Morris to Detroit, Markieff has been a Model of Character if you exclude the alleged towel-throwing incident for which Morris was the model of repentance and insisted that it was an accident..    In contrast, when you read about Blake Griffin punching one of the members of the Clippers staff, there is no mention about trading Blake Griffin.

To gain perspective on the decision to Keep Markieff on the team, you must watch the interaction of the players on the team, Markieff is extremely well-liked by his teammates, and presumably this extends to Markieff's conduct in the locker room.  While Markieff has had some conduct issues in the past, it appears that these may have been largely instigated by his Twin brother.  Markieff is still a talented prospect and a reliable contributor on this team.  With a coach who is willing to put the past in the rear-view and work with him, there is litle doubt that he will again become the player that he once was.  With all of this in mind, it is clear that this young team is actually better with Markieff than without him. Furthermore, Morris' contract is very kind in terms of the salary cap for a team that has massively over-paid two  point guards who the team is unable to keep on the court due to health reasons.  I haven't looked carefully at his effectiveness stats, but it appears from watching him play that he makes his teammates better whenever he is on the floor.  Sure he gets more personal fouls than Jeff Hornacek found acceptable, but his technical fouls are way down from last year, which is surprising in a year when the team is substantially struggling, and also considering that he was benched for several weeks.

In short, it is impossible to imagine this team proceeding without Markieff Morris.  He has clearly bonded with and is looked up to by the Suns emerging star, Devin Booker,  and the team would be disrupting young Booker's development should they trade his friend and mentor.  If you don't believe me, watch the two of them during warm-ups.  They are nearly inseparable.  The team has even tried to showcase the relationship between Devin Booker and Tyson Chandler with a media campaign -- perhaps to downplay the more influencial relationship between booker and Morris.  The team can hype the relationship between the elder statesman and the Rookie as much as they like, but It's clear that Devin Booker is blooming under the mentorship of Markieff Morris far greater than the experience of Tyson Chandler.

I disagree with Sports 98.7's Dave Burns when he says, "Jeff Hornacek deserved a chance to coach a team that did not have a Morris twin on it.."  In the final analysis, any astute basketball insider would have to agree that, with the dearth of talent that this team has, it is a team that ultimately is better with Markieff on the roster than not.Without him, they would be arguably worse.

To continue this story, shortly after I first published this blog-post, it was announced by Yahoo Sports' "The Vertical" that TJ Warren is out for the season with a broken foot.  Immediately I realized the wisdom of the Suns keeping Markieff and recognized that his stock to remain on this  team keeps going up every day.  Despite that, sources within the Phoenix Suns suggest that perhaps Markieff will be gone by the trade deadline.  I remain unconvinced as sources within the Suns organization had made similar comments that he would be gone before the start of the Season.  Since Markieff broke out for 30 points against the Raptors on Tuesday night, it seems like Markieff is not going anywhere unless the Suns are given an incredible offer -- perhaps a straight-up swap for another alleged problem-child, Blake Griffin?

Bottom line: every game that he suits up for this year's Phoenix Suns, he is one of the 2 best players on the roster regardless of whether he's starting or coming off the bench.

kylehanan@gmail.coml
1/30/2017 Update:  Phoenix Suns: 15 Wins - 32 Losses; Jeff Hornacek's NY Knicks: 21 Wins - 28 Losses - would lead one to conclude that Jeff Hornacek is the superior coach.  Furthermore, the subsequent trade of Markieff Morris to the Wizards was another questionable decision; regardless of whether that was what he wanted.

4/20 Update: Phoenix Suns have plodded through the drudgery of 3 losing seasons and even though this resulted in 2 top-flight draft picks, the Suns have suffered a self-inflicted wound.  It's ownership knows nothing whatsoever about Basketball.  Meanwhile the GM that they fired 5 years ago has gone on to appear in the playoffs in 5 consecutive seasons and won 3 championships during that same timeframe.  It's also not clear what the goal of the coaching merry-go-round is all about.  The coaches that they have had on the team since Jeff Hornacek have been utterly useless. If the goal of the team has been to tank and live through each of these seasons as the resident cellar dweller, then they accomplished that with near perfection.  Unfortunately, the Suns have wasted some of those draft choices, and furthermore the development of a young roster has been entrusted to a revolving door of coaches - meaning that the development of the roster has not proceeded very well.




Monday, February 1, 2016

A Brief Introduction to Software Stability in the Enterprise (part II)

In the previous blog post in this series, I introduced the concept of Software Stability as it applies to the Enterprise. However, it is important to understand what is really at stake when we examine the life-cycle of typical enterprise software solutions.  There are two prominent lifecycles that permeate enterprise computing.  The first type, I will refer to as "the Serpent" because it snakes a path through a software wilderness sustained by fundamental business needs, while undergoing numerous evolutions, tranformations and redesigns.  The second type I refer to as "Wag the Dog".  Such enterprise software solutions become so fundamentally core to the operation of the business that there is no amount of investment that is too much to dissuade the enterprise from investing in larger and larger change initiatives.  In fact, the entire viability of the enterprise may be dependent on the operation of the solution.  And at it's core, it constrains the solution space for any business changes or transformation to the point that the entire enterprise is beholden to the software and cannot adapt to changes in the marketplace without exhorbitant cost to the enterprise itself.  So many departments or divisions within the enterprise may be dependent on the Wag the Dog solution that it is impossible to transform the company in the way that the business executives would like.  In far less worst-case scenarios the cost of maintaining or supporting the Wag-the-Dog solution may be so high that it literally eats into corporate profits to the point that the Board of Diretors must consult with the CIO on a routine basis to address even modest changes to the solution as the budgetary impacts are so high that it makes ordinary capital expenditures seem trivial.

Software Stability is not only a better way to define Enterprise Requirements, and generate Enterprise Solution Design, but it is the only way technique that I have found that builds adaptability directly into a Software solution.  Through Software Stability methods and techniques, we can envision software solutions that will adapt not only to the structural changes of the marketplace, but also can adapt fully with the evolving nature of the enterprise itself.


“How can this be?” you may ask, “How is it that the software engineering and information technology departments the world over have been doing things wrong all of these years.? This is the wrong question.  To be certain, successful shops have keep a close eye on best practices and developed careful standards.  During nearly 30 years of designing and developing enterprise scale solutions for my clients, I have become acutely aware that each organization that I worked with used different terms to describe identical software artifacts, database objects, and even business concepts that were at their core the same thing.  This awareness caused me to ponder, “How is it possible to build quality enterprise solutions when enterprises cannot even agree on the same names for core business and technology concepts?  To be certain, some deviation in terminology that I observed was not the result of two companies using the same term at the same time, but an evolution of terminology as one best practice was supplanted by another best practice.  This is little more than the wagging of the dog in practice. Best practices evolve over time.  Software stability concepts start from a foundational taxonomy of terms that are enduring.  These terms which do not change over time.  Using these terms a concise taxonomy of Stable Analysis and Design patterns are defined.  This is fundamentally different from ordinary design patterns.  


Current practice in Software engineering, analysis and design owe a debt to Christopher Alexander’s seminal volumes, “A Timeless Way of Building”, “A Pattern Language”, and “The Oregon Experiment”.  Yet our attempts to disrupt the practice of software engineering have been far less bold than Alexander’s stated objective: “The books are intended to provide a complete working alternative to our present ideas about architecture, building and planning – an alternative which will, we hope, gradually replace current ideas and practices.

To Wit, the Gang of Four did not assert that the patterns that they published in their seminal book were the comprehensive list of design patterns.  They merely documented a glossary of patterns that they observed being used repeatedly by highly skilled engineers. Software Stability employs hard and fast definitions of analysis artifacts upon which stable design patterns can be extruded.  Software Stability aspires to achieve a disruption for the ages and an alternative which gradually replaces current ideas and practices.  At its foundation is the premise that “software has no moving parts; therefore it is contrary to reason that it should routinely break or age.   Stable design patterns can be identified through different analytical methods than we use today, by changing our approach to design we can model truly stable software systems and through stable analysis and design patterns we can build software components that are truly stable and enduring, and these artifacts can be employed as the foundation for software solutions that are stable over time and simultaneously adaptable over time at a far lower cost than conventional approaches. Software stability provides a solution to both the Serpent lifecycle of enterprise systems and to the Wag-the-Dog lifecycle of enterprise systems.