Hacker News on software engineering
Not-invented-here
On why NIH sometimes works:
- You can do it better, with better taste. Existing tools are... not uniformly well-designed.
- Building something for yourself is qualitatively different than building something for somebody else. (I've heard this described as "situated software"[1].) Both the results and the process are different.
- Building something yourself lets you become an expert in the domain and the tool you're building, often faster and deeper than using somebody else's system. It's a way to build up tacit knowledge and institutional capital as much as (or even more than) software.
- More often than people realize, building something yourself ends up simply faster than first learning and then wrestling an existing tool into the exact shape you need. I've seen a lot of teams waste way more time trying to get some existing thing working than they would have spent building their own thing.
– tikhonj (2024)
DSLs
Languages that encourage making DSLs are a two-edged sword. On the one hand, you get to make a language that is more clear and fine-tuned to your use-case. On the other, you have an ad-hoc language with no support that you have to maintain along with the documentation (considering that you can't expect anyone else to know the DSL ahead of time). As I've gotten older, I've determined that well-designed APIs in a well-known language are a better alternative to DSLs.
– taylorallred (2025)
War stories
- bartread (2025): "I turned up, noticed they were using 32-bit integers as primary keys on one of their key tables that already had 1.3 billion rows and, at the rate they were adding them, would overflow on primary key values within months"
- zeroxfe (2024): "I jumped in and started digging around, and to my horror, the OMS was a giant set of shell scripts running on an AIX server, which evolved over a decade and was abandoned. It was over 50,000 lines of code!"