New job new me??
Soo… apparently being average doesn’t stop you from accidentally becoming a lead 😅 A Very Unplanned Journey tbh.
Okay so context time, I landed this new role thinking I’d just be doing regular frontend work, you know, implementing features, fixing bugs, the usual frontend life. but then I actually looked at the codebase and… what…. im looking at its joever for me.
You imagine ah: a React project where literally EVERYTHING was written in plain JS
(not JSX
???) I am not at the state of asking why are we using JSX
instead of TSX
because the foundation I feel wrong already I don’t even have time to question that not only that too, folder structure that looked like someone just threw files wherever they felt like it, and don’t even get me started on the git history. I’m talking commits like
|
|
with zero context. Like bruh, fix WHAT exactly??? 😭
Honestly, as someone who’s still pretty average at this whole frontend thing (I mean, there’s SO much I don’t know and can’t even call myself senior yet), looking at this mess was both overwhelming and… Weirdly exciting?(what a psychopath lol) like, there was SO much potential for improvement but I knew I couldn’t just barge in with hey let’s change everything🤪 energy.
“no hasty moves” strategy that actually worked
Then I remembered this online event I joined ages ago where Evan You was one of the speakers. Someone asked about how juniors can justify new practices they want to implement when they’re not the most experienced person in the room (something like that along the way lah but I hope you get what I meant haha) his answer stuck with me: prove it with data. Numbers speak louder than opinions, especially when you’re not the senior dev making the calls!
So that became my whole approach. Instead of going “trust me, this will be better,” I started gathering actual evidence for why certain changes would help us.
Exhibit GIT: our git history was a absolute disaster
Seriously, scrolling through our commit history was like reading a mystery novel with half the pages missing. Commits everywhere like:
- “fix”
- “update”
- “change”
- “working”
- “test”
Like… WHAT are you fixing??? WHAT did you update??? I was losing my mind (exaggerated for drama post) trying to understand what happened in previous sprints smh
So I did some research on conventional commits, gathered examples from other successful projects, and put together a little presentation showing how better commit messages could help us track changes, generate changelogs automatically, and just generally make our lives easier.
Brought it up to the team and our tech lead was actually super supportive about it. Didn’t just say “okay cool” and forget about it - they actively helped make it our practice across web repos (can’t tell about other teams that is not under me haha).
The difference is honestly chef’s kiss 👌🏽 now when I look at our commit history, I can actually understand what happened without needing a in mind reading ^_^
Exhibit Sprint vs Technical debt
There is also another event that was interesting to be highlighted here. We’re running agile sprints (daily scrum, retro, reviews, backlogs…JIRA🤢 yeah..) with stakeholders expecting specific features delivered on time, but I’m sitting here looking at this massive technical debt that’s just… staring at me. Every day. Mocking me not under my care I am going to normalize this….😐
The JS-to-JSX
situation alone was giving me nightmares. NextUI components that were slowing everything down. Unused imports everywhere. Redundant code that made no sense. Folder structures that defied all logic.
And here’s the thing, I KNEW if I suggested tackling this, it was gonna become my responsibility. There’s this quote from John Wesley Kidd that lives rent-free in my head:
A problem is only a problem until we take action: then it becomes a project.
Knowing that if I opened my mouth about these issues, they’d become MY project to handle
But ignoring technical debt while trying to build new features idk man it is like trying to build a house on a foundation made of toothpicks haha pretty much not sustainable.
So I came up with this dual-track approach: managed our sprint deliverables as the frontend team lead while systematically tackling code quality improvements. Basically promising stakeholders their features on time while secretly (not so secretly lol) modernizing the entire codebase.
The planning was kinda intense in early days, I had to break down the modernization efforts into chunks that wouldn’t disrupt our delivery timeline. Migrating components one by one, move NextUI to ShadCN until we completely purge NextUI, refactoring file structures + updating documentation as we went during slower sprint periods…
Honestly, some weeks felt like I was juggling flaming torches while riding a unicycle, but having a clear plan made all the difference. Plus, seeing those bundle size improvements and performance gains? totally worth the extra effort.
Teamwork that has HIGH ownership make it happen
The crazy part is that being proactive about all this somehow led to my tech lead trusting me to actually lead our small frontend team.
My first day job I still remember the team was having sprint planning at meeting room but I couldn’t really participate literally just sat down and couldn’t hear anything as I was sick.
Sick. First day job. Yeah.
My lead even let me go to clinic and go back home, on my first day. I really thought I am gonna messed up during my probation but no, after 2 days I become so proactive, asking questions, my suggestions just keep coming..
Like, went from “just another developer” then before I realized it I become “person who has standard deliver work” to my seniors eye pretty quickly.
And I am just gonna be blunt here, having teammates who are willing to collaborate on making things better instead of just accepting the chaos has been the real game-changer here. We’re not just fixing bugs and shipping features anymore, we’re actually building something we can be proud of while we are at it, I am proud and glad to have a teammates like them.
Conclude
Looking back, this whole experience taught me that you don’t need to be the most senior person in the room to drive meaningful change. Even working remotely if you have that sense of high ownership, responsibility, have stay proactive and willingness it’s already a good start to do it.
While doing so, you just need to think things through properly (my usual “let’s plan this out first” approach finally paying off lol), back up your suggestions with actual data if you can’t do the call why your approach is better not just because internet say so, and find teammates who actually care about building quality stuff together.
Also learned that sometimes the best opportunities come disguised as messy codebases that nobody else wants to touch 😂
Anyway, just wanted to share this journey it is really fun to be an environment that is really supportive along the way I owe them, they are also part of the reason to who I am now, I am still long way to go and still do mistakes but I really appreciate the journey along the way😆