Sunday, October 31, 2021

2021-10-31 Sunday - Architecture Design Question: What Are You Optimizing For?

 

I enjoyed reading Chris Richardson's recent blog post, re: His iSAQB 2021 keynote ("iSAQB keynote - Modular monoliths and microservices: architectural patterns for rapid, reliable, frequent and sustainable development") - note, his presentation slides are in his blog post)

I posted a reply to his LinkedIn post:

Chris Richardson an elegant and concise illustration and overview. Very *crisp*.

A question I use when having design discussions/reviews: "What are we trying to optimize for?"

Some choices are consciously made - although, more often, they may simply be unconscious choices (or, implicit biases) - leading to an implicit optimization goal (that may not be aligned with intent, business requirements, or strategy).

Wednesday, October 27, 2021

2021-10-27 Wednesday - Today's Meditation

 

(credit: Skitterphoto on pixabay.com)

 Today's Meditation:

As I look ahead to 2022, and beyond - my mind contemplates future voyages...

In voyaging upon the oceans of the world - you must always be aware of shoals and reefs; rogue waves; other vessels - which may be: adrift, at anchor, underway, piloted by an inexperienced/impaired crew - or unpiloted; deteriorating weather conditions; currents and tides; floating debris; and sunken/submerged vessels.

Your keen awareness of your own crew - and your vessel's condition and operations - being even more essential.

In the world of IT - there are many analogies (and corollaries) to this - to ponder.

 

Wednesday, October 20, 2021

2021-10-20 Wednesday - Book Review: TensorFlow 2.0 in Action

 

(image source: Manning.com)

https://www.manning.com/books/tensorflow-in-action

A most appreciative *Thank You* to Aleksandar Dragosavljević (Review Editor, Manning Publications Co.) for inviting me back for a 2nd round of chapter reviews (1-10) for the new book by Thushan Ganegedara - which I've completed tonight.

Here are my thoughts on the book's progress thus far:

An exceptional and comprehensive book on TensorFlow 2.0 - with a deep coverage and many practical hands-on exercises. A great balancing act between the practical vs. theoretical knowledge. An express route to developing foundational skills with TensorFlow 2.0


 

Sunday, October 17, 2021

2021-10-17 Sunday - Book Review: Software Architecture for Busy Developers

Image Source: Amazon.com

Software Architecture for Busy Developers: Talk and act like a software architect in one weekend

https://www.amazon.com/Software-Architecture-Busy-Developers-architect/dp/1801071594/

  • Publication Date: 2021-10-15
  • 174 pages

Author: Stéphane Eyskens

Companion Github repository for the book:

 

Review Headline: Far Too Ambitious

Link to my review:

Caveat: I was provided a PDF of this book by Packt to review.

 (caution: Some tough love given)

General Impression:

This book could be much better. There are many mentions of frameworks, standards, tools, organizations – and yet, there is a dearth of links provided when they are *initially* mentioned – and for many, no link is provided.

Overall, the sequencing of information feels haphazard – and does not weave a cohesive picture in the mind of the reader.[Note: Another reviewer on Amazon wrote: "...at times it feels like you are reading word-salad, with a bunch of software terminology smashed together in a section that doesn't tie together in the end for an `Architectural Design`"]

Additionally, the book leaves as an exercise for the reader – determining how the different architect roles work together.

Given the book’s actual content length (149 pages) – I feel it has tried to tackle too many topics, without sufficient depth in any of them.

The level of breadth attempted by this book – with such limited depth – may make  the reader feel like they have purchased half-a-book, not a whole book.

It is difficult to determine what this book wants to be…it swerves and veers – covers some topics by barely a sentence – and spends pages discussing the details of other topics.

While the book recommends TOGAF, ITIL, and ArchiMate – in many organizations – these are rarely actually used – and if used, rarely result in actually being useful – rather, resulting in significant wasted cycles to establish and implement them – rarely producing equivalent value for the effort/cost expended.

After reading this book – and seeing the shallow treatment of the material – I fear that the book’s goal of “Talk and act like a software architect in one weekend” - is more likely to create more harm - than good.The proverb, "A little knowledge is a dangerous thing", comes to mind.

What I found Interesting:

The inclusion of a companion github repository for the book, with code examples.

Chapter-3’s coverage of the Architecture Tradeoff AnalysisMethod (ATAM)

Recommendation of the Sparx Enterprise Architect tool.

Chapter-5’s coverage of Design Patterns.

Chapter-6’s Figures 6.5 and 6.6 – illustrating the mapping of Azure and AWS services to patterns.

Suggestions for the Next Edition:

Add a new chapter to discuss the relationship of software design patterns, within the context of application design patterns, DevOps patterns, enterprise integration patterns, as well as cloud architecture patterns. Illustrating the workflow of how architects at different layers – work together to deliver business value.

The acronym noted on page-7 (“SoAr”) for Solution Architect – is often abbreviated simply as “SA” in many organizations.

On page-9, the numbers used in the table for Figure 1.3 do not seem to tell a coherent story, as intended – with a progression from Data…to…Wisdom.

At the end of every chapter, there should be a final section, “Additional Reading”. For example, for Chapter-1: Provide inks to additional resources/materials (such as TOGAF, ArchiMate,UML,  …)

The book should have an additional chapter – to discuss other architecture frameworks – besides heavyweight TOGAF – and the need for “Agile Architecture” – with examples cited.  Additionally, the author should introduce resources for exploring some contrary perspectives and views on how architecture might be viewed (i.e., “The Practice of Enterprise Architecture - A Modern Approach to Business and IT Alignment”, by Svyatoslav Kotusev).

Chapter-2’s discussion of EA should include a discussion on the types of Governance activities that are core to the EA role.

As an example of the shallow level of coverage of a given topic, see Page-28 – which briefly mentions NIST – but does not cite any of the excellent NIST publications that would be of keen interest to any number of architect roles. Although the NIST Cyber Security Framework link is provided – there is no concrete example cited from it – of how it might be useful, or its applicability.

Chapter-4 mentions several different architecture styles on page-52 – but does not include a visual to help the reader understand them conceptually – nor is there any discussion of why one might choose one over the other.

Figures 4.1 and 4.2 do nothing to help the reader understand the concept of a software monolith. There are plenty of Open Source projects that could be used as examples (and, since Sparx EA supports importing the source code – and will automatically generate UML diagrams – that would be eminently more meaningful in communicating real-world examples).

Page-60 should include a discussion of the benefits of GraphQL style services (in the book, GraphQL is only mentioned in a single sentence, on page-133). 

Page-62 should rephrase “Loss of complete oversight” to “Governance challenges”.

Page-64’s mention of “providing some sort of consistency across the different microservices” – begs the question – and seems like only a partially formed thought.

Page-64’s comment regarding the future of Dapr should be elaborated – and supported by cogent citation of rationale reasons. A table, comparing it to other options – would greatly improve this section’s discussion.

Add a section in Chapter-7 to discuss the continuing rise in the adoption of Low-Code and No-Code platforms – and how they can be leveraged to accelerate the delivery of solutions in the software architecture landscape.

 

Table of Contents:

  • Chapter-1: Introducing Software Architecture
  • Chapter-2: Exploring Architecture Frameworks and Methodologies
  • Chapter-3: Understanding ATAM and the Software Quality Attributes
  • Chapter-4: Reviewing the Historical Architecture Style
  • Chapter-5: Design Patterns and Clean Architecture
  • Chapter-6: Impact of the Cloud on the Software Architecture Practice
  • Chapter-7: Trendy Architectures and Global Summary

 

Monday, October 11, 2021

2021-10-11 Monday - Book Review: TypeScript 4 Design Patterns and Best Practices

 

(image source: Amazon.com)

Book: TypeScript 4 Design Patterns and Best Practices

Note:  
Deepak Kumar (Marketing Coordinator, Packt Publishing) provided me with a PDF version of the book to review. 

Link to my review on Amazon:

Chapters:

  1. Getting Started with TypeScript 4
  2. TypeScript Core Principles
  3. Creational Design Patterns
  4. Structural Design Patterns
  5. Behavioral Design Patterns
  6. Functional Programming with TypeScript
  7. Reactive Programming with TypeScript
  8. Developing Modern and Robust TypeScript Applications
  9. Anti-Patterns and Workarounds

 What I Particularly Liked:

  • The author’s practical, real-world, experience – self-evident in his approach to this subject.
  • Emphasis on using the well-established Gang-of-Four Patterns in the book
  • The usage of  UML – as a still relevant and valuable skill
  • The pattern used in describing  the patterns covered in the book (i.e., When to use; Class diagram; Classic implementation; Modern implementations; Variants; Testing; Rel-World examples)
  • The discussions on Classic and Modern implementations of a given pattern.
  • The inclusions of some key Functional programming concepts
  • The inclusion and discussion in Chapter-8 of SOLID design principles.
  • The citations of the book’s corresponding github repository folders, associated with a given chapter.
  • The inclusion of “Further Reading” links at the end of the chapters.

 

Suggestions for Future Editions

  • Expand the “Criticisms” discussion to include examples of anti-patterns.
  • Expand the Functional programming chapter
  • Better attention to ensure that links in the book are correct.

 


 

Copyright

© 2001-2021 International Technology Ventures, Inc., All Rights Reserved.