# Software Design

Published articles for Software Design.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Why Tech Companies Hid the "Log Out" Button (And How to Win It Back)

DevFeed: [Why Tech Companies Hid the "Log Out" Button (And How to Win It Back)](<https://devfeed.tech/articles/why-tech-companies-hid-the-log-out-button-and-how-to-win-it-back-9280.md>)

Original publisher: [Read original article](<https://webdesignerdepot.com/why-tech-companies-hid-the-log-out-button-and-how-to-win-it-back/>)

Author: Simon Sterne

Published: 2026-09-01T12:33:00Z

Content type: opinion

Language: en

Sources: [Web Designer Depot](<https://devfeed.tech/sources/web-designer-depot.md>)

Topics: [User interface design](<https://devfeed.tech/topics/ui-design.md>)

Tags: [app-addiction](<https://devfeed.tech/tags/app-addiction.md>), [attention-economy](<https://devfeed.tech/tags/attention-economy.md>), [behavioral-design](<https://devfeed.tech/tags/behavioral-design.md>), [dark-patterns](<https://devfeed.tech/tags/dark-patterns.md>), [digital-minimalism](<https://devfeed.tech/tags/digital-minimalism.md>), [digital-wellbeing](<https://devfeed.tech/tags/digital-wellbeing.md>), [internet-culture](<https://devfeed.tech/tags/internet-culture.md>), [logout-button](<https://devfeed.tech/tags/logout-button.md>), [online-privacy](<https://devfeed.tech/tags/online-privacy.md>), [persuasive-technology](<https://devfeed.tech/tags/persuasive-technology.md>), [product-design](<https://devfeed.tech/tags/product-design.md>), [social-media](<https://devfeed.tech/tags/social-media.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [tech-industry](<https://devfeed.tech/tags/tech-industry.md>), [technology](<https://devfeed.tech/tags/technology.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-design](<https://devfeed.tech/tags/ui-design.md>), [user-autonomy](<https://devfeed.tech/tags/user-autonomy.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [ux](<https://devfeed.tech/tags/ux.md>), [ux-design](<https://devfeed.tech/tags/ux-design.md>), [ux-usability](<https://devfeed.tech/tags/ux-usability.md>), [web-design](<https://devfeed.tech/tags/web-design.md>)

### AI overview

An opinion piece arguing that platforms make logging out deliberately difficult to prioritize engagement, tracking, and business metrics over user choice.

### Source excerpt

Ever noticed that signing in takes one tap, but logging feels like solving a puzzle?That's not bad design. It's a business strategy. The modern internet has quietly turned "leave" into the hardest button to find--and most people never realized it was happening.

## 15 Common Software Design Patterns Explained with Java Examples

DevFeed: [15 Common Software Design Patterns Explained with Java Examples](<https://devfeed.tech/articles/every-important-design-pattern-explained-in-18-minutes-33565.md>)

Original publisher: [Read original article](<https://blog.algomaster.io/p/every-important-design-pattern-explained>)

Author: Ashish Pratap Singh

Published: 2026-08-25T04:01:49Z

Content type: tutorial

Language: en

Sources: [AlgoMaster Newsletter](<https://devfeed.tech/sources/algomaster-newsletter.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Java](<https://devfeed.tech/topics/java.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [design](<https://devfeed.tech/tags/design.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [java](<https://devfeed.tech/tags/java.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

This tutorial explains 15 commonly used software design patterns, covering their categories and practical use cases. It uses Java code examples and discusses patterns including Singleton, Builder, and Factory Method, along with cautions about global access and hidden dependencies.

### Source excerpt

In this article, I'll break down 15 of the most important design patterns I've come across in interviews and throughout my 9+ years as a Software Engineer.

## The Complete Guide to Writing Effective Software Design Documents

DevFeed: [The Complete Guide to Writing Effective Software Design Documents](<https://devfeed.tech/articles/the-complete-guide-to-writing-effective-software-design-documents-4451.md>)

Original publisher: [Read original article](<https://www.toptal.com/developers/ios/why-design-documents-matter>)

Author: ERDINC MUTLU, PRINCIPAL ENGINEER @ TOPTAL

Published: 2026-08-25T04:00:00Z

Content type: article

Language: en

Sources: [Toptal Blog](<https://devfeed.tech/sources/toptal-blog.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [coding](<https://devfeed.tech/topics/coding.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [design](<https://devfeed.tech/tags/design.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [guide](<https://devfeed.tech/tags/guide.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

A practical guide to writing software design documents that translate high-level requirements into technical blueprints before implementation. It covers the purpose, structure, key sections, common pitfalls, and the role of design documents in creating shared understanding among project stakeholders.

### Source excerpt

A software design document turns high-level requirements into a technical blueprint before coding starts. This SDD guide offers writing tips, explains key sections, and flags common pitfalls.

## How to Learn Low-Level Design: A Roadmap for Study and Interviews

DevFeed: [How to Learn Low-Level Design: A Roadmap for Study and Interviews](<https://devfeed.tech/articles/how-to-learn-low-level-design-from-zero-in-2026-33570.md>)

Original publisher: [Read original article](<https://blog.algomaster.io/p/how-to-learn-low-level-design-from-zero>)

Author: Ashish Pratap Singh

Published: 2026-08-09T10:46:58Z

Content type: tutorial

Language: en

Sources: [AlgoMaster Newsletter](<https://devfeed.tech/sources/algomaster-newsletter.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [system-design](<https://devfeed.tech/tags/system-design.md>)

### AI overview

This tutorial presents a step-by-step roadmap for learning low-level design (LLD), including what to study, the order of topics, interview preparation, and linked learning resources. It explains how LLD differs from high-level system design and describes common interview formats such as object-oriented design, machine coding, and concurrency design.

### Source excerpt

In this article, I'll give you a complete step-by-step roadmap to learn Low-Level Design or LLD from scratch covering exactly what to learn, the right order to learn it, and how to prepare effectively for low level design interviews.

## Let Koin Shape your Application Architecture

DevFeed: [Let Koin Shape your Application Architecture](<https://devfeed.tech/articles/let-koin-shape-your-application-architecture-22974.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/let-koin-shape-your-application-architecture-9cd60b1e02b0?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-07-06T12:01:01Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Software](<https://devfeed.tech/topics/software.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [developer](<https://devfeed.tech/tags/developer.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [software](<https://devfeed.tech/tags/software.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

This tutorial explains how Koin can support application architecture based on Clean Architecture and software design practices. It describes using Koin to create and manage object instances, including singleton and factory definitions, with Ktor's HttpClient as an example.

### Source excerpt

Hey, friends! 👋 Today we're going to explore application architecture and how Koin can help us build scalable, maintainable applications by applying the principles of Clean Architecture and other software design best practices. Application architecture is a fundamental skill for every software engineer. A well-designed architecture makes applications easier to understand, test, extend, and maintain as they grow over time. A collection of LEGO towers in various stages of construction -- Unsplash by richard_heFoundation When we think about software architecture, we often picture layered diagrams -- data, domain, and presentation -- along with classes such as use cases, handlers, repositories, and helpers. But how do all these components work together? How do we establish a reliable communication protocol between them? Architecture is more than just organizing classes into packages. It's about defining how objects communicate and collaborate working toward a common goal. With that in mind, let's begin our journey with a simple principle: Every object instance should be created by Koin. My only responsibility as a developer is to describe how each object should be instantiated, while Koin takes care of the creation process.SingletonSingleton Café generated by ChatGPT Koin makes it easy to define singletons, whether you're using the @Single annotation or the single { ... } DSL. By declaring a singleton, you're telling Koin to create and manage a single instance of that object for the lifetime of the application. In the example below, we define an HttpClient as a singleton: @Module class NetworkModule { @Single fun provideHttpClient(): HttpClient { return HttpClientBuilder.build( baseUrl = BuildKonfig.HOST, ) } ... } HttpClient is a class provided by Ktor, and it should typically be instantiated only once. By declaring it as a singleton, Koin ensures that the same HttpClient instance is shared throughout the application. The Singleton pattern is commonly used for objects tha

## Rethinking The Experience Of System Tools

DevFeed: [Rethinking The Experience Of System Tools](<https://devfeed.tech/articles/rethinking-the-experience-of-system-tools-4284.md>)

Original publisher: [Read original article](<https://smashingmagazine.com/2026/05/rethinking-experience-system-tools/>)

Author: hello@smashingmagazine.com (Kyrylo Levashov)

Published: 2026-05-05T08:00:00Z

Content type: article

Language: en

Sources: [Articles on Smashing Magazine -- For Web Designers And Developers](<https://devfeed.tech/sources/articles-on-smashing-magazine-for-web-designers-and-developers.md>)

Topics: [Utility Software](<https://devfeed.tech/topics/utility.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [design](<https://devfeed.tech/tags/design.md>), [software](<https://devfeed.tech/tags/software.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [tools](<https://devfeed.tech/tags/tools.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

The article argues that utility and maintenance software should evolve beyond purely functional, chore-like experiences. Drawing comparisons to redesigned physical products, it advocates more intelligent, human, and emotionally engaging UX for system tools.

### Source excerpt

Design always starts with function -- function shapes form. But if that function can't be made completely invisible and people still have to interact with it, it inevitably becomes part of their experience. In this article, Kyrylo Levashov shares four common software design assumptions.

## Ultimate Go Software Design LIVE: Ep.63

DevFeed: [Ultimate Go Software Design LIVE: Ep.63](<https://devfeed.tech/articles/ultimate-go-software-design-live-ep-63-37804.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/live-ardanlabs-software-design-63/>)

Author: Carlos Alexandro Becker

Published: 2026-01-06T00:00:00Z

Content type: article

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Ardan Labs](<https://devfeed.tech/topics/ardan-labs.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [coding](<https://devfeed.tech/tags/coding.md>), [design](<https://devfeed.tech/tags/design.md>), [go](<https://devfeed.tech/tags/go.md>), [live](<https://devfeed.tech/tags/live.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

A live coding stream featuring Bill Kennedy, Kevin Enriquez, Andrey Nering, and the author, focused on adding support for Ardan Labs' Kronk to Charm's fantasy.

### Source excerpt

A live coding stream with Bill Kennedy, Kevin Enriquez, Andrey Nering, and me.

## IDC study says the global workforce engaged in software design is expanding

DevFeed: [IDC study says the global workforce engaged in software design is expanding](<https://devfeed.tech/articles/idc-study-says-the-global-workforce-engaged-in-software-design-is-expanding-9824.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/idc-design-population-study/>)

Author: Figma

Published: 2025-09-03T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [idc](<https://devfeed.tech/topics/idc.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [Figma](<https://devfeed.tech/topics/figma.md>), [Generative AI](<https://devfeed.tech/topics/generative-ai.md>), [software-development](<https://devfeed.tech/topics/software-development.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [design](<https://devfeed.tech/tags/design.md>), [figma](<https://devfeed.tech/tags/figma.md>), [genai](<https://devfeed.tech/tags/genai.md>), [idc](<https://devfeed.tech/tags/idc.md>), [product-development](<https://devfeed.tech/tags/product-development.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [ux](<https://devfeed.tech/tags/ux.md>), [ux-design](<https://devfeed.tech/tags/ux-design.md>)

### AI overview

An IDC study forecasts that the global workforce involved in software design and development will grow by more than 30%, from 107 million workers in 2025 to 144 million in 2029. UX design is expected to grow faster than other knowledge-worker categories, while generative AI accelerates product development and raises expectations for usable, visually appealing AI features.

### Source excerpt

IDC forecasts that the number of people involved in software design will increase by more than 30% from 2025 to 2029--signaling the rising importance of design as a competitive differentiator.

## Tactical Coding Assistants

DevFeed: [Tactical Coding Assistants](<https://devfeed.tech/articles/tactical-coding-assistants-23725.md>)

Original publisher: [Read original article](<https://medium.com/booking-com-development/tactical-coding-assistants-9fee730fd734?source=rss----1c36c35f9c76---4>)

Author: Pieter Tolsma

Published: 2025-07-03T08:53:09Z

Content type: opinion

Language: en

Sources: [Booking.com Development - Medium](<https://devfeed.tech/sources/booking-com-development-medium.md>)

Topics: [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [claude](<https://devfeed.tech/tags/claude.md>), [coding](<https://devfeed.tech/tags/coding.md>), [coding-assistant](<https://devfeed.tech/tags/coding-assistant.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [design](<https://devfeed.tech/tags/design.md>), [development](<https://devfeed.tech/tags/development.md>), [genai](<https://devfeed.tech/tags/genai.md>), [llm](<https://devfeed.tech/tags/llm.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [review](<https://devfeed.tech/tags/review.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

The article compares tactical and strategic programming and applies that distinction to coding assistants. Drawing on the author's experience, it argues that assistants such as Gemini 2.5 Pro and Claude 3.7 can implement clearly specified tasks effectively, but may produce excessive complexity, duplicated behavior, and difficult-to-maintain code when used without architectural review.

### Source excerpt

Over the past 15 months I have been actively working with LLM's in my job as a software engineer. I have had many moments where I thought singularity was here, but then almost immediately after I would see the agent fall flat on its face. I have become interested in figuring out when and why these new tools fail, in the hope that it can help me use these tools to their maximum potential while still keeping control over the quality of what I commit. In this short article, I want to expand on a recent observation. Generated using Gemini Imagen 4 In the book 'A Philosophy of Software Design' by John K. Ousterhout, a great analogy is made between two different modes of development: tactical and strategic programming. Tactical programming: this is a shortsighted approach focused on completing the immediate task as quickly as possible. Here, the primary goal is to make a feature or bug fix work in the most direct way. You can imagine what will happen if you have a team of engineers that only works like this: technical debt will pile up fast. Generated using Gemini Imagen 4 On the other side there is strategic programming: this involves a higher level of thinking. A strategic programmer is not finished when the feature is implemented. They take a step back and review the architecture, to see if any abstractions can be made. Does the current approach overcomplicate things? Can we refactor things? The focus here is on design, where the engineers main goal is to keep complexity at bay. These two analogies hooked onto what I thought about the current state of coding assistants. In my experience, some of the current (mid-2025) state of the art coding assistants (Gemini 2.5 pro, Claude 3.7) are extremely adept tactical programmers. Assuming you give them a clear description of what you need implemented, they will go ahead and do it for you (with quite a high success rate in my experience). We humans are limited by many things, such as the speed at which we can physically press k

## Config 2025: Pushing design further

DevFeed: [Config 2025: Pushing design further](<https://devfeed.tech/articles/config-2025-pushing-design-further-9584.md>)

Original publisher: [Read original article](<https://www.figma.com/blog/config-2025-recap/>)

Author: Dylan Field

Published: 2025-05-07T00:00:00Z

Content type: article

Language: en

Sources: [Figma Blog](<https://devfeed.tech/sources/figma-blog.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [ai](<https://devfeed.tech/tags/ai.md>), [design](<https://devfeed.tech/tags/design.md>), [figma](<https://devfeed.tech/tags/figma.md>), [generation](<https://devfeed.tech/tags/generation.md>), [prototypes](<https://devfeed.tech/tags/prototypes.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

Figma's Config 2025 recap introduces Figma Make, a prompt-to-app capability for exploring, iterating on, and refining designs. It supports prompts from phrases or Figma files, targeted prototype edits using natural language, high-fidelity prototypes, and work spanning design and code.

### Source excerpt

Dylan Field runs down everything we launched at Config 2025 and explains why pushing design further matters more now than ever.

## 2025 Technical Steering Committee

DevFeed: [2025 Technical Steering Committee](<https://devfeed.tech/articles/2025-technical-steering-committee-3293.md>)

Original publisher: [Read original article](<https://astro.build/blog/astro-tsc-2025/>)

Author: Fred Schott

Published: 2025-04-18T00:00:00Z

Content type: news

Language: en

Sources: [The Astro Blog](<https://devfeed.tech/sources/the-astro-blog.md>)

Topics: [Astro](<https://devfeed.tech/topics/astro.md>), [Maintainers](<https://devfeed.tech/topics/maintainers.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [astro](<https://devfeed.tech/tags/astro.md>), [community](<https://devfeed.tech/tags/community.md>), [contributors](<https://devfeed.tech/tags/contributors.md>), [core](<https://devfeed.tech/tags/core.md>), [development](<https://devfeed.tech/tags/development.md>), [github](<https://devfeed.tech/tags/github.md>), [governance](<https://devfeed.tech/tags/governance.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [open](<https://devfeed.tech/tags/open.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

The Astro project announces its 2025 Technical Steering Committee, adding Emanuele Stoppa, Florian Lefebvre, and Matt Kane alongside continuing member Matthew Phillips. Matt Kane will also lead the Astro framework team. The article explains how the committee supports technical decision-making, governance, and the long-term health of the Astro codebase.

### Source excerpt

Meet Astro's 2025 Technical Steering Committee and learn how our open governance model supports the framework's growth, performance, and community-led development.

## Seven Software Architectural Patterns: A Plain-English Guide

DevFeed: [Seven Software Architectural Patterns: A Plain-English Guide](<https://devfeed.tech/articles/7-architectural-patterns-you-must-know-17735.md>)

Original publisher: [Read original article](<https://blog.amigoscode.com/p/7-architectural-patterns-you-must>)

Author: Nelson Djalo

Published: 2025-04-16T16:00:23Z

Content type: tutorial

Language: en

Sources: [Amigoscode Newsletter](<https://devfeed.tech/sources/amigoscode-newsletter.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [guide](<https://devfeed.tech/tags/guide.md>), [microservices-architecture](<https://devfeed.tech/tags/microservices-architecture.md>), [monolithic-architecture](<https://devfeed.tech/tags/monolithic-architecture.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

A plain-English guide to seven software architectural patterns: monolithic, layered, microservices, SOA, MVC, event-driven, and master-slave. It explains how these patterns organize software and discusses tradeoffs such as simplicity, scalability, complexity, and collaboration.

### Source excerpt

A simple guide to 7 software architectural patterns -- monolithic, layered, microservices, SOA, MVC, event-driven, and master-slave -- explained in plain English.

## Design is about the abstractions

DevFeed: [Design is about the abstractions](<https://devfeed.tech/articles/design-is-about-the-abstractions-39069.md>)

Original publisher: [Read original article](<https://blog.devdetails.com/p/design-is-about-the-abstractions>)

Author: Mike

Published: 2024-08-05T15:55:48Z

Content type: article

Language: en

Sources: [Dev Details](<https://devfeed.tech/sources/dev-details.md>)

Topics: [abstraction](<https://devfeed.tech/topics/abstraction.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [software-architecture](<https://devfeed.tech/topics/software-architecture.md>), [API](<https://devfeed.tech/topics/api.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [interface](<https://devfeed.tech/tags/interface.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>)

### AI overview

The article explains how abstraction helps software and house design by hiding implementation details, defining interfaces and APIs, and indicating when a design contains enough detail to stop.

### Source excerpt

Abstractions simplify designs and tell us when to stop designing.

## Ep. 9: Go Package Design: Authorization and API Structures

DevFeed: [Ep. 9: Go Package Design: Authorization and API Structures](<https://devfeed.tech/articles/ep-9-go-package-design-authorization-and-api-structures-22251.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/07/go-package-design-authorization-and-api-structures-ep-9.html>)

Published: 2024-07-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [rego](<https://devfeed.tech/topics/rego.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [api-structures-in-go](<https://devfeed.tech/tags/api-structures-in-go.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [clean-code-go](<https://devfeed.tech/tags/clean-code-go.md>), [context-in-go-middleware](<https://devfeed.tech/tags/context-in-go-middleware.md>), [efficient-go-code](<https://devfeed.tech/tags/efficient-go-code.md>), [error-handling-patterns-go](<https://devfeed.tech/tags/error-handling-patterns-go.md>), [exported-and-unexported-apis-go](<https://devfeed.tech/tags/exported-and-unexported-apis-go.md>), [go](<https://devfeed.tech/tags/go.md>), [go-api-best-practices](<https://devfeed.tech/tags/go-api-best-practices.md>), [go-api-readability](<https://devfeed.tech/tags/go-api-readability.md>), [go-authorization](<https://devfeed.tech/tags/go-authorization.md>), [go-authorization-logic](<https://devfeed.tech/tags/go-authorization-logic.md>), [go-development-practices](<https://devfeed.tech/tags/go-development-practices.md>), [go-error-management](<https://devfeed.tech/tags/go-error-management.md>), [go-middleware-handlers](<https://devfeed.tech/tags/go-middleware-handlers.md>), [go-package-design](<https://devfeed.tech/tags/go-package-design.md>), [go-package-organization](<https://devfeed.tech/tags/go-package-organization.md>), [go-package-tutorials](<https://devfeed.tech/tags/go-package-tutorials.md>), [go-software-architecture](<https://devfeed.tech/tags/go-software-architecture.md>), [go-software-tips](<https://devfeed.tech/tags/go-software-tips.md>), [intuitive-go-codebase](<https://devfeed.tech/tags/intuitive-go-codebase.md>), [maintainable-go-code](<https://devfeed.tech/tags/maintainable-go-code.md>), [rego](<https://devfeed.tech/tags/rego.md>), [rego-scripts-for-go](<https://devfeed.tech/tags/rego-scripts-for-go.md>), [role-based-authorization-in-go](<https://devfeed.tech/tags/role-based-authorization-in-go.md>), [scalable-go-software-design](<https://devfeed.tech/tags/scalable-go-software-design.md>), [secure-access-control-go](<https://devfeed.tech/tags/secure-access-control-go.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [user-claims-context-go](<https://devfeed.tech/tags/user-claims-context-go.md>)

### AI overview

This episode explains how to design Go packages that support role-based authorization with Rego, clearly separate exported and unexported APIs, manage errors consistently, and pass information through context between middleware and handlers.

### Source excerpt

Introduction: Welcome to Episode 9 of our Ultimate Software Design series! In this episode, Bill delves into the intricacies of implementing robust authorization and API structure within Go packages, offering invaluable insights for developers aiming to build scalable and maintainable software systems. Implement role-based authorization logic for secure and precise access control using Rego scripts. Learn best practices for structuring exported and unexported APIs to maintain a clean, intuitive, and maintainable codebase.

## RAG Trick: Embeddings are Spheres

DevFeed: [RAG Trick: Embeddings are Spheres](<https://devfeed.tech/articles/rag-trick-embeddings-are-spheres-33430.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2024/07/10/spheres>)

Published: 2024-07-10T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [Embeddings](<https://devfeed.tech/topics/embeddings.md>), [Retrieval Augmented Generation (RAG)](<https://devfeed.tech/topics/retrieval-augmented-generation-rag.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [embeddings](<https://devfeed.tech/tags/embeddings.md>), [make](<https://devfeed.tech/tags/make.md>), [model](<https://devfeed.tech/tags/model.md>), [rag](<https://devfeed.tech/tags/rag.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

This tutorial explains that normalized embeddings lie on a hypersphere and shows how that simplifies similarity calculations. It recommends dot product over other distance measures, notes that cosine similarity is equivalent for normalized vectors, and relates average embeddings to logistic regression.

### Source excerpt

This post offers some helpful simplifications you can make when working with RAG or embeddings that help build a working mental model around them. Embeddings typically form a (hyper)sphere, because they're normalized.

## Craft in design: What it is & why it matters

DevFeed: [Craft in design: What it is & why it matters](<https://devfeed.tech/articles/craft-in-design-what-it-is-why-it-matters-9127.md>)

Original publisher: [Read original article](<https://slack.design/articles/craft-in-design-what-it-is-why-it-matters/>)

Author: andyacevedo

Published: 2024-06-26T17:25:44Z

Content type: article

Language: en

Sources: [Slack Design](<https://devfeed.tech/sources/slack-design.md>)

Topics: [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [User interface design](<https://devfeed.tech/topics/ui-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Slack](<https://devfeed.tech/topics/slack.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [design](<https://devfeed.tech/tags/design.md>), [experience](<https://devfeed.tech/tags/experience.md>), [slack](<https://devfeed.tech/tags/slack.md>), [software](<https://devfeed.tech/tags/software.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [usability](<https://devfeed.tech/tags/usability.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

The article defines craft in software design and explains how it complements utility and usability. Using Slack's product principles, it argues that craft shapes how a product feels, supports intuitive and dependable experiences, and can contribute to positive emotional responses and customer loyalty.

### Source excerpt

In software design we have all heard the phrase "well-crafted user experience." It may have come up in conversation, in an article or in a job interview. Indeed, conversation and debate about craft, what it is and why it matters, has been a through-line during my 20+ years in tech. I've worked at companies that [...] The post Craft in design: What it is & why it matters appeared first on Slack Design.

## The Soft Side of Software Design

DevFeed: [The Soft Side of Software Design](<https://devfeed.tech/articles/the-soft-side-of-software-design-39847.md>)

Original publisher: [Read original article](<https://www.thinkingintech.com/p/the-soft-side-of-software-design>)

Author: Dariusz Sadowski

Published: 2024-06-01T11:11:37Z

Content type: article

Language: en

Sources: [Thinking in Tech](<https://devfeed.tech/sources/thinking-in-tech.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [design](<https://devfeed.tech/tags/design.md>), [good-practices](<https://devfeed.tech/tags/good-practices.md>), [soft-skills](<https://devfeed.tech/tags/soft-skills.md>), [software](<https://devfeed.tech/tags/software.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

The article argues that software design, like soft skills, is difficult to evaluate objectively because its quality depends on context, communication, personal judgment, and real-world outcomes. It questions whether conventions such as readable code, established practices, or TDD reliably define good design.

### Source excerpt

How to build systems in the real world

## Ep. 3: Mastering Kubernetes: Setting Up Environments with Kind

DevFeed: [Ep. 3: Mastering Kubernetes: Setting Up Environments with Kind](<https://devfeed.tech/articles/ep-3-mastering-kubernetes-setting-up-environments-with-kind-22237.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/05/mastering-kubernetes-setting-up-environments-with-kind-ep-3.html>)

Published: 2024-05-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [clusters](<https://devfeed.tech/tags/clusters.md>), [code-modularity](<https://devfeed.tech/tags/code-modularity.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [docker](<https://devfeed.tech/tags/docker.md>), [go](<https://devfeed.tech/tags/go.md>), [go-development](<https://devfeed.tech/tags/go-development.md>), [go-projects](<https://devfeed.tech/tags/go-projects.md>), [guides](<https://devfeed.tech/tags/guides.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [memory](<https://devfeed.tech/tags/memory.md>), [networking](<https://devfeed.tech/tags/networking.md>), [package-architecture](<https://devfeed.tech/tags/package-architecture.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [troubleshooting](<https://devfeed.tech/tags/troubleshooting.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This video tutorial explains how to set up and manage a Kubernetes development environment using kind, Kubernetes inside Docker. It covers clusters, nodes, pods, resource allocation, networking, asynchronous operations, deployment monitoring, and troubleshooting for Go applications.

### Source excerpt

Introduction: In this installment of the Ultimate Software Design series, Bill guides us through setting up a Kubernetes environment using Kubernetes inside Docker (kind). He breaks down the structure of Kubernetes and offers insights into effective cluster management, ensuring a robust and efficient development environment. Effective Cluster Management: Learn the basics of setting up and managing a Kubernetes cluster, essential for maintaining scalable and resilient Go applications. Pod and Node Configuration: Understand how to configure pods and nodes to optimize compute resources and ensure seamless application deployment.

## Ep. 2: Elevating Software Design in Go: Package Architecture in Modern Development

DevFeed: [Ep. 2: Elevating Software Design in Go: Package Architecture in Modern Development](<https://devfeed.tech/articles/ep-2-elevating-software-design-in-go-package-architecture-in-modern-development-22235.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/05/elevating-software-design-in-go-package-architecture-in-modern-development-ep-2.html>)

Published: 2024-05-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [api-design](<https://devfeed.tech/tags/api-design.md>), [code-modularity](<https://devfeed.tech/tags/code-modularity.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [go](<https://devfeed.tech/tags/go.md>), [go-development](<https://devfeed.tech/tags/go-development.md>), [go-projects](<https://devfeed.tech/tags/go-projects.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [modularity](<https://devfeed.tech/tags/modularity.md>), [package-architecture](<https://devfeed.tech/tags/package-architecture.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

This video episode explains package architecture in Go. It emphasizes clear boundaries between components, focused package functionality, avoiding generic packages such as "Utils" or "Common," and the role of robust type systems in maintainable software.

### Source excerpt

Introduction: In this insightful episode, Bill dives deep into the realm of package design, shedding light on its crucial role in software development. Here are three key takeaways for Go developers: Code Modularity: Learn how Go's packaging system creates essential firewalls between program components, enhancing maintainability. Focused Functionality: Discover the importance of designing packages that provide specific functionality, fostering code clarity. Avoiding Pitfalls: Bill warns against common package design mistakes like centralized "common" packages, promoting a layered approach to maintainable code.

## Ep. 1: Mastering Software Design: Architectural Layers and Coding Modes

DevFeed: [Ep. 1: Mastering Software Design: Architectural Layers and Coding Modes](<https://devfeed.tech/articles/ep-1-mastering-software-design-architectural-layers-and-coding-modes-22238.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2024/05/mastering-software-design-architectural-layers-and-coding-modes-ep-1.html>)

Published: 2024-05-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [coding-modes](<https://devfeed.tech/tags/coding-modes.md>), [go](<https://devfeed.tech/tags/go.md>), [go-development](<https://devfeed.tech/tags/go-development.md>), [go-projects](<https://devfeed.tech/tags/go-projects.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [readability](<https://devfeed.tech/tags/readability.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [ultimate-software-design-series](<https://devfeed.tech/tags/ultimate-software-design-series.md>), [writing-code](<https://devfeed.tech/tags/writing-code.md>)

### AI overview

This episode of the Ultimate Software Design series explains how to create clear, precise, robust, and maintainable code in Go. It covers readability, semantic precision in components, functions, and variables, the distinction between programming and engineering modes, and systematic refactoring focused on precision, testability, and readability.

### Source excerpt

Introduction: Embark on a journey into the heart of software design with the Ultimate Software Design series, where Bill navigates through the intricacies of crafting robust and maintainable code in Go. Understand the importance of prioritizing clarity over brevity in code, fostering better understanding and collaboration among Go developers. Learn how to ensure precision in every aspect of Go development, emphasizing the necessity for precise semantic meanings in components, functions, and variables.

## 4 Software Design Principles I Learned the Hard Way

DevFeed: [4 Software Design Principles I Learned the Hard Way](<https://devfeed.tech/articles/4-software-design-principles-i-learned-the-hard-way-39080.md>)

Original publisher: [Read original article](<https://read.engineerscodex.com/p/4-software-design-principles-i-learned>)

Author: Engineer's Codex

Published: 2024-04-22T19:03:53Z

Content type: article

Language: en

Sources: [Engineer's Codex](<https://devfeed.tech/sources/engineer-s-codex.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Software](<https://devfeed.tech/topics/software.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [design](<https://devfeed.tech/tags/design.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [source-of-truth](<https://devfeed.tech/tags/source-of-truth.md>), [synchronization](<https://devfeed.tech/tags/synchronization.md>)

### AI overview

An experienced software engineer shares design principles drawn from building and launching a large service. The article argues for maintaining one source of truth, deriving values instead of storing duplicate state when practical, and selectively repeating code rather than forcing unsuitable abstractions. It emphasizes that these principles require context and tradeoffs.

### Source excerpt

If there's two sources of truth, one is probably wrong. And yes, please repeat yourself.

## Design context is more important than a detailed solution

DevFeed: [Design context is more important than a detailed solution](<https://devfeed.tech/articles/design-context-is-more-important-than-a-detailed-solution-39068.md>)

Original publisher: [Read original article](<https://blog.devdetails.com/p/design-context-is-more-important>)

Author: Mike

Published: 2023-12-10T06:29:25Z

Content type: opinion

Language: en

Sources: [Dev Details](<https://devfeed.tech/sources/dev-details.md>)

Topics: [context](<https://devfeed.tech/topics/context.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>)

Tags: [autonomy](<https://devfeed.tech/tags/autonomy.md>), [context](<https://devfeed.tech/tags/context.md>), [decision-making](<https://devfeed.tech/tags/decision-making.md>), [flexibility](<https://devfeed.tech/tags/flexibility.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

The article argues that software design should prioritize sufficient context over detailed, rigid solutions. Because requirements and knowledge change during implementation, lightweight design documents should align stakeholders, explain the problem and expected outcomes, and give teams enough direction to adapt autonomously.

### Source excerpt

We will never have enough information before implementation to be able to design a perfect solution. Inevitably, what we know will change as we implement.

## Benefits of Collaboration

DevFeed: [Benefits of Collaboration](<https://devfeed.tech/articles/benefits-of-collaboration-39871.md>)

Original publisher: [Read original article](<https://mende.io/blog/benefits-of-collaboration/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2023-11-04T04:00:00Z

Content type: opinion

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [meetings](<https://devfeed.tech/topics/meetings.md>)

Tags: [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [collaboration-developer-experience-developer-productivity-team-programming-engineering-excellenc](<https://devfeed.tech/tags/collaboration-developer-experience-developer-productivity-team-programming-engineering-excellenc.md>), [communication](<https://devfeed.tech/tags/communication.md>), [meetings](<https://devfeed.tech/tags/meetings.md>), [software-design](<https://devfeed.tech/tags/software-design.md>), [teamwork](<https://devfeed.tech/tags/teamwork.md>)

### AI overview

The article argues that collaboration should be the standard way of working for software teams. It describes benefits including on-the-job team building, better decisions, knowledge sharing, improved communication, and more effective problem-solving. It also argues that synchronous collaboration can improve later asynchronous communication.

### Source excerpt

Benefits of Collaboration In my career, I've seen many "teams" that mainly collaborate only when the work gets tough or if someone has been stuck for days. In these cases, teamwork is more of an exception than a regular practice. This approach is backward. Collaboration should be the standard way of working, and we should only choose to work independently for good reasons.

## Driving software design forward

DevFeed: [Driving software design forward](<https://devfeed.tech/articles/driving-software-design-forward-39073.md>)

Original publisher: [Read original article](<https://blog.devdetails.com/p/driving-software-design-forward>)

Author: Mike

Published: 2023-07-20T05:10:27Z

Content type: opinion

Language: en

Sources: [Dev Details](<https://devfeed.tech/sources/dev-details.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [software-architecture](<https://devfeed.tech/topics/software-architecture.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [decision-making](<https://devfeed.tech/topics/decision-making.md>)

Tags: [architect](<https://devfeed.tech/tags/architect.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [decision-making](<https://devfeed.tech/tags/decision-making.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-design](<https://devfeed.tech/tags/software-design.md>)

### AI overview

The article argues that architects should facilitate the software architecture process rather than own most design work. Engineers should drive designs according to their scope, with one Driver responsible for moving the project forward, coordinating decision-making, and aligning participants on problems, needs, constraints, risks, solutions, and impacts.

### Source excerpt

The last person I'd let design is me, the Architect

[Next page](<https://devfeed.tech/tags/software-design.md?cursor=WyIyMDIzLTA3LTIwVDA1OjEwOjI3KzAwOjAwIiwgIjAyNGIyNTQ4LTVlNDctNGEyOC1hZmQ3LTUxMGExNTU2NDIwNSJd>)