Whenever I talk about my career to friends and family I always get the same response -
"Wow, you must be so smart. I could never do anything like that. If only I were born with the ability to program computers I'd be able to do exactly what you do."
SPOILER ALERT - I'm not that smart. I don't like math, my science knowledge is super rusty, but I know how to type a combination of words into an editor and have it do something. I compare programming to learning another language, and I don't even know a second language! (I wish I would've taken Spanish or French in college)
My hope is that this post will give you a little insight into what I do and how I got to this point. I firmly believe anyone can learn software development if they put the time in and have the right resources in front of them. I might put together a page full of resources for different aspects of what I do but for now I'll have a short list of links you can follow if you find yourself wanting to learn.
I can't accurately describe my journey without talking about where I started.
So, here we go.
I earned two Bachelor of Science degrees from the University of North Alabama. First, a degree in Music Performance (focus on percussion). I had no idea what I wanted to do in my post-college life and was content trying to be a creative human being. College had a lot of structure for me and that helped. I was either in class or in rehearsal, even better all my friends were either in my classes or in rehearsals. Marching band helped facilitate all of my college relationships, teach me about self-discipline, and the rewards of hard work.
I attribute any successes that I have to music. Music taught me how to practice, focus, and devote time to something I found meaningful. I stopped thinking about music for years as I pushed myself to learn a new trade and I'm very happy that I'm able to devote more time to it now. +1 for programming because I get to have so many creative hobbies outside of work while still flexing my brain during the day.
My other degree was in Communications (focus on Film & Digital Media Production). I originally wanted to be a band director or music teacher and when I realized I was going to have to stay in school an extra three years to achieve the education part of my degree I decided to swap over to the new film program that had been established and just double major in music and film.
Best. Decision. Ever.
I was able to surround myself with people that wanted to create things and also bring my musical background with me. Waking up and going to
Screenwriting 101 or
Advanced Video Production was the highlight of my day. I was slowly being burnt out of music and this was the perfect thing to help me cope. Not to mention that Jason Flynn (head of the film department) probably had more impact on my life than anyone. I was always encouraged and supported, even if it didn't always turn out so well.
I miss him everyday.
I had no idea what was about to happen to me. I had graduated, gotten my pieces of paper, and said my goodbyes. What do I do now?
Take a job as a Radio DJ, obviously. Wait - that's not what everyone else did?
I had no idea what I wanted to do professionally. All I knew is I didn't want to be a Server at Outback Steakhouse anymore and I wanted to create things that people enjoyed. I toured around the U.S. as a stage manager for a travelling magician, thinking that might be my calling and it was fun. I was trying everything I could get my hands on while still trying to tread the water of life and pay my rent.
When my girlfriend at the time (and wife now) decided she wanted to move to a bigger city for nursing I thought it was time to try something new and take a risk. After the rigmarole of finding an apartment, moving, and driving a U-Haul down Hwy 280 during rush hour we settled into our new location.
Now to find a job... I applied anywhere that had the keywords
Filmmaker and no one would hire me! I started searching around for potential drumlines I could teach and found out the market was super saturated already by people way more established than myself.
"Excuse me, I was told after I got these degrees that I could get a job anywhere. Wtf?"
I finally got my break when a UPS Store hired me on as a "Graphic Designer". Oh, I didn't tell you that I studied graphic design? That's because I didn't. After I accepted the job I spent all my free time learning Photoshop and Illustrator and practicing on the job. That might seem scary or crazy but, at the time I could only think - "What's the worst that can happen? I get fired?"
The UPS Store was my launching point into software.
One day, after creating some "Bob The Builder" birthday invitation I looked at my next print job and it was for a local construction company in town that gave us a lot of print business. I visited their website to check out what all they did and was amazed at how bad it was. I started thinking to myself -
"I could totally make this website, I've seen HTML (thanks MySpace) and then maybe they'll just hire me to do that!"
After pitching it to my boss he shut it down pretty quickly. We are in the print and ship business, not the website business. So I bought a couple books on website design and started reading. Shortly after, Tara and I went on a beach trip and I distinctly remember reading as much as I could, trying to absorb all the information.
On the way back from that beach trip I decided to apply for a Master's in Computer Information Systems (with a focus on Web Application Development) from Boston University. I got accepted, passed my probationary period, and started my online degree in CIS!
I spent the next two years juggling full-time work at The UPS Store, maintaining a relationship, and working on school work during the night. I put one foot in front of the other, one day at a time, slowly crawling towards the finish line. Then one day I realized I only have one class left and I should probably start trying to land an internship or something so I don't end up in the same position as the last time I finished college.
I missed out on all the benefits of actually going on-campus to get my degree. I had no network of people, no support, and no mentorship. I started shooting off applications to every internship I could find. One by one I got the rejection letters - "Sorry, you're not what we are looking for at this time."
With my degree finishing up I started to panic a little. Was I ever going to get a job? Did I just waste two years of my life on something that won't even pay off?!?
"Take about 10% off there, Robert."
I decided that I wasn't only going to apply for internships and started applying for entry-level developer roles. My very fist interview was for a company downtown that worked with businesses to facilitate auction buying. It went terrible. I will remember this interview question for the rest of my life -
Them - "Do you know what
Me - "Uh, no?"
I could feel them wanting to laugh. They suggested that I practice/study more and come back in a year. A year?!? After that I bought a book called "Cracking the Coding Interview" and started working on interview problems. Finally I was invited to another interview and was extended an offer as an entry-level developer. I was honest about my skills and what I knew but, I also told them how hard I would work to learn the technology they used.
Did my Master's set me up for everything I would experience in the work place? Not a chance. I didn't even use the tools that I learned in my degree, instead I learned 90% of what I know "on the job". I will say, the piece of paper definitely helped land the interview. Other than that, it's a nice decoration.
My first professional job set the course for a nice career in software. The culture was great, I made friends, and I genuinely enjoyed going to work each day and learning new things. Also, I could see the work I was putting into it being actively used by companies around the world. I ate up all the knowledge I could find. The company had a mentorship program and I immediately enrolled in it. Then after a year I felt like I was worth more than the company was offering me. With the help of colleagues and mentors I started planning out what I was going to do next.
Turns out, software developers are a hot commodity right now. Companies will fight to try and get you to work with them. I used this to leverage a raise and then eventually swap companies for more money.
My next gig was super corporate and allowed me to become more of a mentor/teacher. It was stressful coming up with training, workshops, mentoring people, and also getting my work done. However, it also paid off. I was seen as a servant-leader and someone that is easy to work with.
After staying there for a little over a year I was met with the opportunity to work with all of my friends again at a consulting company. That's where I am currently, and I'm still enjoying it. Every place has it's "ups" and "downs" but, it makes it way easier when you work with friends everyday. I consider myself pretty lucky.
Well there it is. Five years of my life summed up in a single blog post.
Whenever anyone asks me if I'd do it again, or if they should swap over to the software industry, I always give a resounding YES. The benefits are awesome (free healthcare, PTO, nice salary, mentoring opportunities, and more), developers are in-demand, and I can get a job anywhere in the country. Not to mention I can also do my job from home!
I want to wrap this post up with some resources that helped me in my journey, as well as some resources I would recommend to someone starting this journey.
Do you need a degree? No. Would it help get an interview and formally understand core concepts of programming? Yes. However, you won't be fully equipped to get a job right out of college. The software industry is all about continuing education. Pushing yourself to keep learning and not be complacent. There are definitely jobs where you can be complacent, and there are jobs where you can learn as much as you want. There really is something for everyone.
If I were going to do it all over again these are the resources I would use (prioritized):
- Learn Git
- Hackerrank - CodingBat - Advent of Code (for solving problems with algorthims)
- Pluralsight (time to learn a strongly typed language like C#)
- Frontend Masters (now time to learn a frontend library like React)
- Pluralsight (again but this time for Database Design and basic SQL)
- Put it all together and make some type of
TODOapplication that uses a frontend technology for the website, a strongly typed language for the API/Server, and persists data in a local database using SQL
- Pluralsight (AGAIN but this time for learning how to put all of you hard work in the cloud and attach it to a domain)
That's a lot of stuff. I know. It could take a year or more to get through all of that, and even worse you have to be accountable and disciplined enough to do it. There are people out there that can but, I found it easier to have the structure a degree provides.
Anyone can do it. There's nothing special about me. I believe in you.