I failed upwards and it got to my head.
Posted by FerretChemical4905@reddit | ExperiencedDevs | View on Reddit | 23 comments
I think I have a decent experience (5 years) but I didn't learn software engineering academically. In my current position I wgot stuck with a freelance project for a "freelance broker" that got me in a bad deal (no clear requirements, not enough time, not enough money) because I thought that it would be a great opportunity to learn Nextjs (my previous experience was in React, extjs, pure php) because I was promised that there will be a senior nextjs developer that could lead.
I got stuck alone in the project and learned as I go. I developed an entire e-commerce platform in nextjs - full-stack (that was my first thing to ever make in nextjs) and now the only one that can understand the code base. (I tried to set standards and conventions for myself because I believe a bad standard is better than no standard, but my code was "too complicated" according to my friends)
Right now the company hired me to maintain and expand the platform, and they'll be hiring two developers to help me.
What I want to ask is: how to deal with potentially people with more experience than me being my subordinates? I obviously don't want to admit to management that they're more qualified than me in nextjs, but I'm more qualified in our platform than them (or anyone else) because then the company will see me as a liability and fire me and get the new developers to refactor the code.
TLDR: I scammed my was to being hired as a senior developer, I'm basically Jon Snow (I know nothing). And now they're giving me two developers to lead, while I'm more blind than Maester Aemon. What do?
nsxwolf@reddit
Tell your subordinates that in addition to new feature development, they are to also work on a "modernization" effort to enhance the "legacy" codebase. Let them use all their architecture astronaut expertise to make your thing better, and then take all the credit for its evolution.
-ry-an@reddit
Take this as an opportunity to learn soft skills, collaboration, and low-ego.
Good job on solo'ing a full piece of software, not an easy thing to do. Especially while learning as you go!
andreortigao@reddit
Every existing project I've ever got had technical debt. Every project I've ever left had technical debt, and some introduced by me.
Truth is, most technical debt are not really problematic, it's problematic only a problem when it either impact the end user, block a requested feature, or become so unmanageable that drags productivity down noticeably.
I've been on the other side twice. One time my colleague was a Jr developer, but he had been a level 2 support for 3 years before moving to developer, so he knew the system inside out. Other time my colleague was a senior developer with more years than me, but he was stuck in an older framework and needed help moving it to the cloud for scalability purposes.
It has never been a problem to me, and I never thought less of the other devs for been less experienced in some areas.
Instead, you should take the opportunity to improve both your technical skills by learning from other devs, and non technical skills by being kind/humble and teaching other devs about the current system.
As long as you keep delivering usable code, technical debt or not, you won't get fired for it.
TwoFoldApproach@reddit
Two things are really funny in this.
Firstly, considering 5 years to be "decent" experience is quite the overstatement if you ask me. I am sorry but 5YOE in most cases is not sufficient if you ask me, especially for someone that has no prior academic knowledge of the subject.
Secondly, the amount of comments here stating that leading at team with no legit experience and all that would be OK is ridiculous. Don't want to burst your bubble but here is the reason why projects fail people. Having someone who "lied/scammed" their way into a lead position, being called upon to manage legitimately experienced persons. How would you think that OP would be able to take key decisions with lacking experience? How do you think that he will be able to defend good/bad choices. How could the OP make a case for/against something. This will end badly in most scenarios. Either the project's doomed or OP will get flak. Either case it won't be nice. Probably the best thing to do is simply admit your level and try to work with them...
FerretChemical4905@reddit (OP)
I did not lie and the imposter syndrome in my made it feel like scamming. I was upfront with my experience (or lack thereof of nextJs)
But the rest of your comment still stand. I lack extensive system analysis skills. I will step-down from the lead developer role and call for a more experienced project lead.
TwoFoldApproach@reddit
Maybe you phrased this wrong then and given your claimed past experience. Then again I might have also been a harsh but I think you get the point. The thing is that with leadership comes liability. You might have the best intentions out there but intentions alone are not enough to make you capable of handling the load mentioned earlier.
At the same time, working with senior people entail another risk. Senior stupidity. There are "senior" people that might present the worst of ideas very convincingly thus getting you into a situation where you might be in trouble for something that flew under your radar.
All in all experience cannot be replaced. I have 12+ YOE at the moment and my tech lead's at 20+ YOE. He might not the best in terms of technical knowledge (lacks behind me in certain areas) but he does have the overall knowledge to judge whether something's good or bad as a general idea. That's something that is attributed to experience can cannot be replaced in any other way.
FerretChemical4905@reddit (OP)
Another point is my 5YOE are my current continuous employment. I started with web development 14 years ago on and off and as a freelancer and had 30+ projects in my portfolio before I made a complete career shift (from mechanical engineering) 5 years ago. I didn't mention those because I do not consider those relevant to my current experience stack.
PhatOofxD@reddit
I've lead AND managed people with more experience in the industry than I've been alive. Many superstar devs that I'll never be close to...
And it's fine. It's fine to lead people with more knowledge than you. You know the company and have the domain knowledge of what the product actually is, use that. Then learn from them. Let them also teach you and grow each other. Pick their brains for solutions, see how they think etc.
chromalike_@reddit
I wouldn't view the incoming colleagues as subordinates - in fact if you treat them that way, it's going to be a bad time. If you're not managing them, then you treat them as any other team member.
Here's all you have to do: be friendly and transparent. Come to them with your honest assessment of what areas you feel the project does well on and what areas can be improved. Give them that as a guide as they onboard and make their own judgements. If anything, this should only be a good thing for you. There are people coming in that know the tech well, then you get the benefit of learning and growing because of that. You're the domain expert until they have onboarded and understand the project at the level that you do, so lean into that as your strength if you believe they are stronger than you technically.
FerretChemical4905@reddit (OP)
You're right, I shouldn't treat these new developers as subordinates. Another reason is because I'm not good in a leadership position (I have ADHD and I struggle with delegation)
summerteeth@reddit
I also would say don't undervalue delivering something. Sure you may have "faked it to you maked it", but you did build something and got it in the hands of users, so that is worth something.
I'd keep an open mind to things you can learn, but also remember that shipping has value and you did that so continue to ship while learning.
ben-gives-advice@reddit
People you lead will always be better than you at something. It's ok to acknowledge that, get their input and make good use of their expertise. Being their leader does not necessarily mean knowing how to do their job better than they do.
Now, if you really lied to get your current role, you may have to take some care in how you communicate things, but you are the expert in this system, and if you stay actively engaged and learn from these people over time, that can continue to be true even as they fix mistakes you made and improve your naive design.
The worst thing you can do is lie to these new developers, or try to resist or sabotage them.
You've probably learned a lot over the course of this project. Keep learning, and try to be the kind of leader you'd like to have.
FerretChemical4905@reddit (OP)
I didn't lie, I was upfront on not knowing anything in nextjs when I started this project, I agreed to enter this project because I was promised to have a senior developer with me. I spent all of my free time researching and learning and testing things. I put in tremendous amounts of effort and time to end up here. But I was without guidance. I did what I thought was good.
ben-gives-advice@reddit
Then you have nothing to be ashamed of and nothing to hide. Keep up the good work when your team members join. If you can pull that off and handle this change gracefully, you'll have a great career ahead of you.
thisismyfavoritename@reddit
thats the reality for a lot of people i think. Doesnt make you a fraud. As long as youre up front about the project having issues/tech debt and are open to criticism from the new hires to improve the codebase, youll be fine
MangoTamer@reddit
If you want to lead, serve. Don't be the type of leader that is threatened by their subordinates. Be the leader that helps their subordinates to be the best they can possibly be. As a result the team should flourish.
One of the best managers I've ever had was not as technically advanced as I was but I respected the hell out of the guy because he made it possible for all of us to do our jobs without obstruction.
kmai270@reddit
I worked in shops before where the "junior" we hired was technically stronger than me
It felt bad at first but then my quality of dev life got better and I learned stuff from him. It also allowed me to focus on other areas of the job that I couldn't do before...
So it may feel bad at first but it's a net positive in the end
DeterminedQuokka@reddit
Don’t be a jerk and learn from them. Also don’t try to hide from people they are smarter than you. Based on this they will easily and immediately know. If you lie then you look way worse when you get caught.
I’m trying to think what you could do that would make me not be pissed at this situation if I was them. Are they coming in higher level than you and you’re just managing them because context? If that’s the case I sort of doubt they’ll care. If you are higher level than them learn from them fast and get better fast and get them promoted. And don’t fight them to protect shitty decisions you’ve made. When I’ve pushed people out it’s because they made it impossible to do things right because they wanted to look smarter than me. I don’t honestly care if you are an idiot if you stay out of my way.
Honestly your company having fucked levels isn’t going to serve you even if it looks like you are at the top. Work on getting things to be right by getting better and getting the other people into the right levels.
mwax321@reddit
I'd rather have devs I manage know more than me. Makes my job easier.
Stroke their ego. Get their opinions on things. Give them initiatives to take lead on. Support their efforts. They will call you the best boss they ever had.
tr0w_way@reddit
Be humble but confident and treat them as your technical equals. You're only above them in the sense that you understand the business and have more tribal knowledge. Keep that in mind and you'll do just fine
roger_ducky@reddit
You know the business process more than any new person. You also know the code better than anyone else. That’s why you’re the SME.
It’s fine to admit the code is bad. Otherwise you wouldn’t need help. So, feel free to learn from people who might be more technically proficient but have no idea what problems you’re trying to solve.
You explain. They suggest. You all solve the problems at hand and crush the backlog. Win-wins all around.
RickJLeanPaw@reddit
They know code, you know the business.
You want to learn to code better, they (presumably) will want to learn the business better.
You come across as honest and keen to improve, and recognise that running a good team that wants to grow and learn will reflect well on everyone.
What’s not to like? Make their integration into the company as easy as possible, start showing results as a team, praise publicly and criticise privately and you could have a good little team on your hands that reflects well on your management skills.
I mean, Christ knows there are enough clueless egotistical twats out there; go buck the trend.
PragmaticBoredom@reddit
I would be honest with them that you understand the codebase has tech debt. Work with them to accept some occasional refactors (but do not allow full rewrites or for a never ending refactoring doom loop).
The only real way to fail is to deny reality and demand that they do everything your way.