About
Two weeks before my final school grades, I wrote two plans. Plan A was a Computer Science degree. Plan B was teaching myself to build software without one. The grades came in and I never got to use Plan A. What followed was two years of C++, JavaScript, and Angular with no money for courses, a CV that one stranger rewrote with me, 57 applications, three calls, and one interview I failed my way through into my first job.
I was 18 and in my last year of secondary school. In Egypt, the grades from that year decide which college will take you, and there is no negotiating with them once they are published. Everyone around me was waiting. I was not good at waiting, so I wrote two plans instead.
Plan A assumed the grades were high enough for a Computer Science major at any Egyptian university. Plan B assumed they were not, and that I would have to become a software developer without a department, a syllabus, or anyone checking my work.
The grades were published. I read them twice. Then I opened Plan B.
The first year went to fundamentals, on purpose. I chose C++ because it was the lowest level language I could realistically learn alone, and I wanted to understand what a computer was doing before I asked a framework to hide it from me. Alongside it I worked through algorithms, problem solving, and a design patterns course. I finished that course understanding almost nothing in it. I only realised years later, inside real codebases, what it had been trying to tell me.
I could not afford the courses I was learning from. I downloaded cracked copies and kept a list of every one of them. When my first salary arrived, I went down the list and bought each course properly. The people who made them had got me a job. Paying them back was the least I owed.
Then I had to pick a lane, and I picked it for the wrong reason. I went with web development and specifically frontend. Part of that was reasonable. There was more material for frontend than for anything else. The other part was a belief I had picked up somewhere and never questioned, that you had to be a frontend developer before you could be a backend one. That is simply not true. I still think about how much earlier I would have understood systems if I had started with backend engineering, and it is the one decision in this story I would reverse.
So I learned HTML, CSS, and JavaScript. Then I learned the tooling around them, which was harder than the languages themselves. npm and package management. Git, and then GitHub, and the difference between the two. Gulp, and later Webpack, and why anyone would want a build step at all. Every tutorial assumed I already knew the tool before it.
Then came the framework question, and I refused to guess. React, Angular, and Vue were all being argued about online, and every argument was written by someone who had already picked. I did two things instead. I read through Egyptian job listings to see what companies here were actually hiring for, and Angular came up far more than anything else. Then I asked a different question, which framework was the hardest to learn, on the theory that if I could survive the hardest one, switching to any other would be cheap. The answer to that was also Angular. Two questions, one answer. I started learning Angular.
Almost two years passed like this. Money was a constant background pressure the entire time, and I was studying on a timeline nobody had approved. Imposter syndrome did not show up once. It came in waves, usually right after I finished something and realised how much more there was. I was surrounded by people who had a degree in progress and a graduation date. I had a folder of projects and a growing suspicion that I would never feel ready.
At some point I decided that was exactly the point. I would apply before I felt ready, because I had stopped believing "ready" was something that would arrive on its own.
The first thing I needed was a CV, and I had never written one. The first version was horrible. I will not soften that. I sent it to five people whose work I respected and who had no reason to answer me. One of them did. She went through it line by line, told me what actually counts on a CV and what to cut, and showed me how to present skills when you have no employer to attach them to. I rewrote the whole thing from her notes.
Then I applied, and I still remember the exact numbers. Fifty-seven applications. Three companies called back.
The first company rejected me during the phone call itself. I was still an undergraduate, and that was the end of the conversation.
The second company invited me to a video interview. It took me about a minute on the call to understand they had not read my CV. They were visibly surprised that I was still a student, and more surprised that I was not a Computer Science student. They ran a ten-minute interview so the meeting would not look like a mistake, thanked me, and I never heard from them again.
The third company screened me by phone and moved me to a technical interview. It was the first real, in-person technical interview of my life. I did badly. Not nervous-but-fine badly. I knew, while it was happening, that I was not answering the way I answered the same questions at home, and I walked out certain I had lost it.
They offered me the job.
The CTO who made that call was self-taught himself, and I turned out to be the only other self-taught developer in the company. I do not know exactly what he saw. I know he chose to trust it, and I am still grateful he did.
I learned a great deal from my colleagues in that first year, on top of what the two years alone had already taught me. But the lesson I took from the whole story was not technical. Nobody was coming to tell me I was ready. Not the grades, not a degree, not an interview I felt good about. I had to trust myself and trust the work, and stop waiting for the right moment. There is no right moment. There is the one you decide to make.