Hacker News new | ask | show | jobs
by xedrac 2 days ago
If you're using Lisp, then sure. If you're using C++, then chances are you're going to have to heavily overengineer the thing to cover all possible requirement changes. That comes at a great cost - in most cases, you are unlikely to benefit from the overly abstract design, but you will pay for that additional complexity for the life of the project. I am convinced that you are better off designing the project to solve the problem in front of you, and then if the requirements shift, pay the cost to solve the new problem, rather than forever pay the cost of solving a host of unrealized problems.
1 comments

> If you're using Lisp, then sure.

So are you saying Lisp somehow makes software flexible enough to handle any requirement change, no matter how badly it's written?

Really?

Lisp doesn't have any unique feature that makes this possible. Macros, meta programming, and single type systems all exist in other languages too.

> If you're using C++, then chances are you're going to have to heavily overengineer the thing to cover all possible requirement changes.

I disagree. My experience has been the opposite.

I maintain a large C++ codebase used by companies around the world. I spend almost all my time adding features and almost none fixing production bugs. The code is flexible because it's well designed and well tested.

The language isn't what's important. Good design and good testing make software flexible. Poor design doesn't, no matter what language you use.