New ask Hacker News story: Ask HN: How can I “reset” the way I approach building software?

Ask HN: How can I “reset” the way I approach building software?
2 by mousebunny | 3 comments on Hacker News.
I've been out of school and working full-time at a well-regarded company doing full-stack Web Dev for 5 years now. But despite my career going well, I still feel like my approach to building software, both at work and for my personal projects, is not nearly as solid as I'd expect. In particular, I have a desire to write simple and straightforward software, but for whatever reason feel incapable of doing so, always making things way too complex. For example, I've been working on a side-project for about a month now, and I feel like half of that time has been spent going back and forth and back and forth between different code design decisions. First I wanted to implement an event-driven architecture, so I read articles and watched talks and landed on an event-sourcing style system, where I'd persist a log of all events that occurred in the app. I also incorporated DDD concepts like repos and domain objects, and persisted all app state in SQlite. Then I realized that I was making things way too complicated for the first iteration of my little project, and tried to re-write it in a very plain and straightforward style, e.g. just using an ORM instead of a repo pattern, no event bus, keeping more ephemeral state in-memory; just objects talking to other objects. But even after I completely re-implemented everything, I _still_ feel like I'm making things way too complicated, and am getting worried that maybe I'm just incapable, for whatever reason, of writing straightforward, simple software. When approaching a problem, I feel like my brain skips about 10 steps of simpler options before making a decision. I'm looking for any advice or material that would help be get unstuck in my software building process and learn how to write _simple_ software. EDIT: Specific ask: does anyone have any go-to examples of well-written, simple software? Either an actual open source repo, or a walkthrough-style article.

Comments