Michal Ševčík
banner
melkornms.bsky.social
Michal Ševčík
@melkornms.bsky.social
Founder of https://remoteyeah.com. Staff Software Engineer. 19+ YoE. JavaScript, PHP. Clean code advocate. Remote work evangelist.
There's also document.elementFromPoint() which returns only the topmost element.

An interactive playground 👇

js-element-from-point.netlify.app
January 19, 2026 at 11:07 AM
Patterns aren't free. Every abstraction has a cost.
January 15, 2026 at 9:43 AM
But it wasn't pragmatic. The "clean architecture" benefits didn't justify the real-world cost. It was optimized for an abstract ideal instead od day-to-day usefulness.

If your "clean architecture" makes the system harder to reason about, it might not be clean at all.
January 15, 2026 at 9:43 AM
I removed ~40 repositories. More complex queries are now scopes that I can combine, which make for a more flexible design.

Don't get me wrong. I love clean code. Clear separation of concerns. Repositories, mappers, DTOs, the whole circus.
January 15, 2026 at 9:43 AM
I removed the repositories and fully embraced the ActiveRecord pattern.

All of the repositories only helped to facilitate testing but overall made the design harder to understand and evolve. Another layer of indirection. Cognitive overhead.
January 15, 2026 at 9:43 AM
- To understand why the code changed, check the commit message and open the ticket for full context.
- Conversely, when reviewing a ticket, you can easily see all related commits.

I worked on teams that didn't do this and I wasted hours trying to figure out why a change happened.
January 14, 2026 at 8:34 AM
January 8, 2026 at 8:58 AM
January 6, 2026 at 9:25 AM
True that. One of the changes I was very excited about.
December 19, 2025 at 12:47 PM