How I became a Software Developer after years as an HR Business Partner

Phoebe Phuong Nguyen
7 min readOct 18, 2020

Since my last post about a Slackbot I built, I received many questions from people in my network and even some new friends who found my post helpful for them. Lots of you asked “How did you do that?”, “I also don’t have a technical background, how should I start programming”.

I hope this “know-how" sharing can help you — just like me who don’t have a technical background but want to break the comfort zone and start programming.

Disclaimer:

  • I won’t provide a magic formula or sell you a pill (you know! the kind of drug in Limitless movie), so you can become a developer overnight.
  • I won’t share only about technical knowledge. I’ll also emphasise the importance of non-technical knowledge/ experiences/ background, mindset.

Have a roadmap

It is very tempting, uncomfortable and disappointing when seeing articles such as “How I build XYZ in ABC weeks/months”. I felt the same when I read the article “How to build a slack bot in 8 minutes” :). I thought I was not smart enough!!

But luckily, I set a state for myself as a “learner”, so I didn’t beat myself up for not learning at light speed. Also, I prepared a roadmap for myself. Becoming a programmer has multiple paths, so you should make your own.

You can check this developer-roadmap GitHub by kamaranahmedse where they developed a detailed developer-roadmap, and you can adjust to suit your goal.

Sharpen your problem-solving skill

Photo by Morgan Housel on Unsplash

You might say “Of course! Problem-solving skill is important. I know how to solve a problem. Don’t we solve problems daily? Why you mention it again?”. I agree that we solve problems every day. Still, if you think carefully, you will realise that those problems you solved they are either your habits or your experiences (which are handled by System 1 according to Daniel Kahneman — “Thinking, Fast and Slow”). So, your brain tricks you into thinking you have problem-solving skill. I got tricked, too.

But, the good news is there is a solution. Let’s me show you!

My first project was to build a credit card number validator program. My brain was blank. I didn’t know where to start, which means I didn’t even know what questions to ask. I thought I had the problem-solving skill, but in fact, my problem-solving skill wasn’t as strong as I thought.

“What did you do?” — you asked.

#1: When facing the unknown problem, to get out is to get in.

I was a fan of The McKinsey Way problem-solving which is “fact-based”, “structured”, and “hypothesis-driven” (I simplify it in this context, there are more). I have been using this in my past life as an HR Business Partner solve problems and present solutions to my clients (GMs, managers, employees). So, It took me a beat to redirect my mind to a new field (programming) then I started applying my problem-solving approach.

I bet each of us has our ways to solve new problems. It is there inside your brilliant brain, all you need is to use you System 2 according to Daniel Kahneman — “Thinking, Fast and Slow” and dig deeper inside your mind.

#2: Read articles on how to solve a programming problem.

Just like any other fields, there are specific ways to do things. Programming problems also have certain things to know to solve them. I read a few instructions, this one I think is the most appropriate for beginners.

My latest project was to build to a Slackbot which required more than just programming language know-how and logic. Compared to my first project, it was different. I felt more confident and welcoming to problems. I enjoyed solving problems. You can check my post about this project to see how I structure my project and delivered it.

Define your niche by connecting your past skills and programming skills

“You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something — your gut, destiny, life, karma, whatever. […].” Steve Jobs

I bet you knew this infamous statement and I felt resonated to it stronger than ever in my journey to become a Software Engineer. Switching to programming doesn’t mean your experience or knowledge in your past life goes obsolete. Instead, it is your “secret sauce”.

I urge you to look back to your past roles and pick out problems that you can solve with your new skills. Build solutions for them. Repeat.

The line to define non-technical and technical is getting blurrier. An accountant is asked to be tech-savvy with the new database management program. Even a cashier is requested to know about how to use the inventory management software. This also applies to technical roles such as engineers, product managers. A software engineer in a company building payroll app should understand how HR process works, how payroll is processed; so they can build a better product, be less dependent on Account managers or BAs.

Always try to build something with what you are learning.

One thing I like about this field is that you are what you built. Your work is the best channel to show what you are capable of.

Photo by Brett Jordan on Unsplash

I know you heard this suggestion before. It’s a smarter and more efficient way to learn compared to theory-learning only. However, learn-by-doing will give you tangible evidence about your capabilities. You can build your portfolio to showcase your skills and what you can deliver.

Learn-by-doing is good, but you shouldn’t do it purposelessly.

Photo by Taras Zaluzhnyi on Unsplash

Remember when I said it is tempting when seeing others who said: “I am a beginner and I can build XYZ”. Let’s me break down why you should control the temptation wisely.

Pros:

  • You are motivated to build that damn thing even it was challenging somehow because you think “They can do it. So, do I”.
  • You don’t beat yourself up if you think positively “Well, I am getting there. Just like others.”

Cons:

  • You only learn how to build the same thing and forget to ask Whys. “Why they used this framework? Why they used function over class?”.
  • You developed a habit of “project hopping” without a clear goal what developer you want to be. You do projects because they are cool, people say “Wow” to your profile.

You can be an explorer with your roadmap but don't wander too far; otherwise, you will get lost.

Understand computer science fundamentals

Photo by Gavin Allanwood on Unsplash

I understand that as a non-technical switching to the programming world, you have the urge and fear that you have to learn fast, you have to be able to prove you can build things quickly to get the first developer job.

It is a fair point because the whole purpose of spending hours to learn programming skill (in my case and your case) is to build a career with it finally.

But…

You can’t shortcut your learning by “project hopping”. By doing that, you don't understand the “original knowledge” because you only know to fix a specific thing with specific tools without knowing why. Just like the key concept in my favourite game Little Alchemy“Combine basic elements and see what you come up with.”

As I mentioned in this Eatthefrog project, “Don’t take frameworks/ modules as your first resources. Try to solve the same problem without them”. You have to build things with basic items and deal with all the tedious work to know why you need a tool to make you more efficient.

FREE Online courses: I highly recommend CS50’s Introduction to Computer Science from Harvard, Computer Science 101 from Stanford. There are also plenty of short courses on Udemy, Khan Academy, Scrimba, Educative and other online learning platforms.

Concepts to start researching: Internet, Server, domain, APIs, front end, back end, database, data structure, programming language— how the computer understands human.

Don’t forget to say “I wanna thank me for my success.”

I put this as the last advice because I think most people, including me, forget to say this. No matter how smart you are, those achievements can’t be here without all the practice to understand a new concept, the patience and persistence when facing challenges to say “keep moving and you will get there eventually.”

Thanks for reading!

Phoebe

--

--

Phoebe Phuong Nguyen

Software Engineer with strong HRIS expertise. love surfing and playing beach volleyball when I don’t code!