by Jose Manuel Gallego
My winding road from security guard to back-end developer
As a kid, I was in love with computers. But I didn’t get a high enough score on the college entrance exams to get into a computer-related field. So I studied mining engineering.
After one particularly bad semester where I failed my courses, I decided to take a summer job as a security guard to make some money. Well, that summer job went on to become my career.
You don’t need to be a particularly clever person to work as a security guard in Spain. The people in your life start to have low expectations of you, and after a while, you start to have low expectations of yourself. You stop trying to improve yourself as a person.
But something different was destine to happen to this particular security guard.
I was working my 400th event as a security guard at Campus Madrid. I’d settled into the job a year earlier, and a few months earlier, my wife had given birth to our son.
So there I was on campus, surrounded by so many ambitious entrepreneurs. I saw them taking risks and making moves. But I felt trapped in a dead-end job, trying to make ends meet for my growing family.
As the event progressed, a speaker took the stage. Standing guard nearby, I listened to his words. And that’s when he said a sentence that would ultimately change my life forever:
“Anyone can learn to code and work as developer.”
The event had been related to an expensive coding bootcamp. So I was skeptical of the speaker’s claims, and ready to dismiss this statement as marketing.
But what if he was right? What if I could also learn to code — and work with computers — instead of standing around all day as a security guard?
In Spain, knowledge worker jobs are reserved for people who have a university degree. But the speaker seemed to be saying that — due to the incredible demand for software developers — employers were making exceptions.
He said the only thing you needed to get a high-paying job in software development was to be good enough at coding to pass through a barrage of coding challenges and interviews.
I remember the distinct moment when I finished researching his claims. The revelation that what that man had said wasn’t just marketing or hype, and that it was indeed rooted in the economics of the time. That’s when I made my decision. I was going to become a developer. Whatever it took.
Looking for courses
I didn’t have time to waste, so I set out to piece together the best way to learn to code.
I started asking my developers friends in Campus Madrid, such Carlos Hernández , CEO at Gamify (the “challenge accepted” app). He recommended I start with a website like Codecademy, then commit to my goals using his app.
I kept searching the web and jumping from resource to resource. Every day I tried a little bit of a new course that I’d found.
Then I talked with Daniel Mery, the founder of a local Haskell meetup. He was confident that I could learn to code for free, using open source resources. And I took his advice. I tried freeCodeCamp and I totally fell in love with it.
In short, the magic of freeCodeCamp is:
- You have a clear step-by-step path to follow.
- The coding challenges are quite — well — challenging. freeCodeCamp doesn’t hold your hand like a lot of other resources do. They give you room to make your own mistakes.
- You have access to a global community who’s there 24/7 to support you when you need help.
- You craft real projects in rapid succession.
- You can write code that helps real-world nonprofits.
I’d like to say that from that point on, I made smartest decisions and took the shortest path to a developer job. But the truth is, I made some mistakes. The biggest mistake was: I didn’t finish what I started.
When I started learning code, I was learning really fast. The beginning honeymoon was amazing. I felt like the king of the hill.
So when I encountered a problem that I couldn’t quickly solve it on my head, I didn’t bother trying to code it. I wanted to keep moving faster, so I just kept moving forward trying to learn more and more.
As a result, I had lots of half-solved problems and half-built projects.
I eventually came to understand the hard true: these unresolved problems weren’t going away — they were just coming back to bite me.
I needed to learn to crawl before I could learn to walk.
And the reality is it’s much better to have a single finished project than a thousand unfinished ones.
Another mistake I made was constantly losing focus. When I was looking for a solution to my actual problem, I would stumble upon some other interesting topic, and then another, and another… and before I knew it the day would be done and I hadn’t solved my initial problem.
A year later, I heard Pablo Almunia describe this phenomenon in his “Finally, Async / Await” workshop as the “hunting squirrels” problem.
As you can see in the video , when a squirrel appears, the dog loses focus, and need to start over from the beginning. Remember this scene whenever you’re chasing one squirrel and another squirrel appears.
Taking the next step
My focus was changing every day. I allowed the Internet to seduce me with its shiny new courses, sparkly new languages, and shimmering new frameworks.
I started to feel as though I would never arrive at my goal of being good enough at coding to get a developer job. Maybe coding was too deep for me, and I would drown.
But I thought of my son. I thought the future I wanted for him. The example I wanted to set for him by not giving up.
That’s when I met a developer named Ulises Gascón. He recommend that I finish the projects I had started. He even offered to help me if needed him.
So I started to finish some projects. I went back to the “easy” things that I had neglected before. And in doing so, I started asking new questions and discovering new challenges.
At this point in my learning, it was clear that the conversations I had with both Carlos Hernández and Ulises Gascón had been decisive in my decision to keep moving forward with coding. Without these two role models, I probably would have quit. I will be thankful to them for the rest of my life.
So I can say with confidence that the next step for me was asking for help from friends.
Joining a community
My learning was accelerating. I was finishing more projects. And I wanted to build some new projects, but I had no idea what to build.
Someone suggest that I go to community events and seek inspiration there. But most of the events I found around my city were lectures aimed at rockstar developers, and focused on cutting edge technologies.
I instead wanted to craft things with people of all levels. But there wasn’t a good community for doing this.
That’s when I started to think as a true programmer. If you don’t have the tool you need… Craft it!
After a lot of hard work, sponsor who pulled out at the last moment, and a lot of time and money down the drain, we were able to pull off our first event.
The Pillars.js team was there, and they not only inspired me — they became my friends!
Seven months later, Open Source Weekends won the Open Award award for the best open community.
In the end, joining a local community was critical for me. It helped me improve my social skills and become more than just some guy who was learning to code.
Landing the job
After 11 months learning to code, failing, falling, standing up, and founding an open source community… I receive an email through our Open Source Weekends mailing list.
A company called Kubide was looking for a back-end developer. I had decided that wanted to focus on backend a couple of months before. I hand’t really enjoy front end development, but I found myself able to spend hours solving back-end coding challenges.
Kubide sent me take-home assignment: a Twitter clone API. It was challenging, but not overly so.
Then the CEO Ángel Luis Quesada interviewed me. He was more interested in my learning skills than my actual coding skills. He also wanted someone whom he met through the startup world, and I had been involved through Campus Madrid (even though I was just a security guard).
Three days later I received a call, extending a job offer.
I can’t express how I felt in that moment. Everyone in my life was so happy for me. Finally all the hard work I’d invested in learning to code was being rewarded.
My first on-the-job experiences
Usually this kind of story stops here with a happy ending. But I’d like to tell you what it feels like once you’ve landed your first coding job. Because I’m sure that if you are encouraged enough, you will succeed for sure.
Beginnings are always scary. But this new beginning was also exciting. You go through a rollercoaster of feelings.
First, you feel like an imposter. Like you don’t have the skills necessary to write new code from scratch. But you try my best.
Try, try, and try again. And when you have tried everything, keep trying. After that, you can ask for help, and someone senior will come along and hopefully point you toward a path you can follow.
At this point, you feel better because you are starting to finish some of your tasks.
One day, you’ll see someone solve a problem in minutes — a problem that took you an entire day to solve — and you will once again feel like an imposter.
Then, another day, you will help a teammate solve a problem, and you will feel fine again.
Finally, you will realize — or your boss will tell you — that you weren’t hired for the skills you already had. You were hired for the skills you had the potential to have.
Because the best bet is to hire people who know how to learn, and who eagerly want to.
“The most dangerous obstacle is yourself.” — Angel Luis Quesada
Once you understand this, you will start feeling better. You will improve faster. You will grow with your partners. You will love your job more and more, and you will be happy.
- Remember why you started to learn code.
- Don’t wander far from your path.
- Don’t chase squirrels.
- Finish your projects.
Thanks for reading, and I hope you found this article to be helpful. If so, let me know by clicking the green heart below, or leaving a comment, and I will try to write more articles in English.
“Peace, Love, and Open Source” — The Open Source Weekends motto