Software-Technology

The Essence of Software: Why Concepts Matter for Great Design

In today’s software design, much focus hones in on users’ experience with the interface. Teams make large efforts to make that experience as pleasing as possible so as not to drive away customers. However, they don’t place as much emphasis on the conceptual nature of software – what concepts users extract from the software and what concepts the software requires for effective use. Since the advent of the GUI, today’s software conveys intellectual matter that…

Continue reading

Indie Software-Technology

Software Architecture for Developers: Designing Scalable & Maintainable Systems for the Real World

This book provides a succinct overview of the subjects a software architect interacts with on a regular basis in today’s world. That is, it portrays a high-level snapshot of the field in 2024. It summarizes what the current technologies are and lists the different conceptual frameworks software technology uses. Microservices, cloud computing, software as a function, and the packages that oversee it fill the lists that Steve Abrams provides. Its main weakness, however, is that…

Continue reading

Software-Technology

Fundamentals of Software Architecture: An Engineering Approach

Software architects guide development teams during projects from design to completion. It’s a notoriously nebulous field where the only goal is to build successful software… whatever that means and whatever that takes. Like any ill-defined field, getting from point A to point B requires skill and wisdom. That skill and wisdom evolves over time as the field evolves. Mark Richards and Neal Ford attempt to provide a guide to being a software architect without tying…

Continue reading

Software-Technology

Writing Effective Use Cases

The first thing I noticed is that this book is almost 25 years old. That’s an eternity in computer science, especially in a non-mathematical subject. It was written under the “waterfall” paradigm of software development, before agile took over most of the software engineering world. Instead of a page or two, waterfall specifications could require a binder of dozens, if not hundreds, of pages. This book describes “use cases” instead of the “user stories” that…

Continue reading

Software-Technology

Tidy First? A Personal Exercise in Empirical Software Design

When a software developer is writing code, she/he is often confronted with a problem: How much work should I put into writing “the best” code versus just doing a quick but serviceable job? Kent Beck, pioneer of the influential Extreme Programming: Embrace Change, addresses this question via an in-depth look at the process of “tidying” code. His answer is usually to “tidy first”… but not always. This book seeks to identify exactly when one is…

Continue reading

Software-Technology

Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures

A software architect foresees potential issues in a design and judges which way will instill the most business success in the long run. Unfortunately, in almost every scenario, trade offs permeate every option. As the saying goes, the devil is in the details. Learning to anticipate problems with wisdom set great software architects apart from merely experienced ones. In this book, several experienced authors look at those trade offs in the context of distributed software…

Continue reading

Software-Technology

UML Distilled: A Brief Guide to the Standard Object Modeling Language

Unified Modeling Language (UML) models how software and technology are designed. Unfortunately, its committee-derived specifications are too long and too detailed for most software developers to parse. This book distills that complexity into a series of simple instructions alongside graphics. These graphics can easily serve as starters or quick interpretive guides for thorny situations. Additionally, Martin Fowler, a UML veteran, offers sage advice to help the reader know what’s most essential and what can be…

Continue reading

Software-Technology

Learning UML 2.0: A Programatic Introduction to UML

Unified Modeling Language (UML) is the best standardized way to graphically depict a complex software system. It makes a technical language of glyphs to portray software integrations so that large software efforts can be more easily understood by developers. Certifications exist that allow individuals to support UML professionally. As a developer, the main problem I have with UML is that it itself is complex, often too onerous for my efforts. I deal with complex software,…

Continue reading

Management-Business Software-Technology

The Software Architect Elevator: Redefining the Architect’s Role in the Digital Enterprise

Traditionally, companies live and die by a fixed hierarchical approach where power and influence are garnered by climbing to the top of the ladder. However, recent decades have witnessed the rise of digital companies promising an economic disruption. Stereotypically, a smart young kid writes some code to change the way business is done and become rich in the process. We, in the public, then use their software for decades to come. Many companies still have…

Continue reading

Software-Technology

Data-Oriented Programming: Reduce Software Complexity

Professionally, I write code for web applications in PHP for biomedical use. Thus, data play a central role in my professional life. At first, I tried to design my programs around object-orientated (OO) principles, but soon found that data played a strong role that OO actually restrained. Years later, I found how React divided itself between immutable data, state information, and code. Though I no longer code in React, I find this division still helpful…

Continue reading