DCR: Traits of a Great Developer - Communications Expert


Summary

This episode focuses on the fourth trait in the “Traits of a Great Developer” series, which is being a communications expert. The host, Jonathan Cottrell, argues that communication is not just a soft skill but a foundational requirement for effective software development. He explains that great developers intentionally and regularly study both the art and science of communication, as it impacts every aspect of their work, from interviews and client meetings to day-to-day collaboration with teammates.

The episode delves into why communication is so critical, highlighting that all career development and daily work are heavily influenced by one’s ability to communicate well. The host emphasizes that this skill must be continuously revisited and sharpened, starting with understanding fundamental communication models like sender-receiver dynamics, feedback loops, and noise. He encourages listeners to actively study these models rather than ignoring them.

The core insight presented is that writing code is, first and foremost, a communication exercise. The primary purpose of programming languages is for humans to understand them, with computers being secondary. The host contends that if a human cannot understand your code, you are failing as a communications expert. He connects this to practices like clear variable naming, writing full words instead of abbreviations, and using tools like test-driven development and documentation to communicate the intent of the software.

Finally, the episode describes the profile of a great developer in a typical business context: someone who creates stable, secure, and easily transferable systems that deliver immense value. This sustainability relies entirely on clear communication and the ability for new developers to reason about and maintain the code. The host concludes by urging listeners to invest time in becoming better communicators to become better developers.


Recommendations

Practices

  • Test-Driven Development (TDD) — Highlighted as a powerful tool of communication. The host explains that TDD helps communicate the intent of the software, connecting the tests directly to the function and purpose of the code being written.

Resources

  • Basic communication models — The host recommends Googling and studying fundamental communication models, specifically mentioning sender-receiver dynamics, feedback loops, and the concept of ‘noise’ in communication. He suggests starting with Wikipedia articles on the topic.
  • Developer Career Roadmap episodes — The host recommends listening to the previous Developer Career Roadmap episodes, which provide context and sit parallel to this ‘Traits of a Great Developer’ series. These episodes are available on spec.fm.

Tools

  • Linode — Promoted as the episode’s sponsor, Linode is a cloud hosting service praised for its simplicity, low cost (20 credit offered using the code ‘developerT2017’.

Topic Timeline

  • 00:00:00Introduction to communication problems in collaboration — The episode opens by describing a common scenario where a conversation with a client or co-worker leads to completely different takeaways. This sets the stage for discussing the importance of communication as the fourth trait of a great developer in the Developer Career Roadmap series. The host briefly recaps the previous traits covered: rational humility, the grit of a scientist, and expanding perspective.
  • 00:02:50Host introduction and the podcast’s mission — Jonathan Cottrell introduces himself and the Developer Tea podcast, stating its mission is to help listeners become better developers. He reflects on the podcast’s longevity (over 400 episodes) and emphasizes that the listener’s active engagement and intention to apply the discussed ideas will have a tangible impact on their career. He encourages listeners to think about how the episode’s content applies to their specific work and career trajectory.
  • 00:04:27Defining the trait: being a communications expert — The host introduces the core trait for this episode: being a communications expert. He stresses that this goes beyond being merely “good enough” for interviews or collaboration. Great developers intentionally and regularly study both the art and science of communication, treating it as a skill that must be continuously revisited and sharpened, not a one-time checkbox.
  • 00:06:06Why communication is fundamental to a developer’s career — The host explains why communication is critically important. He states that all career development, advancement, and day-to-day work are heavily affected by communication skills. This applies to interviews, one-on-one meetings, sales pitches, emails, and even Slack conversations. The sheer volume of communication scenarios a developer encounters necessitates expertise in this area.
  • 00:09:12The major takeaway: Writing code is communication — This segment presents the episode’s central thesis: writing code is a communication exercise, first and foremost. The host argues that the primary reason for programming languages is human understanding, with computer understanding being secondary. If a human (including your future self) cannot understand your code, you are failing as a communications expert. This connects code clarity directly to the software’s intent and maintainability.
  • 00:11:02How communication failures cause most bugs — The host posits that most bugs (upwards of 95% of the time) are not due to technical problems but to communication failures in the code. These include misunderstood logic, poorly named or documented methods/variables/classes, and unclear code flow. He links clear communication practices—like documentation, comments, test-driven development, and thoughtful architecture—to creating more stable and understandable systems.
  • 00:12:12The profile of a great, valuable developer — The host describes what makes a great developer in a typical business context. Most are not creating groundbreaking algorithms but are building systems that deliver immense, sustainable value. These systems are stable, secure, easily transferred to other developers, and can be modified quickly with low overhead. This sustainability is entirely reliant on clear communication and the ability for people to reason about the code.

Episode Info

  • Podcast: Developer Tea
  • Author: Jonathan Cutrell
  • Category: Technology Business Careers Society & Culture
  • Published: 2017-09-20T09:00:00Z
  • Duration: 00:14:53

References


Podcast Info


Transcript

[00:00:00] Have you ever had a conversation with a client or a co-worker, somebody that you’re collaborating

[00:00:11] with, and later you find out that, well, seemingly that person wasn’t even present for the conversation.

[00:00:19] They took away something totally different than you took away.

[00:00:23] That’s what we’re talking about in today’s episode of Developer Tea.

[00:00:27] We’re talking about traits of a great developer.

[00:00:29] This is an extension of the Developer Career Roadmap episodes, and this is the fourth trait

[00:00:35] that we’re going to be talking about in this kind of additional series.

[00:00:39] Really, these are prerequisites to the Developer Career Roadmap.

[00:00:43] I recommend you go and listen to those episodes if you haven’t listened to them, either after

[00:00:48] we’re done with the traits of a great developer or now.

[00:00:51] It doesn’t really matter.

[00:00:52] They kind of sit parallel, and what we’re talking about here will certainly fit in with

[00:00:57] the things that we talked about then.

[00:00:59] So, we’re talking about these traits.

[00:01:01] The traits that we’ve covered so far are rational humility, which we’ve covered kind of at length

[00:01:08] now, the grit of a scientist, the grit, the kind of digging your heels in and having the

[00:01:16] grit to be able to deal with failure, we’ve covered that at length, and finally, expanding

[00:01:23] perspective, having a high-level perspective.

[00:01:27] This is the last one that we covered.

[00:01:29] And really, it leads us into this next one that we’re going to talk about in today’s

[00:01:33] episode, but having an expanding perspective, what does that mean?

[00:01:37] Well, it means having the perspective that goes beyond yourself, and that’s really fundamentally

[00:01:44] what we’re talking about, having a perspective that sees things from a higher level than

[00:01:51] your own viewpoint, right, being able to adopt another person’s viewpoint, or even being

[00:01:58] able to adopt.

[00:01:59] It’s kind of a top-down viewpoint, you know, not being, not adopting the specific viewpoint

[00:02:05] of one person or another, but rather looking at the work that you’re doing, the project

[00:02:10] that you’re working on, or the company that you work within, looking at that from the

[00:02:15] top-down.

[00:02:17] So, that’s the expanding perspective trait, you know, you have an expanding perspective.

[00:02:22] That also is an active thing.

[00:02:24] You’re continuously expanding your perspective.

[00:02:27] You’re trying to learn more about what you don’t already see, right?

[00:02:33] You’re trying to kind of dig into that unknown unknown, eliminating your own blind spots.

[00:02:40] That is an expanding perspective, and that’s really the foundation of what we’re going

[00:02:45] to be talking about in today’s episode.

[00:02:47] By the way, you are listening to Developer Tea.

[00:02:50] My name is Jonathan Cottrell.

[00:02:51] This show exists to help you become a better developer.

[00:02:55] That’s my whole point.

[00:02:57] In recording these podcasts, you know, we’re over 400 episodes now, and we’ve been doing

[00:03:03] this, we’re almost to three years now, which is really exciting for me, and mostly because

[00:03:10] I know that some people who are listening to this episode, I know that you’re going

[00:03:16] to take this, and you’re going to become better with it.

[00:03:19] And not because I’ve developed some, you know, brand new way of thinking, and you’re in on

[00:03:25] the secret by listening to this show.

[00:03:27] That’s not at all what it is.

[00:03:29] Because you’re listening to this show, I know you are actively engaging, and you are actively

[00:03:36] practicing to become better.

[00:03:39] That intention, you taking what we talk about here, and, you know, having those in-person

[00:03:46] conversations, or taking it to your journal, having the time outside of this podcast to

[00:03:53] discuss the ideas that we present on this podcast.

[00:03:56] That will have a chance.

[00:03:57] That’s going to have a tangible impact on your career.

[00:04:00] Taking the time to develop yourself.

[00:04:03] That’s going to have a tangible impact on your career.

[00:04:07] So I encourage you to open your mind and think with me as you listen through this episode.

[00:04:13] Think how it can apply to the work that you do.

[00:04:16] Think how it can apply to your situation, to your position, to your career up until

[00:04:21] this point, and to your career tomorrow and into the future.

[00:04:25] So we’re talking about…

[00:04:27] This next trait.

[00:04:29] And this trait is very simple.

[00:04:31] It is that you are a communications expert.

[00:04:36] Now, notice I didn’t say you’re good enough at communications.

[00:04:40] You’re good enough at communicating that you can sit and be successful in an interview.

[00:04:45] I didn’t say that you’re good enough at communicating that you can collaborate effectively.

[00:04:54] Good developers are intentionally and regularly…

[00:04:57] Good developers are intentionally and regularly studying both the art and the science of communication.

[00:05:03] This is not something to take lightly, and it’s not something to check the box and say

[00:05:08] that you’ve got it taken care of.

[00:05:10] This is something that you have to continuously revisit.

[00:05:14] You have to continuously sharpen your communications skills.

[00:05:18] And it starts by understanding some of the fundamentals.

[00:05:22] We talked about some of this stuff on the show.

[00:05:24] You know, basic communications models.

[00:05:26] I had my undergrad degree in communications, so I have the benefit of having some of those

[00:05:33] models laid out for me in kind of a classroom setting.

[00:05:37] But if you haven’t taken a look at those, I recommend you take some time and go and

[00:05:41] Google about various communications models.

[00:05:44] Google about sender and receiver.

[00:05:47] Google about that feedback loop that you’re going to get.

[00:05:50] Google about the noise in between.

[00:05:52] There’s some excellent Wikipedia articles that, you know, they have good…

[00:05:56] They have good…

[00:05:56] They have good sources, but what you can’t do is just ignore it.

[00:06:00] And what you can’t do is not learn about communication.

[00:06:05] Now, why is this?

[00:06:06] Why is it that communication is so important?

[00:06:08] Well, we’ve already mentioned a few things that are important for you to understand.

[00:06:13] At a very base level, all of your career development, all of your career advancement, and really

[00:06:18] your day-to-day work will be heavily affected by your ability to communicate well, whether

[00:06:25] that’s in an interview.

[00:06:26] Or in a one-on-one meeting, a sales pitch, emailing back and forth with clients or with

[00:06:33] teammates, even talking to other teammates in Slack.

[00:06:38] These are all forms of communication.

[00:06:40] And there’s a million more that we aren’t able to list on this show because there’s

[00:06:45] so many times that you’re going to encounter a need for communications expertise.

[00:06:51] And the better you communicate, the better set up you are to handle the communication.

[00:06:56] And we have one more scenario that I do want to point out that’s often taken for granted.

[00:07:04] We’re going to talk about that right after we talk about today’s sponsor.

[00:07:07] Today’s episode is sponsored by Linode.

[00:07:10] Linode has been sponsoring Developer Tea for quite a while now, and you’ve probably heard

[00:07:15] about the things that Linode has to offer to you.

[00:07:18] But what I want you to do is take a second and brainstorm three cool things that you

[00:07:24] can do with Linode.

[00:07:26] And the reality is, this is a wide open canvas.

[00:07:31] And that’s why Linode is so perfect as a sponsor for the show, because there are people who

[00:07:36] are listening to this, you’re going to go and create a business.

[00:07:40] You’re going to go and create a startup, or maybe you’re going to support your existing

[00:07:44] work in new ways in the future.

[00:07:47] And Linode has incredible services for you to do just that.

[00:07:52] If you’ve never looked at the power that Linux provides.

[00:07:56] Especially when you start talking about multiple servers that are working in tandem with each

[00:08:02] other, using something like node balancing, then I highly recommend you go and check out

[00:08:07] Linode because you’re going to be inspired, not just because it’s a good service, but

[00:08:11] because the possibilities for you to build something really cool are kind of through

[00:08:17] the roof.

[00:08:17] On top of that, it’s incredibly simple and cheap to get started.

[00:08:22] Five dollars for their introductory plan that gets you a gigabyte worth of RAM, which is

[00:08:26] way more than enough for almost any side project that you’re probably thinking about doing.

[00:08:31] On top of that, they’re going to support you by giving you $20 worth of credit just for

[00:08:36] using the code developer T 2017.

[00:08:39] Go and check it out.

[00:08:40] Spec.fm slash Linode.

[00:08:42] Thank you again to Linode for continuing to sponsor developer T.

[00:08:46] So we’re talking about being a communications expert, not just being good and passable at

[00:08:52] communications, but instead being a communications expert.

[00:08:55] Why is this?

[00:08:56] Why is this so important?

[00:08:57] Shouldn’t we be technical experts or shouldn’t we be experts at writing code?

[00:09:02] Here’s the reality.

[00:09:04] We said we were going to talk about one more scenario where communications becomes incredibly

[00:09:08] important.

[00:09:09] And here’s the major takeaway from today’s episode.

[00:09:12] If you miss everything else, make sure you write this down and remember this particular

[00:09:17] thing.

[00:09:18] Writing code is a communications exercise.

[00:09:23] Don’t get this misunderstood.

[00:09:25] Writing code is a communications exercise, first and foremost.

[00:09:31] Now, of course, refactoring for optimized performance is also part of writing code.

[00:09:38] Accomplishing a particular goal is also part of writing code.

[00:09:42] But first and foremost, the reason that we have programming languages is so that humans

[00:09:49] can understand them.

[00:09:50] The second reason is so that computers can understand them.

[00:09:54] If humans are unidentifiable.

[00:09:55] unable to understand the programming language, and more importantly for you as a developer,

[00:10:01] if a human can’t understand your code, then you are failing as a communications expert.

[00:10:08] If you’re writing code that other people need to maintain in the future, if you’re writing code

[00:10:13] that you’re going to maintain in the future, then you are creating a piece of communication

[00:10:19] about the intent of your software. The intent is directly connected to the function,

[00:10:27] right? And this is why test-driven development is such a powerful tool of communication.

[00:10:34] And it may not be presented that way in the average development tutorial. It may not be

[00:10:40] presented that way in a CS degree program. But if you take the time to recognize the problems that

[00:10:48] you have, you’re going to be able to do that. And if you take the time to recognize the problems

[00:10:49] that you have, you’re going to be able to do that. And if you take the time to recognize the problems

[00:10:49] that you have, the bugs that you experience, most of the time, and in fact, I would say for most

[00:10:55] developers, probably upwards of 95% of the time, the reason those bugs occur has very little to do

[00:11:02] with some technical problem, right? And more likely has something to do with a misunderstood

[00:11:09] line of code, some kind of a missed logic, or perhaps a poorly named or poorly documented method

[00:11:17] or variable or class. And if you take the time to recognize the problems that you have,

[00:11:19] these are things that are all based on the ability to communicate. The code and the things

[00:11:27] surrounding the code, like documentation and readmes, or test-driven development,

[00:11:33] comments in your code, even the flow of the code, the way that it talks to other services or other

[00:11:41] code within the same system. These are all things that you can better architect if you

[00:11:49] set up a system that is able to communicate. And if you take the time to recognize the problems

[00:11:49] study and pay attention to how to communicate well. If you take extra time to select proper

[00:11:58] naming for variables, if you take extra time to write out full words rather than abbreviated words

[00:12:05] in your code, these are things that good developers, great developers, spend time doing.

[00:12:12] Most great developers are not spending their time developing a new groundbreaking algorithm.

[00:12:19] Most great developers are developing systems that deliver immense amount of value and are

[00:12:25] sustainable. This is such an important thing to grasp as a developer, particularly as a developer

[00:12:32] in the average business scenario. If you can create a program that is stable, as secure,

[00:12:39] is easily transferred to another developer, and can be modified and updated relatively quickly,

[00:12:46] relatively easily, with very little overhead,

[00:12:49] if new developers can come in and start managing that software and creating feature updates to that

[00:12:55] software and maintain that stability throughout, this is how good development looks. And that is

[00:13:03] totally reliant on the interconnections between the people in that scenario, the ability to reason

[00:13:09] about the code. This is all wrapped up in communications. I encourage you to take some time

[00:13:15] to put effort into becoming a better developer.

[00:13:19] A better communicator. Take time putting effort into studying the various models of communication.

[00:13:26] Take time into, you know, take that extra step to make your code communicate more clearly to the

[00:13:33] next person that comes along to maintain it. Thank you so much for listening to today’s episode.

[00:13:37] Once again, this is Traits of a Great Developer, part of the Developer Career Roadmap episodes.

[00:13:43] Those initial episodes, it’s about a year ago that we did those. You can find them on

[00:13:48] spec.fm.

[00:13:49] Of course, the last few episodes have been these traits that we’ve been talking about.

[00:13:55] I hope this has provided a lot of value to you as a listener. Thank you so much for listening to

[00:14:00] Developer Tea. Thank you again to Linode for sponsoring today’s episode of Developer Tea.

[00:14:05] If you’ve been inspired and you have an idea and you want to see it launched live, accessible on

[00:14:12] the internet, accessible over a network, go and check out Linode, what Linode has to offer.

[00:14:18] A great episode.

[00:14:19] A great, low barrier to entry to having a server that’s accessible and you can scale up. There’s

[00:14:26] so many things that Linode provides. Go and check it out, spec.fm slash Linode. Thank you again to

[00:14:30] Linode for sponsoring today’s episode of Developer Tea. Thank you again for listening. If you don’t

[00:14:35] want to miss out on future episodes, including more episodes about these traits of a great

[00:14:39] developer, make sure you subscribe in whatever podcasting app you use. Thanks so much. Until

[00:14:45] next time, enjoy your tea.

[00:14:49] Bye.