# 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.