I’m not new to this as I have 5yoe, but am feeling really stressed out lately. I’ve joined a new project as basically the only senior SWE on the team and the amount of things to learn is simply staggering. Just to name a few things that came my way very recently: - Java - Groovy (for tests!) - Many advanced (very advanced and complex to use!) mocking and testing libraries - Protobufs - gRPC - Kafka - Cassandra - Gradle build system - ... Each of these technologies is massive in itself, and learning the proper way to do things in each of them literally requires reading hundreds of pages of documentation and internalizing the content, you can’t just get by reading the “getting started” tutorials or googling stack overflow. Hell, the manual for Gradle is 1200 pages, a fucking build system! And I apparently need to learn a lot of it because we have a very complicated multi project setup with tons of tasks and weird parts so again, just basic steps won’t do. Same thing for Kafka, gRPC and the other distributed components: we are operating at scale so just a basic understanding won’t do: I literally need to know all the best practices to structure the code as an expert would do, like properly tweaking the client driver and server settings to make sure we can handle load. As a senior engineer I’m expected to be an expert in all these areas, how the hell do I do this? In times like this I really regret not choosing another career path. I was even admitted to medical school but then decided to follow my true passion to get a CS degree.
"I'm not new to this ... 5yoe" -> 🙄
What I meant is that it wasn’t always like this. It seems like as years go by the complexity is exponentially exploding while our brain remains the same. When I started I remember there were much less moving parts in systems.
Just sounds like you're being expected to see more of the systems that were already there. Because less junior.
Who the fuck reads the whole 1200 page manual? Identify the core problem that needs to be solved, be really good at it, and Google/stackoverflow the non-critical tooling.
In this case it’s an entire new system to build from scratch using these components. So the core problem is literally everything.
Get an idea of what a good build system should contain, see how gradle handles the various components and put together. You don't have to start from first principles.
I guess I am more senior than the senior engineer, and I'm a L3 😂
We expect our L3s to know the equivalent of all of those things in ~6 months of on-boarding. And nobody is expecting you to be the master day 1. But as a more senior engineer you should ramp faster than the other members of your team
I got demoted from senior to junior after reading this.
You should choose a stack and stick to it. You will gain the necessary knowledge over time. Don’t be scared or be impatient. Understanding the grain(as in wood grain) of the tool will help you gain intuition for the tool and predict what it will do in a new circumstance. Working for startups exacerbates the problem of being anxious about the unknown. Join a big company where things are stable and spend brain cycles on the problem that matters and not on the tools themselves. Tools come and go, but it is important that you choose a working subset and stick to it for longer periods of time. That way you are more concerned about the problem you are solving and that is what matters finally.
I think you have to be realistic and set the expectations accordingly. If you're limited in time, your aim should be in delivering and not going through pages of best practices before even implementing. You also seem to try to be taking on everything yourself. There are other developers who worked on this long before you joined. Learn what you can from them to ramp up faster along with figuring out how the code base became the way it did. Also, be available to them. What you can offer even without any domain knowledge is your experience (system design, software architecture, etc.). Divide and conquer. Help them be able to go through best practices on their own and learn from their mistakes. Sure, the end result might not be as good as if you had done everything yourself but you have to be practical. Through answering questions your junior developers ask and reviewing what they write, you'll be able to pick up on what you need and the relevant best practices. Stop trying to be perfect.
Now add in DevOps...
You could delegate more, no need to kill yourself. Figure out critical parts and delegate rest to junior staff
Tech Industry
6h
368
What was your base pay increase this year
Tech Industry
5h
1820
Avoid teams with only Chinese or Indians especially with a Chinese/Indian manager
AMA
Yesterday
2341
I’m a professional coaster AMA
Tech Industry
Yesterday
3607
ByteDance is officially fucked
Tech Industry
4h
696
I wish I were East Asian instead of Vietnamese (Southeast Asian)
I don’t believe I wasted 2 mins of my life reading this.
What’s your point? Do you think I’m just dumb because I should be able to keep up with all those things? Trying to understand.
Everyone faces these situations, and it’s tough for everyone the first time. We just have to keep up with it.