Growing an operating system
As you work on a software project, you are tempted to add bells and whistles. Next thing you know, you're writing a process scheduler, an email app, and a web browser.
This is a sign that you've gone very, very wrong.
Review the Unix Philosophy and break up your code into discrete, independent chunks that do one thing and do it well.