« All Episodes

3 Habits of Learning Developers

Published 5/21/2018

Becoming a great developer comes with practice and observation. Today, we're going to talk about developing long-term learning habits of developers and ways that you can evaluate the health of your learning environments.

Thanks to today's Sponsor: SkySilk

Create simple virtual private servers in seconds at www.SkySilk.com. Choose from over 40 Linux OS Distros and Software Applications for fast, simple cloud hosting.

Enter Promo Code TEATIME to redeem 1,000 SkyPoints ($10 Cash Value) for use once the SkySilk Cloud Platform goes live.

Get in touch

If you have questions about today's episode, want to start a conversation about today's topic or just want to let us know if you found this episode valuable I encourage you to join the conversation or start your own on our community platform Spectrum.chat/specfm/developer-tea

🧡 Leave a Review

If you're enjoying the show and want to support the content head over to iTunes and leave a review! It helps other developers discover the show and keep us focused on what matters to you.

Transcript (Generated by OpenAI Whisper)
If you wanted to become an extraordinary actor, what would you do? You would probably start by studying extraordinary actors, people who you respect, people that maybe you don't even necessarily want to emulate their style, but you want to understand the types of decisions that they make. You want to understand their process. How did they get to that place, the place in that particular play, or in that particular movie? How did they arrive at that performance level? Not only over the course of time, but also just over the course of that day. What was the dialogue in their head? How did they prepare? The moment before that great monologue. If you want to become a great athlete or if you want to become a great speech writer, you would likely go and look at great athletes and great speech writers. I understand what is the dialogue in their head when they are actually practicing their craft? How did they actually go about getting better? That's what we're going to focus on on Developer Tea for at least this episode. Very possibly the upcoming episodes as well, we'll focus on this idea. In today's episode, we're going to talk a little bit more specifically about habits of the always learning developer, habits of the always learning developer. If you want to continuously learn throughout your career, this episode is for you. We're going to talk about ways that you can determine whether or not you are learning at a healthy pace. We're going to talk about ways that you can continuously learn on the job. That's what today's episode is about. My name is Jonathan Cutrell and you're listening to Developer Tea. My goal on the show is to help driven developers connect to their career purpose and do better works so they can have a positive influence on the people around them. In today's episode, we're focusing on this idea of developing a long-term learning habit. Really this is a single habit. When I say learning, there's a lot that's tied up in that. There's a lot of types of learning. You may have performance learning where you're actually working with the thing that you already have competency with and then you may have intentional or deliberate learning. This is when you're working with something that you don't have competency with. Typically the structures for these two types of learning environments are entirely different. On the one hand, in the performance learning category, you're likely to have a very low tolerance for failure. It's very likely that your opinion is not the only one that matters, that there is a stricter timeline, stricter resources allocated in this environment of performance learning and that the way that you are learning is much less about catastrophic failure and much more about smaller failures. Almost invariably, learning comes from failure. You may be able to make a good argument that learning also comes through exploration. Most of what we learn as developers is a feedback loop of failure, iteration, measurement, repeat. This is taking advantage of the very simple process of growth that our brain is already kind of wired for. The idea is that if you put pressure on your mental state in one direction, that your brain will try to adapt to that pressure. The next time you encounter it, you have what is necessary to meet that challenge. Failure is important, but when you're in a performance atmosphere where you're already relatively competent, then a catastrophic failure becomes less about learning and more about sustainability, about keeping your job. You can think about these two different spheres of learning. In one of them, you're at the final polishing stage. You can imagine that you're creating a piece of furniture. In this performance learning, the piece of furniture has already been created and you're at the very last sanding stage where you're going from only slightly rough to perfectly smooth. On the other hand, the deliberate learning atmosphere is more like when you have raw pieces of wood and you're cutting them for the very first time and you're prototyping. The wood is very rough and so the same paper you might use on that wood is going to be similarly rough. This kind of environment of learning, the deliberate environment of learning, is much more course in that way. So a failure is going to be much larger. It will be a total failure rather than a minor and sometimes even imperceptible failure when you're at that high level of the performance learning. Okay, so we have these two different types of learning and certainly there's a sliding scale between these. You're not going to only live in one place or the other. There is a sliding scale where you may have a little bit more of a learning role, for example. If you're a junior developer rather than a senior developer, but I want to talk about the habits that you will have if you are a lifelong learner. We're going to talk about some of those habits right after we talk about today's sponsor, SkySulk. Today's episode is sponsored by SkySulk. SkySulk is a new cloud platform that is looking to shake up the way people think about virtual servers and cloud computing. They're currently beta testing the new platform and they're giving all beta users completely free access to the platform in exchange for bug reports, feedback, suggestions and exposure. The platform features today include container-based Linux VPS powered by Proxmox virtualization engine, triple replicated SSD cloud storage with a predisputed file system that's architected using self-storage, a 56 gigabit Ethernet and 200 gigabit per second in finiband dual network backbone, enterprise level hardware and data center security. The platform features over 40 one-click Linux distributions and software applications and the platform will continue to evolve over the next year as they continue to add new features and product offerings. Even after they go live, they're going to be offering completely free VPS. A virtual private server plan that comes with one CPU that has 512 megabytes RAM, 25 gigabits of SSD storage and a 500 gigabit network transfer per month. That's absolutely free. In addition to affordable flexible plans, starting at just $10 a month. Now here's a unique thing that SkySulk offers. They offer you SkyPoints. This is not SkyMiles but it is a reward program that rewards all users with SkyPoints on all transactions and referrals, which can be redeemed for SkySulk account credit as well as Amazon Best Buy and prepaid Visa gift cards with more reward options to come. This is kind of an innovative idea. If you go to skysulk.com today, you can request beta access. Remember that's totally free while they're in beta. When you're invited, you can create a SkySulk account, log in and navigate to the billing section in your account settings and enter the promo code TTime to redeem 1000 SkyPoints as $10 worth of cash value. Totally free, by the way, for use. Once this SkySulk platform goes live, go and check it out. This is exclusive to developer TListeners only. Go to the billing section on the account settings page after you sign up at skysulk.com. Use the code TTime to redeem 1000 SkyPoints, which is equivalent to $10 and cash value. Thank you again to SkySulk for sponsoring today's episode of Developer Tea and a huge welcome to SkySulk as our newest sponsor. So we're talking about habits that learning developers have. Now you may already be able to tell, but learning developers often become senior developers. The ones who continuously learn, who continuously grow their skill set, right, who are constantly getting better. These are the people who end up in leadership positions or in senior level positions, not necessarily management positions all the time, but instead in these higher level developer positions because they are the ones who by a simple function of their constant learning are going to outpace everyone else. So these are habits that you want to have. You want to be a learning developer. If you want to continue being a developer, if your goal is to become a senior developer to become better at what you do, then learning is kind of the fuel. That's the pathway to becoming better. If you continue to do what you've always done, right, if you continue to practice development the same way that you've always practiced it, you will gain experience. In other words, you're going to experience new problems, but you're very unlikely to solve them in better or more novel ways without some level of intentionality. It's very possible that you'll use old, tired, sometimes inefficient methods to solve these new problems. You're using the same old methods that you used a long time ago when you were a younger developer, right? So learning as a developer is a very important part of your career. In fact, it's so important that it was one of the very first episodes that we did on this show. So we want to cover three habits that learning developers, all learning developers have in common. Number one, the developer who is learning does not stop thinking at good enough. The developer who is always learning does not stop thinking at good enough. What does this mean? It means that when you are writing code to solve some problem, regardless of what that problem is. If you're building an interface, if you're designing an algorithm, it doesn't really matter. When you're writing code to solve a problem, there is a point that you will reach where your objective is met. And the most optimum solution, or so we think, is to stop there to move on to the next thing. Because once we've met our objective, assuming that our acceptance criteria is all met, then why should we waste more time, more energy, making things any better? The reality is there's always room for improvement. This is a key fundamental truth that every learning developer understands is constantly true. No matter how much growth you have done, there's always room to grow more. No matter how accurate your program is, there's always room for it to be refactored. There may be room for it to have better naming structures. Perhaps there's a lot of room for it to be optimized. Now, notice in this habit that we're not saying that all learning developers go beyond, specifically writing code beyond good enough. Sometimes it's important to ship the code when you reach that good enough stage. But here's the key difference. Your thinking processes should go beyond the minimum. You don't have to spend the time to actually write the code. It may even take 30 seconds or five minutes of your time after a significant feature to think what would I do next? What is a way that I can improve this code? What is a way that this code is not as good as it could be? The reality is you may come up with a great idea that you simply don't have the resources to implement. This isn't a restriction on you necessarily. You shouldn't see it that way. Instead, write down your idea and move on. Put it in a comment maybe. Put it in some documentation. Put it as an email, send it as a Slack message to the team members that you're working with. Whatever it is that you do to take down this idea. But don't simply stop whenever you've solved the problem to its minimum degree. Always look to the next step. What could I do next? So that's habit number one. Good developers continue thinking beyond the minimum requirement. Write number two, learning developers learn the why behind best practices that they adopt. It's very easy as a developer to take on best practices because someone told us to take them on. This is actually an okay thing. We can actually take on best practices. We can use a best practice that someone else has researched and that shows over and over and over again to be a good idea. Even though we may not necessarily understand exactly why we're doing it to begin with, still practicing those best practices often yields a better result than if we didn't practice those best practices at all. However, a learning developer seeks to understand the principles of those best practices, the underlying reasons why that is a best practice. The reality is those principles derive best practices much deeper and with much more context and they allow you to practice best practices more practically. They allow you to avoid the dogma of following blindly and instead applying those principles rather than relying on formulaic pattern. This allows you to take best practices and cross them into other areas of your work. Cross your best practice from one language, for example, into another language or one kind of paradigm into a different paradigm. Lastly, a learning developer is curious. Curiosity is kind of difficult to explain as a habit, but it is a habit because curiosity very often takes intentionality. It takes developing a sense of awareness and wonder and appreciation for, for example, the movement in the industry. We're not limiting curiosity only to programming languages, although that is a key factor that you should be curious about what's going on in the industry. You should be developing curiosity about better ways to achieve a particular problem. For example, you may develop curiosity about mathematics or about an adjacent field to development, to software development. The key here is that your curiosity will drive the inputs. Your curiosity allows you to find the raw materials that you need to develop new thinking, to develop new ways of approaching problems. Truly, a learning developer is a growing and changing developer. If you're learning, then it's very likely that what you're doing today will look very different from what you do as soon as tomorrow, but certainly as soon as next year. Finding the parts that won't change is of key importance, understanding those principles that we talked about in habit number two, but also understanding that curiosity is about becoming somewhat of a wonder to become interested enough in a subject to learn more about it. Regardless of the means that you're learning more by, your curiosity will drive that motivation to increase your schema, to add knowledge to your brain. That is truly what we're talking about when we discuss learning and curiosity is kind of the fuel that you need in order to learn. Thank you so much for listening to today's episode of Developer Tea. I hope this is inspiring for those of you who want to become learning developers, but you feel like you don't really know how to get there. Hopefully these three habits can start you down that path. Thank you so much for listening to today's episode. Thank you again to SkySulk for sponsoring today's episode. They're changing the way Cloud Computing works and you can get started with their free beta today head over to skysilk.com. Sign up for a beta account and by the way, if you use the code T time in your account settings whenever they launch their platform, you're going to get $10 worth of sky points in your skysilk account. Go and check it out skysilk.com. Thank you so much for listening to today's episode. By the way, if you don't want to miss out on future episodes and this is going to happen, if you don't subscribe, you're almost certainly going to miss out because we send out three of these episodes per week. So I highly recommend that you subscribe and whatever podcasting app you use. Now the most common reason that people don't subscribe is because they don't want their podcasting app to automatically download all of these episodes. Almost every good podcasting app out there, like for example, breaker and overcast and pocket casts, they allow you to change those settings to limit the amount that your podcast Apple downloads. So if that's a concern or a reason that you haven't subscribed in the past, there are ways to fix that problem not only for this podcast but for all of the other awesome podcasts that hopefully you are listening to as well. Speaking of other awesome podcasts, I encourage you to go and check out spec.fm. If you're not aware, Developer Tea is a part of the spec family of podcasts and other content that you can find for designers and developers were dedicated to helping designers and developers level up in their careers. You can go and find other awesome podcasts to subscribe to on spec. For example, design details, tools day, does not compute, and a handful of others. So while you're subscribing to Developer Tea, I encourage you to go and subscribe to some of those other shows that might interest you so you don't miss out on those shows either. Thank you so much for listening and until next time, enjoy your tea.