Developer Career Roadmap, Step 5: Cross Train
Published 10/31/2016
In today's episode, we talk about the 5th step in the Developer Career Roadmap - cross training.
Relevant to today's episode:
Please take a moment and subscribe and review the show and share with another developer you think will enjoy this episode! Click here to review Developer Tea in iTunes.
Transcript (Generated by OpenAI Whisper)
Hey everyone, welcome to Developer Tea. My name is Jonathan Cutrell, and in today's episode we're talking about the Developer Career Roadmap. Step number five, cross-training. The Developer Career Roadmap is built for Developer To understand a way of shaping their careers. This is intended to give you some long-term advice as well as some short-term actionable advice. Of course we've said this before, but this is primarily aimed at developers who are pretty early in their careers, but particularly for today's episode, this advice really goes for all developers at all stages of your careers. You may find yourself in a stage along this path, regardless of how long you've been a developer. So, make sure that you're listening out for things that apply to you specifically, no matter what your title, what your position, how far into your development career you actually are. Now, quick kind of side note about today's episode. I really struggled with where to put this step because cross-training is something that really can begin or could have began well before your development career. This could be step negative 20. You may have actually ended up moving from a different career into development. So this idea of cross-training as we expound on this idea, hopefully you will see how this applies really in multiple areas, multiple stages of your career. But I decided to situate this basically during your internship, this step that is once again ongoing, very similar to the learning cycle because cross-training is a form of learning, just a slightly different form from what we talked about previously. But what I want you to understand here is that cross-training is really only effective for your career if you think about it in terms of your career. In other words, you shouldn't make this your top priority. Cross-training shouldn't be the thing that you go and do every single day when you go into your internship because that would ultimately not be valuable. You wouldn't be accomplishing the goals of your internship if this was the only thing that you were doing. So the idea here is balance. You need to understand the balance of how much you should incorporate this into your learning process and into your day-to-day activities. If you're not familiar with the term cross-training, cross-training is an athletic training practice, and effectively what you do when you're cross-training is you work to balance out. Right? We've already said the word balance a few times. Maybe you can see that coming through as a theme of today's episode, but you work to balance out muscles that you aren't otherwise working out in your primary exercise. So for example, if you are a power lifter, you may have two or three exercises that you actually perform at your power lifting meets, but really you need to balance out the rest of your body. You have stabilizing muscles, for example, that need to be worked out in order to keep you safe. Now, of course, I'm not a fitness expert. So we aren't going to talk about fitness much more here, but understand kind of the etymology of that word of cross-training as it comes into your career. The idea is balance and exercising those muscles that don't otherwise get exercised. For example, some of the muscles that don't get exercised often for some developers may be public speaking or perhaps creative vision. These are things that sometimes developers don't really exercise. And ultimately, if those skills begin to atrophy, we may experience some negative effects in our career. That's the ultimate goal of cross-training, but the interesting thing about cross-training and why I think it's so important for your developer career is that as you begin to develop these external, these secondary things, they end up supporting your primary skill sets. If you develop these secondary skill sets, they end up making you better at your primary skill sets. We'll talk more about that in depth as we go through today's episode. We have two primary areas of cross-training that you can engage in. And we're actually going to take two episodes to go through these two areas. We've got a lot of ground to cover on this particular topic, and really one episode wouldn't do a justice. So I wanted to go ahead and split it up into two separate episodes. And the way that we've structured this list, it really starts from the most applicable or the most similar to your primary skill set, and then we go progressively further and further away from your primary skill set. So as you can imagine, we're going to start with something very similar to what you already know how to do and move further and further away to things that are seemingly completely irrelevant to your career. We're going to start with the first place, the first category of cross-training that you can do, and that is cross-training in the workplace. Cross-training in the workplace. Once you have a solid set of skills as a developer, and what that means is once you have a grasp on how to use a programming language to solve problems, there are many avenues where cross-training in the workplace may be relevant. We'll start with perhaps the most obvious example, learning new programming languages. Learning new programming languages. Once you have a solid grasp on the primary functions and the design and the principles, and even the guiding ideology of a given language that you're using, you will probably find it incredibly valuable, I say probably, because not everybody is in the same bucket, but you will very likely find it to be incredibly valuable to extend your skill set to new languages and new paradigms. By viewing this as cross-training, you're not simply learning a new language because it may be valuable to you down the road or something like that, but rather you're using this new language, this newfound knowledge, to increase your effectiveness in your primary language. In other words, as you learn this other language, it is revealing to you new ways to use the language you already know. For example, if you're working with a language like Ruby, you may learn about a concept like recursion by studying JavaScript or Haskell and apply useful concepts to your Ruby code that depend on that new knowledge about recursion. In some ways, this is like studying Latin to understand English better. If we study other things, other languages, we learn about how computers operate. We learn about how our brain thinks about code and we can take concepts. We can take design paradigms and share them. If you are a developer who has learned two or three languages, you know this to be true that as you learn one language, you're actually adding new value to the other languages you have learned. Now, this isn't unilateral. Not every single little thing that you're going to learn in one language will help you with the other language. For example, variable declaration in two languages. Really you're talking about syntactically different ways of doing the same thing. We aren't going to see a one-to-one value ratio or anything like that, but ultimately a lot of the design type conversations, the deeper ideas in a language, once you start learning those things, they will illuminate new things in the languages that you thought you had already mastered. That's perhaps the most obvious type of cross-training that there can be. If we're using the athleticism metaphor, then perhaps that type of cross-training would be like running stairs for a sprinter. It's using very similar muscles in new ways. So learning a new language deepens your skill set, but what other types of cross-training could you do on the job? Well, we're going to stay kind of at home here. We're going to stay talking about some of your primary skill sets and talk about the things that are close to your primary skill set. Instead of learning new languages, new systems, we're going to talk about learning more about the current system that you know. For example, if you are using primarily PHP, you can grow as a developer and add value to your skill set by understanding Apache. This isn't necessary for you to be a decent developer in PHP, but you're going to learn a lot about how PHP works and how to write better PHP code, how to handle issues when they occur if you understand how Apache works. If you're working with Python, you may find it valuable to learn how Python actually compiles to byte code those.pic files that you find in your code, learning how that happens. In almost any language, understanding how package management works for that language, that is going to be hugely beneficial and perhaps even in that language, understanding how to share code, how to get new code packages down and use them in your code. So, really, the fundamental idea here is to learn about the surrounding and the supporting systems when your code is running. How is it running? What are other languages that your code is depending on? If you write Ruby, maybe it would do you some good to understand how Ruby can bind to see and really that goes for quite a few languages. So, understand how your code is running, understand those systems that your code is running on. So, we started by exercising those same muscles of learning a programming language, then we progressed on to developing those supporting muscles, understanding what your current language, how it works and what supports that language. What's another type of cross training you can do on the job? Well, in a somewhat contrasting way, learning something about the workflows and the tools other people are using in the company you work for, that can add an immense amount of value. For example, if you work in an agency environment, a lot of you will end up working in agency environments. You may learn a little bit about the designer's toolkit. You may learn a little bit about sketch or about how vector graphics are actually created or perhaps you may learn a bit about business analytics. Once again, this isn't going to directly impact the way you design your software today, but rather it may inform the way you think about and solve problems or even just talk to your other teammates, it may inform the way that you can listen to their problems, listen to their questions and give them better answers. This is going to increase the value of your collaboration with your coworkers. Even though this may not change how you write code, it may actually change how you write code, but even if it doesn't change how you write your code, the value that you have as a collaborator greatly increases if you understand the problems that your coworkers are trying to solve in combination with your problems. When a developer understands the higher level steps in the overall process, the transitions between different types of work naturally become much smoother and the developer becomes much more effective at building value and solving problems. So we talked about three ways that cross training can happen in the workplace. The first one is learning a new language and to be very clear, we aren't talking about doing this on the job on the clock necessarily. If your boss has some time carved out for you to engage in this kind of thing, then that's great. But if you need to engage in this outside of work, that's perfectly fine as well. That would still count as learning that is directly related to your career. We'll talk more in the next episode about learning that is not directly related to your career or more directly cross training that is not directly related to your career. But these three areas are directly related to your career and your cross training in the workplace. Number one, once again, was learning a new language. Number two is learning about the structured systems, the underlying systems that your primary language is working on top of, and of course, you can extrapolate that to the new language that you learn, learning those underlying systems, how they work, and how they're different from the ones that you already know. And then third, of course, learning what the other people that you work with, learning a little bit about their workflow, their toolset, their ideologies, the different thought processes they have to go through, the problems that they are solving. These three areas will greatly increase your awareness as a developer. They're going to greatly increase your ability to collaborate with other developers and other non-developers. Once again, remember, cross training is about building balance. If you are unbalanced in the workplace, in other words, if all you can do is one thing in the workplace, then your value is limited. In fact, your value may go completely out the window if that one thing is no longer necessary. But think about the flexibility and the value you can generate if you have multiple languages under your belt, or perhaps if you understand enough about the design process that if necessary, you could shift to a more design-centric role in the company that you're working for, the amount of safety, the amount of value that you will have if you start cross-training in the workplace will greatly increase. This is why this is a step in the developer career roadmap. I hope you'll consider it as early as your internship. But once again, remember, this is about balance, not about following a prescribed method. Thank you so much for listening to today's episode of Developer Tea. We will pick back up with the rest of Step 5 in the next episode of Developer Tea. That will be on Wednesday. Thank you so much for listening. Make sure you subscribe if you don't want to miss out on future episodes. And until next time, enjoy your tea.