Thank you to Jeff Harr, Director of Admissions at Hack Reactor for the prompt.

Backstory: I have no engineering background, was recently admitted to Hack Reactor, and will start in Cohort #35 in October 2015.

What’s your #1 single biggest challenge in learning to become a software engineer?

This is a really tough and multi-level question but I’ll take a crack at answering it. I’ll try to keep my answer concise.

I’d say the hurdles to becoming a software engineer can be divided into three categories: cultural stereotypes, lack of reliable real-person help, and the big Why.

Cultural Stereotypes: This is huge. Our society has a few really poisonous falsehoods that permeate the discussion around career choice:

Extrovert vs. Introvert. I got this all through my 12 years of mandatory schooling. The logic is: If you talk a lot, you’re an extrovert, and if you’re an extrovert, you should get a career working with people, not computers. The logic here is just wrong in so many ways. It’s horrible.

Arts vs. Sciences. If you like anything considered “art”, you’re an artist and shouldn’t do science-y things, like computers. Again, horrible.

Computer programmers are boring.

Computers are boring.

Tech people are evil.

The list goes on.

Lack of reliable in-person help:

Throughout the 4 month process of self-study I undertook before passing the interview into Hack Reactor, I spent a lot of time stuck on problems that, given a real person to help me, I could have solved in a timely manner. Stack Overflow makes zero sense to a newbie who has just finished Codecademy Javascript.

To the SF tech scene’s credit, I did attend a lot of super awesome meetups such as Women Who Code, Girl Develop It, and the HR and Maker Square meetup groups, but those only met once a week, the skillset of the hosts went only so deep, and there was only so much time during the meetup for everyone’s random questions.

The problem here is that knowledgeable software engineers (who are also great teachers), are in super high demand! They have no reason to be on-call to answer my questions about what I should learn, how complex a project idea is, or explain some crazy StackOverflow thing I found online. Perhaps I’m one of the few people who do not have tech friends to answer these questions. But there you go, it took me four months.

Which leads me to the last category:

Why am I learning this and what is it good for?

As I struggled through re-writing functions from Underscore.js to prepare for my Hack Reactor interview, I often wondered “What am I ever going to do with this? Am I going to get a job writing software filled with each() and map()? What is this for?”

Honestly, the big picture isn’t super clear to me now either. I’m honestly hoping that when I finish the program, and get my first job, I’ll finally understand what software engineering even is. I know we learn a lot of cool stuff during HR, and I know we make oodles of money afterward, but I really don’t have a macro view of what technologies are for what, and how big-time software works in the real world. I’m hoping it’s not a bunch of people at desks typing “each map filter yum awesome”. Although I’m kinda hoping it is, cause I’m *super* good at that.

And one more thing: Not enough pictures! I don’t understand the *obsession* with teaching programming through ONLY writing code. It’s awful. With a few diagrams, pictures, and anthropomorphic characters, learning programming could be way more fun. But let’s keep it related to the material. Random foxes and bacon is just weird.