Latest / DevQuestions with Tim Corey / 152 3 Pitfalls to Avoid – My Biggest Mistakes
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:26SPEAKER_02: What was your biggest mistake in software development?
- 0:29SPEAKER_02: And what would you do differently?
- 0:31SPEAKER_02: This is a question I'm going to tackle today in today's episode of Dev Questions.
- 0:35SPEAKER_02: And this is a question that came from the suggestion site, and it's one I hear quite a bit.
- 0:39SPEAKER_02: And I want to really get into a number of mistakes that I have made in my career because I think that you can learn from them and avoid those potholes that I hit pretty hard.
- 0:50SPEAKER_02: So let's talk about in today's episode of DevQuestions.
- 0:53SPEAKER_02: So, what's the biggest mistake that I made?
- 0:55SPEAKER_02: Well, I'm not going to give you one because there's so many.
- 0:59SPEAKER_02: I'm going to give you three.
- 1:00SPEAKER_02: Okay.
- 1:01SPEAKER_02: So I'm going to pick three because I think each one of these mistakes represents a pitfall that you can avoid.
- 1:07SPEAKER_02: Now, I don't want to look like I made a mistake once and then never repeated it.
- 1:12SPEAKER_02: I've made these mistakes more than once.
- 1:15SPEAKER_02: But hopefully each of these represents a category of things that you could avoid if you do certain things.
- 1:21SPEAKER_02: And so let's talk about the things that I could have avoided if I had made different choices.
- 1:28SPEAKER_02: Now, the first one is that I did not believe that a bug was in my code.
- 1:36SPEAKER_02: Okay.
- 1:36SPEAKER_02: Now to set the situation up, there was a bug somewhere in the system.
- 1:42SPEAKER_02: Things, this is actually in a production system where we had conveyor belts and scanners and all the rest.
- 1:48SPEAKER_02: There was a physical system where things were not happening properly.
- 1:52SPEAKER_02: This happened to be on a Sunday when no one is supposed to be, you know, in from my team or from another team that worked on a different application or from management.
- 2:02SPEAKER_02: This is just a normal workday for the floor, but none of the people working on the software systems were supposed to be there.
- 2:10SPEAKER_02: But things went wrong.
- 2:12SPEAKER_02: And so they called in all the different teams.
- 2:15SPEAKER_02: And I was there first and started looking at my code to see, hey, could this be my problem?
- 2:21SPEAKER_02: Now, there's management here at the same time.
- 2:24SPEAKER_02: And they're kind of looking for who's at fault, who's to blame.
- 2:29SPEAKER_02: And you never want to be in a situation where management looks at you and says, ah, it's your problem, because that makes you look bad and it makes them have a bad impression of you.
- 2:39SPEAKER_02: And so you want to avoid that if possible.
- 2:43SPEAKER_02: So I looked at my code and I had in the back of my mind, I don't think it's my problem, but I'll look.
- 2:50SPEAKER_02: And so I looked, and guess what?
- 2:51SPEAKER_02: I did not find the problem.
- 2:53SPEAKER_02: Because I was thinking, it's probably not my problem, but I'll scan it over.
- 2:58SPEAKER_02: Turns out, after I said it's not my problem, after everybody else looked at their code and kind of did some diagnostic, we worked together on some diagnostics, it turns out it was my problem.
- 3:09SPEAKER_02: Okay.
- 3:10SPEAKER_02: And I can tell you that saying, hey, it's my problem up front can have the bosses look at you and go, hmm, you made a mistake.
- 3:24SPEAKER_02: Saying it's not my problem, and then finding out and having somebody else prove that it is your problem, and then you having to say, oops, yeah, it is my problem, makes you look even more incompetent.
- 3:36SPEAKER_02: Was not a good day.
- 3:37SPEAKER_02: Not my best day for sure.
- 3:39SPEAKER_02: Um and part of this came from me being arrogant.
- 3:44SPEAKER_02: The idea that I was at a spot in my career where I thought I knew it all.
- 3:49SPEAKER_02: Now, not everything about all of software development, but I knew it all about my position.
- 3:55SPEAKER_02: I knew it all about how to write the code that I needed to write to accomplish the things that I needed to do.
- 4:02SPEAKER_02: And the reality was I knew a lot about my role.
- 4:06SPEAKER_02: I knew a lot about how to do these things.
- 4:08SPEAKER_02: And so there was some justification to it.
- 4:12SPEAKER_02: However, that led me to the idea that it couldn't be my problem because since I know all the things I could do, and since I know my code so well, and since I know the situation so well, it probably isn't my problem.
- 4:28SPEAKER_02: And that's an arrogance problem.
- 4:30SPEAKER_02: And that's definitely not something that you want to encourage.
- 4:34SPEAKER_02: When you're learning software development, there's a bell curve of learning from a time that you are just starting off until you're an expert and beyond.
- 4:43SPEAKER_02: And when you start off, you think, I know nothing.
- 4:47SPEAKER_02: I there's so much stuff I don't know.
- 4:49SPEAKER_02: It's just kind of like out there.
- 4:51SPEAKER_02: It's amazing how much stuff I don't know.
- 4:53SPEAKER_02: And then as you get good at your job, the amount of confidence you have grows.
- 4:59SPEAKER_02: And rightly so, because you've learned more and more about how to get the job done well.
- 5:04SPEAKER_02: And at some point, there's this peak that you hit where you're like, I've got the world conquered.
- 5:10SPEAKER_02: I know how to do my job.
- 5:12SPEAKER_02: I am really good at my code.
- 5:14SPEAKER_02: I'm really good at the systems I use.
- 5:16SPEAKER_02: I'm really good at knowing the things to do to get the job done.
- 5:21SPEAKER_02: And it feels like you know it all.
- 5:23SPEAKER_02: Or at least all for your position.
- 5:28SPEAKER_02: But at some point, as you grow in your knowledge, you'll start to slip down the other side.
- 5:34SPEAKER_02: And this is not a negative thing, it's a positive thing.
- 5:37SPEAKER_02: And as you move towards truly being an expert, you'll start to realize more and more how much you don't know.
- 5:45SPEAKER_02: You'll realize that, yes, I can do my job very well, but there's a lot out there that might help me do my job better.
- 5:54SPEAKER_02: There's a lot out there that I have not yet encountered.
- 5:57SPEAKER_02: There's a lot of things that I haven't considered because I've never come up in this particular job or in my particular expertise.
- 6:06SPEAKER_02: And so you start seeing how much is out there that you don't even know about, you have not encountered yet, and you have not yet tried to implement or work in your system.
- 6:15SPEAKER_02: And so you realize how big the world is out there.
- 6:18SPEAKER_02: And all of a sudden you say, there's very little I know.
- 6:22SPEAKER_02: Now, you know a tremendous amount more than the person who thinks you know it all, and tremendous amount more than the person who is just starting.
- 6:31SPEAKER_02: But yet you realize that yes, I have learned this much, but the my understanding of the overall whole is much, much greater now.
- 6:43SPEAKER_02: And so with that should come a bit of humility.
- 6:47SPEAKER_02: The idea that, you know what?
- 6:49SPEAKER_02: There might be a better way of doing things.
- 6:51SPEAKER_02: And this is where some people get stuck.
- 6:53SPEAKER_02: And so don't get stuck here.
- 6:55SPEAKER_02: And the idea is that after you've gone so long, you start to think, hey, I know what I'm doing.
- 7:02SPEAKER_02: So therefore, don't tell me what to do.
- 7:05SPEAKER_02: I'll tell you what to be done.
- 7:07SPEAKER_02: Don't get stuck there.
- 7:09SPEAKER_02: The best senior developer, the best expert in software development is the person who listens to the intern and says, you know what, that intern might have a good idea I've not encountered before.
- 7:21SPEAKER_02: The person who can listen to new ideas and new ways of doing things with an open mind.
- 7:29SPEAKER_02: The um, you know, Ted Lasso, be curious.
- 7:33SPEAKER_02: That's a great phrase.
- 7:34SPEAKER_02: The idea that you are open to an idea, open to new ideas and new ways of doing things, or open to the fact that maybe you made a mistake.
- 7:45SPEAKER_02: So I would encourage you, as you learn, you will get more and more confident in what you do.
- 7:51SPEAKER_02: And that's great.
- 7:52SPEAKER_02: Be confident in what you can do, but still be curious.
- 7:57SPEAKER_02: Be open to the possibility that you're wrong.
- 8:00SPEAKER_02: Be open to the possibility there's a new or better way of doing things, and be flexible enough to embrace that rather than saying, no, this is the way we've always done it.
- 8:13SPEAKER_02: So that's mistake number one.
- 8:15SPEAKER_02: Mistake number two is I didn't use source control for years.
- 8:21SPEAKER_02: Now, the problem here was not my arrogance.
- 8:26SPEAKER_02: The problem here was not that I thought I knew better.
- 8:29SPEAKER_02: The problem was that I didn't know what I didn't know.
- 8:33SPEAKER_02: There were gaps in my education where I didn't realize what the value was of source control.
- 8:40SPEAKER_02: I saw all the headache that was Git and all the commands you have to learn.
- 8:45SPEAKER_02: And it felt complex when it's not really writing code for me.
- 8:50SPEAKER_02: It's not, you know, my job is to write code.
- 8:52SPEAKER_02: My job was to build applications, and I had to get that done quickly.
- 8:58SPEAKER_02: So I really couldn't spend time learning a new system that didn't help me write code, right?
- 9:05SPEAKER_02: Well, the reality is it does help you write code.
- 9:07SPEAKER_02: It does help you tremendously as a software developer.
- 9:11SPEAKER_02: And it's not that hard to learn once you really understand what it's doing.
- 9:15SPEAKER_02: So, but the key for me was I didn't know what I didn't know.
- 9:20SPEAKER_02: I had this gap, but I wasn't even aware that it really was a gap in my education.
- 9:25SPEAKER_02: And this is the motivation for what I do now.
- 9:28SPEAKER_02: This is the reason why I teach so much for free.
- 9:31SPEAKER_02: In fact, the whole focus of what I do and what my company does is all about first helping people for free.
- 9:40SPEAKER_02: That's the whole focus.
- 9:42SPEAKER_02: Now, I have paid content that helps fund the free content.
- 9:46SPEAKER_02: The reason why is because I want to create even more free content.
- 9:50SPEAKER_02: And I do.
- 9:51SPEAKER_02: But why is this a motivation for me?
- 9:54SPEAKER_02: Well, I know what it felt like to when the light bulb finally clicked on, and when I finally realized what I've been missing, I realized how that felt.
- 10:05SPEAKER_02: It didn't feel good.
- 10:06SPEAKER_02: It didn't feel good to have been going through as a mid-level and even a senior developer position when I was still young, but going through that and realizing I missed a really important chunk over here that I needed to know.
- 10:21SPEAKER_02: But I hadn't been exposed enough to really realize what the value was here for me and why it was important.
- 10:28SPEAKER_02: And so now I really try and teach people like intro videos.
- 10:33SPEAKER_02: I've got a ton of intro videos so you can see, hey, is this for me?
- 10:36SPEAKER_02: Should I go deeper into this?
- 10:38SPEAKER_02: Should I learn more?
- 10:39SPEAKER_02: We're gonna talk more about that in a future episode of Dev Questions, but learning how to figure out what are my gaps, where are my gaps, and how do I fill those?
- 10:49SPEAKER_02: This is another reason why the C Sharp Master Course and the Web Dev Master Course are so important to people, and why so many people come to me and say, this was huge for my career.
- 11:00SPEAKER_02: This is what got me a job.
- 11:01SPEAKER_02: And it's because it's not just that it teaches you C sharp, but it teaches you C sharp with no gaps.
- 11:08SPEAKER_02: It fills those gaps in, makes sure that we've covered the different areas.
- 11:12SPEAKER_02: I have people that have been C sharp developers for over 20 years that have taken a C sharp master course, which is a very, very beginning through getting a job in C Sharp.
- 11:24SPEAKER_02: And the reason why is they said, hey, I need to fill in some gaps.
- 11:28SPEAKER_02: And this is the way I do it.
- 11:30SPEAKER_02: This is what motivates me.
- 11:31SPEAKER_02: This is why I create so much content because I don't want you to feel the way I did.
- 11:36SPEAKER_02: So learning enough to know where your gaps are is important.
- 11:40SPEAKER_02: Now, mistake number three.
- 11:43SPEAKER_02: And this is one that a lot of developers do, but it's important to not do it.
- 11:49SPEAKER_02: So learn from my example, and that is I didn't finish building multiple applications.
- 11:57SPEAKER_02: So there's one application where I got distracted, and it was an application we're talking now 15, 20 years ago or so.
- 12:07SPEAKER_02: I was building an application called Script Saver.
- 12:10SPEAKER_02: And the concept behind it was I was at the time working as an IT director.
- 12:15SPEAKER_02: And so it was at a small college, and so an IT director also meant do all the jobs as well, you know, to some extent, to help out the rest of the staff.
- 12:25SPEAKER_02: And so I had a lot of automation scripts and batch files and PowerShell scripts and things to work on servers and work on systems and to automate things.
- 12:37SPEAKER_02: But they were just in folders all over.
- 12:39SPEAKER_02: And so I started creating an application that allowed me to kind of organize those and have a much easier way to grab those scripts when I need them and even to create templates out of them so I could just pop onto the server, put the new variables in, and run it.
- 12:55SPEAKER_02: And it was a system that was not really out there in the marketplace.
- 13:00SPEAKER_02: No one really had this.
- 13:01SPEAKER_02: And later someone developed it because it was a need.
- 13:05SPEAKER_02: But at the time, you know, I just got distracted.
- 13:09SPEAKER_02: I didn't finish it.
- 13:10SPEAKER_02: It worked and it did some great things, but as always, you know, it wasn't good enough.
- 13:16SPEAKER_02: It it needed to be improved, or it needed to have this feature or that feature, or no one would ever buy this kind of thing, it would have been a huge help.
- 13:24SPEAKER_02: This is before we had easy access to great scripts on Google.
- 13:29SPEAKER_02: And even then, having, you know, finding a script on Google is great.
- 13:32SPEAKER_02: But how do you store that so next time you have access to it?
- 13:36SPEAKER_02: This was the way I do it.
- 13:37SPEAKER_02: So this is just one of many examples where I built something, I had it working, but I just didn't get across the finish line of giving it to somebody else.
- 13:45SPEAKER_02: So put it in their hands whether free or paid.
- 13:48SPEAKER_02: And a company came along and made a killing on doing exactly that.
- 13:53SPEAKER_02: It's one of the things that I kind of missed out on early in my career.
- 13:58SPEAKER_02: Another one, and you've heard me talk about the C Sharp master course before.
- 14:02SPEAKER_02: And quite frankly, it is the most impactful course I have.
- 14:07SPEAKER_02: It is the one that has helped the most people.
- 14:10SPEAKER_02: It has helped people get jobs, get better jobs, get better at software development.
- 14:15SPEAKER_02: I have the receipts.
- 14:16SPEAKER_02: Okay, I have tons of people that come to me and say, this has been a game changer for me.
- 14:22SPEAKER_02: I have a job because of this.
- 14:24SPEAKER_02: The C Sharp Magic course almost didn't happen.
- 14:28SPEAKER_02: In fact, it didn't happen for two years.
- 14:32SPEAKER_02: I had this idea.
- 14:33SPEAKER_02: I was teaching C sharp in the classroom, and I had realized, hey, there's a lot of gaps here, a lot of ways that the textbook teaches you that just don't work for learning C sharp.
- 14:44SPEAKER_02: And so I spent five years honing my ability to teach this well to people who were just starting out.
- 14:52SPEAKER_02: The ability to build on top of layers so that you didn't get lost halfway through and say, hey, I think it skipped a step or two.
- 15:00SPEAKER_02: It doesn't skip steps.
- 15:01SPEAKER_02: And so I had this idea and I mapped everything out and I figured out how to teach C sharp well.
- 15:07SPEAKER_02: And so I started to create the foundation in C sharp, which would later become a C sharp master course.
- 15:14SPEAKER_02: And I started to teach it, and then I'm like, oh, there's a new version of C Sharp.
- 15:18SPEAKER_02: I gotta redo the everything.
- 15:19SPEAKER_02: And so I start over, and then I'm like, ah, you know, I'm not getting this out fast enough.
- 15:25SPEAKER_02: So I'm not sure if people are gonna like this or not.
- 15:27SPEAKER_02: And it's, you know, it's too big, and I have to change these things.
- 15:30SPEAKER_02: I have to rewrite.
- 15:31SPEAKER_02: I spent so much time focusing in on how I could make it better, how I could improve it, that I never actually completed it.
- 15:42SPEAKER_02: Eventually, I just say, you know what?
- 15:44SPEAKER_02: I need to give this to people.
- 15:46SPEAKER_02: I need to put this in people's hands.
- 15:48SPEAKER_02: And so I did.
- 15:50SPEAKER_02: And you know what?
- 15:51SPEAKER_02: It wasn't perfect, but it was something.
- 15:54SPEAKER_02: And it was something of value.
- 15:55SPEAKER_02: And immediately people started saying, this is what got me the job.
- 16:00SPEAKER_02: And that's huge to be able to help and impact a person that way.
- 16:03SPEAKER_02: And so what I learned from that process is I just need to get out the door.
- 16:09SPEAKER_02: And you know what?
- 16:10SPEAKER_02: Yes, quality is important.
- 16:12SPEAKER_02: And I have updated it since then.
- 16:14SPEAKER_02: I've made changes to it as the versions of.NET have changed.
- 16:18SPEAKER_02: And so it's still up to date.
- 16:20SPEAKER_02: But through that process, I learned that I just need to not focus on perfection, but focus on done.
- 16:28SPEAKER_02: Focus on it's good enough, it's great, but it's also published.
- 16:34SPEAKER_02: That's the important part.
- 16:36SPEAKER_02: So that's my third uh pitfall to avoid is the pitfall of not finishing what you start.
- 16:45SPEAKER_02: Almost every developer I talk to, if I say, hey, do you have any unfinished applications?
- 16:51SPEAKER_02: They'll roll their eyes and say, dozens.
- 16:56SPEAKER_02: You know what?
- 16:57SPEAKER_02: Sometimes it's okay.
- 16:59SPEAKER_02: It's it's okay to say, you know what, this is not the right application anymore.
- 17:03SPEAKER_02: Maybe this is not working out the way it should, or maybe this is not something I can do.
- 17:08SPEAKER_02: But pick something and finish it.
- 17:12SPEAKER_02: Even if it's not perfect, even if it's not great, finish it.
- 17:16SPEAKER_02: And you know what?
- 17:17SPEAKER_02: Maybe you find out that no one wants to buy this application you thought you'd sell.
- 17:21SPEAKER_02: But put it out there anyways and see.
- 17:23SPEAKER_02: And if the worst thing happens and not one person wants to buy it, by the way, that's probably a marketing issue, not a coding issue.
- 17:31SPEAKER_02: However, if you get to that point and you're like, it was worthless, right?
- 17:36SPEAKER_02: No, it's not because first of all, you built something.
- 17:38SPEAKER_02: And second of all, you can always open source it and put it on GitHub and give it away for free and see if people, some people could be could get value out of that and maybe even improve it with you.
- 17:51SPEAKER_02: And now all of a sudden you have a portfolio item and you have open source experience, and you are giving back to the community, and you're building up your network of relationships of people who know you as the person who built that thing.
- 18:06SPEAKER_02: So finish what you start.
- 18:10SPEAKER_02: Okay, so those are the three things that are the pitfalls, the mistakes I made, the things I fell into that I love for you to avoid.
- 18:19SPEAKER_02: Okay.
- 18:20SPEAKER_02: So make sure that you are open, you're curious, make sure that you're making sure that you don't just get closed off and be too arrogant about your skills.
- 18:30SPEAKER_02: Make sure that you figure out how to fill in those gaps, make sure you identify those gaps by working with a plan, working, understanding what's out there and having at least a high-level knowledge of what things are important and why.
- 18:45SPEAKER_02: And then finish what you start.
- 18:48SPEAKER_02: Don't just start and then when the excitement wears off, drop it.
- 18:54SPEAKER_02: Okay?
- 18:54SPEAKER_02: Those are three things that'll really change the trajectory of your career.
- 19:00SPEAKER_02: So I hope that helps.
- 19:02SPEAKER_02: Thanks for listening.
- 19:03SPEAKER_02: And as always, I am Tim Corey.
- 19:05SPEAKER_01: Thank you for joining us for this episode of Def Questions.
- 19:08SPEAKER_01: Tim is committed to making it easier for you to become a developer.
- 19:12SPEAKER_01: If you would like to help make more content like this possible, please like, subscribe, rate, and share Dev Questions.
- 19:19SPEAKER_01: You can also send your questions to questions at IamTimcorey.com.
- 19:24SPEAKER_01: Until next time, remember, you are too smart and your time too valuable to waste it making all the mistakes Tim did.
- 19:31SPEAKER_01: When you're ready to learn to think and code like a professional developer, head over to imtimcore.com and enroll in a course.