HACKER Q&A
📣 CodeSgt

Do I have “imposters syndrome” or am I just bad?


Hey all, apologies in advance for any typos or grammar mistakes, im writing this on my phone. I'm a pretty Jr. developer with about 1YOE all things considered. Im entirely self-taught. I did a few months at an agency mainly writing JS and Python, I did a few months of contract work writing Elixir, and I've been in my current position for about 6 months, mainly writing TS.

I left the agency due to getting a better offer (my current job) and chose not to renew my contract at the Elixir shop for the same reason, I didn't want to overstretch and decided to focus fully on my new role. I've never been reprimanded or spoken to about my performance in any of these roles.

At the agency, the code I wrote was typically standalone. Small client apps in React or simple Python servers. Small, one-off tasks that didn't need to be maintained or integrate with any existing systems. This is where I feel I shine.

My current role, however, is the complete opposite. Our product is massive, and spread out over dozens of repositories and interconnected dependencies. The client, a gargantuan react app, in particular, has been a struggle for me to understand and be productive in. This has been a theme in my personal projects as well. I can write a simple react app and a server for it to talk to. Perform basic CRUD ops and the like, etc. But as soon as I wanted to do anything more complex or integrate with external dependencies I would begin to get bogged down.

I'm beginning to feel like I'm just fundamentally incapable of fully grasping and working within large interconnected systems. And the unfortunate reality is that most dev jobs I'm aware of necessitate it.

I know "imposters syndrome" gets thrown around a lot for developers who feel like they have no clue what they're doing, but are actually quite talented. I'd love to apply that label to my current situation, but I just don't know if it'd be accurate. I know that I can do some things really well. I know that, in some ways at least, I'm an excellent developer. I just feel that in one of the most important and fundamental ways (understanding complex systems), I'm very much lacking.

Any input or advice would be welcomed and appreciated. I'm not sure what, if anything, I can do to improve my proficiency in this area but I'm willing to try what I can.


  👤 coderintherye Accepted Answer ✓
Almost no one is going to be productive the first few months they step in to working on a massive codebase. In a large codebase you essentially have to develop a relationship with it and the teams working on it to have an understanding. Find simple tasks you can accomplish even if it's outside your current scope just so you can get used to making changes.

Don't be afraid to switch roles though if 6 months in you still don't enjoy the work. It's not a necessity to work on large codebases.


👤 Quixotica1
I’m also self taught and two things that helped me are, ok well 3

1. Read clean code 2. Read clean architecture

Or at least find someone summary of the books. They helped me feel more confident in the code I wrote, the way I wrote it, and helped me justify why I wanted to write it the way I did

3. Look up DDD - domain driven design. I think that starting to learn about different architectural methodologies will help to understand bigger projects better. It’ll also help you to see where the projects went wrong, and sometimes that’s reassuring too because it shows even senior and principal devs don’t always really know exactly what they’re doing

This is a good GitHub repo for DDD. Definitely look into others as well, not saying DDD is the answer to all problems or the best for any, but I just like it lol :shrug:

https://github.com/heynickc/awesome-ddd


👤 Bloedcoin
Perhaps start to learn it then?

Sit down and start drawing ext dependencies etc.

Follow an interaction from start to finish.


👤 q3k
You’re just junior. Going from personal projects to a large company project is a huge leap.

Knowing how to handle large codebases is a skill onto itself, which you can only acquire by working with such codebases.


👤 nhgiang
Ask if someone in your team could pair program with you. This is 100% the fastest way to get up-to-speed in large codebases