What we’ve lost in the push to agile software development, and how to get it back

In the age of agile, too many software designers are afraid to over-design their applications upfront. As a result, many software teams have abandoned architectural thinking, up front design, documentation, diagramming, and modelling. “In many cases this is a knee-jerk reaction to the heavy bloated processes of times past, and in others it’s a misinterpretation and misapplication of the Agile Manifesto.”

software-whiteboard-diagram-c4model-com-simon-brown.jpg

Software design, the whiteboard way

Photo: c4model.com and Simon Brown

That’s the word from Simon Brown, author of Software Architecture for Developers, who urged, in a compelling talk at the Yow! conference, that more thinking about applications be moved up to the whiteboard phase of software creation. Incidentally, he eschews whiteboards, noting they often result in confusing or unintelligible sketchings. “Tragically, as an industry, we’ve stopped teaching [software design]. And if you go and ask people on your team ‘how do you design software?’, they’ll stumble around for a bit, and say, ‘well, we use a whiteboard.’ Do you get code off a whiteboard? What are you using the whiteboard for? They’ll say, ‘we’re drawing pictures boxes and lines.'” 

Brown is a tireless advocate of richer upfront design planning, including the use of tooling such as those employing unified modeling language (UML), which helps provide standardization and process-driven approaches to architectural design. “Richer design diagrams lead to richer design discussions,” he states. Team members and business partners should not have to ask questions such as “what does that arrow mean?” “Is that a Java application?” or “is that a monolithic application or a set of microservices,” he says. Rather, discussions should focus on the functions and services being delivered to the business.

“The thing nobody talks about is you have to do design to get version 1,” Brown says. “You have to put some foundations in place to give you a sufficient starting point to iterate, and evolve on top of. And that’s what we’re missing.”

Many software design teams keep upfront design to a minimum, assuming details will be fleshed out in an agile process as things move along. Brown says this is misplaced thinking, and design teams should incorporate more information into their upfront designs, including the type of technology and languages that are being proposed. “During my travels, I have been given every excuse you can possibly imagine for why teams should not do upfront design,” he says. Some of his favorite excuses even include the question, “are we allowed to do upfront design?” Other responses include “we don’t do upfront design because we do XP [extreme programming],” and “we’re agile. It’s not expected in agile.”

This thinking “comes from all the literature about agile that says ‘there is no big design up front,'” Brown says. “But people miss out the word ‘big,’ and they go, ‘oh great, we don’t need to do design now.'” It’s also important to consider that “the people who put together the Agile Manifesto have a ton of experience. We don’t likely have that same level of experience. If you look around most scenes now, they’re staffed with relatively young people. If we took these super-experienced agile people out of software, and put them into a world they’re not familiar with, would they still talk about doing ‘just experiment and refactor?'” 

Plus, he adds, the manifesto itself, on its principles page, “talks about design and architecture, and says continuous attention to technical excellence and good design enhances agility.” The following components should be part of an upfront design:

  • Significant architectural drivers (requirements, quality attributes, constraints)
  • Context and scope of what is being built
  • Significant design decisions (technology, modularity, etc.)
  • A way to communicate your technical vision to other people

Brown advocates a simplified method for charting out applications he calls the C4 model in upfront design: context, containers, components, and code. It brings in and identifies specific technologies that are proposed for the architecture — such as platforms, programming languages and standards. “It’s basically a set of hierarchical diagrams that allow you to tell different stories to different audiences.” 

While “big design” upfront goes too far in excluding engagement and input down the line, the goal is “to do enough upfront design, enough upfront thinking, to put a starting point in place, and set a general direction,” he says. “Maybe not the perfect direction, maybe not the final direction, but at least some vague notion of direction that we as a team can then follow.”

About the author

E-Crypto News was developed to assist all cryptocurrency investors in developing profitable cryptocurrency portfolios through the provision of timely and much-needed information. Investments in cryptocurrency require a level of detail, sensitivity, and accuracy that isn’t required in any other market and as such, we’ve developed our databases to help fill in information gaps.

Related Posts

E-Crypto News Executive Interviews

Automated trading with HaasBot Crypto Trading Bots

Crypto Scams

Millions in Cryptocurrency Stolen by Scammers in the Last Month According to Tenable Research
November 24, 2021
Behind The Scenes: How this Crypto Community Responded to + $50m Hack
October 18, 2021
Crypto Scams
Crypto Scams Still Persistent In 2021, SEC Warns About Red Flags To Watch
September 9, 2021
Poly Network
Here’s How Hackers Stole Over $600 million in the Poly Network Attack
August 12, 2021
The World’s Most Infamous Crypto Hacks and Scams
July 31, 2021

Blockchain/Cryptocurrency Questions and Answers

GamStop
How Does Bitcoin Casino Work + 2021 Beginner’s Guide
November 8, 2021
Cryptocurrency
How to Buy and Sell Cryptocurrency
November 8, 2021
What Are Bitcoin Futures And How Will They Work In 2022?
November 4, 2021
Ethereum
The Unconventional Guide to Ethereum
October 28, 2021
ICo Presale
The Science Behind ICO Presales…
October 14, 2021


CryptoCurrencyUSDChange 1hChange 24hChange 7d
Bitcoin34,593 2.88 % 10.18 % 19.78 %
Ethereum2,398.0 2.12 % 14.23 % 27.60 %
Tether0.9925 1.22 % 0.60 % 0.84 %
Binance Coin353.58 2.73 % 16.09 % 27.85 %
USD Coin0.9966 0.67 % 0.36 % 0.42 %
Cardano1.060 3.51 % 11.71 % 17.68 %
Solana92.82 5.23 % 24.96 % 36.56 %
XRP0.5754 2.45 % 15.35 % 25.67 %
Terra61.12 2.80 % 15.25 % 25.12 %
Polkadot17.84 2.03 % 18.83 % 35.71 %

bitcoin
Bitcoin (BTC) $ 35,091.00
ethereum
Ethereum (ETH) $ 2,428.72
tether
Tether (USDT) $ 0.999532
binance-coin
Binance Coin (BNB) $ 359.69
usd-coin
USD Coin (USDC) $ 0.998927
cardano
Cardano (ADA) $ 1.08
solana
Solana (SOL) $ 95.74
xrp
XRP (XRP) $ 0.583942
terra-luna
Terra (LUNA) $ 61.59
polkadot
Polkadot (DOT) $ 17.97