I was a just another happy college student, double majoring in Computer Science and Economics at a university in Egypt.

I had fallen in love with programming after taking a few C++ classes.

I will never forget writing my first for loop and having it execute on screen without errors on the first try. I will never forget my professor telling me that I have good coding skills, and great potential if I keep it up.

Coding just made sense. Creating something and watching it come to life is the most rewarding experience that I have ever had in academia.

But due to political unrest at the time, I had to leave Egypt in 2013 and study abroad. I ended up in University of California Riverside, where I chose to continue my degree in Economics because it would allow me to graduate in shorter amount of time, and cost my family less money.

I thought I’d keep coding as a hobby on the side, and maybe get a job as a developer later on. I didn’t realize it at the time, but this mistake would cost me dearly.

Broke in California

After a string of mediocre professors, I came to hate economics. I no longer found the subject interesting at all.

I had no idea what I was going to do with a degree in Economics, and no work experience after I graduated. It turned out as legal foreign student, I had the right to work for a year. But there was a catch: I could only work in a job that was related to my field of study (economics).

So I couldn’t even work as developer intern no matter how good I was!

That crushed me. I had been learning web development on my own — HTML, CSS, and even experimenting with Ruby on Rails. (All this was before Quincy Larson had even created freeCodeCamp.)

I had to bite the bullet. I got a job as life insurance agent at a Fortune 100 company. After two months of unpaid training, they let me go on my first day of work after the manager found out that I would not be able to work for more than 1 year without sponsoring. I had told them all about this potential issue in advance, but the company apparently had an internal miscommunication.

I was stuck in an apartment lease, and had to pay rent from my parents’ savings.

Over the next 6 months, I desperately hunted for jobs and practiced coding all I could. I got better at coding, but job hunting in California was terrible.

I finally relocated to Austin, Texas to work there as a business analyst and market researcher. I moved there after a discussion with the CEO himself, who said he understood my circumstances and that I would need sponsorship of my visa soon. We agreed and my situation seemed to be resolved.

I did a good job there. I was quickly promoted to a Project Coordinator thanks to my coding knowledge, and got to work with both the marketing team and the technical team.

I took part in some QA testing and scrum meetings. Seeing and working with real developers reminded me of how much I loved software development. But actually working in software development as an Economics major on a visa was a distant dream. So I tried to convince myself that maybe I could grow into a project management position, and find a way to be passionate about it someday.

A Grave Clerical Error

I worked with that company for 8 months before I was notified that my work visa was not accepted. Apparently, the HR department had taken too long and submitted my visa paperwork later than the government required.

Even though I had this brief period of income stability, I was never really happy. I felt like a robot doing random tasks dictated by others in a small office. Sure, I had amazing coworkers and a great boss, but I did not like where I was in life.

It seemed pointless. I had periods of depression that I never experienced before. I would curl up in bed and flat-out cry.

I convinced myself that maybe it was a hormonal imbalance because of an unhealthy diet or something else.

Anyway, the point is, I was screwed all over again. And now I faced a choice:

  1. pack my stuff and go back to Egypt, where I would have to wait a year before serving in the military for 2 years. (All young men living in Egypt have to serve in the military.)
  2. pursue another degree so I could legally stay in the US as a student.

After much persuasion from my family, I decided to stay and go to graduate school in Minnesota.

Why Minnesota? My mother knew a person who had an accounting firm there, who also persuaded me to come over and work in his firm as an accountant. He convinced me to enroll in any school for just one or two quarters while I worked for him and he promised to get me the work visa.

At this point, I really had no choice. Either go back to unemployment and war in the desert, or stay in the US and hope for a better future. So I packed my stuff and relocated yet again to Minnesota.

I got into a random private school, and it was so late in the year that the only degree program still accepting students was called “Organizational Industrial Psychology.”

I waited for the accounting firm guy to keep his promise of a job at his CPA firm.

He didn’t.

I was yet again stuck in a degree program in which I had no interest. I was running out of money. So I took a job as a warehouse worker so I could afford to pay my rent.

I had to get up everyday at 6 am and drive through snow blizzards, so I could work a minimum wage job packaging products. Then I went to classes at night and pretended to be interested while the university took my money — just so I could continue to stay in the US legally while I tried to figure out what to do.

I was living alone. I knew no one. And I could not make friends. It was almost Christmas, and I had hit complete rock bottom. Extreme depression was a daily companion. My primary goal each day was to keep myself from becoming suicidal.

freeCodeCamp to the Rescue

I started freeCodeCamp.org in winter of 2016. I don’t remember how I found out about it.

After spending a small fortune on American universities, I was extremely skeptical. I read about the certificates they had, and heard about the quality of the program. “All that for free? There has to be a catch. There is always a catch.”

Well I checked it out, and it turns out there was a catch. It wasn’t that you had to pay money. Money couldn’t help you here. The catch was you had to make time to work through progressively harder coding challenges.

Well, I was completely fine with that!

Once I started doing the challenges, I was once again reminded of the potential my computer science professor had said he’d seen in me. I was reminded of what I wanted to become in life. And I was immediately hooked.

I had already taught myself some basic HTML and CSS, and had a vague understanding of some Computer Science concepts. freeCodeCamp was the perfect refresher, and a practice tool to get better. I take all my knowledge and build stuff with it!

I started doing the challenges, and I remember at one point I had a streak longer than 30 days. This was the best distraction from my depression and my collapsing life. And it was the only thing in the world giving me any kind of joy.

Back to School with A Web Developer Job

Slowly but surely, doing the challenges and projects on freeCodeCamp started to give me a confidence boost and build up my morale. Just trying to solve those algorithms and problems on freeCodeCamp encouraged me to solve my own life problems — namely, the being-at-rock-bottom problem.

So I started breaking down my problem to see how I could tackle them:

  • What do I really want in life? Happiness
  • What makes me happy? Coding
  • How can I code for a living? Become a developer
  • How can I legally become a developer? (remember I am an alien, not even an immigrant) Get a CS degree

So I decided to apply for the Computer Science undergraduate program at the University Of Minnesota in the Twin Cities.

I went to the director of admissions and explain to her my situation. Luckily, I had not missed their deadlines and she assured me I would get in easily because of all my previous coursework, including the CS courses I took back in Egypt.

This was it. I was betting all my cards on that final chance. This was the biggest risk I had ever taken, and frankly the only life decision I made without influence from family or friends.

While I was waiting to hear back about my admission, I started looking for jobs available at the university. There was an internship opening for a web developer position that involved managing all the university’s websites and analytics. It required knowledge in HTML, CSS, JavaScript, and Node.js — all of which I had worked and — thanks to freeCodeCamp — had a portfolio of projects to prove it.

Just before Christmas Eve, I received an acceptance letter from the computer science department. But I still had no answer from my job application. In order for all of this to work out, I needed that job to pay my rent, because I had to leave my warehouse job before school started.

Two weeks after classes started, I got a call from the project manager at the University Relations office where I had applied for the position. She asked me to come in for an interview at the beginning of February.

I went for my first ever interview. It was with the project manager and a senior web developer from the office. They asked me questions about my previous work experience, which had never directly involved web development. But they had seen my portfolio, and asked me some questions about Node.js and JavaScript. I managed to solve all of them. I don’t remember what they were, but they weren’t too hard, and were meant to check whether I had basic web dev knowledge.

Considering that my entire life was on the line, I was pretty confident and relaxed. I think I made a good impression.

A few days later the project manager called and asked me to start working the following week.

The Internship, The Degree, The freeCodeCamp

Holy crap a computer science degree is intense. There is little-to-no coding, and a whole lot of math and pseudo code. Granted they did teach me C during my first semester, but that was just to compile it into assembly language, then translate it back and forth.

But I found some of the complicated math and deep logic actually useful, and had some applications in web development. Like using a matrix representation of a grid system to move CSS elements in the DOM, and to create custom effects. Or using known proof methods to solve complicated algorithms. But it is HARD and being a full time student made it impossible for me to continue doing freeCodeCamp.

The web developer internship on the other hand, was part-time 20 hours/week. I’d go from class to work and from work to class. I got to actually use the web development fundamentals that freeCodeCamp taught me at work, and I still had to learn other web dev tools like Sass, Gulp, GitHub, and working with Linux servers.

Even though as an on-campus employee I’m getting paid minimum wage, this experience is invaluable and is exactly what I need. I LOVE what I’m doing and I LOVE going to work. I might have had the Imposter Syndrome at the beginning, but I was so determined to get better. I’ve come a long way since February.

Now that I don’t have school in the summer, I still work at the university, but I also went back to finish the freeCodeCamp projects and challenges, and am trying to learn React in my free time.

Oh, and along the way, I met my first girlfriend. We’ve decided to get married after graduation. I’ve also made a lot of good friends, and have a game plan for once in my life.

I am working my ass off to become the best software engineer I can be so I can apply to an internship at the Big Four tech companies by the end of this year.

Even though I’m struggling financially now worse than ever, I have overcome my depression and have become a confident, fast-learning developer. I know for sure that I am on the right path, that I just need to keep doing what I love, and eventually I’ll be successful and happy.

Moving forward

The journey of becoming a developer is not easy. I have to thank Quincy Larson and all of the freeCodeCamp community for putting me on the right track. They helped me turn my life around when I had lost all hope.

This is definitely not the end of the road. The journey doesn’t stop once you get the job.

I hope the takeaway for anyone who read this far is to do what you love, no matter what the odds are. Don’t force yourself to do anything you’re not passionate about, because it can be a major cause of depression.

Keep on coding and have fun doing it!