Latest / DevQuestions with Tim Corey / 083 What Do I Wish I Did Differently When Learning Software Development?
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: What do I wish I did differently when learning software development?
- 0:29SPEAKER_01: This is a great question, and it's one I get every once in a while.
- 0:32SPEAKER_01: So I want to talk about what I've learned over the years, what I wish I had done differently, and then we'll even cover what I'm glad I did the way I did it.
- 0:42SPEAKER_01: So let's talk about the things that I wish I would have done differently first.
- 0:47SPEAKER_01: So let's talk first about the fact that I wish that I'd had a plan.
- 0:52SPEAKER_01: When I learned software development, it was just I want to learn it.
- 0:57SPEAKER_01: And I didn't really have a plan.
- 0:58SPEAKER_01: I kind of stumbled from thing to thing.
- 1:00SPEAKER_01: I stumbled from topic to topic.
- 1:03SPEAKER_01: I wasn't sure where I was going next, what my path was.
- 1:07SPEAKER_01: I didn't have a learning path.
- 1:09SPEAKER_01: I just kind of wandered along.
- 1:11SPEAKER_01: And you know what?
- 1:12SPEAKER_01: Wandering takes you a lot longer to get where you want to go than walking in a straight line.
- 1:18SPEAKER_01: So I took longer to learn things, and it felt slower, and I felt sluggish, and I felt like I had a lot of plateaus where I wasn't learning anything new and I didn't know how to progress from there.
- 1:30SPEAKER_01: And I just kind of stopped for a while and kind of not wasted that time, but didn't really take advantage of that time.
- 1:38SPEAKER_01: Instead, I just sat where I was and didn't progress as a developer.
- 1:43SPEAKER_01: So I wish I'd had a plan and a learning path that I could follow along and say, okay, I'm on step 82.
- 1:51SPEAKER_01: I have 400 yet to go.
- 1:53SPEAKER_01: I'm gonna keep going.
- 1:55SPEAKER_01: When I hit all, you know, 400 step 482 and I crossed the last one off, then I pull the next plan out and keep going.
- 2:03SPEAKER_01: Because that's the kind of thing that if I had done that, I'd tell you what, I would be so much farther ahead than I was when you know 10 years ago, or even today.
- 2:14SPEAKER_01: I'd be so much further ahead.
- 2:16SPEAKER_01: I would have I would have built over time that accumulation of knowledge and skill and wisdom and and practice and knowledge that that be makes a great developer.
- 2:28SPEAKER_01: So I would have gotten there faster, I would have gotten there with more information, and I would have been able to grow my skills even more.
- 2:35SPEAKER_01: So I wish I'd had a plan.
- 2:37SPEAKER_01: Now I also wish that I would have been more consistent.
- 2:41SPEAKER_01: So what I would do is I would learn in spurts.
- 2:46SPEAKER_01: It's okay, maybe you know, I get a book about what I was what I was, you know, programmed at the time it was VB6, which that's where I near where I started uh was Visual Basics 6.
- 2:56SPEAKER_01: Um, I actually started when it was VB, I think four.
- 2:59SPEAKER_01: But anyways, um so visual basic six.
- 3:02SPEAKER_01: I may I got a book on that, and I would go through and I would try and learn as much as possible for a while, and then I'd get distracted, and so I wouldn't do it anymore for a while, do no other stuff, and then maybe I'd get distracted with another language, and I'd you know get a book on that, or I'd get a magazine on that, or I'd you know, read an internet blogger that had lots of cool articles on it, and I'd go through that and try and learn that language or that technique or that system, and I'd learn a little bit here, a little bit there, and it was again wandering rather than focused learning.
- 3:38SPEAKER_01: So I wish I'd been more consistent both in my time and what I was learning.
- 3:43SPEAKER_01: So that's number two in my wish list.
- 3:46SPEAKER_01: Number three is I wish I had practiced more.
- 3:50SPEAKER_01: And I tell you what, this would have saved me a lot of pain.
- 3:55SPEAKER_01: But the problem was I was in a hurry.
- 3:57SPEAKER_01: I wanted to get things done now, and so I would go through and I thought I learned.
- 4:05SPEAKER_01: So I'd read something in a book, or I'd watch it online, or I'd read a blog post and go, okay, I got that.
- 4:12SPEAKER_01: And so I'd think that I had learned it, and then I'd put it into production, where I go, oh, I know I can I can use that in this app and just put it right in.
- 4:22SPEAKER_01: And what would happen is I would have missed a step, or I didn't quite understand what I was doing, or I didn't quite understand why it was doing what I was doing.
- 4:32SPEAKER_01: And so what would happen is I'd have bugs in my application, or maybe even worse yet, the application would go to production and be in use, and then something would break, and I wouldn't have enough knowledge to fix it well.
- 4:47SPEAKER_01: And that kind of put me in a time crunch.
- 4:50SPEAKER_01: So putting things right into production, man, that caused me some problems.
- 4:55SPEAKER_01: But I thought I was saving time by not practicing first.
- 4:59SPEAKER_01: And I'll tell you what, I learned the hard way that practice is really important to really understanding.
- 5:06SPEAKER_01: It's a difference between thinking you know and actually knowing something.
- 5:11SPEAKER_01: So I wish I had practiced more, and I also wish that I'd finished more projects.
- 5:18SPEAKER_01: I have started thousands of projects, I have been super enthusiastic.
- 5:24SPEAKER_01: I have invested days, weeks, and months into projects, but didn't finish them.
- 5:30SPEAKER_01: And part of the reason for that is because it's really easy to start a project.
- 5:35SPEAKER_01: You have that enthusiasm, that drive, that that idea, that spark that goes, ooh, this would be huge.
- 5:42SPEAKER_01: And you start building it out, you start working on it, and then the slog of just everyday work comes in.
- 5:51SPEAKER_01: We go, man, this is boring, this is hard, this is I've you know, I'm stuck on a spot, whatever it is, and it kind of drags you down.
- 5:59SPEAKER_01: You stop the project, you put it to the side, and you have another great idea.
- 6:03SPEAKER_01: Great ideas, by the way, come when you are struggling through something.
- 6:09SPEAKER_01: My encouragement to you, and my encouragement to my my past self would be to write those things down, make a list of them, and then go back to what you were doing, finish what you start.
- 6:20SPEAKER_01: I wish I'd finished more projects, but because of a lack of focus, I didn't.
- 6:26SPEAKER_01: And also because of a fear, that fear of well, what if no one cares?
- 6:30SPEAKER_01: And should I really invest this time if no one's gonna care?
- 6:33SPEAKER_01: And so I talked myself out of a lot of things that could have helped people, that could have put me in a better position in life, that could have provided me with more opportunities, that could have maybe made some money.
- 6:48SPEAKER_01: Because I just never finished what I started.
- 6:52SPEAKER_01: So I wish I'd finished more projects.
- 6:54SPEAKER_01: And I wish I had joined the community earlier.
- 6:58SPEAKER_01: I have made a ton of great relationships in the community.
- 7:02SPEAKER_01: I have met a lot of great people, and I have grown a significant amount because of my relationships with those people.
- 7:11SPEAKER_01: I wish I had done that, sir, earlier.
- 7:14SPEAKER_01: I when I first started in the community, I first started meeting people and really talking to other software developers outside of my very, very tiny circle.
- 7:24SPEAKER_01: I had uh two coworkers, three coworkers that were programmers.
- 7:28SPEAKER_01: So besides them, I didn't really talk to people for a while.
- 7:31SPEAKER_01: So when I finally started to meet people and and have conversations with people, I started to realize where the gaps were in my education, the things that I hadn't learned that I didn't realize I needed to learn.
- 7:43SPEAKER_01: And so I started to fill those gaps in, and that made me a much better, more well-rounded uh developer.
- 7:51SPEAKER_01: So again, it comes back to if I wish I had a learning path because that would have helped me.
- 7:55SPEAKER_01: And if I had known what the path should be, made it a whole lot easier to learn.
- 7:59SPEAKER_01: I would have saved myself a whole lot of headache and a whole lot of struggle.
- 8:04SPEAKER_01: But also rubbing shoulders with other developers, learning under developers, um, getting to know people would have made me a better developer faster.
- 8:15SPEAKER_01: So I wish I joined the community earlier.
- 8:17SPEAKER_01: Now, those are the things I wish I had done.
- 8:19SPEAKER_01: And I tell you what, if I had done those things, man, I would have been in an even better place a lot sooner than I was.
- 8:29SPEAKER_01: So I didn't do everything wrong though.
- 8:31SPEAKER_01: It's not like I wandered around and made every mistake possible, and I did, I felt like I did.
- 8:36SPEAKER_01: I feel like I made every mistake possible, but at the same time, I did a lot of things well that that I would like the other developers to do the same.
- 8:44SPEAKER_01: I liked other developers as well.
- 8:46SPEAKER_01: So let's talk about those things.
- 8:47SPEAKER_01: And the first one is that I focused deeply on one stack.
- 8:53SPEAKER_01: So I have pretty much always been a Microsoft Stack developer, meaning I started off in VBA and VB4, then VB5 and six, and then VB.net, and then C sharp, and that's all Microsoft stuff.
- 9:11SPEAKER_01: And then for databases, I primarily focused on Microsoft SQL Server.
- 9:16SPEAKER_01: And when it came to cloud, I focused in on Azure, and I really focused in on that one stack.
- 9:22SPEAKER_01: And I tell you what, that has been really helpful.
- 9:26SPEAKER_01: Now, I don't want to get the wrong impression.
- 9:29SPEAKER_01: I have developed in pretty much all the major languages, except a couple of modern ones.
- 9:35SPEAKER_01: Okay, but I have developed in a lot of stacks.
- 9:40SPEAKER_01: I have developed PHP and I developed in Java and I developed in React and Angular and Vue and old JavaScript and you know jQuery, and I've developed in Python and you know the list goes on of the things I have done, but when it came to focus, I focused deeply on my one stack, and that made a lot of difference because yes, I have developed in the last count, it was over 20, I think maybe close to 30 languages professionally where I've gotten paid to build something in a language, it's been over 30 or almost 30, probably.
- 10:22SPEAKER_01: Um, I lost track.
- 10:24SPEAKER_01: But just because I did those things doesn't mean I was good at them.
- 10:28SPEAKER_01: I was a I was a uh consultant, so I would get good enough in order to get the job done.
- 10:33SPEAKER_01: But when it comes to being a really good developer, being a senior developer, being able to even consult as a developer, that came through being really good at one stack, having that real deep knowledge, not by just having tons of surface knowledge of a lot of different uh languages.
- 10:55SPEAKER_01: So that I think I did right.
- 10:58SPEAKER_01: Also, I helped others, and this in some ways it's surprising.
- 11:04SPEAKER_01: In fact, this has been probably the biggest thing that has helped my career.
- 11:08SPEAKER_01: And I don't just mean because it's got me jobs and that kind of stuff.
- 11:12SPEAKER_01: No, because it made me a better developer by helping people, I helped myself.
- 11:19SPEAKER_01: So when I started teaching C, it made me into a better developer.
- 11:26SPEAKER_01: I started when I started in the classroom, I started this rule that I would answer any question a student asked.
- 11:33SPEAKER_01: Now, I told students, I don't know everything.
- 11:37SPEAKER_01: And so I may tell you, I don't know, but I'll find out.
- 11:42SPEAKER_01: And so I would have those questions that come up where I'd say, you know what, I don't know, but I'll find out.
- 11:48SPEAKER_01: And so I would go and figure it out and come back the next week and say, here's the answer.
- 11:54SPEAKER_01: And the idea that students would ask questions and I go, okay, I think this is the answer, but let me find out, or I don't know, let me find out, or oh, here's the answer, that really helped grow me.
- 12:07SPEAKER_01: Because then when I prepared my lessons, I started to think through the questions ahead of time, where I try to anticipate what those questions are.
- 12:16SPEAKER_01: And if you've watched my training videos, you've probably seen that come through.
- 12:21SPEAKER_01: Because now when I do a video, I am always thinking of what are the questions users gonna have about this thing?
- 12:32SPEAKER_01: And can I answer those before they ask them?
- 12:36SPEAKER_01: Because that changes the training, that changes the value get out of the training, but it also changes me as well because I am thinking through how do I make this better?
- 12:49SPEAKER_01: How do I answer those questions they have?
- 12:52SPEAKER_01: And then when I don't know the answer myself, I go and find the answer.
- 12:56SPEAKER_01: That's why I don't teach everything.
- 12:58SPEAKER_01: There are things that I look at and go, I'm not ready to teach that yet, because I don't have the depth that I need.
- 13:06SPEAKER_01: I don't just teach something when I have an intro knowledge to it.
- 13:09SPEAKER_01: I have to have a deep knowledge of something before I can teach it because I can't answer all the questions if I don't have that deep knowledge.
- 13:17SPEAKER_01: So I work really hard and I will spend a lot of time figuring out the answers to questions that you may never have asked.
- 13:26SPEAKER_01: But because I do that, that helping others has really helped me become a much uh more technical, much more uh deep developer than even I was before I started teaching.
- 13:41SPEAKER_01: But it also gave me a whole lot of benefit too, just from the fact that I get to help people.
- 13:47SPEAKER_01: I love helping people.
- 13:49SPEAKER_01: And to see life change and to see people say, you know what, I got a job because of you, I got a promotion because of you, I was able to become a developer because of you.
- 14:01SPEAKER_01: Man, that kind of stuff, that is huge motivation for putting back into me to say, yes, this is worth it.
- 14:09SPEAKER_01: And so that helping others has helped encourage me to keep going and keep learning and keep growing so that I can keep sharing with others.
- 14:17SPEAKER_01: So that helping others is another thing I think I did right.
- 14:21SPEAKER_01: Now, I think that I was mostly open to change and being wrong during my career.
- 14:28SPEAKER_01: I didn't always get this right, okay, and this came over time.
- 14:33SPEAKER_01: But the idea that change is gonna happen and it's okay is important to be able to grasp.
- 14:42SPEAKER_01: Like I said, I started off in Visual Basic, Visual Basic 4, 5, 6, and then VB.net.
- 14:49SPEAKER_01: And from Visual Basic 6 to VB.net was a big change.
- 14:53SPEAKER_01: Now it wasn't the the syntax is close, but there was some philosophical changes and how things worked, and I was very good at VB6, and so that transition of VB.net was a tricky one.
- 15:08SPEAKER_01: But at the same time, I was open to you know what, this is the new stuff, let's do this.
- 15:12SPEAKER_01: And some of that was just ignorance.
- 15:14SPEAKER_01: I just, hey, let's just do this new thing, but that being open to change really allowed me to keep growing because if I had said, you know, nope, I'm gonna stay with vb6, where would I be today?
- 15:26SPEAKER_01: I would be pretty close to obsolete.
- 15:30SPEAKER_01: I wouldn't be obsolete, there's still jobs out there for vv6 developers, they're just getting less and less every day, so that wouldn't be great.
- 15:39SPEAKER_01: But then I did another change.
- 15:41SPEAKER_01: If you notice I went from VB.net to C sharp, that was a big change.
- 15:46SPEAKER_01: And you know what?
- 15:47SPEAKER_01: It's one that I resisted, I didn't want to do it, but I realized, and through some help of um, you know, a colleague, I realized, hey, you know what?
- 15:59SPEAKER_01: I should give us a shot.
- 16:00SPEAKER_01: I should be open to this change because it looks like the industry is shifting to C sharp.
- 16:07SPEAKER_01: So I changed there.
- 16:08SPEAKER_01: And I tell you what, again, I look back at that and go, where would I be if I was still a VB.net developer?
- 16:15SPEAKER_01: Well, I couldn't help as many people because VB.net isn't as prevalent as C sharp is, and all the new stuff I have to be constantly trying to figure out how to translate from C sharp to VB.net because a lot of the examples are all in C sharp.
- 16:32SPEAKER_01: And so my life would just be a little bit harder, and I wouldn't have the um as broad of an audience as I do now.
- 16:40SPEAKER_01: I wouldn't be able to help as many people as I do now because of the fact that there is that that smaller um niche in VB as opposed to C sharp.
- 16:50SPEAKER_01: So that opened a change allowed me to continue to grow and adapt to the new times, even when it wasn't totally comfortable.
- 16:59SPEAKER_01: But then also being able to hear and learn from being wrong.
- 17:06SPEAKER_01: Again, it's not something I got right away, but it is something that over time I was able to embrace.
- 17:14SPEAKER_01: And it's still not fun to be wrong, it's still not, it doesn't get fun.
- 17:19SPEAKER_01: Um, but when you can listen to someone say you're wrong in a way that you pick out the thing that you can learn from this and maybe separate it from emotion because sometimes people come across improperly or in a way that's hard to hear.
- 17:41SPEAKER_01: You know, the hey idiot, you got this wrong.
- 17:45SPEAKER_01: That's not a great way of saying things.
- 17:46SPEAKER_01: And you know what?
- 17:47SPEAKER_01: If that's you, don't do that.
- 17:49SPEAKER_01: Do not do that, but they may be right in the actual thing they're pointing out, even if they do it in the wrong way.
- 17:58SPEAKER_01: And if you can separate those two, then you can grow by learning from the thing that they're pointing out that was wrong, and you can change and you can improve, and you can become a better developer as long as you can separate out the emotion.
- 18:14SPEAKER_01: That's tough, but um, I have been able at times to do that well, and at times I've not done that well, but um I have been able to grow in that.
- 18:26SPEAKER_01: Also, another thing I did I think I did write is I have built a lot of applications.
- 18:31SPEAKER_01: Now, as we go through this category, I don't want to think you to think that man, Tim just saying he did a ton of stuff right.
- 18:38SPEAKER_01: Uh, a lot of stuff I just backed into.
- 18:40SPEAKER_01: I didn't do it intentionally, it's just things that I look back and go, yeah, that was really helpful.
- 18:45SPEAKER_01: And in this case, building lots of applications.
- 18:48SPEAKER_01: I was a consultant for my first six years of professional development, actually years two through seven, because my first year of professional development was um uh working for a company.
- 19:02SPEAKER_01: But I worked as a consultant, I worked in a number of different situations, and so I was required as my job to build lots of applications quickly and to figure out how to make them better and be more efficient in it, how to reuse code better, how to build something that can be easily maintained.
- 19:22SPEAKER_01: All those kind of things came from really a need to, and so by building those lots of applications, I saw a lot of situations and I started to see the patterns, and I started to see where my short-term thinking really hurt myself in the long term, and how I can adjust things to make things better in the long term.
- 19:45SPEAKER_01: So building lots of applications was a real big benefit to my career and a really big benefit to my learning process.
- 19:53SPEAKER_01: So, another thing that again, out of my hands really, but at the same time was beneficial, and I think I did right, was I rounded out my skills appropriately.
- 20:04SPEAKER_01: So, again, I've been a Microsoft stack developer for pretty much my entire career, mostly.
- 20:11SPEAKER_01: Okay, as a consultant, I did a lot of different languages, but mostly Microsoft.
- 20:15SPEAKER_01: So, with that though, I rounded out my skills appropriately.
- 20:20SPEAKER_01: So if things were in the Microsoft ecosystem, I tended to go a little deeper in them as opposed to things outside of the Microsoft ecosystem.
- 20:30SPEAKER_01: So I got into PHP, I wrote some pretty decent PHP sites, but at the same time, I didn't go real deep into PHP, but I went deeper into PowerShell and I got a lot better at PowerShell, and I got really good at Active Directory and Exchange Server and um you know the Microsoft file systems and permissions and all those things that go around the Microsoft ecosystem, even if they weren't necessarily uh programming related, because then I found later that those were really useful skills to integrate my applications into the larger ecosystem of the Microsoft uh servers and and uh Windows and that kind of thing.
- 21:17SPEAKER_01: So that rounding out of my skills in an appropriate manner versus just pick this, pick that, pick this really helped me kind of use my skills in a broader context.
- 21:31SPEAKER_01: And then finally, I learned to say no.
- 21:34SPEAKER_01: And this was something that took a lot of time, a lot of time.
- 21:40SPEAKER_01: Um, but it's something I finally got right.
- 21:42SPEAKER_01: It's not something I got right away, it's something I finally got right to an extent.
- 21:47SPEAKER_01: But I like to help people, I like to um say yes to people.
- 21:53SPEAKER_01: I love to say, yeah, I'll help when somebody asks, and learning to say no.
- 22:00SPEAKER_01: That's something that took a long time to do, but when I did, I was able to say no to the good things in order to do the great things, and that's been a huge benefit to not only my career, but really to everyone listening to this episode and beyond, because I've been able to do things that I couldn't do if I had said yes to people that want to be mentored and people that wanted one-on-one coding help, and people who wanted to pay me for consulting services.
- 22:35SPEAKER_01: And the list goes on because there's been people that have said, I need this, but I've learned to say no in order to say yes to something bigger and better.
- 22:48SPEAKER_01: So that is another thing that I think is something that I've finally done right, but at the same time, it's something that it's an important skill to learn.
- 22:59SPEAKER_01: So there's a lot of things that I wish I had done better.
- 23:03SPEAKER_01: There's a lot of things that I wish that I had done earlier.
- 23:07SPEAKER_01: The big things, you know, that learning path, knowing where to go, and then being consistent in learning it, that would have been huge.
- 23:16SPEAKER_01: Finishing what I started, practicing more, joining the community.
- 23:19SPEAKER_01: These are things that would have been huge to my career if I had done them earlier.
- 23:25SPEAKER_01: But I didn't.
- 23:26SPEAKER_01: Okay.
- 23:26SPEAKER_01: And I still survived.
- 23:28SPEAKER_01: So you can mess things up, and it's okay.
- 23:30SPEAKER_01: You can not do things, you can be later in your career and go, yeah, I screwed that up too.
- 23:36SPEAKER_01: And I screwed up even more.
- 23:37SPEAKER_01: It's okay.
- 23:38SPEAKER_01: Start where you're at.
- 23:40SPEAKER_01: Because that's one of those things that I have learned is you can't fix yesterday.
- 23:45SPEAKER_01: I can't go back and tell, you know, 17-year-old Tim, here's the things you need to do.
- 23:50SPEAKER_01: He probably wouldn't have listened, anyways.
- 23:52SPEAKER_01: But I can't do that.
- 23:54SPEAKER_01: But what I can do is I can improve today, and then that will make tomorrow better.
- 24:00SPEAKER_01: So, and there are some things that I have done right that I want to continue doing right.
- 24:05SPEAKER_01: I want to continue to focus deeply on one stack.
- 24:09SPEAKER_01: I want to continue to help others.
- 24:10SPEAKER_01: I want to continue to be open to change and being open to being wrong.
- 24:14SPEAKER_01: I want to continue to build lots of applications.
- 24:17SPEAKER_01: I want to continue to round out my skills appropriately.
- 24:20SPEAKER_01: And I want to continue to say no to the good things in order to get something better.
- 24:27SPEAKER_01: So those are the the answers to that question.
- 24:31SPEAKER_01: I hope that answered that question for you.
- 24:33SPEAKER_01: I'd love to hear what your thoughts are on what you think that you know my experience is and how it resonates with your experience.
- 24:42SPEAKER_01: Thanks for listening to this week's episode of Dev Questions.
- 24:44SPEAKER_01: Have a great day.
- 24:46SPEAKER_01: And as always, I am Tim Corey.
- 24:48SPEAKER_00: Thank you for joining us for this episode of Dev Questions.
- 24:51SPEAKER_00: Tim is committed to making it easier for you to become a developer.
- 24:55SPEAKER_00: If you would like to help make more content like this possible, please like, subscribe, rate, and share Dev Questions.
- 25:02SPEAKER_00: You can also send your questions to questions at IamTimCorey.com.
- 25:07SPEAKER_00: Until next time, remember, you are too smart and your time too valuable to waste it making all the mistakes Tim did.
- 25:14SPEAKER_00: When you're ready to learn to think and code like a professional developer, head over to imtimcore.com and enroll in the course.