DCR: Traits of a Great Developer - Communications Expert
Published 9/20/2017
Today's episode is the next of a series of episodes extending our previous discussions from the Developer Career Roadmap. The first episode from that series can be found here: https://spec.fm/podcasts/developer-tea/49656
Today's episode focuses on becoming a communications expert.
Today's episode is brought to you by Linode.
Linode provides superfast SSD based Linux servers in the cloud starting at $5 a month. Linode is offering Developer Tea listeners $20 worth of credit if you use the code DEVELOPERTEA2017 at checkout. Head over to spec.fm/linode to learn more about what Linode has to offer to Developer Tea listeners!
Transcript (Generated by OpenAI Whisper)
Have you ever had a conversation with a client or a coworker, somebody that you're collaborating with? And later you find out that, well, seemingly, that person wasn't even present for the conversation. They took away something totally different than you took away. That's what we're talking about in today's episode of Developer Tea. We're talking about traits of a great developer. This is an extension of the Developer Career Robemap episodes. And this is the fourth trait that we're going to be talking about in this kind of additional series. Really, these are prerequisites to the Developer Career Robemap. I recommend you go and listen to those episodes. If you haven't listened to them, either after we're done with the traits of a great developer or now, it doesn't really matter. They kind of sit parallel. And what we're talking about here will certainly fit in with the things that we talked about then. So we're talking about these traits. The traits that we've covered so far are rational humility, which we've covered at length now. The grit of a scientist, the grit, the kind of digging your heels in and having the grit to be able to deal with failure. We've covered that at length. And finally, expanding perspective, having a high level perspective. This is the last one that we covered. And really, it leads us into this next one that we're going to talk about in today's episode. But having an expanding perspective, what does that mean? Well, it means having the perspective that goes beyond yourself. That's really fundamentally what we're talking about. Having a perspective that sees things from a higher level than your own viewpoint, right? Being able to adopt another person's viewpoint or even being able to adopt kind of a top down viewpoint, not being not adopting the specific viewpoint of one person or another, but rather looking at the work that you're doing, the project that you're working on or the company that you work within, looking at that from the top down. So that's the expanding perspective trait. You know, you have an expanding perspective that also is an active thing. You're continuously expanding your perspective. You're trying to learn more about what you don't already see, right? You're trying to kind of dig into that unknown, unknown, eliminating your own blind spots. That is an expanding perspective. That's really the foundation of what we're going to be talking about in today's episode. By the way, you're listening to Developer Tea. My name is Jonathan Cutrell. This show exists to help you become a better developer. That's my whole point in recording these podcasts. You know, we're over 400 episodes now and we've been doing this. We're almost to three years now, which is really exciting for me. Mostly because I know that some people who are listening to this episode, I know that you're going to take this and you're going to become better with it. Not because I've developed some brand new way of thinking and you're in on the secret by listening to this show. That's not at all what it is. Because you're listening to this show, I know you're actively engaging and you are actively practicing to become better. That intention, you taking what we talk about here and having those in-person conversations or taking it to your journal, having the time outside of this podcast to discuss the ideas that we present on this podcast, that will have a tangible impact on your career. Taking the time to develop yourself, that's going to have a tangible impact on your career. So I encourage you to open your mind and think with me as you listen through this episode, think how it can apply to the work that you do, think how it can apply to your situation, to your position, to your career up until this point and to your career tomorrow and into the future. So we're talking about this next trait and this trait is very simple. It is that you are a communications expert. Now notice I didn't say you're good enough at communications, you're good enough at communicating that you can sit and be successful in an interview. I didn't say that you're good enough at communicating that you can collaborate effectively. Good developers are intentionally and regularly studying both the art and the science of communication. This is not something to take lightly and it's not something to check the box and say that you've got it taken care of. This is something that you have to continuously revisit. You have to continuously sharpen your communications skills. It starts by understanding some of the fundamentals. We talked about some of this stuff on the show, basic communications models. I had my undergrad degree in communications. I have the benefit of having some of those models laid out for me in a classroom setting. But if you haven't taken a look at those, I recommend you take some time and go and Google about various communications models. Google about sender and receiver. Google about that feedback loop that you're going to get. Google about the noise in between. There's some excellent Wikipedia articles that they have good sources. But what you can't do is just ignore it. And what you can't do is not learn about communication. Now, why is this? Why is it that communication is so important? Well, we've already mentioned a few things that are important for you to understand at a very base level, all of your career development, all of your career advancement, and really your day-to-day work will be heavily affected by your ability to communicate well, whether that's in an interview or in a one-on-one meeting, a sales pitch, emailing back and forth with clients or with teammates, even talking to other teammates in Slack. These are all forms of communication, and there's a million more that we aren't able to list on this show because there's so many times that you're going to encounter a need for communications expertise. And the better you communicate, the better setup you are to handle those scenarios. And we have one more scenario that I do want to point out that's often taken for granted. We're going to talk about that right after we talk about today's sponsor. Today's episode of sponsor, Buy and Linnode. Linnode has been sponsoring Developer Tea for quite a while now. And you've probably heard about the things that Linnode has to offer to you. But what I want you to do is take a second brainstorm, three cool things that you can do with Linnode. And the reality is, this is a wide open canvas. And that's why Linnode is so perfect as a sponsor for the show because there are people who are listening to this. You're going to go and create a business. You're going to go and create a startup or maybe you're going to support your existing work in new ways in the future. And Linnode has incredible services for you to do just that. If you've never looked at the power that Linux provides, especially when you start talking about multiple servers that are working in tandem with each other, using something like no balancing, then I highly recommend you go and check out Linnode because you're going to be inspired, not just because it's a good service, but because the possibilities for you to build something really cool are kind of through the roof. On top of that, it's incredibly simple and cheap to get started. $5 for the introductory plan that could do a gigabyte worth of RAM, which is way more than enough for almost any side project that you're probably thinking about doing. On top of that, they're going to support you by giving you $20 worth of credit just for using the code Developer Tea2017. Go and check it out, spec.fm slash Linnode. Thank you again to Linnode for continuing to sponsor Developer Tea. So we're talking about being a communications expert, not just being good and possible communications, but instead being a communications expert. Why is this so important? Shouldn't we be technical experts or shouldn't we be experts at writing code? Here's the reality. We said we were going to talk about one more scenario where communications becomes incredibly important. And here's the major takeaway from today's episode. If you miss everything else, make sure you write this down and remember this particular thing. Writing code is a communications exercise. Don't get this misunderstood. Writing code is a communications exercise, first and foremost. Now, of course, refactoring for optimized performance is also part of writing code, right? Accomplishing a particular goal is also part of writing code. But first and foremost, the reason that we have programming languages is so that humans can understand them. The second reason is so that computers can understand them. If humans are unable to understand the programming language and more importantly for you as a developer, if a human can't understand your code, then you are failing as a communications expert. If you're writing code that other people need to maintain in the future, if you're writing code that you're going to maintain in the future, then you are creating a piece of communication about the intent of your software. The intent is directly connected to the function, right? And this is why Test Driven Development is such a powerful tool of communication. And it may not be presented that way in the average development tutorial. It may not be presented that way in a CS degree program. But if you take the time to recognize the problems that you have, the bugs that you experience, most of the time, and in fact, I would say for most developers, probably upwards of 95% of the time, the reason those bugs occur has very little to do with some technical problem, right? And more likely has something to do with a misunderstood line of code, some kind of a missed logic, or perhaps a poorly named or poorly documented method or variable or class. These are things that are all based on the ability to communicate. The code and the things surrounding the code, like documentation and readmys or Test Driven Development, comments in your code, even the flow of the code, the way that it talks to other services or other code within the same system. These are all things that you can better architect if you study and pay attention to how to communicate. Well, if you take extra time to select proper naming for variables, if you take extra time to write out full words, rather than abbreviated words in your code, these are things that good developers, great developers spend time doing. Most great developers are not spending their time developing a new groundbreaking algorithm. Most great developers are developing systems that deliver immense amount of value and are sustainable. This is such an important thing to grasp as a developer, particularly as a developer in the average business scenario. If you can create a program that is stable, secure, is easily transferred to another developer and can be modified and updated relatively quickly, relatively easily with very little overhead. If new developers can come in and start managing that software, creating feature updates to that software and maintain that stability throughout, this is how good development looks. That is totally reliant on the interconnections between the people in that scenario. The ability to reason about the code, this is all wrapped up in communications. I encourage you to take some time to put effort into becoming a better communicator. Take time putting effort into studying the various models of communication. Take time into, take that extra step to make your code communicate more clearly to the next person that comes along to maintain it. Thank you so much for listening to today's episode once again. This is traits of a great developer, part of the developer career roadmap episodes. Those initial episodes, it's about a year ago that we did those. You can find them on spec.fm. Of course, the last few episodes have been these traits that we've been talking about. I hope this is provided a lot of value to you as a listener. Thank you so much for listening to Developer Tea. Thank you again to Linode for sponsoring today's episode of Developer Tea. If you've been inspired and you have an idea and you want to see it, I launched live accessible on the internet, accessible over a network. Go and check out Linode. Linode has to offer a great, low barrier to entry to having a server that's accessible and you can scale up these so many things that Linode provides. Go and check it out. Spec.fm slash Linode. Thank you again to Linode for sponsoring today's episode of Developer Tea. Thank you again for listening. If you don't want to miss out on future episodes, including more episodes about these traits of a great developer, make sure you subscribe and whatever podcasting app you use. Thanks so much and until next time, enjoy your tea.