Today I woke up pretty pissed because of a bug that we had in production and we really fucked up and so I want to share that story with you and I think why this will be valuable for a lot of you is this one story will tell you what it takes for a junior developer to act like a senior developer and for a senior developer to be a junior developer. It's that crazy of a difference and it's something that you can do right now and I will share this with you. So I woke up today and we got a customer for the product that we actually just recently launched.
And for this product, the customer bought, and so I was really happy. I woke up, I'm like, oh my God, we got a sale for this product, because it's a software that we're building now. Naz and I, right, we co-founded this company.
And so I see the sale, I'm super happy, and then. Immediately after, I see a message from him, and he's like, hey, one of the functionalities in your app is not working. He's like, when I try to paste the YouTube video, the app breaks.
And so in my mind, I'm just so frustrated that this is happening, because usually. if you pay for something and the thing said it's gonna do that thing and then it doesn't do it the immediate thing you do is you ask for cancellation or refund and i'm like we're gonna get a fucking refund and that's not that big of a problem but the reason why it happened actually frustrated me so i immediately go to the head of our development team and my co-founder naz and i'm like hey what's going on like why is this thing broken you And he then shares that in our developer group chat with our dev team and we share, like why is this feature broken? And so while we're waiting, you know, the developer starts responding back and he's like, well, there are multiple merges that have, there are multiple PRs that have never been merged yet because I've been waiting for you guys to check on them.
And I basically just said, why the hell are you waiting for us to check on them? Just check. them yourself and fucking push it because there's zero value to PRs just sitting pending and not actually being pushed to main because customers don't use your pull requests.
Customers use the actual app in production. So it doesn't matter. It's literally like we're giving you money and you're just fucking burning our money that we're paying you because stuff is just pending. And so I messaged him that.
And one of the reasons why that is actually happening now has told me as well because in the past when we have given our dev team prs to push and merge themselves usually those break and well i'm like okay why does it break well the reason why it breaks is because the testing is not happening so this is the part that pissed me off so the developer responds in our group chat and he's like oh by the way uh you Yeah, so what happened was, I understand where the bug happened, and it was because I did this push. I'm like, why the fuck was a new bug for such a main functionality introduced in production and caught after a customer caught it? Like, why is our customer the Q&A team? Why are you not the Q&A team?
I was pissed because I'm like, hey, you're the fucking... production team. So you need to actually do the Q&A, right? The Q&A is not my responsibility or the customer's responsibility. Like if you're working at a startup and you're and we only have a few developers, then it's your responsibility to actually do Q&A.
The response I got back was, well, I tested it in a preview versus a deploy link, meaning I tested it locally, and then I texted it when I deployed on a preview. review branch, I just didn't test it on production. What the fuck is going through your mind when you go, I did not test it in production?
This is like saying, hmm, so I did a heart surgery on a fucking frog one time, and it worked on the frog, but then I tried this thing on your mother and your mother fucking died, and I actually didn't even know that your mother died, I actually just like went and had a good time and did other things with my. family and friends and then you ended up calling me inconveniencing me telling me that your mother was killed because of me well it worked on a frog That's how crazy it should be when you think about it. That's how much it should freak you the fuck out. Like, this is crazy.
How are you a developer on a team and this stuff can happen? So if you're watching this and you're on the team that this happened, I still love you, but you also need to be held accountable for it. And we all make mistakes, but it's a pretty fucking big one.
And I expect to be held accountable to my mistakes like this too. But I'm gonna keep continuing because I think this will bring some of you value who are developing and you're thinking about not testing stuff. So let me just keep going.
So this happens, right? Like where the, we are not doing the Q and A and we're not testing in main. And so I was like, okay, we didn't test in main branch.
And the problem is that this is something that's happened multiple times, multiple times. And as a result, what ends up happening is trust starts to go down on the team, okay? So this is how usually this stuff festers. Why?
Because if multiple times this developer has pushed and there's a problem that happens and the production goes down, well guess what happens with the team's trust? The trust of the team in that developer goes lower, okay? So then what kind of things do they put in place? Will you put in place more JIRA testing, more GitHub testing, a rigorous testing process?
What does that do to development lifecycle? It slows down the development lifecycle. It then has other people to babysit their work and test their thing right so then there's babysitting that starts to happen and what do you think happens to the morale of that developer who does this even if they're good they start to feel like they're bad developers so then the morale starts to go down okay and this starts to cause a vicious cycle of the managers being more uh what do you call it uh micromanaging right managers start to become more micromanaging the people start to feel the pressure of being micromanaged they start then not liking the place that they're working on and it causes a cycle and either the person quits, they get fired or they or even worse they all keep working together and then they're kind of resentful. So those are the alternatives that could happen.
habit. Now, what is a good alternative that should happen or could happen from a situation like this and how could this situation be resolved and not happen in the future? Well, in the future, instead of testing just locally, the constant developer thing that makes me so fucking angry, and it's a thing that I have found myself saying too when I code and I ship a feature, I'll be like, well, it worked on my computer. But the thing is that you're not making things for yourself. If If you were making them for yourself, then it only truly needs to work on your computer.
But we have this thing called the internet. And this means that when we're building things, we're building things for a lot of other people. So your computer isn't a good enough answer. It has to work on that other person's computer that paid you. And if it doesn't work on their computer, it just doesn't work.
So we need to test more rigorously, right? If the testing happens more rigorously, well then we need to actually actually micromanage less. When less micromanagement happens, what happens?
We actually start to go faster. When this starts to happen, instead of babysitting, autonomy of the team and that developer starts to grow because they're like, well, my team doesn't treat me like a baby anymore. I can actually do things. Well, then they start to double check, triple check, and then move faster and try new things instead of being scared that they can't try new things and make mistakes. And then morale starts to go higher, right?
And then this cycle feeds itself, just like the vicious cycle feeds itself going downwards. And so really the lesson here is if you have people working on your team, one solution is to babysit them for the rest of their lives. But it is such a...
It's like playing soccer at a high-level team and You have Neymar and you have Messi and you have Cristiano Ronaldo But then you have like, you know some 37 rated player from like some random a random freaking team playing on your team. And here's the crazy part, right? It's not that, like if we look at a developer's stats, and let's say 99 is like a messy level developer, right? They're rated 99 out of 100. It's probably small, but just. I don't know, zoom in on your phone and look at it.
And then you have like another developer, right? Who's like a 37. And here's the funny thing. Here's the crazy thing. This all could have been solved in simple ways. One, the most important one is just for the love of God, test and test like a motherfucker.
Test psychotically. Be obsessive about testing. Test it from your MacBook.
Test it from a Safari. Test it. text it from another computer, text it from your friend's computer, however much you can test it, right?
Especially after you push it to production. Your customers aren't your Q and A. One, okay? The second thing is just communicating fast. Communication, okay?
So for example, if you don't trust your ability, this developer on our team, if let's say he doesn't trust his ability to test, he's like, man, I have low attention to detail, I keep always making mistakes. I always find myself fucking something up because I'm a good developer, but I have low attention to detail. Fine.
We all have our weaknesses Well, you can communicate Meaning you can get on a call with me or you can get on a call with our head of our dev team Nas, or literally anybody else, and then just be on the call with them and have them rigorously test those PRs. Right? Keep testing those PRs. Hey, can you test it, can you test it?
Okay, cool, it works, I'm gonna merge it live. Be on the call, be persistent. Okay, this is a bonus one, I just made this up.
There you go, be persistent. Like, relentlessly keep going until your PR is merged. Because if your PR is not merged, you're not gonna get paid.
It has zero value. Okay? So your PR not merged has no value to the business because it brings no value to customers. It's just going to sit there. Cool, your devs can use it, but it's useless, right?
So you need to make sure that you test rigorously in production and test, communicate, and be persistent. What's insane about this is you could be a senior developer, and he's incredibly skilled on our team. He's incredibly valuable.
He's an amazing user. human being but not testing and not communicating you can sometimes make him a junior developer and for those of you who are junior developers if you communicate rigorously if you test rigorously it can turn you into a senior developer because these values this is why they're so sought after so it was one thing for us to just tell you about them in our YouTube videos but it's a whole other thing for us to actually tell you about them In terms of it happening to our product, our business, us waking up to our customers and them going, yo, what is going on? I'll even show you, right?
Like, think about it like this. So let me actually share this with you. So think about it like this. Here's my screen, right? here and here's the app now imagine you go to a youtube video right so like for example if I take any video here let's just pick a hormosy video perfect because I love learning from hormosy or any coding video you can take as well but When the customer was pasting it, it would work like this.
But the problem that's happening is when they would click here and paste the URL and add video, it would not work. It was breaking. And so for that customer, they think this app is just not working.
Because one of the primary ways you use this app is you'll take the freaking video and you'll be like, hey, break this down. And when you break it down, this app is supposed to go and give you everything. You can drop in multiple videos too. So if you do that, it works.
But imagine if this. functionality is broken this is the most core functionality this is literally the functionality that if you go across our instagram reels in every reel we're promoting and talking about this functionality like if i go on my reels other people are talking about it we're talking about it um let me scroll past the funny reels that i have but yeah like even this one stop watching coding tutorials it's not showing this functionality so imagine you're a customer you're coming here and you can't use that functionality that will piss you off rightfully so it should and so this is why we had to get on it fast because it wouldn't just be one customer we're losing every customer would have been frustrated so we immediately got around to it and within two hours we had a fix so huge shout out to our dev team you shout out to nods you shout out to our developer because he fixed it but I'm just sharing with you guys the lessons that I learned from it that I think could be valuable to you in your journey becoming a better developer so Test like a motherfucker. Be relentless with your testing.
Two, communicate aggressively, proactively, ahead of time. Before the customer, you should be letting us know what the problems are. Three, be persistent.
Be relentless until your PR is merged. Do not let your PR sit and pile up. It becomes a nightmare. It becomes a technical debt in the future that you then have to solve. It becomes, it leads to so many other problems.
It leads to merge conflicts. It makes other developers'lives hell. So ever.
Every PR, push it and get it merged immediately. Do what you need to do. Hopefully you found this valuable. I love you.
I'll see you in the next video. Bye.