One of the most useful things I learned to do as a software developer is to form a natural bias towards action. I don’t know exactly how I learned to do this, but when I did and became conscious of it, I became much more productive.
A lot of people who try to write software (or really, write anything) have problems simply getting started. If you’ve never been afflicted by this problem yourself, you can find examples of this all over the Internet. Just go to any forum attended by new developers and look at the questions they tend to ask.
- “How should I structure my project?”
- “What books should I read to learn (X)?”
- “Should I use (X) or (Y) in order to (achieve some thing that only Google needs to do)?”
People get stuck in analysis paralysis on these sorts of questions. As a result, they spend a lot of time not actually starting whatever their project is. Because they don’t want to make a mistake.
It’s better to just start. Do anything. Take any step as the first step, as long as you actually take it. You should never worry about mistakes; you will make them anyway. The difference between an amateur and a professional is that professionals know how to handle mistakes gracefully. In software, the trick to dealing with most mistakes is to typically to just fix them and keep moving.
Maybe you don’t know how to get to where you’re going from where you are. That’s fine, just take a step in whatever direction you think you need to know; as you keep moving, you’ll find out quickly if you’re going the wrong way or not.
Always take incremental steps towards solving whatever it is you’re trying to solve, when you can. If you feel like the steps you are taking are stupidly small, then they’re probably the right size. You can take small steps very quickly, and you can roll-back from small steps quickly too.
If you take giant steps, e.g. “I’m going to write the entire back-end in a month”, then you’re going to be stuck in a state of never being done with anything. Worse, you’ll feel like you have to re-write everything all over again every time you find out you did something wrong. Everything will just seem permanently daunting. Then you’ll feel like a failure. On the other hand, if you take smaller steps, e.g. “I’m going to make sure the length of this name is validated when I push the submit button”, then you can be satisfied you accomplished something and then go do the next thing.
Naysayers might say you can’t break everything down that small, or that just ends up in doing lots of trivial things instead of hard things. That might be true to some extent, but as long as all of those small trivial things are things you actually need to do in order to accomplish your goal, you’ll actually get where you need to go much faster and with less risk. At the end of the day, it doesn’t really matter what naysayers say anyway; you will either have working software, or you won’t.
You’ll never have working software if you don’t start writing it. So just start.