by Utsab Saha
How I found my dream job by contributing to open source projects
One of the concerns I often hear about from my coding students is, “How am I going to land a developer job without a computer science degree?”
This is an understandable concern, and I recently faced it myself when applying to become a Lecturer of Computer Science at California State University (Monterey Bay). The usual requirement for this kind of position is a Masters degree, which I did not have.
However, I was able to overcome the Masters degree requirement as a result of the work I had previously done on open source projects. This work helped me build the skillset, credibility, and professional network that ultimately served as a “back door” into the job.
I believe that volunteer work and open source projects are an incredible resource for anyone to bolster up their experience in a way that can bypass the usual requirements listed on the “front door” of a tech company. In this post, I will walk through the two key principles that have guided my process:
- Grow: I continually developed my skills by volunteering for projects I didn’t know how to do yet.
- Serve: I built my professional network by offering my services to people without expecting anything in return.
I will illustrate these themes across five projects. I’ll walk through how I reached out to people, listened to their needs, offered my services to them, and gradually built up my skillset in the process.
Prerequisite: Know your “Dream Job”
You really should take a job that if you were independently wealthy that would be the job you would take — Warren Buffet
The principles I’m about to illustrate demanded a lot of patience and energy from me and often without any immediate reward. This was only possible for me because I had a clear vision of the kind of work that I found meaningful.
I’m passionate about improving social mobility. I’d like to create a world where everyone has access to personal mentorship no matter who they are or where they live. The way I do this is by helping people learn to code who are from underrepresented parts of the world.
I feel deeply called to do this work to the point where I have paid to do it. I went through a coding bootcamp (Dev Bootcamp) as a paying student even though I already had worked at several companies as a web developer. My goal was not to learn how to code, but rather to learn how to teach.
I later began volunteering for organizations, such as Code Tenderloin and freeCodeCamp, that I felt were aligned with my vision.
What is the work that you love so much that you would pay to do it, or at the very least do it for free? And I challenge you to be more specific than “software developer”. Within software development, what specifically do you love, and why?
Reconnaissance work: Understanding the Problem
We have two ears and one mouth so that we can listen twice as much as we speak — Epectetus
Once I knew my “dream job”, my next step was to research other organizations who were already doing interesting work in this area.
In addition to going through Dev Bootcamp in San Francisco as a student, I visited the The Grand Circus coding bootcamp in Detroit, Michigan. I was curious about The Grand Circus because they had found a way to teach coding in an area that was not your traditional tech-hub.
I had many questions: What was the skillset of the students after learning coding for only 8 weeks? What were the challenges for teaching coding in a non-tech-hub area like Detroit? Where did their students find jobs?
In order to answer questions like these, I set up meetings with people from many different organizations.
It may be instructive to see how I set up these meetings, so I’ll break down a cold email I sent to Bizdom, an entrepreneurship incubator in Detroit:
- In red: This shows that I took the time to read their website and understand what they do. This sets me apart from a generic spammer.
- In blue: This is the “story of me”. Who am I, why am I credible, and what’s driving me? What’s my why?
- In green: This is the “story of us”. How do I see Bizdom and myself having a meaningful relationship
- In yellow: This is the “story of now”. What action is happening now that would lead Bizdom and myself to do something together right now?
This formula had a greater than 50% success rate for setting up meetings with people I had never met before. Here are the notes from all of my meetings during the 5-day Detroit trip.
Note that this formula, while effective, does take a good amount of homework. I needed to first have a clear vision for my dream job in order to have a compelling “story of me”. I needed to have researched the other organizations in order to have a compelling “story of us”. And I needed to have already planned a trip to Detroit in order to have a compelling “story of now”.
Project #1: I volunteered to help one person
Give me six hours to chop down a tree and I will spend the first four sharpening the axe — Abraham Lincoln
The real fruit of my Detroit trip did not come from any of the meetings I set up beforehand.
As I was leaving the Grand Circus coding school, I had the good fortune to be sharing an elevator with a student — let’s call him “Robert” — who had just graduated from their program. After I gave Robert a verbal version of the story of me, story of us, story of now, he agreed to have lunch with me so that I could hear more about his experience.
During our lunch, I listened to Robert’s story. I learned that what motivated him to attend the coding bootcamp was a desire to leave behind his blue-collar job at Ford motors. I learned that one of his key challenges was finding a babysitter for his 3-year-old daughter so that he could attend the coding bootcamp. I learned about his dream to build a fun educational mobile app for his daughter. I learned about his frustration that the coding bootcamp didn’t actually prepare him to build such an app.
I later volunteered to become his coding mentor as he built this app. Even though I didn’t earn any income for doing this work, I did it anyway because it was one step closer towards my dream job. I went from merely chatting with organizations who were doing meaningful work to actually doing the work myself with a real human being. I was thrilled.
I was also scared, because I had never taught coding to anyone before. To my mind, this was my opportunity to learn.
I worked with Robert for several months, during which time I would create modules for him like the following:
It ended up not working out long-term with Robert, which sorely disappointed me at the time. However, a couple of unexpected fruits came out of this:
- Robert used to rave about the videos I would create for him. So I learned that one of my strengths was making instructional videos, which inspired me to continue making more of them, a habit that would serve me well later on.
- I became aware of one of my weaknesses: lack of organization. I had no long-term structure or curriculum I was following, which was probably not great for Robert’s morale.
- All of the modules I created for Robert set me up to start contributing to freeCodeCamp’s curriculum, which became my next big project.
Project #2: Creating curriculum for FreeCodeCamp
If I have seen further than others, it is by standing on the shoulders of giants. — Isaac Newton
freeCodeCamp solved my lack of organization in a big way. Their ready-made projects were exactly what I needed in order to be more organized as a coding teacher. When I discovered it was all open source, I thought that it was too good to be true. There must be some sort of catch I thought.
So I emailed Quincy Larson, the founder of freeCodeCamp, and asked him whether it really was ok for me to use their curriculum to teach my own students.
He said yes. There was no catch.
I was inspired by the philosophy of freeCodeCamp, so I volunteered to help:
If you look closely, you will find the usual elements of how I communicate: story of me, story of us, story of now.
There is one additional element, which is a link to prior work I created for Robert. This is an example of how previous volunteer work gradually built up my skillset so that I could work on larger and more complex projects.
Within the span of a few emails with Quincy, I went from creating modules for one person, to creating modules for the 1-million-plus users of freeCodeCamp!
How cool is that? I was thrilled.
I was also, again, scared, because OOJS was not my strongest topic at the time. But to my mind this was my opportunity to learn it. I prepared myself by frantically consuming this book.
I also decided to enlist the help of other people, so I reached out on the Dev Bootcamp Facebook group with the following post:
Note that the outcome of this project leveraged the previous reconnaissance work I did at Dev Bootcamp. I would have never predicted at the time that the people I would meet at DBC would one day team up with me. This illustrates the hidden power of taking action without expecting anything in return.
Project #3: Case studies on Senior Developers
“A good hack for finding a problem worth solving is immersing yourself completely in a vertical you are passionate about and surrounding yourself with other passionate people. People inevitably have problems.” — Ash Maurya, author of Running Lean
As I worked alongside the five Dev Bootcamp graduates to create the freeCodeCamp curriculum, I enjoyed the privilege of hearing first-hand testimony about the ups and down of post-coding-bootcamp life.
One of their top desires was to to grow into senior-level developers, but they felt that the day-to-day work they were doing at their company wasn’t preparing them for such growth. They wanted to do more challenging work in order to continue developing their skillset.
I was curious whether this was true for more coding bootcamp graduates, so I interviewed a few friends from my Dev Bootcamp days to ask them about it. I conducted these conversations following the “problem interview” structure as defined in Chapter 7 of Running Lean.
At a high level, the goal of the “problem interview” is to understand your audience’s #1 biggest goal and understand how they are solving the problem today. Here is an example: (show link to Xavier’s interview)
Key insights from the interview:
- Xavier’s number #1 goal (in red): “move from junior level developer to a mid-level developer”.
- How solves the problem (in blue): He asks senior level developers at his company how they arrived at particular conclusion.
- Idea for a blog post (in green): interview senior developers and walk through specific challenges that they faced to get a better understanding of their thought process.
I reached out to the more senior level developers I knew, including Alexandr Kurlin, the CTO of FrontRowEd, a startup that creates adaptive learning software for K-12 students. Here is the email I sent him to set up the interview:
Notice the way I describe the impact (in green). I have found that the most powerful way to inspire people to action is to highlight the deeper meaningfulness of their contribution. Research on motivation lists “impact on others” and “mastery” as two powerful forms of meaningfulness — which may remind you of the two guiding principles listed in the introduction that I use to motivate my own self!
I worked with Alex to produce the following case study that was published to freeCodeCamp’s Youtube channel:
I learned a lot from this project. I would bet that I personally learned more from the process of interviewing Alex than anyone who watched the video.
Project #4: Building a Classroom Mode Feature for freeCodeCamp
“Success is gained through giving without keeping score.” — Keith Ferrazzi
I placed a call-to-action at the end of the video with Alex to build a feature for FreeCodeCamp’s open source repository as a way of putting the skills from the video into practice.
Quincy Larson suggested creating a “classroom mode” feature. More and more teachers have been using freeCodeCamp to teach in their classrooms. However, freeCodeCamp was not built with this use case in mind. Could we solve that problem?
I recruited the following team to help out:
- Udie Chima became our UX designer
- Jenny Tse became our project manager
- Tom Lee, Priyanka Saigal and myself became the developers.
Nearly all of these people I met during my reconnaissance work while exploring other coding bootcamps.
As a UX designer, Udie was curious to chat directly with other people who would be using the Classroom Mode feature. So we requested that Quincy make any introductions he could on our behalf. Quincy sent out the following tweet on our behalf:
One of the people we met as a result of Quincy’s tweet was Dr. Sathya Narayanan, a professor at California State University (Monterey Bay).
Project #5: Volunteering to help out at a summer bootcamp
During my initial chat with Sathya over a zoom conference, I was inspired by his vision to make the college experience more accessible to women and minority groups. His experimental cohort-based model aimed to solve many of the design flaws in higher education revealed by Bridgette Burns’ research, which contributed to lower graduation rates among minorities. I was particularly intrigued by their focus on teaching soft skills that went beyond traditional academic knowledge.
He mentioned that he was shorthanded for an upcoming summer bootcamp on data structures, and I later emailed him offering my help:
The “example of my work” linked to one of the senior developer videos I created for freeCodeCamp’s Youtube channel.
It was a fulfilling experience to help Sathya during that summer. The CSUMB cohort program turned out to be as innovative and active as he claimed it to be.
At the end of the bootcamp, Sathya mentioned that CSUMB had an open Lecturer position that he was hiring for. The job typically required a Masters degree requirement, but he said he would find a way to waive the requirement in my case. I went for it.
It is an amazing feeling to finally get paid to do the same kind of work that I had been doing for free for the previous two years.
I am particularly grateful to Robert, the student from Detroit, whom I met on an elevator several years ago. Thank you for taking a chance on me and being my first student.
As a call to action for the reader, if you would like to get involved in an open source project, I can help you get your first commit into the Classroom Mode feature we are building for freeCodeCamp. Feel free to message me on linkedin.