Should you optimize your app? Should you NOT optimize your app? That's the question. Optimization is one of the biggest questions for programmers. Optimization can make or break any project, depending on how it is done.
Many programmers spend a lot of time worrying about optimization without even releasing the project to the public.
What to do in situations like this? Should you optimize before or after launch? Watch this video and find out!
[responsive_video type='youtube' hide_related='0′ hide_logo='0′ hide_controls='0′ hide_title='0′ hide_fullscreen='0′ autoplay='0′]https://www.youtube.com/watch?v=oyjcNidmYNU&index=3&list=PLjwWT1Xy3c4U4xrSdGiN9fh04NjHoNwTq[/responsive_video]
Transcript of The Video
John Sonmez: Hey, what's up? John Sonmez here from simpleprogrammer.com. Today, I'm going to be talking premature optimization. Don’t get that wrong. Optimization. That's right. I know what you're thinking, but premature optimization. This question comes from Karsey and Karsey says, “As I was researching hosting options for a website, I was thinking what would happen if I got 10 million users in a matter of a few days? So, I began looking at services like AWS and Google Cloud. After some more research, I thought of you in premature optimization. I'm a sophomore in high school. I don’t have money to be nickel and dime to do this AWS stuff, at least not immediately. I also don’t want to fail just because of bad hosting. What should I do? Thanks again, Karsey.”
He's got some additional info. He's working in a message website. Oh, I've actually answered the question. “It's similar to Sarahah. If it becomes more popular than that, I'd like to be able to handle it easily.”
Okay, so here's what I would say about this. You're right. Your instinct is right. Do not premature optimize. If you get 10 million users in one day, that's a pretty good problem to have. You'll be able to solve that problem when you have the problem. Now, again, let's not be stupid here. If you really are getting traction and you see a growth curve or you have the chance of having exponential viral growth curve, you got to be prepared for that capacity wise, but you haven't even launched the thing yet. You don’t know if it's going to be successful.
You can limit this in some ways. If you're really concerned about this, this is what I would do is just make it so that you can only sign up by invite and make it so that other people have to invite other people, so you can control and you can send them an email when it's okay for them to register. You can control how many people are able to register at one time. A lot of companies that scaled up and went viral did this. I remember Gmail doing this at one point. I remember—this thing Dropbox at this at one point. There are a couple of other companies. I signed up for some of the credit card thing and I haven’t even seen them launch, but they did this.
This is a decent strategy, but, ultimately—I mean you're probably not going to have this problem. Again, I said this in a previous video that I think I answered for you where I said I'm not a pessimist. I'm an optimist but I'm telling you that most of the things are not going to go viral and most likely they're not. You don’t want to plan for—again, you don’t want to be blindsided by the unexpected, but you don’t want to plan for the unlikely. You should plan for the likely and you should be prepared for the unlikely. There's a big difference.
I did this video on planning versus preparation and you should watch this video. It might help you in this situation. You plan for the likely, you'll be prepared for the unlikely. What does that mean on this context? Your plan is what you actually invest time and money in and actually go through the thought process of is the likely stuff. The stuff that you prepare for, the unlikely stuff, what does that mean? It means that you have a couple of possible things that you could do that you don’t spend a lot of time planning, but just like these scenarios, these “oh, shit” scenarios that you prepare for or you build your own capacity to be able to handle situations. That's like building your self-development. That’s like building your tolerance, your emotional maturity. Those are the things like preparing when stuff—when the shit hits the fan because that's the preparing part of it.
In this particular case, like I said, I wouldn’t launch the site. Limit the user. Throttle if you want to at the beginning and see how it does. If you see that there might be like exponential growth and you see that there's some virality to it, it is catching on, then start thinking about AWS. This is a good problem to have because you can solve this problem. No one ever is going to—it's not like you're going to miss an opportunity because you miss one spike of traffic. I mean yes, you can miss like a small opportunity, but if your thing is going to be successful, it's not going to be because also 10 million visitors came to the site in one day. That's not going to happen. You're not going to make or break based on that without one thing. You're not the Super Bowl. If you're the Super Bowl, it makes a difference. You got to be ready to handle it then. Otherwise, you're done or you're going to lose a lot of money. That's not the case in this circumstance.
Don't premature optimize. Just get the site up there. Just get it out there. Like I said, you can throttle the users if you want to for now. It's better to launch the thing and get it out there. If it's going to fail, it fails rather than spending a whole bunch of time getting caught up on trying to like orchestrate the perfect storm for what happens if things go viral, because most of the time it's not going to happen. I hope it does happen for you, but if it does that will be a great problem to have. Don't waste the time and the money.
I will give you one resource so that you might want to use—I mean something to think about. Microsoft has this program called Bismarck. If you're starting a new business, you can like get it for, I think, two or three years and they'll give you a whole bunch of their Amazon or their cloud—Azure cloud service credit so you can scale up and you could use that if you want to. Honestly, I wouldn’t worry about this problem at this point. I will just get a small server, very small cost, and put it up. Like I said, throttle the users for now if you're concerned. Then if you do have the problem, it's a great problem to have and there's plenty of people that will help you solve it when you've got the users coming in. Trust me. I'll help you solve it. I'll give you some money. If you're having the problem of you can't handle 10 million users, we'll figure it out. You call me up, we'll figure this shit out.
All right. That's all I got for you today. Good question. You can email me if you have a question at firstname.lastname@example.org. Make sure you click the Subscribe button below so you don’t miss any videos. Click the bell and I'll talk to you next time. Take care.