DEV Community

CodingBlocks

Episode 68 – Clean Architecture – Fight for Architecture

Joe learns of our harebrained idea, Michael learns of Eisenhower’s matrix, and Allen explains polyfills as we begin our dive into Uncle Bob’s latest book, Clean Architecture.

Prefer to read these show notes on something other than your podcast player? You can find the full show notes for this episode at http://www.codingblocks.net/episode68.

Sponsors

  • Linode – Use code “CODINGBLOCKS17” for $20 towards hosting (up to four months free!)

 Survey says …

This episode, we ask: How often should your employer replace your computer?

#yop-poll-container-45_yp59d1986d8ddc7 { width: 1000; background:#fff; padding:10px; color:#555; overflow:hidden; font-size:12px; } #yop-poll-container-45_yp59d1986d8ddc7 input[type='text'] { margin:0px 0px 5px 0px; padding:2%; width:96%; text-indent:2%; font-size:12px; } .yop-poll-name-45_yp59d1986d8ddc7 { font-weight:bold; background:#327BD6; color:#fff; padding:5px; text-align:center; font-size:12px; } #yop-poll-questions-container-45_yp59d1986d8ddc7 { font-size:14px; margin:5px 0px; } .yop-poll-question-container-45_yp59d1986d8ddc7 { padding: 2px; } .yop-poll-question-45_yp59d1986d8ddc7 { background:#327BD6; color:#fff; margin-bottom: 21px; margin-top: -10px; font-style: italic; text-align: center; width: 100%; padding:5px; } .yop-poll-answers-45_yp59d1986d8ddc7 { } .yop-poll-answers-45_yp59d1986d8ddc7 ul { list-style: none outside none; margin: 0; padding: 0; } .yop-poll-li-answer-45_yp59d1986d8ddc7 { font-style:normal; margin:0px 0px 10px 0px; padding:0px; font-size:12px; margin-bottom:20px; } .yop-poll-li-answer-45_yp59d1986d8ddc7 input { margin:0px; float:none; } .yop-poll-li-answer-45_yp59d1986d8ddc7 label { margin:0px; font-style:normal; font-weight:normal; font-size:12px; float:none; } .yop-poll-results-45_yp59d1986d8ddc7 { font-size: 12px; font-style: italic; font-weight: normal; margin-left: 15px; } .yop-poll-customs-45_yp59d1986d8ddc7 { } .yop-poll-customs-45_yp59d1986d8ddc7 ul { list-style: none outside none; margin: 0; padding: 0; } .yop-poll-li-custom-45_yp59d1986d8ddc7 { padding:0px; margin:0px; font-size:14px; } /* Start CAPTCHA div style*/ #yop-poll-captcha-input-div-45_yp59d1986d8ddc7 { margin-top:5px; } #yop-poll-captcha-helpers-div-45_yp59d1986d8ddc7 { width:30px; float:left; margin-left:5px; height:0px; } #yop-poll-captcha-helpers-div-45_yp59d1986d8ddc7 img { margin-bottom:2px; } #yop-poll-captcha-image-div-45_yp59d1986d8ddc7 { margin-bottom:5px; } #yop_poll_captcha_image_45_yp59d1986d8ddc7 { float:left; } /* End CAPTCHA div style*/ .yop-poll-clear-45_yp59d1986d8ddc7 { clear:both; } #yop-poll-vote-45_yp59d1986d8ddc7 { } /* Start Result bar*/ .yop-poll-results-bar-45_yp59d1986d8ddc7 { background:#f5f5f5; height:10px; } .yop-poll-results-bar-45_yp59d1986d8ddc7 div { background:#555; height:10px; } /* End Result bar*/ /* Start Vote Button*/ #yop-poll-vote-45_yp59d1986d8ddc7 div#yop-poll-vote-45_yp59d1986d8ddc7 button { float:left; } #yop-poll-vote-45_yp59d1986d8ddc7 div#yop-poll-results-45_yp59d1986d8ddc7 { float: right; margin-bottom: 20px; margin-top: -20px; width: auto; } #yop-poll-vote-45_yp59d1986d8ddc7 div#yop-poll-results-45_yp59d1986d8ddc7 a { color:#fff; text-decoration:underline; font-size:12px; } #yop-poll-vote-45_yp59d1986d8ddc7 div#yop-poll-back-45_yp59d1986d8ddc7 a { color:#555; text-decoration:underline; font-size:12px; } #yop-poll-vote-45_yp59d1986d8ddc7 div#yop-poll-archive-45_yp59d1986d8ddc7 a { color:#555; text-decoration:underline; font-size:12px; } #yop-poll-vote-45_yp59d1986d8ddc7 div { float:left; width:100%; } /* End Vote Button*/ /* Start Messages*/ #yop-poll-container-error-45_yp59d1986d8ddc7 { font-size:12px; font-style:italic; color:red; text-transform:lowercase; margin-bottom:20px; text-align:center; } #yop-poll-container-success-45_yp59d1986d8ddc7 { font-size:12px; font-style:italic; color:green; margin-bottom:20px; text-align:center; } /* End Messages*/#yop-poll-container-45_yp59d1986d8ddc7 img { max-width: 1000; } .yop-poll-forms-display{}
How often should your employer replace your computer?
  • Every 3 yrs
  • Every 2 yrs
  • Every year
  • Who stays at any employer long enough to have this problem?
  • Wait, they're supposed to replace it?
  • Greater than 3 yrs

News

  • Thank you to all of you that left us a review!
    • iTunes: The Real Brian Choi, Attalus, PizzaHd88, scubasteve636, jdmerth, James Strugnell, AlFraken, Mikeydon
    • Stitcher: theCoz, SVad, tvStevens, 85ustorm, Mik_Lik, fraben, Jerry4592
    • Podchaser: GaProgMan, Dance2Die
  • Veselin Vasilev calls us out on estimations – http://www.codingblocks.net/episode66
  • Azure Red Shirt Tour – FREE!
  • Allen and Michael attend another great Connect.Tech conference
  • Allen’s shopping around for mesh networking and the candidates are:

Clean Architecture

About the book

  • Part of the “Robert C Martin Series”, just came out – other books:
    • Clean Code, Clean Coder, Clean Architecture, The Software Craftsman
  • Billed for Architects, analysts, designers and managers
  • We’ve heard it’s been selling out / hard to get
  • Why the hype?
  • “The rules of software architecture are independent of every other variable”
  • And kinda…programming hasn’t really changed a whole lot
  • Getting something work once isn’t hard…?
  • Why does being “right” matter?
  • Effort is minimized, functionality and flexibility are maximized

What is Design and Architecture?

  • Difference between design and architecture? None!
  • “The goal of software architecture is to minimize the human resources required to build and maintain the required system.”
  • Is the goal to write yourself out of a job?
  • To put another way, the measure of design quality is the measure of the effort required to meet the needs of the customer
  • How do you know if your architecture is wobbly: Is the effort to make changes rising?
  • Great graphs comparing number of programmers, program size, and cost / LOC
  • “Later” is “never”…but what about focusing on an MVP
  • Maybe clean architecture should be an intrinsic part of your MVP!
  • The BIGGEST Lie: Writing messy code makes you go fast in the short term
  • “Slow is Smooth, Smooth is Fast”
  • “We can clean the code up later, we just have to get to market first!”
  • Staying clean always takes less time than cleaning up messes…
  • “The only way to go fast is to go well…”
  • https://itrevolution.com/kata/
  • So, what’s the solution if you’ve found yourself in this mess?
  • Rewrite? NO! That’s the hare talking again, the same hare that got you into this mess!
  • What you should do, is to own your mistakes and start taking quality seriously

A Tale of Two Values

  • Developers are responsible for structure and behavior
  • BOTH should be high, and in balance
  • Behavior (aka “features’) and Structure (aka Architecture)
  • Software is supposed to be “soft” – meaning easy to change!!
  • The difficulty in making a change _should_ be proportional to the SCOPE of the change, not the SHAPE of the change
  • From the stakeholders perspective, they provide a stream of changes of roughly similar scope
  • From the devs perspective, they are rearranging pieces of an ever-increasingly complex jigsaw puzzle
  • Shape and Scope are out of sync!
  • Would you rather have a system that works, and is difficult to change – or one that’s busted, but easy to change?
  • Now, think about this problem at the extremes…
  • Eisenhower’s matrix
    • Behavior is urgent
    • Architecture is important
  • People tend to move urgent and not important to urgent and important
  • Yeah, right – tell that to my manager! NO – it’s YOUR job to evaluate and express this to your manager
  • It’s up to you to fight for the architecture, just like other departments in the business have to fight for what’s important to them
  • YOU are a stakeholder!
  • How do you fight? lunch ‘n’ learn, encouraging conferences, 20% projects, Unit Testing
  • Devs need a seat at the PM table?
  • Keep devs closer to the domain experts!
  • How to push back?

Resources We Like

  • Clean Architecture by Robert C. Martin (Amazon)

Tip of the Week

Episode source