As some of you know, I’ve created videos like A Day in the Life of a (Future) Software Engineer. This obviously implies that I’m not currently a software engineer. It’s an obvious statement to say that not everyone is meant to be a software developer or engineer. At one point, I thought that was me. Let’s talk about why, until now, I never really saw myself being a software engineer. Even now, I’m not a software engineer. Maybe these are the same reasons you’re not, too.
1. I Didn’t Want to be a Software Engineer
Software development and computer science is overwhelming. As I began learning to code, I always had the same problem – Issues would come up and I’d have no idea how to solve them. This was great for my problem solving skills, but it often left me feeling frustrated or defeated.
This was before going to school and getting a Bachelor’s in Computer Science. This was just me doing it for fun in high school and some professionally.
I was at the time in my life where I was able to easily evaluate if it was something I really wanted to do with my life. I kept asking myself, “Do I really want to sign up for a life of frustration?” This was by far the biggest reason I was hesitant to pursue being a software engineer. Computer science and coding to me at the time was a great hobby, but I was concerned that if I took it on as a career I’d lose interest and dread it.
I haven’t gotten over the frustration with coding. I’d say it’s part of the career. Some people are better at being patient, while others give up in the first five minutes of finding a bug. I’m somewhere in the middle.
As time goes on, it get’s easier. You learn new debugging techniques, you understand common beginner mistakes, you have experience in new languages and design patterns. But as your skills increase and frustrations are reduced, you tend to pick up harder projects, which ultimately challenges your skills and causes even more frustration. It can be a viscous cycle.
I knew that if I was to survive long term in a software engineering position I’d have to learn out how to be patient with frustrations, eliminate stress, and be persistent when it comes to solving unsolvable problems.
2. I Felt I Wasn’t Good Enough
The amount of knowledge required to be an effective software engineer seemed like too much. Every task required knowledge in different languages and technologies, and you could find a 1,000 page book on each of them.
I’m not the only one who feels this way. I actually just did a blog on The Imposter Syndrome, which describes my feelings exactly. It seems everyone around me knows everything and I’m the only one who doesn’t know anything.
This feeling also gets better as you learn more and care less about what others think of you. Once I realized that all the languages are pretty similar and I developed more experience over time, I felt a lot more comfortable.
Even still I felt that there was an overwhelming amount of information I needed to know, so I started thinking about what I should do to fix it. Should I go to computer science school? Should I do a coding boot camp? Should I self study? So many questions!
I was hesitant to go into a computer science because every program required a lot of math (at the bare minimum: calculus, linear algebra, and discrete mathematics). I don’t consider myself very good at math and I kind of hated math in high school. It seemed that a bachelor’s was only 1/4 computer science content and 3/4 math, gen-eds, and other hard stuff.
Even with these hesitations I decided to go through a typical bachelors program for reasons we can talk about in another blog or video. I don’t believe this is the route for everyone, but I knew it was the best route for me.
The undergrad in computer science gave me a lot of useful, fundamental knowledge in things I would likely never have studied on my own, but I still felt overwhelmed. I even think I did pretty well in the program (finished with a 3.49 GPA).
The reason I felt so overwhelmed is that school is general education. If you’re motivated, you get the feeling that you need to know everything. This is in sharp contrast to how you feel when working. I made my life a lot easier by making it a point to work while I was in school. By the time I graduated, I had over 2 years of experience in .NET development and a total of 3 years in the tech industry. Working while in school taught me that I don’t need to know everything. Rather, I only need to know a few things really well.
Computer science is the background, but when I was building apps in .NET, I quickly realized that anything I needed to learn was for the sake of building an application. I could look up solutions to my problems, study the approach of others, and build something awesome. Getting over the feeling of having to know everything was a huge relief for me.
I was beginning to feel more comfortable about software development, but I still didn’t feel convinced that I would want to be a software engineer after graduation. I was convinced that I needed to build a business or find a well paying career outside of coding where I could still utilize my technical background.
3. I Wasn’t Ready to Move
As many of you know, there are a few cities where software engineering is a big deal. If you’re not in one of these cities, it can be much more challenging to find a job. I knew that if I went into software engineering, I would want to go all in. I was the kind of person who thought I would either need to get a job at Google or not be a software engineer at all (this type of thinking is both a blessing and a curse).
I knew that, in order to find fulfillment as a software engineer, I’d likely have to move. I really didn’t want to, though. I didn’t want to move to San Fancrsisco and pay $6,000 a month to live in a studio apartment in some guy’s basement. I was enjoying my home-town life, renting a two bedroom, two bathroom apartment for $505 a month.
Not only was cost of living a factor. I was preparing to get married and was living at home with my parents, whom I’m very close with. I was satisfied with where my life was and didn’t feel the need to go big at the expense of my happiness.
Fast forward just a bit. Once I got married, I was much more comfortable with the idea of moving. But at the earlier point in my life, it wasn’t very high on my to-do list.
Fortunately for me, the first positions I was offered was for a remote .NET developer. I was excited to get offered a job, but I wasn’t sure I wanted to take it. I left my house to meet the owner of the company saying, “Mom, I don’t think I’m going to take this.” I then came home and said “Mom, I have a new job.”
I knew it was a good opportunity, and I thought I’d give it a try. This helped develop the desire in me to be a full time developer in the future. This intro to development was nice because it was less shocking, didn’t require me to move across the country, and started out only part time.
4. I Got a Better Opportunity
At this point in my life, I’m a year from graduating, have 2+ years of .NET experience, and am contemplating going into software engineering (although not entirely convinced because of the previous points in the article). I was currently working another .NET remote developer position that was really great and paid well. In my last year at the university, I was offered a position that I believed was even better.
This position was not in development, but this wasn’t necessarily a bad thing. This was a role in a successful company in the tech industry and it would give me valuable experience. The pay was good, and if I performed well I’d have a position ready for me upon graduating. So I took the job!
I’m not a developer. Rather, I do social media, developer evangelism, and speaking sessions.
It wasn’t a bad thing that this wasn’t a development job. I was able to get experience in the industry but didn’t have to code 24/7 or sit behind a desk all of the time (just most). Plus, this really lined up with what I’ve already been doing on YouTube! The biggest reason I’m glad it wasn’t a development position: I was still in school 😰.
5. I Worked and Went to School Full Time
Looking back, I am very glad that this offer wasn’t for a software engineering position. Why? I had to finish my last year of undergrad while working full time. Fortunately, I saved all the hard classes for last 😂
- Web Application Development / Database Management
- Computer Science II
- Computer Science Seminar (senior research project)
- Operating Systems
- Linear Algebra and Vectors
- Programming Projects (credited from an internship)
- Programming Languages
- Algorithm Analysis
- Software Engineering
I came to the realization that if I was doing this and a development job, I would have burned out. Fast. What likely would have happened: I’d be so stressed out that I’d end up hating development. I’d graduate with a Bachelor’s of Science in Computer Science, a sweet job, and hate it all.
Now that I’m graduated and I’m no longer drowning in work, I feel I’m ready to take on another role.
What are my Life Goals?
This brings up the obvious question of what I want to do now. Do I want to be a software engineer? Or am I satisfied where I am? I have three goals.
- Yes, I do want to be a software engineer. I’m working my booty off prepping for that. I miss being a developer.
- I want to continue to grow my YouTube channel and website. This means more and better vids, more blogs, strengthening my social presence, etc. This will take time, but it’s growing!
- I Want to help all of you break through barriers. I’d like to create content on the barriers I’ve faced. This includes not being sure if software engineering was for me and not being confident in my abilities. I also want to help answer questions from you. Should you go to CS school? How do you survive math? How do you survive as a developer? How do you prepare for a technical interview (I’d recommend Cracking the Coding Interview)? How do you build an online presence and build a portfolio? And all the other questions developers deal with on a regular basis.
Check out the video!