Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Single-digit million lines of code (~5M, let’s say)

> Somewhere between 100 and 1000 engineers working on the same codebase

> The first working version of the codebase is at least ten years old

> The cardinal mistake is inconsistency

Funny enough, the author notes the problem on why consistency is impossible in such a project and the proceeds to call it the cardinal mistake.

You cannot be consistent in a project of that size and scope. Full stop. Half those engineers will statistically be below average and constantly dragging the codebase towards their skill level each time they make a change. Technology changes a lot in ten years, people like to use new language features and frameworks.

And the final nail in the coffin: the limits of human cognition. To be consistent you must keep the standards in working memory. Do you think this is possible when the entire project is over a million LOC? Don't be silly.

There's a reason why big projects will always be big balls of mud. Embrace it. http://www.laputan.org/mud/



> people like to use new language features and frameworks.

Have of the point of this article is that people need to suck it up and not use new frameworks sometimes...

There are times for coding in a way you, personally, find pleasing; and there are times when:

> So you should know how to work in the “legacy mess” because that’s what your company actually does. Good engineering or not, it’s your job.

A quote from the 'big ball of mud':

> Sometimes it’s just easier to throw a system away, and start over.

It is easier, but it's also a) not your decision and b) enormously disruptive and expensive.

How do you tell if you're in the 'naive and enthusiastic but misguided' camp, or in the 'understand the costs and benefits and it's worth a rewrite' camp?

Maybe the takeaway from the OP's post really should be this one:

> If you work at a big tech company and don’t think this is true, maybe you’re right, but I’ll only take that opinion seriously if you’re deeply familiar with the large established codebase you think isn’t providing value.

^ because this is the heart of it.

If you don't understand, or haven't bothered to understand, or haven't spent the time understanding what is already there, then you are not qualified to make large scale decisions about changing it.


I've successfully pulled off most of such a majority re-write but a key driver - but not the only was that the legacy language the existing system was implemented in had lost virtually all traction in the local and global market. Mostly only expensive contractors coming out of pension availabile and on top of that the custom libraries required us to recruit the 10 percent of that segment. Any new hires straight up refused to pick it up as they accurately deemed it career suicide.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: