# Optivem Journal

TDD | Hexagonal Architecture | Clean Architecture

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

## Using acceptance tests to catch regression bugs in legacy code before production

DevFeed: [Using acceptance tests to catch regression bugs in legacy code before production](<https://devfeed.tech/articles/slow-releases-production-bugs-and-you-already-automated-31116.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/slow-releases-production-bugs>)

Author: Valentina Jemuović

Published: 2026-09-16T07:33:58Z

Content type: tutorial

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [regression](<https://devfeed.tech/tags/regression.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui](<https://devfeed.tech/tags/ui.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This hands-on article explains why automated unit and end-to-end tests may still allow production bugs in legacy code. It presents acceptance test-driven development (ATDD), where requirements and tests describe the same observable behavior, making coverage clearer and reducing dependence on UI steps.

### Source excerpt

You automated, and manual regression testing is still there. Those two facts have the same cause.

## Refactoring Should NOT Touch Your Acceptance Tests

DevFeed: [Refactoring Should NOT Touch Your Acceptance Tests](<https://devfeed.tech/articles/refactoring-should-not-touch-your-acceptance-tests-26189.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/refactoring-should-not-touch-your-acceptance-tests>)

Author: Valentina Jemuović

Published: 2026-09-03T06:00:37Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [test](<https://devfeed.tech/tags/test.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article argues that a refactoring pull request should not change acceptance tests or their DSL, because doing so changes behavior rather than merely restructuring code.

### Source excerpt

A "refactor" PR that changes the acceptance test or the DSL isn't a refactor -- it's a behavioral change

## Don't Let AI Multiply Bad Tests

DevFeed: [Don't Let AI Multiply Bad Tests](<https://devfeed.tech/articles/don-t-let-ai-multiply-bad-tests-26183.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/dont-let-ai-multiply-bad-tests>)

Author: Valentina Jemuović

Published: 2026-09-01T08:22:21Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

AI-generated tests can multiply existing problems when a test suite is brittle or tightly coupled to the user interface. The article argues that teams should improve tests so they reflect the application domain before using AI to generate more of them.

### Source excerpt

AI learns from the tests you already have. If those are bad, you now get bad tests much faster.

## Clean Architecture: Use Cases Should NOT Catch Stripe Exceptions

DevFeed: [Clean Architecture: Use Cases Should NOT Catch Stripe Exceptions](<https://devfeed.tech/articles/clean-architecture-use-cases-should-not-catch-stripe-exceptions-26181.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/clean-architecture-use-cases-should-not-catch-stripe-exceptions>)

Author: Valentina Jemuović

Published: 2026-08-27T06:01:02Z

Content type: tutorial

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Error Handling](<https://devfeed.tech/topics/error-handling.md>), [stripe](<https://devfeed.tech/topics/stripe.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [error-handling](<https://devfeed.tech/tags/error-handling.md>), [exceptions](<https://devfeed.tech/tags/exceptions.md>), [stripe](<https://devfeed.tech/tags/stripe.md>)

### AI overview

The article addresses error handling in the application layer and argues that Clean Architecture use cases should not catch Stripe exceptions.

### Source excerpt

Error Handling - Application layer

## Senior Engineer ≠ Years of Experience

DevFeed: [Senior Engineer ≠ Years of Experience](<https://devfeed.tech/articles/senior-engineer-years-of-experience-26190.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/senior-engineer-years-of-experience>)

Author: Valentina Jemuović

Published: 2026-08-24T06:01:00Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

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

Tags: [effective](<https://devfeed.tech/tags/effective.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [experience](<https://devfeed.tech/tags/experience.md>), [learning](<https://devfeed.tech/tags/learning.md>), [mistakes](<https://devfeed.tech/tags/mistakes.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

This opinion argues that years of software engineering experience do not reliably measure engineering ability. Repeated habits, including poor design, avoiding tests, and overengineering, can become more entrenched over time, while continuous learning, experimentation, feedback, and willingness to change are presented as stronger indicators of effectiveness.

### Source excerpt

"I've been doing this for 15 years, so I already know."

## Why Software Architects Should Keep Writing and Reading Code

DevFeed: [Why Software Architects Should Keep Writing and Reading Code](<https://devfeed.tech/articles/the-best-architects-never-stop-coding-26193.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/the-best-architects-never-stop-coding>)

Author: Valentina Jemuović

Published: 2026-08-11T06:00:37Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [Code](<https://devfeed.tech/topics/code.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [developer](<https://devfeed.tech/tags/developer.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [model](<https://devfeed.tech/tags/model.md>)

### AI overview

This opinion article argues that software architects should remain engaged with code rather than treating coding as beneath them. Writing, reading, and reviewing code helps architects understand implementation costs, maintain consistency, and judge whether AI-generated code fits the existing system.

### Source excerpt

You can't feel what your own design costs unless you build something in it. And nobody is going to tell you.

## How a Tech Lead Encouraged Testing in Legacy Code

DevFeed: [How a Tech Lead Encouraged Testing in Legacy Code](<https://devfeed.tech/articles/nobody-wanted-to-write-tests-26188.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/nobody-wanted-to-write-tests>)

Author: Valentina Jemuović

Published: 2026-08-04T06:02:15Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [clean-code](<https://devfeed.tech/topics/clean-code.md>), [Template](<https://devfeed.tech/topics/template.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [clean-code](<https://devfeed.tech/tags/clean-code.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [tech-lead](<https://devfeed.tech/tags/tech-lead.md>), [training](<https://devfeed.tech/tags/training.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This opinion article recounts how an engineering leader struggled to introduce testing and clean-code practices across multiple companies. As a Tech Lead, the author created a testable Clean Architecture template, recruited developers who valued quality, built an initial module, and trained the team to use the approach.

### Source excerpt

"We don't have time to write the code twice."

## When Clean Architecture Overhead Is Justified in Larger Projects

DevFeed: [When Clean Architecture Overhead Is Justified in Larger Projects](<https://devfeed.tech/articles/clean-architecture-is-overhead-26177.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/clean-architecture-is-overhead>)

Author: Valentina Jemuović

Published: 2026-07-28T06:01:50Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Object-relational mapping](<https://devfeed.tech/topics/orm.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [developer](<https://devfeed.tech/tags/developer.md>), [developers](<https://devfeed.tech/tags/developers.md>), [orm](<https://devfeed.tech/tags/orm.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

The article argues that Clean Architecture adds real overhead through extra interfaces, abstractions, indirection, and separate domain and ORM entities. It contends that this trade-off becomes worthwhile as midsize and enterprise projects grow, because decoupling business logic from infrastructure and database structures makes change easier.

### Source excerpt

Stop counting lines of code

## Every Developer Is Already an Architect

DevFeed: [Every Developer Is Already an Architect](<https://devfeed.tech/articles/every-developer-is-already-an-architect-26184.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/every-developer-is-already-an-architect>)

Author: Valentina Jemuović

Published: 2026-07-21T13:02:36Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Code](<https://devfeed.tech/topics/code.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [code](<https://devfeed.tech/tags/code.md>), [developer](<https://devfeed.tech/tags/developer.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

The article argues that developers make architectural decisions whenever they write code, even when those choices appear to be implementation details. It explains how unexamined decisions can accumulate into an unintended architecture and emphasizes making such decisions deliberately.

### Source excerpt

Most developers think architecture is someone else's job.

## Broken Systems Don't Need More Developers

DevFeed: [Broken Systems Don't Need More Developers](<https://devfeed.tech/articles/broken-systems-don-t-need-more-developers-26194.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/you-cant-fix-a-broken-system-by-adding-more-developers>)

Author: Valentina Jemuović

Published: 2026-07-14T09:12:34Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [code-reviews](<https://devfeed.tech/tags/code-reviews.md>), [developers](<https://devfeed.tech/tags/developers.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [meetings](<https://devfeed.tech/tags/meetings.md>), [merge](<https://devfeed.tech/tags/merge.md>), [onboarding](<https://devfeed.tech/tags/onboarding.md>)

### AI overview

Adding developers to a tightly coupled legacy system may slow progress because onboarding, interruptions, meetings, code reviews, and merge conflicts increase. The article argues that architecture, rather than team size, is the main bottleneck.

### Source excerpt

If four developers aren't delivering fast enough, why not make it eight?

## Clean Architecture Mistake: ORM ≠ Domain

DevFeed: [Clean Architecture Mistake: ORM ≠ Domain](<https://devfeed.tech/articles/clean-architecture-mistake-orm-domain-26178.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/clean-architecture-mistake-orm-domain>)

Author: Valentina Jemuović

Published: 2026-07-09T06:02:30Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Object-relational mapping](<https://devfeed.tech/topics/orm.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [clean-architecture](<https://devfeed.tech/tags/clean-architecture.md>), [orm](<https://devfeed.tech/tags/orm.md>)

### AI overview

The article warns that ORM entities should not be confused with domain entities.

### Source excerpt

Do NOT confuse ORM entities with domain entities.

## Your Architecture Doesn't Rot Overnight

DevFeed: [Your Architecture Doesn't Rot Overnight](<https://devfeed.tech/articles/your-architecture-doesn-t-rot-overnight-26196.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/your-architecture-doesnt-rot-overnight>)

Author: Valentina Jemuović

Published: 2026-07-07T06:00:37Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [legacy](<https://devfeed.tech/topics/legacy.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Software](<https://devfeed.tech/topics/software.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code](<https://devfeed.tech/tags/code.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [requirements](<https://devfeed.tech/tags/requirements.md>)

### AI overview

The article explains how repeated convenience-driven decisions gradually weaken boundaries between business logic and infrastructure. It argues that architectural decay often remains hidden while the application works and tests pass, eventually making seemingly simple changes difficult to locate and implement.

### Source excerpt

As deadlines become tighter, convenience starts winning.

## TDD in Legacy Code - Maintainable Component Tests - Backend

DevFeed: [TDD in Legacy Code - Maintainable Component Tests - Backend](<https://devfeed.tech/articles/tdd-in-legacy-code-maintainable-component-tests-backend-26187.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/maintainable-component-tests-in-legacy-code-backend>)

Author: Valentina Jemuović

Published: 2026-07-02T06:02:41Z

Content type: tutorial

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Back end](<https://devfeed.tech/topics/backend.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [backend](<https://devfeed.tech/tags/backend.md>), [component](<https://devfeed.tech/tags/component.md>), [erp](<https://devfeed.tech/tags/erp.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [tdd](<https://devfeed.tech/tags/tdd.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

A tutorial on refactoring brittle backend component tests that are coupled to a backend API and ERP system, with the goal of making them more maintainable.

### Source excerpt

Many Backend Teams write unmaintainable Backend Component Tests - coupled to the Backend API and ERP. I'll show you how to refactor these brittle tests.

## Why Legacy Code Turns Small Changes Into Multi-Day Firefighting

DevFeed: [Why Legacy Code Turns Small Changes Into Multi-Day Firefighting](<https://devfeed.tech/articles/you-didn-t-become-a-senior-dev-to-firefight-26195.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/you-didnt-become-a-senior-dev-to-firefight>)

Author: Valentina Jemuović

Published: 2026-06-30T06:02:36Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [legacy](<https://devfeed.tech/topics/legacy.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Development](<https://devfeed.tech/topics/development.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [dev](<https://devfeed.tech/tags/dev.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [tdd](<https://devfeed.tech/tags/tdd.md>)

### AI overview

This commentary examines how legacy code can turn a small change into days of investigation and risk. It argues that tangled dependencies, missing tests, and outdated code prevent senior developers from improving architecture and make routine maintenance frustrating.

### Source excerpt

The field took twenty minutes. Everything around it took three days.