Reading old code with a critical eye is an important part of working on a mature code base.
If an arrogant developer reads some questionable code, they will think "the author must have been stupid." They will ask this question as a way to satisfy their narcissism.
If a thoughtful developer finds some questionable code, they will think "the author must have had some motivation that I don't know about." They will ask this question to help them understand the system design and do better work.
Both attitudes lead to the same question. You could start by assuming your new team members are thoughtful and want to learn. They will understand that "we were under time pressure" or "we didn't know about xxxx technique" is a valid answer to "why did you do it this way."
If you discover that your new team members have narcissistic tendencies, then you have a much bigger problem than justifying your own past decisions.
In the end you may move more towards explaining to people how the company operates, how the data is processed and keep that going.
I demanded help when the product was on the market and the new dev began to refactor parts of the software. Was awesome to have help and the new dev teased me when he discovered my greatest sins and most idiotic decisions that I committed. Wasn't meant seriously from his side, but at some point it nagged on me nonetheless because he was a bit of a smartass at times.
Helped me to reflect what I implemented with the resources and time that I had. You will rarely be happy with the code and design decisions you made yesterday anyway. Learn from the mistake and move on. A dev that never wrote bad code probably didn't write much to begin with. People that constantly question design decisions often might just want to prove themselves to you or honestly want to know why you did it. I often answer something like "I was full of optimism about it at that time".
We have the time now for refactoring ... or we'll add a ticket to the backlog, etc.
Second, everyone looks at some code, wonders what idiot did this ... and at some point discovers it was themselves x months/years ago. If you're the primary coder, you'll be getting this a lot. Accept that you've learned and improved since then.
Hope this helps.
I all too frequently wonder who wrote this and see that it was me. You're right that it's a good sign of growth :).
My only advice is you should be open-minded to the newer devs who work day-to-day with the “legacy” systems you originally wrote and may have very informed ideas about how to improve or refactor those systems. It’s not a knock on you, the company is simply in a different stage.
I'm now working for a different startup of very smart people and engineers and see that it's just normal to have all kinds of tech debt. My previous experience has given me valuable perspective, I don't complain about how/why things are the way they are I just do the best I can to improve it and ship features.
Classic. I know brilliant people who wrote pretty ugly code years ago and beat themselves up about now (in a tongue-in-cheek way -- they joke about it frequently).
Coding is hard; if it was easy, people as smart as them would've written stuff perfectly the first time!
Moreover, in the early days of a new company, the priority is to get something working to create income - sometimes, quality be damned. Otherwise, there's a good chance the company won't survive to get the chance to hire people who will get the opportunity to criticize the code that made their employment possible.
I think I am questioning my abilities because we built things in questionable ways and now everything that I have done is being scrutinized by all new team members. It's really hard to deal with that constant barrage of "why did you do it this way" all the time.