"Perfect is the enemy of good."
-Voltaire
This is going to serve as a submission for the task given by Ido Shamun in the fourth session of the Hashnode's Bootcamp II.
I have wanted to talk about this topic for a long time but the problem was the best way to come out with it so that a vast majority of people, especially tech newbies like me can learn something from it. I finally decided to share my own story, or at least, part of it. I guess this is going to be a very short read, so, enjoy!!! You can skip to the end if you don't want to hear my boring intro (winks).
I CODE! (or do I?)
After several attempts, I successfully ventured into coding, or became a techie, as some people prefer calling it. I started learning HTML and CSS again and everything was going on smoothly. I spent months reading books and watching few videos but at the end, I still felt nothing tangible. It was as if I'd learnt nothing at all! I go online and see people doing wonderful stuff with html and css and I'll be like, 'huh! I should know this right?'. My response to this was always to go back and start reading again. Funny right? But that was me.
At the end of my studies (as I prefer to call it), I had nothing tangible to show for it, safe for bunch of several index.html files, styles.css files (app.js was a later addition after I'd started learning JS)
The image above best describes my condition and 'workspace' after several weeks of study. There was nothing safe for a bunch of disorganized codes scattered across several notepad pages.
MISTAKES I MADE
Being a self-taught developer can be mind blowing. Most people wear it as a title and deservingly so because it is not an easy feat. What most people miss is that, talking to someone who has undertaken the journey before you does not discredit you from being a self-taught programmer. There is no crime in talking to someone and asking for a roadmap of sorts, sharing your problems with them and learning from their mistakes.
I didn't actually discuss my journey into tech with anyone safe for two or three colleagues who were already into tech. One is always very busy and had little or no time to check on me, the other, was a newbie like I and we rarely had time to share ideas and discuss. The latter would have been of better benefit to me if distance hadn't separated us.
As I was learning, I failed to build any meaningful project because I was afraid of failure. Afraid of failure but not that kind of failure. I was afraid of being a half-baked developer and as a result, I wanted to read and know as much as I could to the point that a colleague always teased me, asking if I wanted to become a lecturer. It was that bad. Sometimes I tried attempting a project and if I missed just one tag, I'd go back to start reading about it and from there, I start reading about another tag and end up abandoning the project.
I LEARNT (or so I think)
I'm a perfectionist by nature and it's something that has haunted me over the years. It's got its pros and cons, and it's something everyone needs to find a way to balance which was reaffirmed by Ruth Ikegah in her session during the bootcamp. After several failures, I took away some lessons which might be helpful to someone.
Strive for progress not perfection: Learn to strive for progress, not perfection. "Did I know how to create an 'a' tag yesterday? Can I do it now?", "Did I know how to create custom loops yesterday? Can I do it now?", "What did I learn today? How can I apply it?". We should learn to ask ourselves salient questions such as the above instead of wanting to know the ins and outs of a programming language before we decide to create anything tangible. Be more concerned about the progress you made today than your overall progress because, 'little drops of water makes the mighty oceans'.
Don't be afraid to make mistakes: They say, "one who has never made any mistakes has never tried anything new". Don't be afraid to try new things, don't be afraid to fail. Fail seven times, get up seven times and discover seven ways that will not accomplish that task. When you are tired of trying, seek help from the dev community, someone is always willing to help. But make sure you try first and exhaust all possible ways you think you can solve a problem.
Attempt projects: this intersects with the second point but it'll resonate better if it stands alone. The best way to test yourself is to build projects, that way you can know how far you have come. There are several websites that offer challenges for techies, ranging from beginner to experts. Attempt them to the best of your ability, add your own tweaks and customization to taste. Then compare with the original, learn and make necessary adjustments.
Build relationships: relationships here refer to people within your circle of interests. Get acquainted with people from the tech community who you can learn from and share ideas, not only on the internet but physical connections as well. People who are more knowledgeable than you and will be willing to help when you call. Take a roadmap from them, learn from their mistakes. Engage in community discussions and share ideas.
footnote
I haven't stopped being a perfectionist, neither have I fully changed but instead I've learnt from my mistakes and I've adjusted to the best of my ability. There is still a lot of adjustments to make and I'll keep striving to make them. As regards the steps I took to be a better developer, the list is endless but I can't put them all here. This post is already longer than I'd hoped. If the tides favor me, I'll get to talk about more.
And until the universe blesses my fingers with its magical ink again, this 'tabula rasa' will carry the memories of its own very past. I bid thee fair weather in all thy codings and swift debugging whence the need arises.
Emmanuel Marabe Omokagbo, November 2020.