18: Listener Questions
Summary
In this episode of Developer Tea, host Jonathan Cottrell responds to listener emails, offering advice on professional growth and development practices.
He begins by addressing a question from Brett, a computer science sophomore who wants to transition from an intermediate to an advanced developer. Jonathan defines an advanced developer as someone with a certain level of intuition and code quality. His advice includes studying the work of other programmers to understand their thought processes, learning about programming paradigms (like functional and object-oriented programming) as a language-agnostic subject, and most importantly, building a lot of personal projects. He emphasizes starting with something you genuinely want to build, not necessarily for immediate monetary gain, as the learning experience provides long-term value.
Jonathan shares his own journey into development, which began with a desire to share his photography and music online, leading him to learn web technologies like jQuery and eventually Python and Django. He stresses that finding a personal drive and desire to solve a problem is essential for sustained learning and growth as a developer.
The second question comes from Daniel, who finds writing tests boring and struggles with timing and motivation. Jonathan acknowledges that test-driven development can be difficult to adopt, especially if you’re used to seeing quick results. He suggests starting with the UI or design to get immediate visual feedback, then writing the backend code and tests. Alternatively, he proposes changing one’s mindset to find joy in writing tests, perhaps by finding a testing framework that makes the process more enjoyable.
Jonathan concludes the episode by inviting listeners to support the show through donations and to continue sending questions via email or Twitter.
Recommendations
People
- Paul Graham — Mentioned as an example of a programmer whose essays, particularly about Lisp, one might read while learning.
- Steve Jobs — Referenced as an example of someone who built things for money early in his career, illustrating diverse motivations for starting projects.
- Justin Weiss — Cited for advice on starting development with the UI to maintain motivation, rather than beginning with tests.
Resources
- iTunes University / Stanford course — Suggested as a free resource for learning about programming paradigms, mentioned in the context of studying language-agnostic patterns.
Topic Timeline
- 00:00:00 — Introduction and community engagement — Jonathan Cottrell welcomes listeners to Developer Tea and introduces the episode’s format: answering listener questions submitted via email and Twitter. He mentions his wife, Lauren, is present, setting a casual tone. He expresses appreciation for the community interaction and teases the first question about advancing as a developer.
- 00:01:01 — Advice for becoming an advanced developer — Jonathan reads an email from Brett, a computer science sophomore wanting to move beyond intermediate skills. He outlines his definition of an advanced developer, focusing on intuition and code quality. He shares three key pieces of advice: study the work of other programmers to understand their thinking, learn about programming paradigms as a subject, and build a lot of personal projects. He emphasizes that the desire to build something you care about is crucial for motivation and learning.
- 00:04:30 — Personal journey and project motivation — Jonathan discusses the common problem of not knowing what to build. He shares his own entry into development, driven by hobbies in photography and music, which led him to learn web technologies to create online portfolios. He advises listeners to start with projects they genuinely want to exist, not for immediate profit, as the knowledge gained provides long-term value. He recounts his progression from jQuery to Python/Django and eventually to professional WordPress development.
- 00:08:04 — Addressing boredom with writing tests — Jonathan responds to Daniel’s question about finding tests boring and demotivating. He acknowledges the challenge of test-driven development, especially for those not used to it. He suggests starting with UI/design work to see quick results, then integrating backend code and tests. He also proposes reframing one’s mindset to find joy in testing or finding a more enjoyable testing framework to make the process less of a chore.
- 00:11:00 — Closing remarks and support appeal — Jonathan wraps up the Q&A session and promotes a new way to support the show through monthly donations at developertea.com/donate. He reiterates the contact methods (Twitter and email) and encourages listeners to send more questions. He signs off with his customary farewell, inviting everyone to enjoy their tea.
Episode Info
- Podcast: Developer Tea
- Author: Jonathan Cutrell
- Category: Technology Business Careers Society & Culture
- Published: 2015-02-16T12:50:00Z
- Duration: 00:11:53
References
- URL PocketCasts: https://podcast-api.pocketcasts.com/podcast/full/cbe9b6c0-7da4-0132-e6ef-5f4c86fd3263/ca1a7197-0fac-4fe1-89e8-ff4f9e362c7e
- Episode UUID: ca1a7197-0fac-4fe1-89e8-ff4f9e362c7e
Podcast Info
- Name: Developer Tea
- Type: episodic
- Site: http://www.developertea.com
- UUID: cbe9b6c0-7da4-0132-e6ef-5f4c86fd3263
Transcript
[00:00:00] Hey everyone and welcome to Developer T. My name is Jonathan Cottrell and today I’m going
[00:00:05] to be answering a few questions from people in the community who have emailed me.
[00:00:12] It’s been really cool to see you guys talking to me on Twitter and also through developert.gmail.com.
[00:00:20] One day I might actually get a real person’s email address at developert.com but for now
[00:00:25] I’m just really enjoying using Gmail so I’m going to keep on doing it until somebody
[00:00:29] complains that I’m not professional enough or something.
[00:00:34] Speaking of professional, this episode is going to be a little more laid back.
[00:00:39] My wife is in the room with me, Lauren, say hi.
[00:00:43] So I’m just kind of hanging out reading these emails that you guys have sent me.
[00:00:47] The first one actually is a couple emails long, it’s from a guy named Brett and I’m
[00:00:55] not going to say anybody’s last name for the sake of anonymity, but his name is Brett
[00:01:01] and he said, the first thing he emailed me was that he’s a sophomore and he’s studying
[00:01:06] computer science and basically he’s wanting to know how to become more than just an intermediate
[00:01:13] developer.
[00:01:14] So he wants to become an advanced developer.
[00:01:17] So I actually responded to Brett in the email and I’m going to share with you all what I
[00:01:21] said to him.
[00:01:24] Being an advanced developer, it’s kind of hard to know what that even means because
[00:01:28] you have to decide what advanced developer actually is.
[00:01:32] So what I decided was that advanced developer actually kind of assumes two things.
[00:01:39] One is that you have a certain level of intuition as a developer and the second is that you
[00:01:47] have a certain level of quality to your code.
[00:01:51] So to understand both of these things, I gave Brett some advice.
[00:01:59] I said study the work of other programmers, number one.
[00:02:03] Old, young, doesn’t matter, just study what they did and why they did it.
[00:02:08] Study why some people broke the mold.
[00:02:11] Study why developers of new languages, why they decided to develop those new languages.
[00:02:18] This will help you understand the way that they think, these advanced developers that
[00:02:23] you are aspiring to be like.
[00:02:26] If you study the work that they’ve done, it will help you understand the way that they
[00:02:31] think, the way they respond to a given circumstance.
[00:02:35] The second thing is to begin to study programming paradigms as a subject.
[00:02:42] So learn the language agnostic patterns that can be used in a classifiable problem situation.
[00:02:49] Most likely, Brett is probably going to learn about some of these things in his CES program.
[00:02:56] But a lot of you may not know this.
[00:02:59] You may not even have ever heard of programming paradigms.
[00:03:03] There’s a ton of free material out there.
[00:03:06] There’s some on iTunes University.
[00:03:08] I think there’s a Stanford course on it.
[00:03:10] But basically, there’s just a number of these different programming paradigms, essentially
[00:03:18] just ways of looking at problems through the lens of a particular way of solving those
[00:03:25] problems.
[00:03:26] So there’s the functional paradigm, there’s the object-oriented paradigm, and then there’s
[00:03:30] a myriad of sub-paradigms, ways of doing functional programming.
[00:03:39] The third piece of advice that I gave Brett was just to build a lot of stuff.
[00:03:46] This is probably the most important one.
[00:03:48] That is just get into the code.
[00:03:50] Start actually building things that you want to build.
[00:03:53] Brett responded, and his response I think is probably equivalent to what a lot of you
[00:04:00] are in the situation of.
[00:04:02] That is that you just don’t know what to build.
[00:04:07] You’ve decided that you want to become an advanced developer, but now what?
[00:04:13] You’ve gotten a couple of books, you’ve started reading about what these other programmers
[00:04:18] have done, and maybe you’ve read all of Paul Graham’s essays about Lisp.
[00:04:25] Who knows where you are in that journey, but you don’t know what to build.
[00:04:30] So Brett asked me what I built, and I can’t tell you much more than what my personal experience
[00:04:37] is, because I think everybody has a different approach to this.
[00:04:42] For instance, Steve Jobs, he built something just for the sake of money in the very beginning.
[00:04:48] There’s just a myriad of things that you might would build for your first project.
[00:04:52] I personally, I had started to take up the hobby of photography, and even previous to
[00:05:00] that, I was a musician, and I wanted to share the music that I was creating, and I wanted
[00:05:05] to share the photos that I was creating in a way that the world could see them in some
[00:05:11] sort of portfolio online.
[00:05:13] And that’s actually why I started learning about building things for the web.
[00:05:19] As it turns out, I got really interested in design, and so I learned enough jQuery to
[00:05:26] be able to move my site around and do some animation, and then I got really interested
[00:05:31] in jQuery.
[00:05:33] And so I got a internship, and from there, I just started building things because I was
[00:05:38] assigned them to build.
[00:05:40] I started building a lot of front-end type things, and then got interested in some Python
[00:05:46] and the Django framework, and then I moved past that.
[00:05:51] I went on into a lot of WordPress-based development because I started actually getting paid to
[00:05:58] do development.
[00:06:00] I did it with an agency, and now that agency eventually became Whiteboard.
[00:06:06] So that’s kind of the long history of my development background.
[00:06:14] So who knows where you’re coming from and where you’re going, but what I would say is
[00:06:19] start with something that you really actually want to build.
[00:06:22] Don’t try to come up with something that is going to, you know, don’t try to make a bunch
[00:06:28] of money right out of the gate.
[00:06:30] Chances are the very first thing that you build won’t make you a ton of money.
[00:06:35] It’s unfortunate that that’s the case, but that is the case.
[00:06:39] The first thing that you build probably isn’t going to make you a bunch of money, but the
[00:06:43] knowledge that you gain in that first thing is going to provide you with long-term positive
[00:06:52] return.
[00:06:54] So don’t write it off just because you aren’t immediately making money with it.
[00:06:59] Go ahead and continue to learn by developing things that you actually really want to exist
[00:07:05] in the world.
[00:07:08] So hopefully that has helped Brett.
[00:07:12] I know that that answer was kind of, unfortunately, a dead-end road, but I think that when you
[00:07:22] find something that you want to develop, you start actually developing things in your free
[00:07:33] time and you actually want to solve the problem rather than saying, well, what is the fastest
[00:07:38] way for me to solve this problem?
[00:07:40] You start actually wanting to solve the problem, so you don’t really care so much about the
[00:07:46] efficiency of solving the problem.
[00:07:48] You just actually want to do it.
[00:07:51] So developing that desire, that drive, is essential to the learning process.
[00:08:03] All right.
[00:08:04] Daniel writes in and says, writing tests are boring.
[00:08:08] Leaving it to the end means it wouldn’t get done and doing it at the very beginning can
[00:08:11] kill the joy of writing the code or the project.
[00:08:15] When should you write tests and how do you motivate yourself to write them?
[00:08:22] That’s a good question, Daniel.
[00:08:24] You know, it kind of depends on what you’re motivated by, right?
[00:08:29] I actually have a good friend and a coworker who is actually motivated by seeing the green
[00:08:37] dots show up for passing tests in his terminal.
[00:08:40] So for him, writing tests is the thing that he’s excited about and he writes the code
[00:08:46] for the project along with the tests, but he really does start test-driven development.
[00:08:51] I’ll tell you the honest truth.
[00:08:53] I’ve had a very difficult time doing test-first, test-driven development.
[00:08:58] It’s not very easy to do if you started out not writing tests.
[00:09:02] If you started out, for instance, maybe with WordPress and then eventually you found out
[00:09:08] about test-driven development and everybody told you that you should be writing tests
[00:09:12] first and it’s a little bit difficult to do because you’re used to seeing the product
[00:09:17] of your work quicker.
[00:09:20] I will say that the answer to this is on a personal basis, but I will encourage you to
[00:09:29] write tests earlier rather than later.
[00:09:31] Justin Weiss recently said that where you begin is actually the UI.
[00:09:37] So go ahead, create the design if you are a designer or go ahead and start creating
[00:09:42] some of the wireframe of the interactions on the front end and then go back and then
[00:09:51] you can start to create the code to integrate that front end into the backend processes.
[00:09:57] So unless you’re doing really heavy backend work that doesn’t really have a UI, I think
[00:10:02] that’s a pretty good way of approaching this problem because you immediately start seeing
[00:10:07] the outcome of the work that you’re doing.
[00:10:10] Another potential solution to this problem is to actually change the way that you think
[00:10:14] about what is joyful.
[00:10:16] I know that sounds kind of disconnected from reality, but if you actually get a little
[00:10:22] bit of joy out of writing tests, if you can learn, maybe it’s a tool set problem.
[00:10:29] Maybe you need to find a testing framework that you actually enjoy writing tests in.
[00:10:35] Find a way that writing tests doesn’t kill the joy of writing the code.
[00:10:43] If you can shift your mindset into believing and feeling like tests are actually an enjoyable
[00:10:52] part of the project process, I think that that is another good solution to this particular
[00:10:59] problem.
[00:11:00] That’s all the questions we have time for today, but before we go, I wanted to let you
[00:11:04] know about a brand new way that you can support the show.
[00:11:08] If you go to developertea.com front slash donate, you’ll find a picture of my lovely
[00:11:13] wife and I, but you’ll also see a way that you can support the show by simply donating
[00:11:19] a monthly 99 cents or 3.99.
[00:11:22] It’s about the cost of a cup of tea or a box of tea, but it helps us tremendously to be
[00:11:28] able to keep the show going.
[00:11:31] As always, you can connect with me on Twitter at developertea, or you can email me your
[00:11:36] questions at developertea at gmail.com.
[00:11:39] And of course you can find the show at developertea.com where there’s also a contact link in the header.
[00:11:45] And until next time, as always, enjoy your tea.