Developer Tea

Answering Listener Questions: Ajay asks about learning project ideas

Episode Summary

In today's episode, I answer listener Ajay's question about how to determine what type of project he should choose to learn JavaScript. Today's episode is sponsored by Linode! Head over to Linode.com/developertea or use the code DeveloperTea20 at checkout for a $20 credit towards your cloud hosting account! Thanks again to Linode for your support of Developer Tea.

Episode Notes

In today's episode, I answer listener Ajay's question about how to determine what type of project he should choose to learn JavaScript.

Mentioned or Relevant:


Today's episode is sponsored by Linode! Head over to Linode.com/developertea or use the code DeveloperTea20 at checkout for a $20 credit towards your cloud hosting account! Thanks again to Linode for your support of Developer Tea.

And lastly...

Please take a moment and subscribe and review the show! Click here to review Developer Tea in iTunes.

Episode Transcription

Hey everyone, welcome to Developer Tea. My name is Jonathan Cutrell and in today's episode I answer a question from listener Ajay. Today's episode is sponsored by Linode and I couldn't ask for a better sponsor for today's episode because we're talking about building projects and learning while we build things. Linode is a perfect place to host those projects. We'll talk more about what Linode has to offer for Developer Tea listeners later on in today's episode. I want to talk about a few things before we jump into Ajay's question. The first thing is subscribing to Developer Tea. You can open your podcast app while you're listening to this episode. Go and click subscribe. It's a very simple button on pretty much every podcast player. This will make sure that you don't miss out on any future episodes of Developer Tea. Of course, we have three episodes per week. It's very easy to get behind. I know a lot of you, including Ajay, for example, you end up feeling like you have to binge listen to Developer Tea to catch up. If you are actually subscribed, then you don't have to keep that mentally in the back of your mind to go and visit spec. You can just subscribe directly in whatever podcasting app you use and it will automatically come to your phone. That is a feature that hopefully all of you know about at this point. I mentioned it on most episodes, but that's because it's very helpful to you. And transparently, it's also very helpful to Developer Tea. The more of you who subscribe, the higher in the rankings we climb. And if you believe that Developer Tea deserves to climb in the rankings on iTunes and on the other podcast providers, then that is one definite way to help us do that. So thank you so much for everyone who subscribes. Now, I want to jump straight into this episode. But first, I want to remind you, and this is how Ajay got in touch with me. I want to remind you about the spec Slack community. You can get there by going to spec.fm slash Slack. It is free and it always will be. And you can directly message me or any of the other hosts of the spec network shows, which by the way are fantastic. You can go and find tons of content that is useful to you as a developer or as a designer at spec.fm. So go and check that out. Spec.fm. And if you want to join the Slack community, that's spec.fm slash Slack. You're probably already going there to check out the show notes anyway. But go ahead and join the Slack community. You'll be glad you did. All right. So let's get into Ajay's question. Ajay writes, I've been a listener of Developer Tea for a little over three months now and I've been through every episode from the beginning during my daily commutes. That is a lot of episodes to go through, Ajay. Ajay says, I love the show and have learned so much. I've got a bunch of episodes added to my favorites. I'm currently working as a senior UI engineer for a web agency and have been working in front end development and design for the past 10 years or so. I also take on a little freelance work as when I can. But generally my day job keeps me busy enough. My question, which I'd love for you to share your thoughts on on the show, is do you have any tips for side projects, which will help me improve on my development skills in particular JavaScript when I don't have a specific project in mind. You mentioned on a previous episode about finding a problem that people are facing and trying to solve that problem. But I've drawn a blank on this too, looking forward to your response. Ajay, this is such a good question. I'm glad you asked it because this is where a lot of people end up kind of hitting a roadblock. They end up trying to learn, trying to learn and they hear everybody tell them, well, just go and build something you learn so much from the experience. But then they don't know what to build. Now, I'm going to go ahead and break it to you that I'm not going to give you a bunch of ideas in this episode. That's not what I'm about here. I'm hoping to empower you to have your own creative, exciting ideas. I might share some ideas in the future of things that I would like to build that I just simply don't have time to build. Maybe one of you will take it forth and run with it. But in today's episode, I'm hoping to help you become an idea generator, not just spoon-feed ideas that I have personally, but rather, hopefully you come up with better ideas than I can come up with. So that's the hope for today's episode. Now, there is a little bit of a disclaimer here. I'm going to give you three tips for when you are deciding on learning projects. But these tips are specifically for when you are participating in a side project for the sake of learning a language. Specifically for learning a language. This is not for learning how to build a business. This is also not for hopefully eventually turning these projects into software services. That's not what I'm going to be teaching you about today. Instead, we're going to talk about figuring out projects that are specifically designed to help you in the process of learning. And the reason for that is because that will significantly change the way you think about this particular type of project. There are so many other variables that come into play when you start talking about trying to monetize something or bring users in on something. There's a lot more that you have to think about when you have those problems on the table. And instead of focusing on what you're trying to focus on, Ajay, which is learning JavaScript, you end up focusing on the business side of things. And that's not what we're going to talk about today. We're going to talk about learning a language through a project. So I have a couple of tips for you. And we're going to jump straight in on the first one, which is do a bunch of small things. Okay. Do something small and then do another small thing and then do another small thing. Don't take on a huge project. I'm begging you, do not try to take on a huge project. It's highly unlikely that the minutia of a large project, whether that's the infrastructure required for the large project or the mundane parts that are going to be repetitive. The user sign up forms, for example, that you probably already know how to build. These are not going to be particularly helpful in helping you learn. They aren't going to forward your learning process very quickly. You're going to have to do a lot of support work for your large project, a lot of infrastructure, a lot of minutia to support a large project. And the learning portions, the interesting portions are going to be much smaller, a much smaller ratio of the work that you're doing than I would prefer, than you would prefer. Now specific to JavaScript, I do this all the time when I'm trying to learn something about JavaScript or maybe I'm trying to learn something about a particular library JavaScript library. I use Code Pen all the time. I had Chris Collier on the show in the past. And I believe that Code Pen is one of the best products for this exact purpose. So if you're trying to learn JavaScript, Code Pen gives you that right off the bat, you can immediately start writing JavaScript without having to even worry with a file system. And that's the level of stripping away that I want you do. I want you to remove all barriers, all of that infrastructure, all of the unnecessary mundane things that you're going to have to do in order to monetize a project. Remove all that and just write the code that you're trying to learn about. Just write that code. We have an episode about this very subject. You'll find a link in the show notes. It's actually the same episode where we celebrated two million listens. And the idea here is that when you have a big project with a lot of moving parts, it's likely that there's a lot of uninteresting stuff in there, right? I'd rather you take on three or four or twenty tiny projects with all different kinds of focuses, right? All different things that you're building. Maybe you build a game and then you build a form and then you build, you know, five other completely different things. I'd rather you do that than try to learn from building a huge single purpose project, a single purpose project. You're not going to be able to learn a bunch of stuff, right? You're going to learn about that one thing. And then if you want to learn a lot more about that language, well, if you keep on doing large projects, it's going to take you forever. So if you want to learn the language, do a bunch of small things with the language and make those things very different from each other. Do a bunch of small things. We're going to take a quick sponsor break to talk about today's sponsor, Linode. With Linode, you can instantly deploy and manage an SSD server in the Linode cloud. You can get a server running in seconds with your choice of Linux distribution, resources, and node location. Ajay, if you want to actually launch your projects online, maybe you have your own website that you want to feature your projects on. Linode is a great option for you because you can get it up and running in just a few minutes and their plans start at $10 a month. $10 a month. And by the way, you only pay for what you use. So if you only have your friends and your parents visiting your personal site, well, you don't really need to scale that side up. But let's say you decide to release something and all of a sudden you need to scale for one day. You can do that and you only pay for that one day of the extra service. There's a monthly cap on all of the plans and the add-on services. You can have a VM for full control. You can run Docker containers. You can do pretty much anything you want to. You can have your own private Git server, encrypted disks, pretty much anything, right? Native SSD storage on the Linode network. Native SSD storage. 40 gigabit internal network. So it's super, super fast. All of these run on Intel E5 processors. And there's a seven day money back guarantee. Now, if that wasn't enough to convince you to go and check out Linode, then Linode is going to give you $20 of credit by going to linode.com slash Developer Tea. You can use the code Developer Tea 20 to get that credit as well. The short way of applying that credit is just linode.com slash Developer Tea. Of course, all of this will be in the show notes at spec.fm. Thank you again to Linode for sponsoring today's episode of Developer Tea. So we're talking about projects that we can learn from learning projects, specifically learning projects. And this is based on a question from Ajay, the first tip that I gave Ajay and for all of you who are in the same position that Ajay is in, do a bunch of small things. Do small projects, very small, strip away all of the extra stuff, right? You're not trying to monetize this. You're not trying to launch it to the world as a software service. That's not the point. You're trying to learn something. So do something very small. Number two, do something you'll actually finish. In other words, if you find yourself bored, if you find yourself uninspired, if you're not excited about a particular side project, don't do it. Nobody's paying you to do this project. You're not forced to go into this issue, right? You're not forced to go into this project that you've come up with as the best possible thing. Apparently, that's not the idea. If you're not excited to do it, then you're much less likely to do it. And especially if you're not excited and you're not getting paid, well, what's the point of doing it? If you're only doing it to learn, then why not do it in a way that is exciting to you? Pick out something that you're excited about. An easy way to do this, for example, is to pick one of your hobbies outside of coding and build some idea around that hobby. Maybe you like food trucks. Well, build something that goes and grabs all of the local food truck position data and gives you a map of the closest food truck. I don't know. Whatever you come up with, make sure you enjoy it. I particularly wouldn't enjoy building a food truck map, but maybe that's what you want to do. Make sure you're going to enjoy whatever it is that you do. And in fact, I'll even go so far as to say that it doesn't have to be unique. If you're going to enjoy rebuilding what somebody else has built, if you find a particular visualization really interesting or you want to build a tick-tock tow game that's been built a hundred times, if you're doing it for the purpose of learning, then who cares if it's been done before? Do something you will actually finish. Do something that you're going to follow through on that you're going to stay active on. So again, a quick recap. Number one, do small things, a bunch of small projects. Number two, do something that you'll actually finish. And number three, worry less about the outcome and more about the journey. worry less about the outcome and more about the journey. Specifically, don't stress so much about the thing that you're building. If you're building something small, then it's not a lot of time and energy you're going to be throwing away anyway, right? If the purpose of your endeavor is indeed to learn and not to parlay this project into a service that you're going to sell and not to create something that is monetizable, if your purpose is indeed to learn, then don't worry so much about what the final product is. That's not the point. It's easy to get hung up on this because we think that we're supposed to be a hundred percent efficient, right? We think that everything that we do is supposed to gain some kind of value in the world. But the value of the projects that we're talking about here is completely devoid of what that project is. And instead, it's all about what you do along the way. In other words, it's about that journey. It's about learning how to code in that language. Instead of trying to focus on making a unique product or making something that everyone's going to love, instead make a commitment to actually doing something consistently. When I say consistently, I mean that you can probably finish one project per day. A lot of people, especially with JavaScript, a lot of people do daily projects and they're successful with this, okay? Make a commitment to actually doing something consistently. Commit to the schedule and worry less about the quality of the product. This is one of the few times where you'll get the license to make a terrible thing that no one would ever use. And if you learn from it, that's the lesson. That's the value. This is a very commonly known psychology trick. The idea of not breaking the chain. You've probably heard of this powerful concept. But the idea is to do something on a regular interval. Jerry Seinfeld is known for writing a joke every day and then marking an X on his calendar. There's even a cycle don't break the chain.com, which you can find in the show notes. Of course, don't break the chain. It provides you with a very simple interface to actually track whether or not you're following your chain every single day. The big idea here, it matters less about what you build and more about whether you're actually building, right? It matters less about the final product and more about whether you are actually building or just thinking about it. So you have to become familiar with the throwaway project. Can you imagine how many throwaway jokes Jerry Seinfeld has as a result of this habit? Create a ton of pins on code pin that are going to go nowhere that you'll never tweet out that you're never going to email to anyone. You're never going to put them on a portfolio. Build a bunch of stuff that just doesn't matter. That's totally okay. You're going to learn so much from those tiny projects that no one really ever needs to use that you actually go through the project that you go through the project and you actually finish it, right? You take the time to finish it because you're actually interested in it and you're not worried about the outcome. That's how you learn. You don't worry about that outcome, but instead you do something that's interesting that keeps you energized and you do something small enough where the ratio of interesting to mundane is very high. Most of what you're doing is interesting and there's very little mundane and you worry less about your outcome and more about your journey. You continuously do this. You do it on a regular schedule. That's going to take you a long way, Ajay. And I hope to hear back from you. I hope to hear that you've learned a lot in a month or two months from now. I'd love to hear from you. Please reach back out on Slack. Thank you so much for sending in the question, Ajay. Thank you to everyone else who is listening. Thank you for listening to Developer Tea on a regular basis. It means the world to me. Thank you so much to today's sponsor, Lynne Ode. If you are looking for a SSD cloud hosting providers, specifically if you use Linux, if you like free money, $20 for free to be exact. Go to linode.com slash Developer Tea and you'll get a $20 credit applied to your cart. Thank you so much to Lynne Ode again for sponsoring Developer Tea. Thank you for listening and until next time, enjoy your tea.