<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Software Engineering on dplabs — Software Engineering &amp; Technology Consultancy</title>
		<link>https://dplabs.tech/categories/software-engineering/</link>
		<description>Recent content in Software Engineering on dplabs — Software Engineering &amp; Technology Consultancy</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Mon, 13 Jul 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://dplabs.tech/categories/software-engineering/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>The Cost of Clever Code</title>
				<link>https://dplabs.tech/blog/cost-of-clever-code/</link>
				<pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/cost-of-clever-code/</guid>
				<description>&lt;p&gt;Every programming language has features that allow you to write dense, sophisticated-looking code. Java has streams, lambdas, method references, and generic type hierarchies. These are useful tools. They&amp;rsquo;re also regularly used to write code that is harder to understand than the straightforward version with no corresponding benefit.&lt;/p&gt;&#xA;&lt;p&gt;Clever code has a cost. The cost is paid by every engineer who reads it, modifies it, or debugs it. In a living codebase, that cost is paid repeatedly.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Designing Code for Change</title>
				<link>https://dplabs.tech/blog/designing-code-for-change/</link>
				<pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/designing-code-for-change/</guid>
				<description>&lt;p&gt;Software changes. This is not a contingency — it&amp;rsquo;s the nature of software development. Requirements evolve. Systems scale. Technologies improve. Teams change. The useful question is not &amp;ldquo;will this change?&amp;rdquo; but &amp;ldquo;when it changes, how expensive will the change be?&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Code that&amp;rsquo;s designed for change is not over-engineered. It&amp;rsquo;s code where the natural boundaries of the design align with the natural boundaries of change. When a change is required, it affects a small, predictable, well-bounded area. When it&amp;rsquo;s not, the design hasn&amp;rsquo;t added unnecessary complexity &amp;ldquo;just in case.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Code Reviews: Reviewing Design, Not Formatting</title>
				<link>https://dplabs.tech/blog/code-reviews-design-not-formatting/</link>
				<pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/code-reviews-design-not-formatting/</guid>
				<description>&lt;p&gt;Code review is one of the highest-leverage practices in software engineering. Done well, it catches defects before they reach production, distributes knowledge, and improves the overall quality of the codebase. Done poorly, it&amp;rsquo;s a bureaucratic checkpoint that blocks delivery while catching only superficial issues.&lt;/p&gt;&#xA;&lt;p&gt;The difference is usually what the reviewer focuses on.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-automated-tools-should-catch&#34;&gt;What Automated Tools Should Catch&lt;/h2&gt;&#xA;&lt;p&gt;The first principle of effective code review: &lt;strong&gt;don&amp;rsquo;t spend human review time on things that tools can detect&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Abstraction Is a Cost, Not a Free Feature</title>
				<link>https://dplabs.tech/blog/abstraction-is-a-cost/</link>
				<pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/abstraction-is-a-cost/</guid>
				<description>&lt;p&gt;Software engineering culture values abstraction. Interfaces, layers, generalization, frameworks — these are treated as inherently good. The more abstract your code, the more flexible and reusable it is.&lt;/p&gt;&#xA;&lt;p&gt;This is partially true and partially a way to build systems that are harder to understand than they need to be.&lt;/p&gt;&#xA;&lt;p&gt;Abstraction has real benefits. It also has real costs. The question is whether the benefits outweigh the costs in a specific context — not whether abstraction is good in the abstract.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Clean Code Is Not About Pretty Code</title>
				<link>https://dplabs.tech/blog/clean-code-is-not-about-pretty-code/</link>
				<pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate>
				<guid>https://dplabs.tech/blog/clean-code-is-not-about-pretty-code/</guid>
				<description>&lt;p&gt;&amp;ldquo;Clean code&amp;rdquo; has become a proxy for &amp;ldquo;code that looks like the author read Clean Code.&amp;rdquo; Short methods named with specific patterns. Classes that follow certain principles. Comments removed because &amp;ldquo;code should be self-documenting.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;This misses the point. Clean code is not a style. It&amp;rsquo;s code that manages complexity effectively — that can be understood, changed, and extended without surprising consequences.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-complexity-actually-costs&#34;&gt;What Complexity Actually Costs&lt;/h2&gt;&#xA;&lt;p&gt;Every line of code has carrying costs. It needs to be understood before it can be changed. Changed before it can be trusted. Tested before it can be deployed. These costs compound.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
