How I went from failure to success in programming and what got me there

A boy with a backpack running down the street

This is David’s story of how he kept coming back to programming over the course of his life and eventually found success in it!

In the past 10 years, I’ve had three separate experiences trying to learn programming. I’ve wondered why I’ve had such different results. What had caused me to both fail and succeed?

I’ve finally come to an answer!

In all three experiences, there were three factors that had the biggest impact.

I will take you through each experience and show you exactly how each factor played a role in whether I failed or succeeded.

Initial failure

I had my first taste of programming back when I was 18 years old. Fresh out of high school.

First year in university.

This wasn’t a computer science or software engineering program. I was in Civil Engineering. Think buildings and bridges.

A concrete building under construction

It was an introductory computer science course taught in Matlab. All Engineers had to take it.

To be fair, if it wasn’t for my programming friend, I don’t think I would have done very well in the class. There were many concepts I simply couldn’t grasp. Even with external help.

I could look back and blame a million things as to why I didn’t learn all the concepts. Why I left that class hating programming. However, it would just be a bunch of excuses.

So why did it happen? Why did I fail?

Too cool

I failed to learn programming because I didn’t have the desire to learn it. Yes, desire! It was simply a requirement for me. A requirement so I could get my degree.

Nothing more, nothing less.

I didn’t WANT to take the class. I HAD to take it. That mindset makes a big difference in how you approach learning.

The only benefit I saw in taking the class was so I could get my degree. Not to expand my knowledge, or learn something new. I had a closed mind towards learning how to program.

No wonder that the end result was terrible. I had left that class hating programming and never wanting to program again. It had frustrated the heck out of me because I never got those beginner concepts.

But I had seen the power of programming and what some people were able to do with it. So I did at least leave the class with a respect for programming.

I just thought that it wasn’t for me.

No light

Not having a purpose was the next factor that determined my failure. To me, I didn’t have a purpose beyond a requirement.

My purpose was just to get a good grade, and it showed. Years after I finished the class, I had literally forgotten almost everything. It just didn’t stick in my mind. There was no reason for it to.

I had simply learned it for the present, and not for the future.

My plan was never to learn programming. It was to get through the course. I wanted to get my degree and I had to do whatever that required.

If I had a purpose for this, it would have helped in creating the last factor. As purpose alone will not get you there.

Not important enough

The last factor is motivation. This is also what I was missing, and what caused me to fail.

When I’m motivated to do something, I don’t give up. I will try again and again until I figure it out. Until I get it right. That is the type of person I am.

So why didn’t I apply this motto when I couldn’t grasp several programming concepts?

It was because I didn’t have the motivation.

Why should I have to spend more time and effort to learn programming when it wasn’t even relevant to my degree? I had other more important classes.

Even if I had the desire and purpose to learn programming, I didn’t have the motivation. I would not have succeeded anyways. I would have given up. I wasn’t willing to spend the time and dedication required to learn it.

How different were these factors in my next attempt?

First Success

Fast forward to eight years later. That is about how long it took me to try my hand at programming again. Yes…eight years!

It took me a very long time to return.

In the meantime, I had gotten my degree. Took a little bit of time off to travel, and worked for several years.

Then I finally came to a point where I wanted to try programming again.

Yes, I wanted to!

You might be thinking… what? Didn’t you say you hated programming?

Yes I did, but time heals all wounds. Situations change.

This time around things played out differently.


It all had to do with those three factors again.

The limits

This time my desire to learn programming was starkly different. I had a reason. I wanted to learn programming.

How did I get to wanting to learn?

Well, a bit before this point I had started getting into entrepreneurship and reading business books. I was slowly realizing that one day I wanted to have my own online business.

I knew that if I wanted to do something online, I should probably learn programming.

Though this wasn’t the driving factor why.

The factor actually came from a pain point of mine. Over those eight years, I became very skilled at Excel. I was the spreadsheet guy at work.

However, making long if statements in Excel soon became a nuisance.

a really long excel if statement

Sample of how Excel if statements can get ugly, and become quite long very quickly.

It started frustrating me.

I knew I could do more if I knew how to program. I could make better, more powerful, and easier spreadsheets.

I had only recently become aware of the power of macros. I had known about macros long before, but never really bothered to figure out what they were for. So I put these thoughts together and researched macros.

This lead me to realize that I needed to learn VBA for Excel. Which also meant learning how to program.

So back to programming it was, but this time I had the desire.

It came from the pain of not being able to do things in Excel that I wanted. I wanted to do more, but I couldn’t, as I didn’t have the skills.

Do more

My purpose was very simple.

I wanted to create more powerful and easier spreadsheets. As this would help me out at work. It wasn’t for some purely selfish reason. It was to make my life at work easier.

I knew I had a project coming up where if I used macros, it would be much simpler.

I was also really starting to realize the importance of continued education, and thought this would be a great way to increase my skill-set.

With that, and a rough timeline, I set out to learn VBA for Excel.

I did some research. Found an excellent free online course to learn from. Everything was set.

My purpose was to use programming on my next Excel project.

Finding the joy

I was working full-time and spent most of my day in front of a computer screen. The last thing I wanted was to do more work at home.

I had a mentally exhausting job and I didn’t want to drain myself more. I wanted to rest, recover and enjoy my free time.

But that wasn’t possible.

What I discovered from reading books was that I needed to change my mindset in order to succeed.

I shifted my priorities and goals. I made learning VBA for Excel a high priority. Everything else that didn’t help me get there was a waste.

I also looked at this as something that I wanted and enjoyed. As a challenge. It didn’t feel like homework, work, or study. I made it enjoyable. Only then did it become easy to establish good habits and consistency.

Having this consistent motivation to learn, I completed the course.


Some topics/concepts did take me longer to grasp, but I simply spent more time on them.

At work, I also wrote small VBA programs to solidify my learning. When the project finally came around to me, I was able to use my skills to build a nice, easy-to-use spreadsheet.

I was proud of what I was able to do!

Second Success

While this one is still in progress, I consider it a success. Though it hasn’t been easy. There was actually a time where I thought I would fail.

After my first triumph with VBA for Excel, I realized its limits. One big one being that it is bound by the Excel environment.

Also around this point in my life, I became even more hooked on entrepreneurship. I knew I wanted to create an online business so I could finally have the ability to make my own website.

I realized that continuing in VBA wasn’t the best idea. I needed to learn another programming language.

After doing a bunch of research, I settled on JavaScript.

I found out that it was a good beginner language to learn. Plus it helped that there were many great free resources to learn from like freeCodeCamp.

Nine months after my VBA success, I made the commitment to learn JavaScript. I chose to start off with the freeCodeCamp curriculum.

Two paths

My desire to continue learning programming this time was twofold. One was so that I could eventually build a website and start an online business. This desire was a want.

The other came from reading many inspirational books, and I finally just wanted to do something. I simply got tired of learning and wanted to act.

These two reasons were the driving force in continuing my journey to learn programming.

Drawing a blank

This time around, I really didn’t have a specific purpose — as in, I wanted to learn programing to do X. Or I wanted to do X after I learned programming.

I just thought that it would be useful to know so I could make a website one day. I didn’t have anything specific in mind.

Why not

My motivation was actually a bit weak. It came from two things:

One was from not having anything better to do. The other was to keep learning so one day I could build a website, or a web app.

If you have noticed, this was a reoccurring theme in my life — building a website.

This time I didn’t have that super high motivation. I think part of the motivation was riding a bit of a high from my VBA programming success.

I had some confidence built up and used this as my motivation.

I had a weak version of all three factors accounted for. I thought this would be enough to achieve success. However, after accumulating around 190 points in freeCodeCamp, I hit a stump.


I found the early lessons in the freeCodeCamp curriculum easy to grasp. However, soon these little exercises were taking longer and longer to do. They were becoming a lot more challenging.

When the exercises got too challenging, I switched over to work on my first project.

This only made me feel overwhelmed. Lost. Discouraged. I didn’t know what to do or how to start.

In the meantime, I was also pushing myself down the entrepreneur path. I had recently come up with an idea for an invention.

This is when I started to have an inner conflict between programming and entrepreneurship.

As programming got more difficult, my desire to work on my invention took over. So I gave up on programming.

I pursued the invention, and after many months, I failed at that too. I had even made a prototype. It wasn’t until I started talking to people about the idea where I found out some horrifying news.

Someone told me that the invention already existed!

I was in disbelief. I checked, and sure enough it was true. I was heartbroken.

I went back to the drawing board. Back to reading/learning about entrepreneurship.

Six months passed before I decided to begin another stint of doing. It was another business idea. And another failure.

Getting back on track

It actually took around one full year before I decided to go back to learning JavaScript through the freeCodeCamp curriculum.

I had done a little bit of learning here and there, but nothing was consistent. None of those attempts were serious.

That is, until my mindset changed.

Using my frustration

My desire didn’t change a whole lot, but it had a significant impact.

I no longer had as strong of a desire to do things. I didn’t want to force myself to pursue (do) another business idea. I wanted it to come more naturally.

So I pushed “doing something” (in terms of business) down in priority.

Don’t get me wrong, though. I still had the desire to do something, but it always seemed to come down to one excuse.

That I didn’t know how. How to make a website. How to program.

This is where my new desire came from.


Frustration that I wasn’t able to program my own website so I could test out future business ideas. This limiting factor really annoyed me.

So I set out to change that. I used frustration to provide me the fuel to go back and continue with programming.

Looking beyond

This time around, I had a purpose. It had just taken me awhile to figure it out. It was simple, but powerful.

My purpose was to go back and continue to learn programming so that I could change careers.

I didn’t want to continue in my engineering field. I wanted to have my own online business. However, if I couldn’t reach that goal, I wanted to have programming as my new career. Because I knew I would be happier working as a programmer, or front-end web developer, than as an engineer.

So now I had two reasons.

  • My pain desire of not being able to make my own website.
  • My discovered purpose of wanting to have programming as a fallback career, assuming that I wasn’t successful in online business.

Either way, I needed programming for both.

This made learning how to program (in JavaScript) critical and very important in my life.

No looking back

My motivation now came from wanting a better future. One that I would be happier in. One that I would enjoy.

After all, what is life without happiness?

I saw learning how to program as a way to lead me there. I got a new perspective. I also changed my mindset. It wasn’t something that I WANTED to do, but something that I needed to do.

This one word makes all the difference. A must do means that there is no other alternative.

While I haven’t quite reached this goal yet, I know that I’ve gotten far enough over the hump that I will succeed. It is only a matter of time.

I also used several additional resources to freeCodeCamp the second time around.

This allowed me to pick up different bits of information that I hadn’t fully grasped. Using multiple resources only helped me to solidify my learning.

I’m currently still working towards getting my front-end development certificate. I’ve completed all of the algorithm problems and only have seven projects remaining.


To summarize, keep these three factors in mind the next time you want to achieve success.


  • A pain desire is more powerful than a want desire. Use that to your advantage.


  • Have a valuable purpose. To help someone else, to do something to improve your life, or to create a benefit for yourself/others.

This helps with the last factor.


  • Make something important enough to you so you must do it and not just want to do it.
  • Make it a consistent habit to work towards your goal.
  • Eliminate waste or things that hold you back from getting there.

Are you interested to find out what happened to me after I wrote this article? Then you must read my long story of how I got my first developer job!

Subscribe to David's Blog

Are you a developer interested in building your own SaaS business?

Get exclusive, behind-the-scenes insights (and first access priority) on my journey and process in building a SaaS business from scratch!

Not sure if this is for you? Then check out my Entrepreneurial Dreams: Build a SaaS Business in 12 Months Challenge.

Quality content! No SPAM and we will NEVER sell your data or email... guaranteed!

David Nowak

David Nowak

If it is about business, investing, programming or travelling, you can bet he'll be interested. Known to be an easygoing guy with big ambitions and maaaybeee works too much.