DCR-Step 3: Skill Set Development (Part 2)
Published 10/21/2016
In today's episode, we discuss step three in the Developer Career Roadmap, the never ending learning cycle.
Today's sponsor is Chartio. All of your data in one place. Simply powerful. Start your free trial today at Spec.fm/chartio
Transcript (Generated by OpenAI Whisper)
Hey everyone and welcome to Developer Tea. My name is Jonathan Cutrell and in today's episode we're talking about part two of step three in the developer career roadmap. We've been talking about the developer career roadmap now for four episodes. In the first episode I gave you an overview of why I created the developer career roadmap. In the second episode we talked about step one. Step one is budget your time and then we went on to step two picking your base language. Step three is starting the learning cycle. In the last episode I told you that step three would be split into two parts. Part one was about learning about the types of companies that are interested in hiring developers. The developer career roadmap is after all for developers who are looking to make a career out of software development. We talked about starting to look at companies that you want to work for. I recommended that you work for a company rather than trying to go for freelance work right out of the gate. Of course I feel like it's important for me to remind you that every situation is different. If you have an incredibly compelling reason to veer away from the developer career roadmap then it's your responsibility to weigh those options for yourself. Take everything that is set on this podcast and ultimately everything that is set on any podcast or from any person that you listen to and trust. Take all of those things with the grain of salt. You are the author of your own career so it's important that you understand that you are the one that is ultimately responsible for making these decisions for yourself. In today's episode, part two of step three of the developer career roadmap, we are talking about the learning cycle, specifically talking about skill set development. Skill set development. This is something that we have talked about pretty much in every episode of Developer Tea. Learning is fundamentally connected to the roots to the DNA of being a developer. You cannot be a software developer without also being a lifetime learner. You're always learning because you're always facing new problems. You're always facing new obstacles, new bugs, new challenges and it's your job to overcome those obstacles and to face up to those challenges. Being a software developer is incredibly empowering for this reason right because we are constantly applying new information and gathering new information. This is our everyday job. We're cycling new information in and we're updating what we previously thought. We're flexible when it comes to learning. So it's a fundamental part of how we act as developers. If you take nothing else away from the developer career roadmap, specifically from this step in the developer career roadmap, burn this into your mind and never let it leave. Learning is the top. Number one, 100% without a doubt, most important thing you can do for your career. It is not the only important thing you can do for your career, which is why the developer career roadmap even exists in the first place. If it was just about learning, I could tell you to go and learn for the rest of your career. But it is the most important thing you can do for your career. We're going to do two different things today with relation to skill development. We're going to start by differentiating the two types of information that you can learn as a developer to core types of information or really modes of information that you can learn as a developer. I'll clarify that in just a moment. And then after that, we're going to talk about a method that you can use to learn throughout the rest of your career. We're going to talk about all of that in just a moment. But first, I want to talk about today's sponsor, Chartio. Chartio makes analyzing metrics and building reporting easy for both developers and business users, freeing up Developer Time to work on things that will move the business forward rather than focusing on problems that add little to no value. Chartio connects to your live databases, ensuring that your reporting is timely and accurate and it blends data from multiple data sources into a single analysis or chart without a data warehouse. Using Chartio's data pipeline to create powerful Excel-like analysis against live data, Chartio helps organizations bring full data transparency to everyone, helping to improve company decision-making, strategy, and performance. You can get a free trial for spec listeners. That's across the network by going to spec.fm slash Chartio. That's spec.fm slash ch-a-r-t-i-o. Chartio. Simply powerful. Thanks again to Chartio for sponsoring today's episode of Developer Tea. We're talking about step three in the developer career roadmap. This is part two of step three. If you missed out on part one, make sure you go back and listen to it. We're talking about acquiring skill sets, learning skill sets. I told you that I was going to give you two things. The first is the two types of information that we can gather or the two modes of information that we gather. The second thing is a template for learning. We're going to start with the two types of information. Really, I hope this changes the way you think about going about the learning process. The first type of information or mode of information gathering, rather, is passive information gathering. This is passive information gathering. What exactly is passive information gathering? Essentially, when you are going along the route of solving a problem, whether you're trying to solve an issue with an existing solution or maybe you are designing a brand new solution, whenever you are actually going along that path, the information that you gather in order to take the next step, that is passive information. You are gathering that information for immediate use or quite simply just to get you moving forward. The second type of information gathering, as you might have already guessed, is active information gathering. We have passive and active information. Active information is the information that you gather by actively seeking that information. In other words, you aren't trying to solve a problem at hand. You aren't trying to build something. You aren't trying to design something. You are actually going and reading the information for the sake of that information. For example, you want to learn about some theoretical model. A lot of the time, when you learn about these things, you learn through other people's experience. In other words, that particular type of implementation, that theory, whatever that algorithm or that set of information that you are learning, it has been applied in a different scenario. The way that you learn about it is both by reading the theory, reading the actual raw description, and also seeing it being applied by someone else. You may argue that both of these eventually become passive information gathering because eventually you do have to implement whatever that new information is for it to be valuable to your career. Let's think about that for a second. You have to apply the information for it to be valuable. While this is somewhat true, you can't always gather this information by simply solving problems because sometimes our intuition serves us wrong. Sometimes we need someone else to show us what they have learned. In other words, we need to seek out that information. We need to seek out what other people have done. The reason for this is because there are so many different ways to solve problems. Let's take a very simplified example of two ways of solving the same problem. Let's say you're trying to add two numbers. Those numbers are somewhere in the thousands. Let's say you're trying to add 2,540 to 1,375. Hopefully you realize at this point in your life that there are many ways that you can go about adding these two numbers together. You could use a calculator or you could use a very simple on-paper column adding technique that most of us learned in grade school. But if you used the very first method that we ever learned as a human race to add these two things together, well essentially you're going to add one at a time. In other words, you're going to count out whatever the first number of pieces is. I actually don't remember what numbers I used. Then you're going to count out the second number of pieces and then you're going to count them together. This is incredibly time consuming. Even though it is a solution, it may not be the best solution. In fact, I would think pretty much anyone would agree that that is quite close to the worst solution for adding. So it's important to seek out this new information. Now you may actually stumble upon that new information. You may actually find a new way for you to design software. But it's important for you to understand that some information is not going to be intuitive. Some information you will not simply stumble upon. Most of your career learning will happen in the passive state. This is the simple reality of most of our jobs. We need to create things on a regular basis that are solving business problems for companies. However, it is my strong recommendation and perhaps you should make it your requirement that your job or at least your professional pursuits, even if that has to happen outside of your daily work hours, your pursuit, your career must include some active information seeking. You must take some time to learn information that you otherwise would not be able to gather on your own simply through developing on a day-to-day basis. So that's the first part of today's advice. We've talked about two modes of learning. Now I want to give you kind of a basic format for your learning cycle. This is essentially created for the beginner developer, but you can adapt this to really fit any stage of your career. This is particularly good if you're picking up a new skill set, picking up a new language. I want you to start by building a series of small projects. This is going to take quite a while, most likely, but build a series of small projects. In general, as you progress from project number one to project number two or three or four or five, as you progress through the projects, they're likely to get more and more sophisticated. This would be a natural progression to show that you've built on what you've learned in the previous project. I don't want you to build any less than five, but you can go up to as many as a hundred if you wanted to do like a daily project kind of task. None of these projects should be so large that they last beyond, let's say, a week or so. Most of these projects should be able to be completed in one to three days. This allows you to have a high repetition rate and allows you to go through the motions over and over and over without having to get stuck on the tedium of a given task. As you're going through this process, I don't want you to be afraid of reusing code that you've used in a previous version of that particular project. Maybe you used code in version three or in project number three and you want to reuse it in project number six. That's totally fine to do because you went through the process of learning that code in the first place. This type of repetition is important because as you're going through these project creation cycles, what I want you to do is evaluate yourself. This is a huge step that a lot of people skip. I want you to evaluate the things that you are learning and the progress that you have made. Look at Project One, all the way up to Project One Hundred, whatever it is, evaluate on a regular basis. In other words, evaluate maybe some time around mid-project, how that project is going, how you thought it was going to go, and then reevaluate at the end of each project as well. Of course, this is going to be time-consuming. Go back to Step One if you haven't created a budget that gives you space and time to invest in your development career. If you don't choose to take time to invest in your career, you will not have a career in software development. It's that simple. You have to create a time budget to give yourself the freedom to go and do these types of things. That's kind of the Step One, but it's really Step One through 100. You're going to be constantly building a new project as you learn this skill set. This is going to go alongside the next couple of steps in the developer career roadmap. We'll cover that as we get to those steps. But first, start by creating these small projects. Project Number One may be as simple as it gets. I don't really recommend doing Hello World type projects because much of the code ends up looking almost exactly the same. But it is important to make Project Number One not so daunting that you end up giving up because you feel inadequate or you feel like you're not making progress. So make sure that you scope these projects in such a way that you are able to complete them in a very short period of time. We're talking one to three days. What we're doing with this project type learning is we're following the Lab model. If you've gone to university, then you know that the Lab is going to give you a series of projects throughout a semester of class. So you have multiple projects that you complete. You're not going to do one large project usually without doing smaller supplemental projects along the way so that you can evaluate and improve. That's the model that we're going after by doing these small projects. So I highly recommend you make them doable within one to three days at most a week. Maybe towards the end of those projects, you need a little bit more time because they're getting a little bit more complex. That's totally fine. Build on the information that you've gathered in the first set of projects in the previous projects that you've already done. So as you're going throughout this process of building these small projects, five or a hundred. However many that you choose to do and it may be that you don't choose a specific number. Some people do. Some people don't. Some people choose to do one project every day for a month. This is a very valuable learning process. It gives you structure. It gives you constraints and you don't go beyond that month. You know that you're kind of committed to that month. But regardless of how many projects you choose to do, regardless of what language you choose to use, regardless of how much time you have chosen to put into your career on a daily or weekly basis, the next thing that you need to have is a support community. You cannot do this alone. You cannot become a great developer alone. Of course, a lot of what you're going to be doing will be in isolation. You have to have that isolation to be able to focus for example. But you need other people around you to bounce questions off of. You need other people around you to encourage you. And that's exactly why we created spec. We want to create not only do we want to create great content, great podcasts for you as a developer or designer looking to level up in your career. We also want to be here to simply encourage you to keep pushing forward. A lot of what it takes to be a great developer is simply deciding to take the next step. Making the decision that you're going to spend that time necessary, spend that effort necessary to learn. So that is a huge valuable and in my opinion required thing to have a community of other developers and communities exist online all over the place. You can find communities on Reddit. And of course, you can find a community with spec. Go to spec.fm slash slack. For example, you can join our slack community and talk to me, talk to the other hosts of the spec shows and thousands of other developers and designers who are learning just like you. They're in all different stages of their career. Go and check that out spec.fm slash slack. So we're talking about learning. We're talking about step three in the developer career roadmap. We've already talked about learning about the different types of companies that would be interested in hiring a developer. Today, we've talked about starting the learning cycle for your skill set. Remember, there are two types of information gathering. First is active and the second is passive. I think I said them the other way around. There's active information where you go and specifically look for that information, look for that theoretical research. The second type of information is the information you gather along the route to solving a problem or creating something new. And I gave you a roadmap, a simple template for learning. The simple digested version of that template is quite simply build a lot of small things. We talk about small things on the show all the time. Build a ton of small things and find a support community. You have spec and you have all of the communities online. You have local communities are a fantastic thing as well. You can meet in person. Go and check out something like meetup.com. Tons of opportunities don't miss out on the value that a community of other developers can provide to you. Go and check out the spec community spec.fm slash slack. Thank you so much for listening to the developer career roadmap series on Developer Tea. This series is intended to provide you with a step-by-step guide and how to get into a developer career career as a software developer. Thank you so much for listening. Thank you again to today's sponsor, Chartio. Chartio makes analyzing metrics and building reporting easy for both developers and business users. Chartio is simply powerful. Go and check it out. Spec.fm slash Chartio for a free trial. Thank you so much for listening to Developer Tea. Make sure you hear this from oloscro對對.