Why The Software Mentor?
Everyone has a reason behind what they do. Whether it's financial, altruism, or something in between, there's a motivation behind it. You can think about this as their story.
Humans naturally gravitate to stories, so this is the story behind The Software Mentor and why I do what I do.
Beginning - Computer Engineer or Math Teacher?
As the story goes, I came home from kindergarten one day and told my mom that I wanted to be a computer engineer. I think it was because there was someone at school who talked about their job and what they did, but not sure. Whatever happened, it was enough for it to stick out to 5 year old Cameron and I decided that's what I wanted to be.
As I got older, I was lucky that my parents were able to get a computer for the family. Unlike the normal trope, I didn't learn how to program at a young age. I mostly spent my time playing video games and working on my typing skills. Over time, I became the one responsible for fixing/repairing the computer when I invariably broke it. I credit my troubleshooting and teaching skills to explaining to my non-technical family, what caused the problem and why.
Once I got to my senior year in high school, I had a big change on what I wanted to go to college for. Inspired by my teachers, I wanted to become a high school math teacher which means that Maryville College was where I needed to go.
Maryville College is well known for producing top-notch educators and my favorite teachers came from Maryville. Plus, all the kids that I liked hanging out with were going to Maryville, so that made the most sense.
At Maryville, I had to take some intro to computer science courses and absolutely fell in love with it. I found programming to be natural and was able to pick up the concepts quickly. So much so, that I was a lab assistant and tutor for the intro courses for my time at Maryville. I was intrigued about how to help students learn programming, I even did my undergraduate thesis on a new programming language that was centered around better error messages and cleaner syntax.
First Job
After graduating, I got my first job in the healthcare space working on Electronic Medical Record (EMR) software. There was some culture shock (moving away from Tennessee, working with a team where English was a minority) and a ton of skilling up (learning new languages, source control, application development).
I struggled mightily at this job. I remember working on one bug where I had to escape some data before it was transmitted and I couldn't figure out a way to solve the problem without breaking existing functionality. To make matters worse, we had long ship times, so if I shipped broken code, it would impact other teams for weeks until we could ship the next version.
My one-on-ones with my manager were stressful and I didn't feel comfortable that I could do the job. To compensate for my poor performance, I started working 60-70 hour weeks, trying to get more stuff done and prove that I could hack the job.
While putting in these hours, I started second guessing myself, asking "Am I cut out to be software developer? Did I waste my time getting this degree"?
This was a dark time in my career and I didn't have a mentor or anyone I could talk to or get perspective.
The Turning Point
One of the perks of the job is that I got $50 to spend on whatever book(s) that I wanted. Looking through some recommendations, I saw a book called The Clean Coder by Robert C. Martin that had some decent reviews and decided to pick up a copy.
This book fundamentally changed my view on the work I was doing, the company I was at, and expectations.
Long story short, I wasn't the problem, this place was the problem. With leadership agreeing to commitments without informing the team, little to no mentoring, and the unwritten rule for people to be working 60 hour weeks, this place was not healthy for me.
Though I don't agree with Robert Martin with his personal views, this book was the kick in the pants that I needed to change jobs and find a place where I could be successful.
Finding a Place To Flourish
Due to the antiquated technology this company used, I had little success of finding other companies that used that tech. This in turn, made it hard to find new opportunities. Looking at openings back in Tennessee, I found a post for a healthcare/investment company that was looking for a entry level software engineer.
Even though I didn't know the technology stack at all, I hoped that my experience in healthcare would help me land the job.
My interview was pleasant. For the technical portion, I was lucky that my interviewer focused on pairing/TDD and didn't have a problem with mentoring on the fly. Even though I had no experience with C#, we were able to TDD a simple problem (FizzBuzz, I believe) and made decent progress on a second problem.
Even though the benefits were not great, those two years proved to be a transformative part of my career. I learned so much from my mentor on how to be a professional, how to think about software, how to reason about problems, how to troubleshoot and debug issues, what good code looks like,
Pouring Back Into the Community
I was lucky to have found such an excellent mentor to help me level up and to build up my confidence. However, not everyone gets that opportunity.
I want to be a mentor for those who are new to the industry or don't know if they have what it takes to be successful. The community has given me so much, that I want to pour back in, for the next generation.
I've been blogging and presenting since 2015 and I've never made money doing either of those things. However, it's allowed me to share my ideas with those I wouldn't normally come across and hopefully helps pull them up.