Table of contents
I started programming when I was young, sometime around 2008. I worked with my uncle on simple C++ terminal games. We used Bloodshed.net's Dev-C++ on his mom's Windows XP computer. The coolest feature I ever built was a hardcoded ASCII map that would update as you moved through rooms. He would write dialogue and story content, I figured out the logic to get us through the game.
It was never anything worthy of releasing, and hardly worth saving, but it initiated my love for programming. That love would live dormant inside me for a long while, as somehow I never bothered practicing again until around 2016, at the end of high school.
Little did I know, this interest would fuel the first decade of my working life like nothing else. In this article, we'll dive into my attempt at getting an education and building a career in the field of software engineering, and the lessons I learned along the way.
I tried college for a while and it wasn't for me.
A semester in, I discovered, to my dismay, that only one of my five classes counted towards my general education credits. Given that I had rent to pay, wasting time wasn't an option. Even though I had an advisor-guided schedule, college seemed more like a roadblock than a path forward.
Back to square one.
So, back to coding!
Around this time, the Learn To Code movement was gaining traction online.
Countless advertisements painted a promising picture of a career in software engineering, and I was intrigued.
I needed exactly three things: a quick education, a reasonably paying job, and something engaging to do – the latter wasn't hard, considering my ample screen time as an avid League of Legends player.
In 2017, I dove headfirst into coding. With FreeCodeCamp, YouTube tutorials, and tips from seasoned friends, I immersed myself in my learning.
As the year progressed, I sought structured learning to expedite my progress.
I found Colt Steele's Web Developer Bootcamp on Udemy, purchased it immediately, and I absolutely loved it. His teaching style clicked for me, his lessons were engaging and snappy, and at $14 it couldn't be beat.
Over the course of the next few weeks, I completed all of the projects and absorbed everything I could, but I eagerly wanted more.
Enter: Lambda School
After completing Colt Steele's Udemy course toward the end of 2017 and experiencing an unsuccessful stint in contracting, I stumbled upon BloomTech, an education platform then known as Lambda School.
What was the point of Lambda School?
They were a hip new Computer Science Academy (misnomer for 'bootcamp') with a unique gimmick - the tuition is free until you get a software engineering job making upwards of $50,000/yr. At that point, you pay 17% of your income every month, up to a total possible $30,000, or for 24 months, whichever comes first. This is called an Income Share Agreement, and they've risen in popularity since then.
I would be a member of the 4th ever cohort of the Computer Science Web Development course. I was young and I had a fire in my eyes. They could teach me to code and become the best version of myself that I could be.
I couldn't help myself from enrolling. After all, it was completely free until I got a job!
The Downside of Income Share Agreements
I would later grow to dread that 17%. Math wasn't my strong suit in school, but with California's tax rate, I was paying something like 45% of my income before I ever saw it.
Almost half of my earnings were taken from my check, every single month. This led to some rough times. I appreciate my family dearly for housing, feeding, and enabling me to start my career, despite me having absolutely no clue what I was doing.
I try to pay that back as much as I can now that I'm in a better position. Trust me, I am relieved to be out of there: I'm a few years deep into my career now and happily self-sufficient. But I digress.
We also spent some time working on Computer Science fundamentals as well, we learned some C and Python. Data Structures and Algorithms were the hardest part by far, but building an 8-bit CPU in C was a close second. The rest of the curriculum was reasonable and easy to follow for me at the time, and the instructors and TAs were a great help for the students.
Working remotely helped promote consistent writing habits, and required more advanced and clear communication skills, especially through text. It also taught me that I need to be able to manage my own work and sleep schedules. Having a hybrid of self-paced and live classes enforced a work ethic in me that remains strong today.
I made a lot of great connections through that program, and they got me started in a way that would not have been possible on my own; certainly not as quickly.
The Job Hunt
Lambda's Alumni Network
Lambda School fostered a strong community of alumni folks looking for jobs, and Lambda worked directly with tech companies to hire talent, earning themselves a sweet recruiting fee in the process.
One day, a job opportunity from BloomTech landed in my lap. The company was hiring urgently, with the sole stipulation that the position was exclusively for Ruby on Rails development.
With that single wrench in the process, almost nobody was interested. I couldn't believe it. A job falls into these people's laps, and they aren't even willing to consider it just because they'll have to learn a different language? Ludicrous.
Lean on your network!
I went to one of my favorite instructors for help, knowing that he had spent most of his career working in Ruby on Rails and Elixir before he worked at Lambda.
I was curious:
is Ruby a dead language?
is it hard to learn?
is it worth spending 1 weekend to try to apply for this job?
The answers were a resounding "no", "absolutely not", and "absolutely yes".
Only after reflecting while writing this post have I realized how important my network has been to me in my career. This particular contact helped get me into Ruby, and also secured my second job once my first one came to an end due to unforeseen circumstances.
More now than ever I recommend building a strong network of successful individuals who have done or are doing things that you would like to do as well. Meet these people, foster good connections, and don't be afraid to lean on them when the time comes.
Everyone wants to help when they can. It feels good.
After receiving all the reassurance I needed, it was time to dive into a project to learn the fundamentals of the language. I would focus on application structure, fundamental rubyisms, and figure out how to deploy a rails application.
Twitter over a weekend
I spent the weekend building the weakest of Twitter clones, but I did get it deployed.
It was a dead simple CRUD application with some styling on top:
You can log in.
You have a profile page where you can see all of your posts.
You can go to the home page and see everyone else's posts.
You can like a post.
No non-scaffolded error handling. No separations of concerns. Fat controller, Fat model, repetitious code.
I didn't bother making a "follow" feature, or the ability to see your "liked" posts, or animations, or a splash page, or write any unit tests.
When I say it was simple, it was simple.
I took that project back and showed the instructor, and he immediately forwarded my information to the founder.
I interviewed for the role, competing against only 3 other candidates, all from Lambda. It was a 30-minute Q&A session where the founder had sent us all the questions ahead of time so we weren't blindsided.
The questions were mostly focused on experience and which tech stacks and packages/gems we've tried. We talked about my past experience with drama and TV events, previous projects that I've worked on, what I've learned at Lambda School, and this Twitter clone.
I was excited to have been given the opportunity to learn something new, and I showed that throughout the interview. I was bright-eyed and excited to grow.
Take Home Questions
After the initial questionnaire, he gave us 3 take-home questions to respond to when we saw fit.
The questions were something along the lines of:
"How would you set up a new application today and make sure you can send emails to 100 people without the emails landing in their spam box?"
"An index page is loading slowly when we hit it. How would you increase the page load speed?"
"What gems do you have experience using? How would you handle background jobs?"
He wanted a paragraph response to each consideration, so I immediately went into research mode. I scoured the internet for hours upon hours that night, took notes, then spent the next afternoon drafting up at least 500 words on each response. I wanted to make sure I was thoughtful and considered each of these problems as well as I could.
Nothing to Lose
At this rate, I had sent out over 120 applications, was rejected by about 40 of them, and interviewed by about 3. The rest had ghosted me.
I felt desperate to knock this out of the park, even if I wasn't convinced that Ruby was the language for me.
The walls were closing in, and there was no harm in me giving this my best shot. I poured my heart and soul into this interview process. I remember being horrified that I was going to make a fool of myself, that I wasn't meant to be a real developer.
But that passion and angst drove me to put myself out in the world and perform.
Remember that even when it feels like the odds are stacked against you, there is a huge amount of normalcy in having a tough time landing your first job. It's hard to put yourself out into the universe and be told "no", but it is only a "no". You will be okay. The sooner you get comfortable with rejection, the better off your mental state will be.
The next day he responded to me and was so pleased that we discussed an offer and I received a written contract one day later.
It didn't matter whether my answers were 'correct' or not, he was completely enthralled with my interest and passion. We had a lightning-rod of a discussion about all of my different answers, diving back and forth between different ideas. I'd love to go find those answers as a relic of my past thinking.
Any amount of money for me at that time was a life-changing amount of money. I was down to the wire, depressed, anxious. This was the first time that the world ever showed me that I had a real skill worth paying real money for. In a serious way, this was a brand new 'beginning' for me.
I signed it immediately and the rest is history.
That founder and I have a solid relationship now and he's doing amazing things with his company, years later. Last I checked, he had just secured some investment funding, and his Superbowl Half-Time Show still runs smoothly every single year.
My career, just like all others, has had its ups and downs. I've handled a great deal of rejection and I am not a fit for more jobs than I am a fit for. But that's okay.
As you continue to persist, things have a way of working themselves out. Every time I've put myself "out there" into the universe I have been rewarded handsomely. I would love to encourage others to do the same.
Forge your own path ahead. Build a strong support system, and lean on them heavily. And don't sweat the little stuff.
This career has taught me that if you're a hard worker, and you show up every day, 80% of the work is already done.
Now, I want to hear from you! What's your coding journey been like? What hurdles have you faced, and how have you overcome them?
And if you're new to the game, what's the biggest challenge you're currently facing?
Share your thoughts in the comments, and let's grow together. As I've learned, no programmer is an island.
As always, thanks for reading!