From Nuts and Bolts to Ones and Zeros
A Mechanical Engineer's Journey to build software
Many software developers kick off their journey by printing "Hello World" in a tiny terminal.
I started with a motor powered solar panel that rotates to keep facing the sun throughout the day.
You could say my code has been following the light since day one (literally)
What a bright start!
But, It was darker before the light
I was fascinated by computers from the moment I got one, not just for watching movies and playing games, but also for experimenting, editing, and even creating small Flash games.
It was fun!
I wanted to study Computer Engineering at the university, and in Sri Lanka, we get "free" education up to a bachelor's degree. However, in our system, you select your discipline after the first year, based on your GPA.
Well, as you might have guessed by the title, I didn't get in! My GPA wasn't enough. I could blame my ignorance. I did not want to leave the degree as well, so I picked "Production Engineering" (We often referred it as Mechanical Engineering as it was popular) which had stuff like process, mechanical, and electronics, and a little bit of automation.
I started following a bachelor's degree in IT on the side. Turns out it's not a good idea for me to get overwhelmed by both gear wheels and for loops, even though they both involve rotations.
Hey look! A rotating solar panel
The first coding task I did was for a solar energy system back in my university for a project. Solar panels work at maximum efficiency when the sun's rays are perpendicular to the panel. Our project idea was to have a set of solar panels follow the sun's path
A set of rotating solar panels!
The program was written in assembly first and ran in a microcontroller, as there were no cool and easy gadgets like the Raspberry Pi in those days. (Ok, I used the words "those days" - I feel old now!) The program decided which direction the panel system should rotate and gave a signal to a motor to do so. Then we realized that the human brain has not evolved for assembly language, so we started using the C language.
During the final presentation, someone in the audience asked about the motor we used to rotate the solar panels. Turns out that the motor just casually consumed all the energy that we earned by rotating the panels. I just said we didn't have the funding for a more power-efficient motor and that this project would be very practical in the future, except it wasn't. We installed a few solar panels on our home roof, and they don't rotate!
Fixing leaks for living
After graduation, I joined an apparel company for 10 months, got bored, and joined an industrial gas company. I was involved mostly in project management of medical gas pipeline systems and some industrial projects that involved gases, such as beverages, cryogenic freezing, tire manufacturing, etc.
At first, my experience was very rewarding. Sri Lanka, being a country with "free" healthcare, I could see the impact I made once a project I undertook was commissioned.
This was more important during the COVID era because there are very few engineers with expertise in medical gas installation in the country. So it was more of a national duty.
On duty during the COVID pandemic.
At the same time, my role was a huge burden because I was dealing with the lives of many people. A bug in an app could result in some financial loss or other resource issues. But with my line of work, it's lives. I have had emergency calls in the middle of the night from a major maternity hospital saying there was an alarm in the NICU (neonatal intensive care unit for newborns) indicating that oxygen pressure for the whole unit was reaching a very risky level.
And many many more
What if I told you that there is an app for it?
At work, I finally wrote something that wasn’t a long email
some actual code!
I remember how I got started — watching the EDMT Dev YouTube channel and writing Java code for an Android app. Back then, the guy didn’t talk much (I just checked the channel now, two surprises: it’s still active after all these years, and now he actually talks!). At first, I just copied exactly what he did, stuff like public static MyClass bla bla...
and somehow it worked. I ended up with a functional app for ordering food online, complete with some fancy UI showing pictures of food I didn’t even recognize.
Steal like an artist
Next, I did something different, looking back, it was one of the good decisions I took in my journey. I started coding another app, a new idea, on my own. A learning app that delivers bite-sized content. In those days, there was no ChatGPT to chat with to fix errors. Maybe this is a negative trait, but I usually don't ask for help from someone when I encounter an issue. One reason for that was that I didn't have a good network of people who code. Also, when I try to debug it myself, I have to understand the issue deeply and even peek below a few abstraction layers to see how stuff works!
That's how I built Curio app, made it fully functional. I published the app to the Play Store and even created a silly promotional video as well. Maybe not very "promotional", it has just 36 views after 7 years!.
FixApp: Scratch our own itch
After Curio, I started experimenting with a digital solution to solve an issue we had at my workplace. In case I forget to mention this at the end of the post as advice for new folks getting into dev, here it is: "try to scratch your itch by solving some issue/pain you face in your life and build a digital solution." And that's what I did too.
Our pain was properly handling customer complaints about breakdowns. Some customers just call customer service, while some call the engineering department directly. Some government hospitals send a fax and a letter by post as they are required to follow some kind of protocol. As simple human beings, we tend to forget those complaints.
So I built the FixApp, which does not revolutionize the industry, is not AI-powered, and is not cutting-edge technology.
A mobile app with React Native for customer service to collect information on breakdowns, calculate costs, generate invoices, etc, and for us engineers to prioritize and take the required actions. I could convince the management team to use this internally for our work. Now we all remember what was broken in the ICU of Karapitiya hospital on 20th June 2019, and what we did to fix it, and the cost!
With that, I became the "tech genius" (lack of a better term) within the company and explored multiple ways we could automate mundane work.
Shequiz app: When the wrong team won by accident
Next came a interdepartmental safery quiz app. My first vibe-coded app, before AI, and before vibe coding was a thing
It was fun, especially for me, since I didn’t have to take the quiz and just got to watch the others struggle. There was a hiccup at the very end: the final score was calculated wrong, so the team that accidentally won started celebrating while the real winners began protesting.
My first bug, shipped with pride to production and it wasn’t the last one.
He didn’t know that refreshing the page reset the countdown.
Broken microphone in an interview
So this is how my fun projects started earning me profits
During the initial few months of the COVID era, just before my country imposed lockdown, I met Guillaume, most randomly via someone I knew for just 2 days in Discord. Gui was looking for a freelancer for a SaaS that he and some other folks were building. As my interview task, I was given the task to build a calculator without using any libraries. I built the weirdest calculator.
During the interview, my microphone didn't work, so we started chatting with sign language, and I knew how to signal money and numbers with fingers,
and he knew how to nod.
Guillaume hired me!
Looking back, the exact moment that things started changing for the better! He's the kind of person who makes the tech world feel less scary for newcomers, always ready to help them break into the industry.
The project was abandoned a few months later, but our relationship wasn't. Our paths crossed multiple times after that.
I've been coding ever since, mostly full stack, with a bit of AI and web3 along the way.
Life's been good.
A retro
It's not very easy to change careers midway. You already have educational and professional qualifications in the field, and you've built a network around that. You might be pretty comfortable, too. So why do you want to shift?
There could be multiple reasons. For me, it was that I felt stuck doing the same thing all over again. It felt like the movie Groundhog Day. So life was just flat, so I wanted to pick up a fun habit, which turned into a profit after some time.
I had doubts at the start, and honestly, I still do. Do I need to master algorithms? Should I have a degree? Am I even good enough? What if I looked like a fool? But hey, I made it through, still standing, still building.
Looking back, I didn't have a "goal" to break into building software. I have started to think that our lives are just random events that occur to us. Somehow, one thing leads to other things, and things go on. But we can make sense of everything in the end. Life can only be understood backwards, but it must be lived forwards. (said some dead philosopher).
That does not mean we can just allow destiny or serendipity to consume our lives. So we could work toward our "goals" or "visions," but the expected result won't come, or it might come in the most unexpected ways.