One of the things I couldn’t foresee myself doing before, but do so now: Coding.
For the longest time, I was one of those who said “I wish I can code” but never really meant it. Why? Because my actions reflected my priorities, and seldom did coding end up being acted upon. Even when I did, it had a start-stop manner to it – I’ll do a few tutorials, then quick. I’ll pick up again, then quit after a few weeks. After a few cycles of earnest false starts of this, I was beginning to feel that coding is just not my thing. Maybe I’m just not hard-wired that way, I justified to myself.
But somehow, I tried again in Jan 2019, and tried to push through on learning. It helped that the Government gave everyone $500 to take whatever course they wanted, as part of a national upgrading initiative. OK the money barrier is settled. So I signed up for a few beginner courses on Udemy and made a few projects from it. Got some fundamentals in HTML, CSS, JS, jQuery, Bootstrap, PHP, mySQL. Those initial lessons were really just following a video tutorial line by line, and not really understanding what I was doing. A bit of monkey see monkey do. But it grew on me, slowly. It’s like learning a new (spoken) language. Bit by bit, I connect doing this thing with getting this other thing. Cause and effect. I learned how to ask better questions. By the end of the course, it boosted my confidence to try harder in other things. I had crossed a threshold. The threshold, that moment when coding no longer felt scary. (I realised it was actually just higher pain tolerance of hitting the proverbial head against a wall when it comes to debugging)
Then next came my next milestone and challenge. I wanted to make a basic web app on Ruby on Rails. This time I logged the steps in my journey and a pattern emerges:
- Get over initial learning slump. Muster inspiration and courage by reading articles about other prolific makers and developers whom I look up to, listening to podcasts etc.
- You fear what you don’t know. Read up articles about Rails, how-tos, to-dos for noobs.
- Build early foundation (barely). Take a Rails course online, build basic app/blog, “see how easy it is?!” I tried a few of MacKenzie Child’s 12 in 12 Rails course on Youtube.
- Try tutorials for building specific features of the app I want to build. On top of the basic blog app I built, I took bits of MacKenzie’s other tutorials and pieced them together to get the other features and functionality in, e.g. user accounts, authentication.
- Keep going. Build, google, build. Learned more tools, like command line, Git, Github and serverless tools like Heroku. Ask for help from friends. Thanks @craigpetterson for your help!
- F**k it, just launch! And Your Life In Months was born.
- Iterate based on feedback. It’s now at a place where I like as a Version 1.0. More to come in the next versions!
After Rails, I took a hiatus because I really pushed it hard and got a bit of coding fatigue. At this time JAMstack appeared on my horizon, and I hopped onto it and had loads of fun making JAMstack sites! What followed was another whirlwind journey of learning (some) GatsbyJS, React, Markdown, and playing around with all the headless CMS in the market. Ended up with a productized service where I can make more JAMstack sites for other people - Sweet Jam Sites.
Then I dropped out of coding for a year again. But I remembered, when I discovered JAMstack, and I knew it in my gut (even though I’m a coding noob at that time) that I want to explore this tech stack for making web apps, and eventually my SaaS. But I didn’t know how to get there. I dabbled with Stackbit then and it was such a great way to slowly orientate myself to JAMstack, since you can literally spin up a JAMstack website in minutes using Stackbit. I made tiny customizations to the template, slowly begin to read a little JSX/React/Gatsby, how everything connected together. But how do I make an API, and which frontend framework should I use to fetch data from it? I knew a bit of Ruby on Rails by then (from my learning to code journey the year before), and I always felt that creating a backend on Rails felt within my reach. It wasn’t as scary as using other frameworks. And I’d done it with Rails before already. So I decided to go for Rails as my backend framework of choice.
Then I (re-)started my journey of learning how to code, this time with Vue.js. AN hour of code everyday, for 100 days. I took on the #100daysofcode challenge. Just start. I got inspired by what @dannypostmaa was doing with his product Headlime, and he also didn’t know how to code eight months ago! When asked, he said he picked up Vue.js because it looks easiest to start. So I researched a bit, and discovered it suited my programming taste. It can be adopted progressively, and all that’s needed was to add a script to the html file, just like the good old jQuery days. That was familiar because all the HTML, CSS and JS were all used the same way I was used to in web development 101. It was not so scary unlike React, Next.js and Gatsby where everything was JS. Learning Vue had been such a joy. I could never have known that I would enjoy coding this fun, all because of a framework that was suited to me. But more importantly, I also found incremental ways to learn coding and to stay motivated, by browsing mini Vue projects on Codepen, and learning from them.
Fast forward to the end of the 100 days. I finish with around 20 mini-products. What's next? Since the daily writing platform where I write is closing down, I decided to step up and create a platform to replace it for a bunch of us homeless daily writers. I took what I learned from the JAMstack philosophy, and frontend development from Vue, and thrown in Strapi (an open source Node.js headless CMS) as a backend to form my very first SaaS - Lifelog. And the rest is history.
This is usually where grandiose statements about what I will and want to achieve next come in. But something I learned about sparking joy in my work made me want to approach my goals in another way. Just follow my curiosity and energy. Take whatever comes, drop whatever bores, and ride on whatever pulls me forward.
I’m not sure what will turn up on my decoding coding journey, but I now know, at least, that I don’t need to know and it’s better for it.
Follow my daily writings on Lifelog, where I write about learning to code, goals, productivity, indie hacking and tech for good.