<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software Design on Tomas Malmsten.com</title><link>https://tomasmalmsten.com/tags/software-design/</link><description>Recent content in Software Design on Tomas Malmsten.com</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 16 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tomasmalmsten.com/tags/software-design/index.xml" rel="self" type="application/rss+xml"/><item><title>Visualising informal influence</title><link>https://tomasmalmsten.com/blog/influence-visualisation/</link><pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/influence-visualisation/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="visualising-informal-influence" --&gt;
&lt;h1&gt;Visualising informal influence&lt;/h1&gt;
&lt;p&gt;Where we look at how we can uncover undisclosed power lines and influence
structures in our projects and workplaces to aid our software design.&lt;/p&gt;
&lt;p&gt;Many have written and talked about how social structures in organisations
influences the software we create. From Conway&amp;rsquo;s Law&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; to Domain Driven Design&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;,
and Diana Montalion&amp;rsquo;s book Learning Systems Thinking&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;. But I have so far not seen
anyone write about how we can discover the implicit relationships we have that
also play a role in design.&lt;/p&gt;</description></item><item><title>Giving your unit tests the trust they deserve</title><link>https://tomasmalmsten.com/blog/trusting-unit-tests-fully/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/trusting-unit-tests-fully/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="giving-your-unit-tests-the-trust-they-deserve" --&gt;
&lt;h1&gt;Giving your unit tests the trust they deserve&lt;/h1&gt;
&lt;p&gt;Where we learn more about the value of unit tests, and about collaborating closely to better understand the complexities in our software.&lt;/p&gt;</description></item><item><title>Defining the unit in Unit Tests</title><link>https://tomasmalmsten.com/blog/definition-of-unit-test/</link><pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/definition-of-unit-test/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="defining-the-unit-in-unit-tests" --&gt;
&lt;h1&gt;Defining the unit in Unit Tests&lt;/h1&gt;
&lt;p&gt;Where we consider what a unit is when we talk about unit tests, with some help from Michael Feathers.&lt;/p&gt;</description></item><item><title>Collaborating on requirements with example mapping</title><link>https://tomasmalmsten.com/blog/2025-12-02-discover-specs-with-team/</link><pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/2025-12-02-discover-specs-with-team/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="collaborating-on-requirements-with-example-mapping" --&gt;
&lt;h1&gt;Collaborating on requirements with example mapping&lt;/h1&gt;
&lt;p&gt;Where we follow a team who make some fundamental discoveries in a short time using Example Mapping.&lt;/p&gt;</description></item><item><title>Untangling test setup</title><link>https://tomasmalmsten.com/blog/2024-08-21-untangle-test-setup/</link><pubDate>Wed, 21 Aug 2024 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/2024-08-21-untangle-test-setup/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="untangling-test-setup" --&gt;
&lt;h1&gt;Untangling test setup&lt;/h1&gt;
&lt;p&gt;Where we learn about some patterns that will help separate test setup from tests, making tests easier to read and understand.&lt;/p&gt;</description></item><item><title>Decomposing work</title><link>https://tomasmalmsten.com/blog/2024-07-01-decomposing-work/</link><pubDate>Mon, 01 Jul 2024 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/2024-07-01-decomposing-work/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="decomposing-work" --&gt;
&lt;h1&gt;Decomposing work&lt;/h1&gt;
&lt;p&gt;Where we learn some more about how to slice work into smaller pieces, perhaps so small we can deliver many a day.&lt;/p&gt;</description></item><item><title>Frontend testing strategies - The GUI</title><link>https://tomasmalmsten.com/blog/2023-03-10-frontend-testing-strategies-the-gui/</link><pubDate>Fri, 10 Mar 2023 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/2023-03-10-frontend-testing-strategies-the-gui/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="frontend-testing-strategies---the-gui" --&gt;
&lt;h1 class="header-anchor-wrapper"&gt;Frontend testing strategies - The GUI
&lt;a href="#frontend-testing-strategies---the-gui" class="header-anchor-link"&gt;
&lt;svg
xmlns="http://www.w3.org/2000/svg"
width="1rem" height="1rem" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"&gt;
&lt;line x1="4" y1="9" x2="20" y2="9"&gt;&lt;/line&gt;&lt;line x1="4" y1="15" x2="20" y2="15"&gt;&lt;/line&gt;&lt;line x1="10" y1="3" x2="8" y2="21"&gt;&lt;/line&gt;&lt;line x1="16" y1="3" x2="14" y2="21"&gt;&lt;/line&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Where we learn two patterns that will make it possible to TDD the frontend.&lt;/p&gt;</description></item><item><title>Software Design is an Exercise in Human Relationships</title><link>https://tomasmalmsten.com/blog/2023-02-06-software-design-exercise-in-human-relationships/</link><pubDate>Mon, 06 Feb 2023 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/2023-02-06-software-design-exercise-in-human-relationships/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="software-design-is-an-exercise-in-human-relationships" --&gt;
&lt;h1 class="header-anchor-wrapper"&gt;Software Design is an Exercise in Human Relationships
&lt;a href="#software-design-is-an-exercise-in-human-relationships" class="header-anchor-link"&gt;
&lt;svg
xmlns="http://www.w3.org/2000/svg"
width="1rem" height="1rem" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"&gt;
&lt;line x1="4" y1="9" x2="20" y2="9"&gt;&lt;/line&gt;&lt;line x1="4" y1="15" x2="20" y2="15"&gt;&lt;/line&gt;&lt;line x1="10" y1="3" x2="8" y2="21"&gt;&lt;/line&gt;&lt;line x1="16" y1="3" x2="14" y2="21"&gt;&lt;/line&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Where we dive into the core of software design, the people.&lt;/p&gt;</description></item><item><title>The importance of direction</title><link>https://tomasmalmsten.com/blog/2023-01-11-the-importance-of-direction/</link><pubDate>Wed, 11 Jan 2023 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/2023-01-11-the-importance-of-direction/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="the-importance-of-direction" --&gt;
&lt;h1 class="header-anchor-wrapper"&gt;The importance of direction
&lt;a href="#the-importance-of-direction" class="header-anchor-link"&gt;
&lt;svg
xmlns="http://www.w3.org/2000/svg"
width="1rem" height="1rem" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"&gt;
&lt;line x1="4" y1="9" x2="20" y2="9"&gt;&lt;/line&gt;&lt;line x1="4" y1="15" x2="20" y2="15"&gt;&lt;/line&gt;&lt;line x1="10" y1="3" x2="8" y2="21"&gt;&lt;/line&gt;&lt;line x1="16" y1="3" x2="14" y2="21"&gt;&lt;/line&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Where we look closer at the value of going towards something over moving away from something.&lt;/p&gt;</description></item><item><title>On growing software</title><link>https://tomasmalmsten.com/blog/2022-10-26-on-growing-software/</link><pubDate>Wed, 26 Oct 2022 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/2022-10-26-on-growing-software/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="on-growing-software" --&gt;
&lt;h1 class="header-anchor-wrapper"&gt;On growing software
&lt;a href="#on-growing-software" class="header-anchor-link"&gt;
&lt;svg
xmlns="http://www.w3.org/2000/svg"
width="1rem" height="1rem" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"&gt;
&lt;line x1="4" y1="9" x2="20" y2="9"&gt;&lt;/line&gt;&lt;line x1="4" y1="15" x2="20" y2="15"&gt;&lt;/line&gt;&lt;line x1="10" y1="3" x2="8" y2="21"&gt;&lt;/line&gt;&lt;line x1="16" y1="3" x2="14" y2="21"&gt;&lt;/line&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Where we delve into the similarities between gardening and making software.&lt;/p&gt;</description></item><item><title>Encapsulation in Java and Kotlin</title><link>https://tomasmalmsten.com/blog/encapsulation-in-java-and-kotlin/</link><pubDate>Tue, 15 Jan 2019 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/encapsulation-in-java-and-kotlin/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="encapsulation-in-java-and-kotlin" --&gt;
&lt;h1 class="header-anchor-wrapper"&gt;Encapsulation in Java and Kotlin
&lt;a href="#encapsulation-in-java-and-kotlin" class="header-anchor-link"&gt;
&lt;svg
xmlns="http://www.w3.org/2000/svg"
width="1rem" height="1rem" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"&gt;
&lt;line x1="4" y1="9" x2="20" y2="9"&gt;&lt;/line&gt;&lt;line x1="4" y1="15" x2="20" y2="15"&gt;&lt;/line&gt;&lt;line x1="10" y1="3" x2="8" y2="21"&gt;&lt;/line&gt;&lt;line x1="16" y1="3" x2="14" y2="21"&gt;&lt;/line&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Where we dive into tradeoffs in encapsulation in the Java and Kotlin languages.&lt;/p&gt;</description></item><item><title>Tackling legacy code</title><link>https://tomasmalmsten.com/blog/tackling-legacy-code/</link><pubDate>Thu, 20 Aug 2015 00:00:00 +0000</pubDate><guid>https://tomasmalmsten.com/blog/tackling-legacy-code/</guid><description>&lt;!-- end-chunk --&gt;
&lt;!-- begin-chunk data-anchor="tackling-legacy-code" --&gt;
&lt;h1 class="header-anchor-wrapper"&gt;Tackling legacy code
&lt;a href="#tackling-legacy-code" class="header-anchor-link"&gt;
&lt;svg
xmlns="http://www.w3.org/2000/svg"
width="1rem" height="1rem" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round"&gt;
&lt;line x1="4" y1="9" x2="20" y2="9"&gt;&lt;/line&gt;&lt;line x1="4" y1="15" x2="20" y2="15"&gt;&lt;/line&gt;&lt;line x1="10" y1="3" x2="8" y2="21"&gt;&lt;/line&gt;&lt;line x1="16" y1="3" x2="14" y2="21"&gt;&lt;/line&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Where we learn some strategies that will make scary code become less scary.&lt;/p&gt;</description></item></channel></rss>