Programming can be a daunting undertaking at first - the process of learning syntax, avoiding errors, finding and fixing errors or finally creating a program that works but not the way you want and additionally, keeping up with ever pressing changes in frameworks and customer satisfaction can be overwhelming.
So how do we continue to hack out lines of syntax that compiles into something that "returns a function" or a functional line of code and avoid the fears and anxieties that comes before we even get started. Truth - we can't - we need to change our approach. I've met more than a few programmers that are stuck getting started on their dream projects (yeah, we aren't talking about work projects here) - but the stuff of your dreams.
That project that is just beyond your current skill level, just beyond your current abilities - in actuality, it strains your comfort zone. Programming is definitely a journey and can be an exciting and rewarding career, but we have to have courage. We have to look at our desire for perfection and realize that coding is an iterative process and the sooner you uncover that, you can be free to make mistakes and deal with the annoyance of debugging or issues with your coding editor or how to get a key feature of your project to work correctly.
So, what's the answer? It's simple actually and thank the heavens. No matter what your dream project is big or small, whether you are chasing money, stability or fame - it is best to approach it with natural curiosity. Cultivating curiosity in how you plan it out, how you are going to work it out and how you are going to ship it is key. You don't need more time, do what you can do now and then look into the rest as you go. Realize you don't have to have all the answers at the start, but the smartest and most successful people simply got started and were terrified at all the questions and self-doubts that came up along the way but were equally amazed at how all the answers were found or really came out as "all of the above".
How to cultivate curiosity? Well, here's the good news - you get to behave like a child. And if you already a child, more power to you. Yes, yes and yes. Finally. I get to cry when I spill my coffee and take naps during the day. Well, yes and no. You can adopt those behaviors but you may find yourself lonely more often. But what we really mean is to allow for play and less stress with your approach to undertaking tasks. Ask yourself questions along the way as you work on your dream project and this will help to foster play - which all by itself boosts creativity and ability to make connections.
Here's a list to follow:
Ask questions, about everything. Planning, time required, etc. "Are we there yet?" or probably more annoying memory is "Why?" over and over again. You get the idea. But asking questions and taking on the curiosity mindset will actually remove frustrations and force you to approach things on a smaller, modular level. This will help you learn so much and is often the mindset when trying to learn in order to teach someone something, which we know is the best way to make huge leaps and add to long-term retention of a subject.
Cultivate, "well - let's see". What happens if I turn this off, or comment out this line of code or try this framework instead. Play on a developmental level can be profound and lead to breakthroughs as well as solidify future best practices or systems that work best for you and completing projects.
Avoid Perfectionist tendencies - aim for minimal viable product for your programming projects. Just think - kids when they set out to draw the Mona Lisa are always pleased with just the circle character with a smile that comes out as a result. Have the same mindset, it will reduce your anxiety and make it much more likely that you will see your project through to completion. Start all your projects with an iterative approach, knowing that no matter how you start them you will make gradual regular improvements to the final piece. You will develop your skills and be able to add to your project, but you have to get started first and this will keep you from getting bogged down with having to have all the answers.
Don't be afraid to ask for help. Kids ask for help all the time, right. Well, we tend to do that less as we get older but we shouldn't - especially if what we want is on the other side of simply asking for help. Seek out answers, don't be afraid to use StackFlow or W3 or Github forums to solve problems. This will remove huge roadblocks that keep us from accomplishing our dream projects.
Laugh at your mistakes - when you fall, laugh and laugh often. Get up and dust yourself off. But don't kids cry you ask? Yeah, sure...but don't go that far. You get the point, move through your failures and you will get to success.