My journey into tech was not a straight path by any means. Originally a vocal performance major, I eventually discovered STEM careers and realized Engineering was the field my heart had been searching for. So beginning my senior year, I transferred from the College of Fine Performing and Communication Arts into the College of Engineering. Unlike many Engineerings students, I found that the best way to my career goal was outside of the university.
Back in 2015, I was going through a lot academically. In short, school was expensive to pay for and my financial aid was flaky at best. I'd lose a scholarship mid-semester because the university found out that they didn't have the funds to support my award leaving me with a bill. I didn't have the financial support I needed to be a full-time student.
Because I interned at a coding bootcamp at the time, I knew that it was possible to take a non-traditional route into Software Engineering and Development. This challenge both worried and excited me as I stepped outside of the norm of what my family, friends, and society expected by leaving my Mechanical Engineering program to complete a Java bootcamp.
Even though I had seen bootcamp students successfully transition into tech firsthand, I did not take the decision lightly. After much research and deliberation I decided to expand my self-learned skills to go from freelance Web Developer to Fullstack Engineer.
I must say the plan worked almost to the "T", however, my journey was not without its missteps and lessons.
Thinking back on 4 years in my field, 4 key lessons come to mind that I am sharing in hopes of helping others refine their growth as a Software Engineer.
1: Pursue your dreams with a plan in mind and take advice with a grain of salt.
Yes, even mine here in this blog.
In late 2015, after taking a web development course and trying some freelance projects, I decided to trade my university courses for a full-time bootcamp in hopes of solidifying the knowledge I needed to become a programmer full-time.
I felt I had a great chance to at least land an internship and convert to full-time work and so I committed to this plan. Not only did I leave my Engineering program, but I did not work during my program as it's recommended to focus exclusively on a full-time bootcamp program.
During my program, although I had programming experience, I didn't take for granted the topics that were review for me. Instead, I leaned in to learning more about areas I already knew.
I chose my go-to supplemental education resources that I would use to help solidify or further explain material I was learning in class. Everyday I participated fully in lecture and completed my lab assignment to the best of my ability. At home in the evening, I used Treehouse (teamtreehouse.com) to complete modules on the topics we had covered for the day and watched YouTube videos from a Java channel I liked as well.
I already had a LinkedIn and portfolio website created and continued to enhance those as we completed different labs and projects that I could highlight for job opportunities.
My entire approach to completing my bootcamp could (and will) be an entire blog to itself, but ultimately I credit my successful completion with the strategies I built around learning and digesting the material and showcasing my skills.
Needless to say, I was met with skepticism and judgement when I announced I would be leaving college to complete a program most people didn't even know existed. I'm glad I was able to stand firm in my decision and fully commit to the plan I had. Finishing my program with multiple job offers and continuing to take on more challenging opportunities showed everyone around me more possibilities for launching a career than what they were used to.
2: Establish expectations between yourself and your company
I realized that I didn't want to be an expert at being a Junior so I became a full-time Software Engineer for a consulting company where I learned Ruby on Rails. Eventually, I was let go from this job for what I believe was mostly a lack of clearly defined expectations.
While I got positive feedback from my manager the entire time that I worked there, I was let go because I "didn't advance as much" as the leadership expected (loosely quoting).
I parted on good terms, but this showed me a lot about what I expected out of a company. Don't assume that your needs will be met or vice versa. Determine what successful performance looks like for you, but don't be afraid to have expectations in return.
What kind of support are you looking for in your role? What goals would you like to achieve that your manager or others can help you with? Even the most well-meaning managers can struggle with career guidance or have different goals in mind for you than you have for yourself.
I learned that transparency was really important to me and that I wanted to have more abundant mentorship available to me.
- I now ask for clear guidance on what performance criteria I will be evaluated on from year to year.
- I take missing or non-existent 1:1s as a red flag. I also keep a shared document tracking items that were discussed from meeting to meeting if my manager does not do this already.
- Over time I began to incorporate my personal technical goals into my 1:1s with managers, as sharing my goals help me hold myself accountable for getting them done.
I would say I learned to manage up to manage my career and it is paying off as I'm growing and taking on new challenges I might have never even known about if leadership in my company wasn't aware of my goals and aspirations.
Here's a panel I hosted recently talking with other Software Engineers about the importance of Managing Up to Manage Your Career:
3: Challenge yourself by taking on projects
Freelancing and open source work are great ways to build your experience solving real-world problems.
It can be tempting to focus on solo projects as you learn, but there are certain experiences and skills that you aren't exposed to on individual projects. That includes technical skills and soft skills.
When I first started learning frontend development and only knew vanilla HTML and CSS, I took on freelance clients and built small business pages just customizing the CSS of Wordpress themes. Family and friends that knew I was learning to build websites would recommend people to me. Although I was hesitant at first, worried that I would mess up or not know what to do at all, I decided to take the challenge.
If you are looking to transition into software you can't put off building projects forever. It's fine to follow tutorials and guides, but eventually you want to begin putting your skills to practice.
I think of it like a tool set for a builder: It's one thing to have a box of tools and another to learn to use them effectively by building progressively larger and more complex structures.
Once you've tried some tutorials and worked through some small projects on your own, learn to collaborate with others on open source or build a freelance project that will be used by real customers.
These are great feature pieces for your portfolio and a nice way to establish skills you might be looking to build in order to pursue a new job role.
4: Leadership opportunities are key to developing your reputation
Taking the time to take on additional leadership or technical responsibilities help you grow and stand out amongst the sea of other Software Engineers. Especially when you are looking to get noticed for your 1st role or a highly sought after position.
Even before my bootcamp I volunteered as a Teaching Assistant for our Girl Develop It chapter in Detroit. This was a way for me to earn free classes in the topics I was learning and help others with the topics I was familiar with. It was also a fantastic way to solidify my knowledge, teaching as I learned new skills.
Over time, this volunteer opportunity became a bigger role as I was eventually invited to teach, then became a Chapter Leader and Meetup organizer. This also served as social proof helping me to branch out into instructing Coding Bootcamps as a program graduate.
At the time this was just something that came natural to me as I've always been passionate about helping others like me get access to education and opportunities in STEM. Down the line I realized I was having recruiters reaching out to me instead of the other way around.
I also made friends and found mentors that have helped me find out about unique opportunities that were not even on my radar.
Teaching or Teaching Assistant is not the only way to approach this. You could volunteer at a tech conference you love or give a lightning talk at a Meetup on a new skill you learned, or start a blog / YouTube channel / podcast. The list goes on.
Over time you showcase your skills and qualities and you'll find you can look within your growing network to find awesome opportunities that are right for you.
I hope these tips are helpful to you in navigating your journey as a Software Engineer and would appreciate if you share this with someone you think would benefit from reading it.
Let me know if you have other tips you'd like to share or have another topic you'd like me to cover!