Featured Post

Monday, April 29, 2024

Hoodwinked

Agile advocates have hoodwinked and deceived software engineers for over 2 decades! The square peg of Agile methods does not fit into the round hole of Software Engineering.  Strangely, Agile has not adhered to the traditional methodology lifecycles of its predecessors.  Perhaps this is only because the fervor around agile has blinded us from imagining what comes after agile.

Missing in the hype of  "Agile Transformations" is the reality that software doesn't become agile simply because we proclaim it to be.  Nor does it become agile through short iterations.  To achieve real software agility requires a framework, a masterplan or blueprint for how software is architected, designed, assembled, configured, and coded.

Frameworks have long been employed to empower software engineers to build flexible, stable and sustainable software.  Software Stability, pioneered by Dr. Mohammed Fayad is a promising path forward.  In a nutshell, software can only be agile if it is architected and designed not only for agility and flexibility, but also for stability and sustainability, scalability and extensibility. Dr. Fayad's  Software Stability Model is a powerful approach to building software much like cloud platforms are engineered.  The promis of Software Stability is to evolve from brute force coding of applications to configuring applications from stable modules and components that will allow organizations to achieve greater agility than is currently possible.  Moreover, Software Stability dove-tails with AI initiatives to achieve a more rapid path to AI Software bots.  These AI Software engineering bots will be able to pair engineer with a Software Developer or develop code and test suites independently.  In short, we need methods and technologies for the future today, rather than imposing dictates on legacy software engineering technologies, which simply cannot be achieved in any holistic sense.  At the foundation of Software Stability Model is a grammar  far closer to natural language than any programming language could achieve.  Thus, the clear advantage of Software Stability Models is the ability to incorporate Generative AI into the software engineering process, and to unveil a new era of software engineering to benefit software engineers, analysts and business stakeholders alike.

Agile has been the rage for over 20 years. It started in 2001, when a group of Yahoos met at The Lodge at Solitude Ski Resort, in Utah.  The purpose of this meeting: to find common ground - and revenue - among a group of like-minded practitioners. The Agile  Alliance asserted a need for an alternative to the prevailing management methods for software engineering projects. They decried the heavyweight software development methods (especially Waterfall Methodology),  They criticized Waterfall as too heavy-weight and inflexible, which is a fair critique.  Their work product, "Agile", caught on like gangbusters, but didn't we install “a new boss, the same as the old boss?” The result: a different approach with all of the same challenges that we had before.  Worse yet, we created new challenges that we did not have in the first place.

Here's the key problem.  Software ages. software becomes obsolete. Specific technologies fail to keep up with modern languages, tools, and techniques. The academic literature on software obsolescence is extensive. All software must be rewritten,  roughly every 5 years.  How can a team of engineers achieve the needed rewrite absent a comprehensive test suite? Keep in mind that the test suite requires a rewrite, in whole or in part, in the same timeframe With no comprehensive documentation of the system and its features, how will the team members determine how the software must function?  Reverse-engineering a test suite is prohibitively time-consuming, when the documentation is readily available, but it is vastly more difficult absent the requisite documentation - documentation that most agilists decry as bloat and unnecessary.

We observe the focus on NBUA (No Big Upfront Anything)  as a fatal fallacy in Agile Methods.  Slowly, but surely, an anti-Agile community is emerging from the ashes of myriad failed Agile projects.  Anti-Agilists are posting on various boards and communities. Anti-Agilists exclaim their frustration with agile methods. We are living in the wake of much carnage in the software engineering profession. Anti-Agilists bemoan the failure of smart people to behave as rational engineers, in the wake of this carnage.

Executives experience consternation: why is software so expensive to build and manage? In response, Agilists sell Agile Transformation projects and products like hotcakes. The pitch: "Agile increases productivity and lowers the costs of Software Engineering." Unfortunately, the cost of an Agile Transformation is never communicated to these executives. Panic ensues. The knee-jerk reaction: blame the software engineers and their first-line managers. Layoffs ensue, but this is a fool's paradise. No one wants to believe that they've purchased nothing more than snake oil!

Some advocate, "We'd be better off implementing eXtreme Go Horse (XGH)" "My God!" you say, "What is XGH? How do I get it?" Do not stress yourself. XGH is a completely fictitious methodology that originates from Brazilian Software Engineering Communities. Rumor has it that some marquee corporations adopted XGH within some of their teams. This pinpoints the level of insanity that is at work amongst agile adopters.

Let's jump off the crazy train

Why is it that Agile methods have persisted for over 2 decades? Consider that prior methodologies aged out in similar timeframes. The evolution of software engineering methods is innovation. Innovations generally leapfrog what has come before. I daresay that Agile has brought with it some significant innovations.  I chalk it up to "necessity as the mother of invention." For unknown reasons, Agile seems immune to this leapfrogging. Software engineers are complacent as a rule. Thus the software engineering community is complacent relative to Agile methods. 

Okay, but be mindful that Agile results in at least as much failure as other methods - Perhaps even more failure.  Can't we envision something better? 

Agile, especially SCRUM, and Kanban methods result in "The Blind leading the Blind". Yet Agilists have persuaded executives that all is well. 

The Agile Deception

SCRUM and KANBAN are not effective, except in very targeted environments. The sweet spot is Startups with little or no legacy code.  These methods do not work well in companies that have grown beyond the SMB threshold. As a company grows, the software owned by the Company tends to out-grow juvenile approaches to Software Engineering. So, we conclude that even Startups are cautioned not to get sucked into Agile.

A Right-sized Design and Architecture

There is a right-sized design and architecture for any software application. Instead, Agile drives the software towards a fallacy. The result is the fallacy of local-minimum designs. This outcome lacks the requisite stability, and sustainability, for durable and supportable software.

Another pitfall of Agile is local-minimum  implementations. The Agile "fail-fast" maxim results in this fallacy.

Unsuspecting managers trust the mandate: "We will be agile." Why not report objectively? They would rather change the measure than report metrics that yield unbiased findings. Software engineers pick up terrible habits as they drive to meet arbitrary cadences. Overall design and architectural integrity lack requisite governance across sprints.

Many large enterprises resort to setting up centralized software architecture teams. The sense is that there is goodness in company-wide standards. In time they come to realize the futility of such undertakings. The strategy fails even across a modest portfolio of software applications.

On realizing the error, the enterprise reverts to distributed architecture teams. The change is to no avail, The company experiences irreparable damage.

Agile dupes all parties into adhering to abusive timelines. These are timelines that a reasonable Software engineer would reject out of pocket. Well-intentioned SCRUM Masters and Kanban Leads are accountable only to cadence. These individuals lack relevant understanding of the relevant software requirements. That facet of the work belongs to the engineer assigned to a user story. The result: blindness to design and architectural integrity. It takes time to analyze the right-sized technical design for any software application. Likewise, it takes time to govern design. It also takes time to govern architectural decisions encountered when implementing user stories; however, user stories cannot await such governance.

It is important to take into account the impacts on large legacy applications. It may take years to prepare the required prerequisites for Agile development. To validate any changes to the software, comprehensive test suites are mandatory.  Without this important capital, the wheels fall off the bus. Progress stalls. This halt arises from a mass of unanticipated defects in the assembled solution. This exposes the tunnel-visioned nature of Agile methods.

We conclude that Agile Methods have hoodwinked the Software Engineering Community.  We've had our expertise assaulted by herd mentality and fad culture. In the end, aren't we falling prey to a fallacy of extremes?  Waterfall methods seem too inflexible. We learn too late that the software doesn't work, With Agile, no one knows if the software broke, or if it will break. In an agile regime, we always find failures and retool as needed. There are factual limits to what can and what cannot be re-tooled.  Often, the functional requirements of the software are not well-documented.  Agile methods aggravate this problem. Functional requirements are not well documented within an agile regime.

 If we focused on this one issue, wouldn't we achieve a better outcome.? Agile is short-sighted. Agile fails to address critical lifecycle considerations of software. Worse still, it tends to obscure that needed perspective. Agile tends to aggravate the lack of suitable and sustainable software documentation.  In the end, there is no path to the requisite comprehensive rewrites that will invariably be required.

Worst of all, most agile adoptions conspicuously exhibit the abdication of software project management.  As a result, project management is becoming an obsolete skill, and this outcome is not an improvement.

Agile introduces prohibitive costs over the long term. These costs are far less extreme with non-Agile methods. Agilists omit this fact when selling Agile Transformation initiatives.


A Better Path Forward

Missing in the hype of  "Agile Transformations" is the reality that software doesn't become agile simply because we proclaim it to be.  Nor does it become agile through short iterations.  To achieve real software agility requires a framework, a masterplan or blueprint for how software is architected, designed, assembled, configured, and yes, coded.

Frameworks have long been employed to empower software engineers to build flexible, stable and sustainable software.  Software Stability, pioneered by Dr. Mohammed Fayad is a promising path forward.  In a nutshell, software can only be agile if it is architected and designed not only for agility and flexibility, but also for stability and sustainability, scalability and extensibility. Dr. Fayad's  Software Stability Model is a powerful approach to building software much like cloud platforms are engineered.  The promis of Software Stability is to evolve from brute force coding of applications to configuring applications from stable modules and components that will allow organizations to achieve greater agility than is currently possible.  Moreover, Software Stability dove-tails with AI initiatives to achieve a more rapid path to AI Software bots.  These AI Software engineering bots will be able to pair engineer with a Software Developer or develop code and test suites independently.  In short, we need methods and technologies for the future today, rather than imposing dictates on legacy software engineering technologies, which simply cannot be achieved in any holistic sense.  At the foundation of Software Stability Model is a grammar  far closer to natural language than any programming language could achieve.  Thus, the clear advantage of Software Stability Models is the ability to incorporate Generative AI into the software engineering process, and to unveil a new era of software engineering to benefit software engineers, analysts and business stakeholders alike.


 

Wednesday, February 14, 2024

You are Dead to Me

For the reader who has read my "Dirty Little Secret" essay on this site, you will not be surprised to hear me say this:  Enterprise Agile is dead to me!

For goodness sake, software engineering and IT have been hocking agile for 22 years.  What has it yielded?  I'll wait.

To reiterate, Agile is fine for startups and green-field development, but even then, it can be argued that the cost of spinning up an Agile practice is not justifiable.  Agile never promised a plethora of tools that would be required to preside over an agile engineering discipline.  In fact, the Agile Allience abundantly rejected tools in favor of personal interactions.  Yet in practice most companies adopting Agile quickly outfit their Agile practice with a large acquisition of tools:

1. Tools for CI/CD aka pipelines, with not less than 1/2 dozen tools required.

2. Tools for Agile Management (is this even legitimate, as we rarely see any integrated management in enterprise Agile rollouts. Instead we have clueless Scrum Masters who know knothing about traditional project management, and have even less knowledge or experience with agile management)

  a. We get JIRA, Confluence, Service Now, and others.

3. Tools built on top of CI/CD tooling to address legacy concerns that traditional CI/CD tooling does not handle. Worse still, everything happens at the same time, so there is no ability to assess impact or incorporate any planning into the  "Agile Transformation" - a term that I am quite certain means "Suicide" in The Oxford English Dictionary.

Tooling required does come with not only up-front costs and maintenance and leasing costs, but there are also integration costs that are not typically well understood.  These often get bundled into the term DevOps, but these DevOps concerns oare often manifested in roadblocks, which cannot be easily quantified, nor circumnavigated in highly controlled or even regulated enterprise environments. The costs add up, but no one is responsible for tracking the overall costs of engineering around the requirements imposed by Enterprise Agile and it's requisite tooling.

Given these findings.  I can easily say, that Enterprise Agile is dead to me.  I hope that the reader finds this information of benefit.

bMoreov, isnt it time that Agile had a facelift, or f, in the alternative, for smart engineers start to look beyond agile?  Facing the facts, it is clear - Agile is not the holy Grail of software engineering discipline. Instead of feeding the beast that is Agile, shouldn't we be seeking to feed our Customers and users once and for all, rather than a technology monkey that  has taken a rid on our backs?

Friday, January 19, 2024

A Dirty Little Secret

The world over, companies are embracing the Agile Revolution.  All software engineering is relegated to agile practices. Sounds good, right?

Wrong.  Agile is not a one-size fits all solution.  It is not even a methodology.  Agile is only a set of guidelines.  Most companies embracing agile have no appreciation for the pitfals that come with agile.  Invariably, many companies will embrace the SCRUM methodology in some form or other.  Unfortunately, SCRUM is not really a methodology either.  Rather, it is a further set of guidelines and rituals that may be adopted.

There is a dirty little secret about SCRUM and Agile.  The only promise that the agile alliance makes is that there is an emphasis on working software.  This is a good thing, right? Not exactly.  

In practice, SCRUM and Agile are pitched to corporate executives with the promise of greater efficience (read: cost savings).  The dirty little secret is that there are virtually no successful agile implementations of Agile methods in the corporate world.  Large corporations come replete with a set of challenges that Agile is not equipped to address. Namely, large corporations have the challenge of large amounts of legacy and commercial software  products which may be highly customized and integrated into a vast web of complexity.  Furthermore, corporate software may have evolved over years, or even decades such that the underlying business rules which prompted the development of various features of the applications are not well understood.  These software modules are typically very poorly documented and it is prohibitive to reverse engineer the software, and the time and budget to do this is typically astronomical.

The bottom line, is that the "experts" pitching agile to corporations are selling snake oil.  There is literally not one large corporation the world over that can point to any successful agile implementation at corporate scale with the possible exceptions of Amazon and Ali Baba, both are arguably green-field, startups, which is the sweet-spot for agile approaches.  When you have no legacy software, no installed base, and no contractual commitments whatsoever, agile can work brilliantly, but established corporations are being blind-sided by agilists who promise the world only to deliver nothing of value.

Thursday, August 3, 2023

Courage

 Introduction:


Courage, my dear friends, is not the absence of fear, but rather the triumph over it. It is the audacity to face adversity head-on, to stand tall in the face of danger, and to persevere when all seems lost. Courage is a virtue that has been celebrated throughout history, revered by great minds and embodied by extraordinary individuals. In this essay, we shall embark on a journey to explore the essence of courage, drawing inspiration from the indomitable spirit of Robin Williams and the wisdom of prominent historical figures. And of course, no exploration of courage would be complete without the profound words of Morgan Freeman.

Defining Courage:

Courage is a multifaceted concept that encompasses various aspects of human existence. It is not limited to physical bravery alone but extends to moral courage, emotional resilience, and intellectual audacity. It is the willingness to take risks, to step outside one's comfort zone, and to confront challenges with unwavering determination.

Robin Williams once said, "You're only given a little spark of madness. You mustn't lose it." This quote encapsulates the essence of courage – that spark within us that propels us forward despite our fears and doubts. It is this madness, this audacity to dream big and pursue our passions relentlessly, that fuels our courage.

Physical Courage:

Physical courage is perhaps the most instinctive form of courage. It is the ability to face physical danger or endure pain without succumbing to fear. Throughout history, countless individuals have demonstrated extraordinary physical courage in the face of adversity.

One such example is Alexander the Great, who led his armies fearlessly into battle against overwhelming odds. His unwavering determination and audacity on the battlefield earned him a place in history as one of the greatest military leaders of all time. As he famously said, "I am not afraid of an army of lions led by a sheep; I am afraid of an army of sheep led by a lion."

Moral Courage:

Moral courage, on the other hand, is the courage to stand up for what is right, even in the face of opposition or personal risk. It is the willingness to challenge societal norms, to fight against injustice, and to advocate for those who cannot speak for themselves.

Nelson Mandela, a true icon of moral courage, once said, "I learned that courage was not the absence of fear, but the triumph over it. The brave man is not he who does not feel afraid, but he who conquers that fear." Mandela's unwavering commitment to justice and equality during his fight against apartheid in South Africa serves as a testament to the power of moral courage.

Emotional Courage:

Emotional courage is often overlooked but equally important. It is the ability to confront and overcome our deepest fears, insecurities, and emotional challenges. It requires vulnerability and self-awareness, as well as the strength to persevere in the face of emotional pain.

In his role as John Keating in "Dead Poets Society," Robin Williams delivered a powerful message about emotional courage. He said, "No matter what anybody tells you, words and ideas can change the world." This quote reminds us that emotional courage lies in expressing our true selves, sharing our thoughts and ideas with the world, and embracing vulnerability as a catalyst for personal growth.

Intellectual Courage:

Intellectual courage is the audacity to question established beliefs, challenge conventional wisdom, and pursue knowledge without fear of judgment or ridicule. It is the willingness to explore new ideas and perspectives, even when they go against the grain.

Albert Einstein exemplified intellectual courage throughout his life. His groundbreaking theories challenged long-held scientific beliefs and revolutionized our understanding of the universe. As he famously said, "The important thing is not to stop questioning. Curiosity has its own reason for existing."

The Wisdom of Morgan Freeman:

No exploration of courage would be complete without the profound words of Morgan Freeman, a voice that resonates with wisdom and gravitas. In his role as Nelson Mandela in the film "Invictus," Freeman delivered a powerful speech about the power of courage. He said, "I am the master of my fate, I am the captain of my soul." These words remind us that courage is not something bestowed upon us by external forces but rather a choice we make to take control of our own destiny.

Conclusion:

Courage, my dear friends, is a virtue that transcends time and space. It is the unyielding spirit that defies all odds, the audacity to dream big and pursue our passions relentlessly. Whether it be physical, moral, emotional, or intellectual objectives.  Courage is the willingness to face adversity head-on and triumph over fear. As Robin Williams once said, "You're only given a little spark of madness. You mustn't lose it." So let us embrace our madness, nurture our courage, and let it guide us on our journey through life.