Latest / DevQuestions with Tim Corey / 026 How Do I Fight The Urge To Be Perfect? How Do I Know When I Am Done?
Transcript
- 0:00SPEAKER_00: Welcome to the Dev Questions Podcast with Tim Corey.
- 0:03SPEAKER_00: Join us each episode as we tackle the questions you are asking about a career in software development, understanding the industry, and new technology.
- 0:12SPEAKER_00: If you're just starting out or you want to grow stronger as a developer, this is the place to get your questions answered.
- 0:19SPEAKER_00: Now, here's your host, expert developer and online educator, Tim Corey.
- 0:25SPEAKER_01: How do I fight the urge to be perfect?
- 0:28SPEAKER_01: And how do I know when I'm done a project?
- 0:30SPEAKER_01: These are the questions that SB asked me recently, and I thought they were pretty perfect.
- 0:36SPEAKER_01: I mean, it's a great question to ask, and it's one that I struggle with a lot throughout my career.
- 0:42SPEAKER_01: So I'm gonna say something right up front that you need to think through, you might need to write it down.
- 0:48SPEAKER_01: Perfection is the killer of productivity.
- 0:54SPEAKER_01: I get the feeling.
- 0:57SPEAKER_01: I know how hard it is not to be perfect.
- 1:02SPEAKER_01: I know how difficult it is.
- 1:03SPEAKER_01: Quite frankly, the videos on this channel, the content that I put out, none of it is perfect.
- 1:11SPEAKER_01: And it's hard.
- 1:12SPEAKER_01: It's hard to release that into the wild and say, I know it's not.
- 1:18SPEAKER_01: Um there's been stuff that I've put out that I'm like, I laugh at, I'm like, that's just horrible.
- 1:23SPEAKER_01: Um but you know what?
- 1:25SPEAKER_01: I've helped people.
- 1:26SPEAKER_01: I've been able to do a whole lot more than if I held that back until it's perfect.
- 1:33SPEAKER_01: Because it never will be.
- 1:35SPEAKER_01: And so I'll keep holding on, I'll keep making it better.
- 1:38SPEAKER_01: And the reality is I never really make it better.
- 1:41SPEAKER_01: What I make it is later.
- 1:44SPEAKER_01: So perfection is the killer of productivity.
- 1:48SPEAKER_01: Think that one through.
- 1:49SPEAKER_01: Now, there's when you're building software, there's three different times or check-ins to think through some things in order to make sure that you're not letting perfection kill your productivity.
- 2:06SPEAKER_01: So we're gonna talk about before your project starts, then during your project, and then when you're wrapping up your project.
- 2:13SPEAKER_01: So let's start with before you even start your project.
- 2:18SPEAKER_01: This is so important and it's often missed.
- 2:21SPEAKER_01: That's number one is clearly establish criteria for completion.
- 2:27SPEAKER_01: This is where you clearly draw your finish line and say, these are the things that must happen in order for my application to be finished.
- 2:39SPEAKER_01: These are the things that must do.
- 2:40SPEAKER_01: This is you very clearly drawing your finish line.
- 2:46SPEAKER_01: Be careful how you do this.
- 2:48SPEAKER_01: For example, if you're making a car, just saying that it goes fast is not a finish line.
- 2:55SPEAKER_01: That it runs is not a finish line.
- 2:58SPEAKER_01: Because then you can have a car with just an engine and a frame.
- 3:04SPEAKER_01: No doors, no windows, no seats, no speedometer, no, you know, no steering wheel.
- 3:10SPEAKER_01: Like that's not that's not a completed car.
- 3:14SPEAKER_01: You've got to clearly define what that car has to look like, but you have to draw out that finish line and say this is the finish line.
- 3:24SPEAKER_01: So that's number one.
- 3:25SPEAKER_01: And then number two, you need to know at the very start what are your priorities.
- 3:32SPEAKER_01: There's three key things that are priorities in any project, and you can't have all three.
- 3:39SPEAKER_01: And that is time, money, and quality.
- 3:43SPEAKER_01: Those are the three things that you have to prioritize and say one of those just isn't going to be as valuable as the other two.
- 3:53SPEAKER_01: And one of those is more valuable than everything else.
- 3:58SPEAKER_01: So time, money, and quality.
- 4:01SPEAKER_01: I'm having some software built for me, and we established as we're up front what's most important, what's least important.
- 4:09SPEAKER_01: In fact, the least important thing was time because I had an expanding time frame.
- 4:15SPEAKER_01: I didn't have a set date, I had to have this done for.
- 4:19SPEAKER_01: And we've run over on time.
- 4:22SPEAKER_01: And while I love to have it done already, that wasn't my most important thing.
- 4:27SPEAKER_01: We already established that this is how much money it would cost.
- 4:32SPEAKER_01: And so that was kind of set aside almost.
- 4:35SPEAKER_01: Like this is this is done, that's what it's gonna cost.
- 4:38SPEAKER_01: And so we talked about quality is more important than time.
- 4:44SPEAKER_01: So we established that ranking.
- 4:47SPEAKER_01: For you, maybe you say, Well, I'm doing my own project, so money is not an issue, right?
- 4:54SPEAKER_01: Well, it is still because your time equals your money.
- 5:00SPEAKER_01: That's what you're spending.
- 5:01SPEAKER_01: So you're you're not either not getting that product out to market or you're not getting that product out into your portfolio to show employers, or whatever it may be.
- 5:12SPEAKER_01: That time is important.
- 5:14SPEAKER_01: You don't only have so much time as earth.
- 5:17SPEAKER_01: So if you're gonna take 80 years to do something, that's expensive.
- 5:24SPEAKER_01: So time and money are kind of equal in that case, and so you have to know what's more important.
- 5:32SPEAKER_01: Is it how much quality goes into it or how long it takes?
- 5:37SPEAKER_01: And that doesn't mean that you can't box in time.
- 5:43SPEAKER_01: So, for example, you may say time isn't as important as quality, but it has to be done in three months.
- 5:50SPEAKER_01: So there is a limit to the time, and as you get closer and closer, you may have to drop quality in order to make the time because now time becomes more important, and so quality has to go down in order to meet that.
- 6:07SPEAKER_01: Now you may say, you may be a perfectionist, and you may say, no, I have to have all three equal priorities.
- 6:13SPEAKER_01: I've had I've had bosses like that, I've worked with people like that, where like, you know, you know what?
- 6:18SPEAKER_01: I've got a set timeline, I've got a set budget, and it must be top quality.
- 6:26SPEAKER_01: It's just not gonna happen that way.
- 6:28SPEAKER_01: And if you've set your time long enough and your budget big enough, then sure, you'll get the quality you need.
- 6:36SPEAKER_01: But if you set a tight time frame and you set a low uh monetary amount, you're not gonna get the quality you need.
- 6:42SPEAKER_01: It's just not gonna happen.
- 6:44SPEAKER_01: And it's not about being lazy, it's not about um not doing your best, it's about valuing one priority over another.
- 6:54SPEAKER_01: And so establish those priorities up front.
- 6:57SPEAKER_01: Talk it through with whoever is the the stakeholders in the project, whoever is saying this project must get done, even if it's just you, talk it through yourself.
- 7:06SPEAKER_01: Um, it's okay to talk to yourself.
- 7:08SPEAKER_01: I do it all the time.
- 7:10SPEAKER_01: So talk it through and have all three of those in order.
- 7:16SPEAKER_01: So you say, This is number one, this is number two, this is number three, and agree on it.
- 7:23SPEAKER_01: If you're working with a customer as a as a consultant, I would recommend getting the customer to sign off on it.
- 7:30SPEAKER_01: Physically sign a piece of paper that says these are our priorities.
- 7:36SPEAKER_01: Because later that will be very important to point back to.
- 7:55SPEAKER_01: Here's what you need to do.
- 7:57SPEAKER_01: Write those things down a list, and as you have time, prioritize that list.
- 8:03SPEAKER_01: So say this is a really important improvement we need to do versus this is one that's nice to do, and so on.
- 8:12SPEAKER_01: I have to-dos usually throughout my entire application that say, you know, this is bad code.
- 8:18SPEAKER_01: I could do this code so much better.
- 8:20SPEAKER_01: I need to redo this code, this code's horrible.
- 8:22SPEAKER_01: Um, all throughout my code.
- 8:25SPEAKER_01: Well, I'll put those in a list and I'll prioritize them so that later, if I have time, I will work on those to make them better.
- 8:36SPEAKER_01: That's where the perfectionist will come in.
- 8:39SPEAKER_01: But not now, not during the project.
- 8:44SPEAKER_01: You need to get to the finish line first.
- 8:48SPEAKER_01: Get your major criteria done for the finish line first.
- 8:52SPEAKER_01: Now, when you're wrapping up, so you've defined the finish line, you have gotten there, and you've said, okay, here's all the things I had to do in the project, and I've got them all done.
- 9:05SPEAKER_01: Now, identify if there's any slack left in both the money budget and the time budget.
- 9:13SPEAKER_01: Now, again, if you're working for yourself, they're the same.
- 9:16SPEAKER_01: But if you're working for a customer, they're you know, your time equals money.
- 9:21SPEAKER_01: So you make sure that that's taken care of.
- 9:24SPEAKER_01: And if you're hiring developers, that means money.
- 9:27SPEAKER_01: So, but if you have, let's just say it's a month-long project and you were done two days early.
- 9:36SPEAKER_01: Take that two days and say, okay, for the next two days, we're gonna work on improvements, we're gonna make this closer to perfect.
- 9:48SPEAKER_01: And then you take your priority list that you've already established, and you start going down from most important to least important, getting things done.
- 9:57SPEAKER_01: Now, if it's something there that's quick, maybe speed takes precedence, and you do a few quick things rather than one long but more important thing.
- 10:08SPEAKER_01: It's up to you.
- 10:09SPEAKER_01: But you have those two days.
- 10:10SPEAKER_01: And at the end of those two days, you're done.
- 10:13SPEAKER_01: You've you've already crossed the finish line of the application being ready for launch.
- 10:20SPEAKER_01: Now you've made it better in the spare time you had, now you need to launch it.
- 10:25SPEAKER_01: And if you don't know when your end time is, you need to define one, even if you have to make it artificial.
- 10:35SPEAKER_01: So if you don't care about how long this project takes, first get it to the finish line.
- 10:42SPEAKER_01: Be as as quick and efficient in getting that finish line as um as possible, and then give yourself an artificial deadline for perfection, for improving towards perfection.
- 10:56SPEAKER_01: If you worked on this project for a month, give yourself a week max.
- 11:01SPEAKER_01: If you've worked on this project for three months, you might still only give yourself a week because you don't want to linger on this, you don't want to drag on and make it so difficult that you really just don't want to do this anymore.
- 11:15SPEAKER_01: You need to launch, you need to get this out in the world, even if you come back for version 1.1 or 1.2 or 2.0 with the list of things that you need to improve.
- 11:25SPEAKER_01: And you're always gonna have that.
- 11:27SPEAKER_01: But whatever it is, just make sure that you've got the major things done and that you don't drag on your improvements afterwards.
- 11:40SPEAKER_01: Have that set deadline.
- 11:42SPEAKER_01: Okay, so that's that's my thoughts on perfection.
- 11:45SPEAKER_01: You can't let it rule your life because it is the killer of productivity.
- 11:50SPEAKER_01: It is going to stop you from being a great developer because you're always trying to be better.
- 11:58SPEAKER_01: Be a great developer by doing more work, not by making one thing perfect.
- 12:04SPEAKER_01: So thanks for asking the question, SB.
- 12:07SPEAKER_01: If you would like your question answered, then either go to the podcast page on imtimcorey.com and ask the question there, or leave a comment under the video for this episode.
- 12:20SPEAKER_01: Now, either way, I really appreciate um that you would leave a comment just saying, hey, thanks for you know the episode, or this is what I was I thought about this episode.
- 12:32SPEAKER_01: Those kind of things help me gauge, you know, how you're engaged with this, how you're thinking through what I'm talking about, and what other questions might pop out of that.
- 12:43SPEAKER_01: All right.
- 12:43SPEAKER_01: And then if you can share it, I appreciate it.
- 12:46SPEAKER_01: It helps me, it helps others find my content as well.
- 12:50SPEAKER_01: Thanks for listening.
- 12:51SPEAKER_01: As always, I am Tim Corey.
- 12:53SPEAKER_00: Thank you for joining us for this episode of Dev Questions.
- 12:56SPEAKER_00: Tim is committed to making it easier for you to become a developer.
- 12:59SPEAKER_00: If you would like to help make more content like this possible, please like, subscribe, rate, and share Dev Questions.
- 13:07SPEAKER_00: You can also send your questions to questions at IamTimcorey.com.
- 13:12SPEAKER_00: Until next time, remember, you are too smart and your time too valuable to waste it making all the mistakes Tim did.
- 13:19SPEAKER_00: When you're ready to learn to think and code like a professional developer, head over to imtimcore.com and enroll in a course.