Title: Junior dev, about 6 months out of college at a smallish (~20 engineers) software company.  Monolithic java codebase that all runs on a single cluster of app servers.  I&#x27;ve been feeling frustrated lately and wanted some advice.<p>The most common comment in my code reviews:
&quot;You&#x27;re reinventing the wheel - we already wrote something similar. Take a look at [X], extend it a bit to fit this use case, and toss what you have.&quot;
Since X is always undocumented this involves sleuthing + picking senior dev&#x27;s brains.  The process slowly repeats until my feature eventually converges onto a configuration of existing components, with as little new code as possible.<p>That&#x27;s great for the business but not much fun for me.  It means that to do a task that could be completed from scratch in X hours, I must spend X^(size of our codebase) hours grappling with other people&#x27;s ideas, solutions, and mistakes.  It means my thoughts must be bent to fit some pre-existing shape, which eliminates the need for my thoughts, and suggests they should be permanently replaced with those of my predecessors.<p>Is this actually the sign of a good codebase?  Should I be deriving pleasure from this?  Is this what software development is?
Upvote: