by Maribel Duran
My journey from first generation college grad to Software Engineer
“If you really believe in what you’re doing, work hard, take nothing personally and if something blocks one route, find another. Never give up.” — Laurie Notaro
I am sharing my journey on how I learned the ins and outs of software development and how I finally landed my first Software Engineer role — so that others on a similar path will stay motivated to continue their journey. I hope to empower others to never give up on their hopes and dreams.
My progress was slow and steady because I was also improving other parts of my life that have helped me become a better person and ultimately a better developer. Now I am a Software Engineer working on a product that is helping people’s lives and I get to work with an amazing team. To wake up everyday knowing that I get to do what I love was worth the long journey.
The resources that I am going to cover helped me move forward towards reaching my goal while having a full time job with crazy on call hours, a relationship, family, friends, volunteering, and a few setbacks along the way. I really hope this post will bring value to you on your journey!
“Don’t bury your failures. Let them inspire you.” — Unknown
I am a first generation college graduate and the oldest out of my siblings.
My parents immigrated to the United States when they were teenagers and since then have been field workers. We weren’t sure why college was important, but we knew it was so I applied to universities with little knowledge of what I should be prepared for.
I first discovered programming while attending my undergraduate program. It took me two years of exploring engineering courses to declare my major in Computer Science and Engineering (CSE). Our CSE program was very theoretical and introduced us to algorithms, computer designs/systems, and theories. However, having no prior experience with code, I felt lost and didn’t understand the value of these concepts. It felt as though the program was geared towards people who already knew how to code.
We completed projects, but I didn’t fully apply the new knowledge towards solving real world problems or building practical skills. As the projects became more challenging, I didn’t have the courage to ask for help when I was stuck. It seemed like most of my classmates knew what they were doing and had it figured out, so I was embarrassed to reach out.
One key thing I wasn’t aware about was the importance of internships. Instead, I would go back home during school breaks and work in the fields with my mom to help pay for college expenses. Nonetheless, I pushed through and received my CSE degree.
Once I graduated and started applying for Software Engineer roles, I came to realize that I wasn’t prepared. I didn’t have family or friends that could provide any insight on the interview process. None of them had received a higher education nor interviewed for a professional job. Those days, I didn’t know where to find the resources to help me prepare for the technical interviews. I didn’t know that interviewing itself was part of the learning process.
I ended up taking a different career path so my journey to becoming a developer was put on hold.
Motivation To Break into Software Development
“When you discover your mission, you will feel its demand. It will fill you with enthusiasm and a burning desire to get to work on it.” — W. Clement Stone
In 2015, I was feeling really lost and without a sense of purpose in my career. I wanted to align my mission of improving and empowering people’s lives with my career path. I also wanted to be a direct influence and a decision maker of the product I was supporting. In the role and company I was working for as a Technical Support Engineer, I didn’t see that being possible. I wasn’t getting enough project opportunities that could strengthen my software development skills.
One day it finally hit me. I wanted to build applications that improve and motivate lives. How could I accomplish this? I had the answer all along. I wanted to become the software developer I had originally set my intention to while in college and this time I wasn’t going to give up.
The 2 years of having worked as a Technical Support Engineer wasn’t enough to get me interviews for Software Engineer roles. Every company wanted at least a year of professional experience in building software. From then, I started researching where I could find the experience or education I needed to become a software developer. I could go back to school and get my master’s, but now days a degree in Computer Science isn’t necessary to land a developer job. People recommended to start building projects on the side. Ok awesome! But what was I supposed to program and in what language? Was I supposed to come up with a new big idea? Fortunately I found freeCodeCamp.
Working Through freeCodeCamp
freeCodeCamp is a free self paced curriculum where you learn web development and gain skills by building projects on your free time. What got me most excited about this curriculum was that it helped me focus my time on building instead of worrying about what to build. Also if you get far along the program, you get to build projects for nonprofits!
I didn’t complete the curriculum, but got far enough to build many front-end and back-end projects that boosted my portfolio. Being part of freeCodeCamp was also a gateway to joining an amazing community that helped me find other external resources that have led me to land my first software engineer role.
I started attending meetups early in my journey. Meetups helped me learn something new, meet others also trying to change career paths, and network. These are some of the groups I joined: Women Who Code SF, Girls in Tech, Write/Speak/Code SF, Girl Geek Dinners — Silicon Valley / SF Bay Area, and a freeCodeCamp group near your city.
Attending meetups always put me out of my comfort zone because I wasn’t sure if I was going to be able to make conversations. But once I was there, I learned so much, shared tips and resources, and usually left inspired! Even after having attended so many meetups, I still get nervous before attending one.
Through meetups, I also got to meet creators of frameworks, courses, and platforms that have positively influenced my life and have been an inspiration.
Some meetups were motivational and others were more technical. Meetups kept me motivated since I didn’t have any friends that were developers. I met so many women also trying to break into software development and this is where my supportive community started.
Speaking of a supportive community…
Building a Supportive Community
It can get pretty lonely when learning to code so having people that understand what you’re going through and support you really helps. I couldn’t always make it out to meetups so having an online community was very convenient.
I decided to use Twitter as my main way of interacting with other developers and aspiring developers. I have been able to share learning resources, my struggles, accomplishments, and anything else that might benefit others in my field. Since I follow developers, my twitter feed mainly consists of tech news, articles, resources, and any other technical goodies.
Through my twitter community, I was able to receive the feedback needed to help convince myself that I had what it took to be a developer. I was able to get the mentorship to help me when I was stuck or felt lost in my coding journey. People in this field really want to help!
Listening to Engineering Podcasts
I started listening to engineering podcasts on my commute to work and I can tell you this is the best tip I have followed. You get to learn from developers that have been in this industry for years who are excited to teach and share their ideas and experiences.
Some people have said that engineering podcasts are dry, but not the ones I’ve been listening to! These developers are funny, caring, smart, and excited.
I was asked many times during my interviews whether I listened to podcasts. This was a great way to show how proactive and passionate I was about this field.
The following are a few of my favorite developer podcasts:
Attending a Hackathon
Attending my first hackathon helped me experience what being a developer was all about in a short amount of time and boosted my confidence. The following were a few things that I got to experience for my first time at the event:
- Worked with designers
- Used Git to collaborate with a team
- Worked in a high paced development environment
- Presented to an audience of designers and developers
All of these are skills that I use as a software engineer on a daily basis!
Attending a hackathon also helped me meet people with a common interest. The purpose of the hackathon I attended was to unite women to solve global challenges with tech. I met others that were also passionate about working towards solving global issues like Domestic Violence and Human Trafficking.
“By going beyond your own problems and taking care of others, you gain inner strength, self confidence, courage, and a greater sense of calm.” — Dalai Lama
Even though we didn’t fully implement our project at the hackathon, I took the extra effort to complete the app afterwards and added it to my resume. Interviewers loved that I attended a hackathon and asked what I learned during the experience. One fun question asked at an interview, was “If you could use our data, what type of project would you build at a hackathon?” My answer, “To build a platform that would help young students find colleges that would best benefit their career path”.
If you want to learn more about what to expect and the rest of the benefits you might get from your first hackathon, you can read about my experience here.
Contributing to Open Source Projects
I believe contributing to open source finally got me on the “I am ready for a developer job” mentality. It also helped me find a real world project that I was passionate about and ultimately helped me land interviews.
Contributing to open source was very intimidating so I kept pushing it off. Once I finally got the courage to figure out how to start contributing, Hacktoberfest came at the perfect time. Hacktoberfest is a month challenge in October where you get the opportunity to submit 5 pull requests and win swag all while raising awareness for open source and learning along the way.
This challenge motivated me to find meetups that would help me find projects that were helping the local community. I found a project that I was really passionate about. This project was brought up during every phone and onsite interview. Every interviewer asked me about the project, my contribution, and how we worked as a team.
If you want to learn more about the skills and values gained when contributing to open source, you can read about my experience here.
Having an Online Presence
Online was where I had the opportunity to share what I was learning and working on. It also helped me express what I was interested in, my mission for becoming a software developer, and who I am. Below is a checklist of what I covered to verify I was sharing as much as I could online:
- Reviewed all Social Media accounts. Ended up creating a new Twitter account and dedicated it to sharing things related to software and personal development.
- Updated my LinkedIn Profile (including asking my sister take a head-shot of me).
- Transferred my CodePen projects to GitHub.
- Wrote Medium posts about experiences related to my software development journey.
- Iteratively updated my personal portfolio website’s design and content. (As I learned a new CSS trick or completed a project, I updated my website)
Most importantly, buying my own domain name and taking it live really helped me establish myself online. I highly recommend this. Companies will see that you are capable of setting up your own domain. I also recommend making your website secure, mobile responsive, and performant. I wrote about how I made my portfolio website blazing fast with Gatsby.
Reading Engineering Blog Posts
I started getting into the habit of reading engineering blogs and articles in the mornings and anywhere else where I had some spare time. Whether that was waiting for the train or standing in line at the store. It taught me how to communicate technical ideas by simply reading.
Below are a few engineering blog communities that I love:
- freeCodeCamp’s Medium Publication
- Twitter (Again, the people that I follow share great blogs from others)
I was also able to bring this up during interviews when asked how I kept up with the news in software development.
Writing Blog Posts
I have written a few blog posts related to my journey on becoming a developer as well as a recent technical blog post.
It is motivating to see what others have gone through. I sure wouldn’t have continued on my journey if it weren’t for all the amazing people that have shared their stories.
Share your experiences, perspectives, and values gained with others because you never know how you might impact someone’s life.
Other Technical Resources Worth Mentioning
The following are a list of other tutorials and coding challenges that were beneficial and recommend looking into.
Most of these resources are free or can get a good deal during a holiday sale:
- Completed the 100DaysOfCodeChallenge
Wrote about my experience here
- Read The Road to Learn React
- Completed MongoDB University’s M101JS: MongoDB for Node.js Developers course
7 week course
- Completed Udemy’s The Coding Interview Bootcamp: Algorithms + Data Structures course
- Deployed my FCC back-end projects to Heroku and spent time writing descriptive README files. This wasn’t a requirement, but knew it would be a good learning opportunity.
Deploying applications was definitely asked during the interview process.
- Participated in Hacktoberfest.
This challenge helped me find open source projects and open issues on GitHub that I could easily jump into.
- Read Algorithms to Live By
Some Setbacks. One Step Back, Two Step Forwards
“The steeper the mountain, the harder the climb, the better the view from the finishing line.” -Paula Abdul
During my on-call weeks where I was on 24/7 support, I didn’t get to code much because I was taking late night calls on top of working 45 hour shifts. This took away lots of precious sleep and time. It got stressful, but was also a motivation to keep pushing.
There were weeks where I was able to spend 20 hours coding. There were some where only about 5 hours were spent and I have even gone weeks without coding. Whatever the setback was, it was okay. I was able to come back to my projects and work on them. I always managed to keep a developer mindset by reading a technical blog or book if I was on the road.
There were other personal challenges in my life where I had to step back from working on projects for an extended amount of time, but through my monthly goals and intentions, I reminded myself of my mission and kept moving forward.
Having stretched my journey really tested my patience, but I knew that any progress each month was better than none.
Landing interviews was easier than expected, but I believe that was mainly due to the work I put in over the years with setting up on my online presence by sharing what I have been learning and working on through different social media streams. GitHub, Twitter, LinkedIn, Medium, and my personal portfolio website were my bffs.
Most of the recruiters that reached out to me came from LinkedIn. A key move that helped me get noticed was adding my Headline to “Frontend Engineer” because that is what I believed I was ready for even though I didn’t have that title in my current position.
I do think having a CSE degree helped me get initial interviews. However, the interview process depends on the projects you’ve worked on and whether you can communicate them well. Of course I recommend getting a degree in this field, but having the degree won’t get you the job. I learned this the hard way.
You have to show that you’re dedicated, work on projects that really push you, and have a drive for this field.
Most of the recruiters that reached out to me (either in house or third party) were from companies with a mission I cared about. I didn’t spend time talking to companies where I didn’t value their mission or product. I was really honest with all the recruiters as to what I was looking for and what I had to offer.
I interviewed for different titles: Software Engineer, Fullstack Engineer, Front End Engineer, Front-End Developer, and Professional Services Engineer Role.
There were times were I was tempted to accept interviews for Support roles at really awesome companies, but had to stay true to myself and continue interviewing for roles that I really wanted. It was hard when I kept getting rejections of “not having enough development experience”.
I had a few take home tests that were very similar to freeCodeCamp projects and personally loved them because it allowed me to showcase my creativity and attention to detail when it came to documentation.
Below are some interesting questions that were brought up on most of my interviews
- Talk about your current front-end experience?
- What are some skills you can bring from your current Support position to the role you are interviewing for?
- What was your contribution in xx project? How did you and your team decide on the tools and frameworks to use?
- Can you describe your development workflow?
Tip — Here’s a good episode on workflows: Our Workflows — Design, Development, Git and Deployment)
I started enjoying interviewing because it provided real insight on what type of skills companies were looking for. I really took seriously when interviewers asked me “Do you have any questions for me”? It was an opportunity to talk to engineers that worked at these companies. This was a great time to pick their brains and get a feel on how full time engineers work, how they think, and what type of tools they use. There were also topics that came up that I wasn’t aware of like “Accessibility” and knew these were topics I should start learning about.
Those 3 months of interviewing weren’t easy, but I stayed true to my mission and it was absolutely worth it.
Landing My First Dream Job
“When you want something, all the universe conspires in helping you to achieve it.” — Paulo Coelho
Now I get to work on Worklete, an amazing product that is helping workers stay healthy, happy, and injury-free. It is a delight to come into the office everyday to work on a product that is making a positive impact on people’s lives while being surrounded by kind and motivating people.
I have close communication with the product team and since day one, have been able to make decisions, take on tasks, and present new ideas. I get to work on both sides of the tech stack and am enjoying everything that I am working on.
I am constantly learning and using all of the resources I have mentioned throughout this article to help me get tasks done and bring value to my company.
“Incredible things can be done simply if we are committed to making them happen.” — Sadhguru
I am going to continue building products that improve and empower people’s lives.
I am going to continue reading and writing technical articles, listening to podcasts, contributing to open source, attending meetups, and sharing my experiences with others. I want to continue being a better developer and person overall so that I can continue making a positive impact in the people around me.
One of my biggest goals is to help build a community and environment where every girl can have the opportunity to choose a career they love.
When you better yourself, others will want to do the same. I want to provide the guidance and support to help others achieve their full potential.
Main Advice To Others
“Every Great Dream Begins With A Dreamer. Always Remember, You Have Within You The Strength, The Patience, And The Passion To Reach For The Stars To Change The World” — Harriet Tubman
A few years ago, I gave up when I first started interviewing for software engineering jobs right out of college. Fortunately, I found my way back and couldn’t be any happier. No matter how long it takes you, don’t give up as long as you know why you’re in it. You might have a different reason for wanting to break into software development and that is totally okay.
The beauty of this field is that anyone has the opportunity to become a developer as long as they are determined, committed, and patient.
Trust yourself and enjoy the process :)
I’ve met so kind people along my coding journey and excited for what the future holds.
If you liked this article, click the👏 below so other people will see it here on Medium.
Let’s be friends on Twitter. Happy Coding :)