<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/JwX9KlioE" -->

---
title: A Great Programmer Removes, Doesn’t Add | daily.dev
description: Code is a liability, not an asset. Every line written creates maintenance debt that must be read, understood, tested, and eventually updated or removed. True...
canonical: https://daily.dev/posts/a-great-programmer-removes-doesn-t-add-jwx9klioe
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: A Great Programmer Removes, Doesn’t Add | daily.dev
og:description: Code is a liability, not an asset. Every line written creates maintenance debt that must be read, understood, tested, and eventually updated or removed. True...
og:url: https://daily.dev/posts/a-great-programmer-removes-doesn-t-add-jwx9klioe
og:image: https://api.daily.dev/og/posts/JwX9KlioE.png
og:image:alt: A Great Programmer Removes, Doesn’t Add
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# A Great Programmer Removes, Doesn’t Add

**[Codemotion](https://daily.dev/sources/codemotion)** · 13 min read · 142 upvotes · 30 comments

## Summary

Code is a liability, not an asset. Every line written creates maintenance debt that must be read, understood, tested, and eventually updated or removed. True programming mastery lies in the courage to remove unnecessary code, simplify complex logic, and minimize dependencies. Feature creep and dependency accumulation turn simple projects into maintenance nightmares. The real challenge isn't delivering working software—it's preventing it from becoming unmanageable. Senior developers are measured by how much code they can eliminate while preserving functionality, not by how much they can write. Organizations need cultures that celebrate code removal and refactoring as noble work, not chores.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.codemotion.com/magazine/dev-life/a-great-programmer-removes-doesnt-add/>

## Community discussion

Top comments from developers on daily.dev.

**@akkitto** · 14 upvotes

> Tell that to any employer. 😁

**@qwertydiy** · 12 upvotes

> Technically the app with 0 lines of code is the perfect app, the closest we can get there without loss of functionality, design, reliability and performance the better.

**@fabianletsch** · 6 upvotes

> A combination of eslint with knip is absolutely magical.
>
> Knip removes unnecessary exports and eslint marks code that is not used as unused.
>
> Just add both to CI and your dev team will remove dead code automatically!

**@rsteadman** · 3 upvotes

> If writing more code results in better human readable code, then that's the better option. Always opting for 'less is more' is an oversimplification. But I'm sure it does well on bathroom tiles.

**@cobrasnakebyte** · 2 upvotes

> I have the same thought process when writing code, I don't like writing too much code to do a thing the more I write the more I know it is not concise enough. If my code smells, please by all means tell me I invite code review and the constructive feedback as to how I could have done anything better.

## Similar posts on daily.dev

- [Delete Your Code\!](https://daily.dev/posts/delete-your-code--bvw2mxij1) · Atomic Spin · 64 upvotes · 14 comments
- [Your job isn't programming](https://daily.dev/posts/your-job-isn-t-programming-9tv8vusyc) · Lobsters · 1 upvotes · 1 comments
- [I Deleted 5,000 Lines of Code — And My Project Got Better](https://daily.dev/posts/i-deleted-5-000-lines-of-code-and-my-project-got-better-y22ri4uko) · Medium · 0 upvotes · 0 comments

---

Tags: [#technical-debt](https://daily.dev/tags/technical-debt)

[View this post on daily.dev](https://daily.dev/posts/a-great-programmer-removes-doesn-t-add-jwx9klioe)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"A Great Programmer Removes, Doesn’t Add","url":"https://daily.dev/posts/a-great-programmer-removes-doesn-t-add-jwx9klioe","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/a-great-programmer-removes-doesn-t-add-jwx9klioe"},"datePublished":"2025-12-01T15:30:21.617Z","dateModified":"2025-12-01T15:30:46.465Z","description":"Code is a liability, not an asset. Every line written creates maintenance debt that must be read, understood, tested, and eventually updated or removed. True...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/cf6dcbfe5dcf4460ed2694f0f4310dd8?_a=AQAEulh","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/cf6dcbfe5dcf4460ed2694f0f4310dd8?_a=AQAEulh","isAccessibleForFree":true,"articleSection":"Codemotion","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Codemotion","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/008c4c0fe1ba4cd3b6a6740d442d242b","url":"https://daily.dev/sources/codemotion"},"commentCount":30,"discussionUrl":"https://daily.dev/posts/a-great-programmer-removes-doesn-t-add-jwx9klioe","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":142},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":30}],"keywords":"technical-debt","timeRequired":"PT13M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Codemotion","item":"https://daily.dev/sources/codemotion"},{"@type":"ListItem","position":3,"name":"A Great Programmer Removes, Doesn’t Add"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/a-great-programmer-removes-doesn-t-add-jwx9klioe","comment":[{"@type":"Comment","text":"Tell that to any employer. 😁","datePublished":"2025-12-03T11:57:07.778Z","url":"https://daily.dev/posts/JwX9KlioE#c-SlCDTkyjX","author":{"@type":"Person","name":"Daniel","url":"https://daily.dev/akkitto","image":"https://media.daily.dev/image/upload/s--FtwJqX4c--/f_auto/v1754900041/avatars/avatar_29TCpY2hJR72V3BlxPXzX?_a=BAMClqZW0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":14}},{"@type":"Comment","text":"Technically the app with 0 lines of code is the perfect app, the closest we can get there without loss of functionality, design, reliability and performance the better.","datePublished":"2025-12-04T12:43:20.984Z","url":"https://daily.dev/posts/JwX9KlioE#c-HzJv8xmOt","author":{"@type":"Person","name":"Rene Yibowei","url":"https://daily.dev/qwertydiy","image":"https://media.daily.dev/image/upload/s--QlvtioAW--/f_auto/v1746524446/avatars/avatar_aTUl3chxFyPngKtboGisL"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":12}},{"@type":"Comment","text":"A combination of eslint with knip is absolutely magical.\nKnip removes unnecessary exports and eslint marks code that is not used as unused.\nJust add both to CI and your dev team will remove dead code automatically!","datePublished":"2025-12-04T10:25:33.028Z","dateModified":"2025-12-04T10:25:58.963Z","url":"https://daily.dev/posts/JwX9KlioE#c-ZAHQ4sbm1","author":{"@type":"Person","name":"Fabian Letsch","url":"https://daily.dev/fabianletsch","image":"https://lh3.googleusercontent.com/a/ACg8ocKR6BVy_wn23EoOKq7-BlszlcXcLmASlnb7l-GtS-q1bePnkaJf=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":6}},{"@type":"Comment","text":"If writing more code results in better human readable code, then that’s the better option. Always opting for ‘less is more’ is an oversimplification. But I’m sure it does well on bathroom tiles.","datePublished":"2025-12-09T23:16:09.653Z","url":"https://daily.dev/posts/JwX9KlioE#c-eQNskrvXZ","author":{"@type":"Person","name":"R. Steadman","url":"https://daily.dev/rsteadman","image":"https://media.daily.dev/image/upload/s--O0TOmw4y--/f_auto/v1715772965/public/noProfile"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3}},{"@type":"Comment","text":"I have the same thought process when writing code, I don’t like writing too much code to do a thing the more I write the more I know it is not concise enough. If my code smells, please by all means tell me I invite code review and the constructive feedback as to how I could have done anything better.","datePublished":"2025-12-09T16:20:03.924Z","url":"https://daily.dev/posts/JwX9KlioE#c-LCmylwGGM","author":{"@type":"Person","name":"CobraSnakeByte","url":"https://daily.dev/cobrasnakebyte","image":"https://media.daily.dev/image/upload/s--hqDrNVWw--/f_auto/v1764657202/avatars/avatar_92oLYA43501sYL2MFaYRG?_a=BAMAK+ZW0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}}]}
```

