Recently, on this great article by Yogesh Chavan, someone asked: “I have a dream project, what should I do to get started?” It’s a question that I’ve been asked before and it really got me thinking: what are the steps to take in learning to code your dream app? With the abundance of coding tools and learning resources out there, even taking the first step can seem daunting.
My first and biggest piece of advice is: do not try to learn to code with your dream app. Go make a demo project first. Actually, make several demo projects in increasing complexity. If a todo list seems simple to you, try adding a “check all” button. I’ve been coding for years and if you sat me down first thing in the morning with no coffee, I’d be hard pressed to deliver.
By starting with a demo project or projects, you’re putting less pressure on yourself. Your demo app doesn’t need to be perfect. It doesn’t need to achieve all the things that your dream app will do. Use demo projects to learn (and fail) in a low stakes environment. Doing something you’re not good at is painful and it is human to want to avoid pain, but if you start with your dream project, that frustrating learning experience will discourage you and make the project harder to complete.
Another reason to start with a demo project is the abundance of tutorials and guides available. There’s no guide to making your dream project, but each demo project has a number of guides available in whatever tool (React, Django, Node) you decide to use. Google “React todo list app tutorial” and you’ll be presented with a list of options. Don’t be discouraged if your first demo app takes a long time, even with a tutorial. Your next demo will take less time. Remember, while the greenfield looks fun and exciting, it might be littered with rabbit holes. The well worn path, while it may appear less exciting, is certainly safer and easier to traverse.
After you’ve done a demo project (or five). You’ll have a better understanding of the tools at your disposal. Maybe React isn’t the right tool. Maybe you decide to learn Django or Node. You might even be surprised by what these different tools can accomplish. You’ll be able to refine or add to your dream project in ways that you wouldn’t have thought of before. Basically, with a little experience under your belt you’ll have a much better idea of what is and isn’t possible for you. You’ll be able to make informed decisions and get creative with solving problems.
By conceiving of, planning, preparing, and delivering a few demo apps, you’ll get used to that cycle of workflow which will inform the way you create your dream app. For this, I love hackathons or weekend projects. You’ll be surprised by how these events encourage you to work faster and smarter. You’ll start having more complex questions like: How do I collect feedback from users? Or how do I iterate on this? And, you’ll be better prepared to answer and solve those issues.
I know that coding yet another variation of a todo list sounds like the least thrilling thing in the world but working through the challenges of a demo app (for which there are many guides and tutorials) will prepare you for the much more difficult challenges of your dream app when it’s just you and the greenfield in front of you.
If you have _some _programming under your belt, a to-do-list app will probably feel boring and rote. In that case I would recommend trying to do a ‘lite’ version of your dream idea.
- Open-world MMORPG? -> What about a roguelike in Python
- Google docs replacement? -> Try building an app that renders markdown into HTML
Your initial experience will be valuable and related to your goal, and who knows you might use some of that code in your dream project!