Learn how to be a self-taught software engineer

A guide from my experiences as a person who didn't graduate with a computer science degree


7 min read

From Chemistry Science to Software Engineering

It has been a long journey that took me from there to here. I've been a software engineer for 12+ years since I decided to be a software engineer rather than a chemistry scientist.

Back 20+ years ago, computers were new things with many undiscovered possibilities to leverage them along with the internet. Especially in Thailand, where I live (and wish I could work abroad someday, haha), there are few websites online and struggling with the 56k speed of the internet. A career called "Software Engineer" wasn't well-known enough like nowadays.

The first time I had experience with programming was when I was in high school. Some classes taught C, C++, PHP, HTML, JavaScript, and CSS in the school. It was minded blow to me that I could write something in strange languages and bundle them into the actual programming, which could work as I intended to let it be. It's like puzzle gaming, and I tried my best to solve them.

I can do it well and get the highest score in the school. And that's the moment when I found my passion.

To go beyond that, I tried to create my website about the gaming community, including the guest board and web board. I took side gigs as a freelancer to develop websites and had my revenue. I feel so proud of that, but at that moment, I never thought I would choose this path to be my career. As I told you, the "Software Engineer" word wasn't well-known then. And I'm just a kid who does not know enough to see those potentials.

But how did I end up being a chemistry science university student?

In high school, I used to think I was going to be a chemistry scientist because I was more in love with chemistry than programming languages at that time, and I decided to go to the faculty of chemistry science university.

I thought I was in love with that, but I like how the favorite and most famous chemistry tutor in Thailand teaches students to have fun with chemistry science.

And it turns out to be a terrible mistake to choose that path. I realized this when I was a freshman at the university, and I wouldn't say I like chemistry. And that was the moment to made a tough decision to let university life pass at an average score without putting too much effort. And besides that, I learned many more programming languages, databases, system designs, and infrastructure to push myself beyond what I used to be.

After graduating from the university with a chemistry degree, I got a job as a software engineer at Dek-D.com (The biggest teen society and well-known novel platform in Thailand). I was a software engineer, team leader, and head of R&D here for many years.

And now, I'm a solution engineer lead of LINE Company (Thailand) Limited (linecorp.com/en). LINE is the top tech company that creates well-known chat applications and platforms in Asia and definitely in Thailand.

How did I do that?

To be a self-taught software engineer is not more challenging than you thought since nowadays we have the internet with tons of free knowledge to consume. But I would like to share how I learned everything, which works best and efficiently.

๐Ÿ— Create side projects

I am used to learning by watching Udemy, Coursera, and many free tutorials on Youtube. But watching is not the best way to learn them because it is passive learning, and you may forget them quickly.

So, be having the maker's mind.

The best way is to create some side projects along with that learning. It will build muscle memory when you type down on the keyboard and think about how to use them to be the final working software or project until the end.

  • I learned about Node.js, React.js, Vue.js, and GraphQL from a side project intended to be a startup product. (Unfortunately, it did not go well, but I learned a lot from this project).
  • I learned to use AWS fluently with infrastructure setup by using Terraform to create an entire K8S, firewall, VPC, and others from a freelance job that I got from a friend.
  • I learned about Rust and Svelt from creating my new side project. And I hope this can be my first SaaS to the world soon.

The hard part of these is to get started from making it until the end. It requires discipline and strong motivation inside of you to make it happen. If you do not have strong motivation or discipline, find the area that can still make you happy and learn from it. If you feel like you are not doing the job but a hobby you can enjoy daily, that would be the best.

๐Ÿ‘จโ€๐Ÿซ Learned and teach it to others

The best way I found to learn anything is to teach others. Creating side projects can make you know efficiency. But to make you deeply understand that knowledge is to teach others.

Because when you need to teach someone else, you have to deeply understand and be able to answer any question that pops up. It is an excellent opportunity to revise your misunderstanding and know why it works as it should and how.

  • I learned how ElasticSearch works and how to design a scalable index strategy by doing knowledge sharing with other software engineers.
  • I learned how sharding in MongoDB works and how to design schema and choose a shard key correctly from the knowledge-sharing session I gave to my colleagues.

All the above is required to have deeply understood if you are working on a large-scale application. If you do not try to understand deeply, it may cause you many issues (and I got those a lot ๐Ÿคฃ).

๐Ÿ“– Keep opening and learning

In high school, I thought I was an excellent programmer. But when I met many Computer Olympic guys in the university, there were so many talents and things to learn. So I am just living in a cave.

Moreover, when I joined Dek-D.com and LINE, I always met many more excellent engineers. So this lesson made me humble and open to learning from others.

In the way of software engineering or technologies career, there are so many unknown areas for me, and it moves extremely fast. So you must embrace all changes, be open to learning from others, and continuously learn.

Some people use their free time to relax, but for me, it is the best time to learn something new. You may think it may burn me out, but it is not because I will feel like relaxing when I know something new and achieve my goals. As I recently said, you have to find your work that does not feel like a job but a hobby. And you will understand what I am trying to say.

๐Ÿš€ Get out of your comfort zone

If you feel comfortable and do not struggle to do anything daily, you may be in the comfortable zone. Always be aware of yourself, do not let it drown you until one day you see yourself at the same spot without moving for a long time.

The comfort zone is a mysterious thing. If you have been in there for a long time, your comfortable zone circle will shrink a little and a little without noticing. And one day, you will realize that your comfort zone is too small, and you fear jumping out to do anything.

Joining LINE is the one best jumping off of my comfort zone. I have learned and still learning many things since then from LINE. Everything is impermanence. At this point, if I have a chance to work abroad and learn from global tech companies, I would take it without a second thought, even though I feel pleased here.

As I said, there are still other possibilities to find out and learn from them. So be prepared for change and do not let your circle of comfortable zone shrink.

Now and the next step

Now, I am still learning and taught myself many things. So you may see that I am not an English native speaker, and my English is not well enough. But I am also trying to improve these skills because the next step that I would like to jump to is breaking the language barrier and retrieving knowledge from the global technology world.

Besides, I am working on a side project as my first SaaS using Rust and Svelt. So, if it is ready to ship, it would be appreciated if I get your comments. Stay tuned!

Reach me out here.