Charlotte Willens shares her story about becoming a software engineer in 6 months–without a computer science degree.
- resources Charlotte used to self-teach herself in preparation for her first engineering role
- “safety rails” employers put in place to save new employees from causing nightmare scenarios on the job
- her first job out of college
For the full text transcript see below the fold:
Charlotte: High school? Okay. I graduated high school thinking I wanted to be a theoretical astrophysicist. And then, I ended up studying math.
The first programming that I did, I did research in applied math, the summer before senior year of college, studying the growth of shrubs. And we used MATLAB a little bit. I’d never done any programming.
Just like writing a program that, adding up two numbers, I was like, “Oh, my god, this is so cool.”
Then senior year I took a computer science class, which was awesome. After college, I worked at an economic consulting firm where I was analyzing data using Stata, which is a pretty basic programming language.
But I really liked programming and so for my next job I was programming full-time, but it was in the data analysis context. So I was analyzing Medicare data and using SAS, which is not the CSS version (SASS).
Max: Basically your job title was an analyst as opposed to an engineer?
Charlotte: I think I was a “data and policy analyst-programmer”. I worked there for a year and a half.
Knew that I really liked programming but was getting a little bit bored of data analysis, so I started researching coding bootcamps because a bunch of my friends had done them. I like to be with my friends.
Max: Got it. You and I have an incredibly similar background. Both of us majored in undergrad college in math, took very little in the way of computer science. By the time we were probably each 22 years old we hadn’t really programmed much, I would say.
Max: And similarly, my first job out of college was not as a software engineer. I probably had my first experience programming using MATLAB. My engineering job title, my first engineering job title, I think was when I was 25.
I think I was too old to miss the big wave of bootcamp-style job placement. For our audience that might be considering doing a bootcamp, or may already be sold on it and are in it, or are now looking for a job, what was your path to a bootcamp? How did you decide that that would be the wise move career-wise?
Charlotte: As opposed to teaching myself or doing something totally different?
Max: As opposed to finding an alternative route to getting your first engineering job or not going into engineering at all.
Charlotte: I liked programming, and I was like, “I don’t actually know what software engineers do.” I just know that my friends who are engineers say that they are always interested in their work and are always learning stuff.
So it didn’t even occur to me that I could teach myself because I didn’t know what I’d be teaching myself.
Then, in terms of why I decided do a bootcamp instead of something else: I just felt like going for it.
Charlotte: I taught myself a bit because you have to for Hack Reactor, you have to go through a coding interview which is like a job interview but way more basic.
You don’t really know the code, but you still have to know a decent enough amount to get through it. So I did some online course and read a part of a book.
Max: I think that by and large, the population of human beings on Earth probably doesn’t have very many math majors from colleges. Something I wanna emphasize for our audience is that there wasn’t a whole lot of crossover in my experience of my math knowledge I learned in undergrad to engineering.
Charlotte: Definitely not, yeah. I had a job interview senior year of college for some random consulting job, and they asked, “What technologies do you use, like, to do math?” And I was like, “A pencil.”
I could not get a second phone screen.
But, yeah, I was a pure math major so it was all proof-based. I literally never used a computer for math besides writing up my thesis or whatever.
Max: For people who may be in college or interested in taking college-type of coursework, what math would be relevant if they wanted some crossover to an engineering career of some kind?
Charlotte: I’m not a good person to answer this because I don’t use any math in my job right now, but one of my friend works for a self-driving car company and was telling me he does software engineering. He tells me about some of the other jobs there that are more about computer vision and machine learning. Apparently, those use a decent amount of linear algebra. I can’t remember what else, but definitely linear algebra which I vaguely remember learning seven years ago.
Max: We went to the same college and the linear algebra program as I remember it was proof-based. There’s no computer usage in the course. But from my experience and from what I know of where math gets used in programming or engineering, linear algebra is probably the most used. Any image can be represented as a matrix where each of the pixels of an image are scalar number values.
Charlotte: I still have my linear algebra textbook from freshman year. I definitely want to relearn some of that and figure out how it applies to computer science because that sounds sick.
Max: Are there–besides formal graduate programs–something that you ultimately wanna do in engineering as a career, work on those types of problems in contrast with what you’re doing now?
Charlotte: I think so. I really enjoy what I’m doing now and it’s really interesting. But I also really like math, obviously. If I could combine programming and math I think that’d be even cooler.
I think my vague plan is to figure out what skills I would need to pick up to do a job like that and remember how to do linear algebra. And maybe take a machine learning online course or something.
Max: There’s so many that are freely available. It’s a motivation thing?
Charlotte: Oh, yeah, totally. I was signed up for the Coursera machine learning class a year ago and I didn’t start it. It was like, “Do you want to pay for this? Maybe it’ll motivate you.” And I was like, “I don’t need that. I’m so motivated.” Then I just never did it. I’d probably be more motivated to learn machine learning if I got paid for it.
Max: One of your comments you mentioned earlier that I find really interesting is that, just by being in this career, your friends were saying they were enjoying it for one, but also learning on the job. One of the things that attracted me career-wise [to software engineering] is that you’re getting paid to learn stuff.
Charlotte: Yeah, that’s pretty sweet. Sometimes I really enjoy my job which is a new phenomenon for me. I’ll be like, “Ha ha ha, this is so fun.” And then I realize that I’m getting paid to learn stuff and do cool things. Obviously it’s not all us all the time because that’d be insane. But, yeah, it is pretty sweet. It’s not disappointed so far.
Max: It’s mutually beneficial for employers. As the employer you’re getting an output from your employee doing whatever it is they need to do with the information they’re gathering. But for the employee, you’re getting paid to obtain more skills, which inherently makes you more valuable on the job market. That creates a weird dynamic between the employer-employee, which is that you can price yourself out of your own job.
Charlotte: People end up moving around like every year and a half or whatever.
Max: Yeah, this phenomenon’s more exaggerated in San Francisco…but do you mind, if not sharing your own experience with that, do you mind sharing your experience with your peers about how often people job-hop these days?
Charlotte: It’s pretty common for people I know to leave their job after a year if they don’t really like their job. And that’s totally acceptable, whereas in other industries it’s like, “Oh, that’s pretty bad. You better stay in your next job for three years.”
I’d say if someone has been in a company for more than two years, people start to say, “You’re not living up to your potential. You could be doing something cooler.”
Max: This is such a uniquely San Francisco thing. It’s also pretty unique to engineering too. Peers of ours that who are not in engineering tend to have longer job tenures. And not due to engineers getting fired or anything but due to pricing.
Charlotte: The culture of the industry. I have some friends who work at engineering jobs for a year and a half, and then are like, “I don’t really like my job right now. I want to teach myself some random stuff, and just do something cool.” Then quit and can get another job whenever they want if they’re good enough.
Whereas I feel like in consulting or more traditional industries if you quit without having a job lined up people will think you’re a loose cannon and are very skeptical.
Charlotte: I think my first job I was only there for eight months. I just realized that the corporate consulting life was not really for me in all regards. Values-wise, work-life balance-wise, and skills-wise.
I wasn’t really getting that much out of it. I went to another job that was public policy. I feel like I was just like, “Oh, I like this aspect of my job, so I’ll just follow that and get another job that’s more of that.”
When I was switching to my second job bootcamps were not very well-known. It never even occurred to me to do that because I thought they were like, a scam. I didn’t know anyone who had done it. I thought, “Oh, I didn’t study CS, so I can’t be a software engineer. So I’ll just do data stuff because I have those skills, you know, and it’s kind of cool.”
Max: Do you think that people in the same situation you were in–month 8 of your first job out of college–are there skills that you think these people could learn or teach themselves before quitting or after quitting to prepare them to have a career transition?
What did you learn on the job? Are there things that you could have learned on the job that would have benefited you?
Charlotte: I learned enough data skills to get another job that I liked more.
There’s so much stuff you can do to teach yourself. I would say spend a few hours after work, so one or two nights a week teaching yourself.
A lot of companies like to see that you took an initiative in teaching yourself. It could be hard to teach yourself how to be a software engineer after work, but I don’t know. One of my old coworkers transitioned into being a data scientist from our old job which seems like a pretty reasonable transition, you know? Data analyst, data scientist, data engineer, software engineer.
Max: Before we started recording you were telling me about your experience after getting your first engineering job. You were sharing how bewildering it was in some ways–do you mind sharing what that experience was like?
Charlotte: At Hack Reactor I learned a lot very quickly, but it was only three months long. I came out knowing enough to get a job, and with the skills to learn what I needed to learn.
I jump into the job and was like, “Oh, I guess in software engineering there’s no onboarding. And I’m just expected to start doing work and I have no idea what I’m doing.”
The first few weeks I was just like, “Oh, my god. Someone’s gonna find out that I have no idea what I’m doing, and then I’m gonna get fired.”
I was talking to my other Hack Reactor friends, and I realized that they were all in the exact same experience. After a few months we’re all doing fine. It’s a fire hose of information. And it’s insane for the first month or two–you learn enough that you can do your job well.
Max: What kinds of “training wheels” so to speak do employers have in place to help? If not provide a formal onboarding where they give you training about specific things, at least keep you from bringing down the business in your nightmare scenario?
Charlotte: Oh, it would be very hard to bring down the business. I still don’t have access to the production environment where the actual customers use our software. It depends on the company.
We have sandbox and staging environments, separate of production. Worst case scenario, I mess up one of our sandbox instances which is not the end of the world.
I didn’t realize that for a month or two, so I was terrified of pushing bad code to master. By push out, I mean it is merged. Obviously, I can’t push to master. I would break production, and then I realized that we had a whole release cycle where I could break master, but whatever. And then, it would go through QA, and then QA would find the bugs and then fix them. If they missed the bugs then I would break prod. But obviously, we have good tests, and that rarely happens.
Max: What I’m hearing and what you’re not pointing out explicitly that I’d love to point out explicitly for people is that it sounds like there totally are training wheels of some kind, including the tests.
Charlotte: There are definitely many barriers to a new person breaking production. But it depends on the company.
I have friends who are in companies that don’t have tests which is terrifying. I read something on reddit that was…did you read the thing about the guy who accidentally wiped the prod database?
Max: No, but I’m sure this has happened a lot :)
Charlotte: Apparently in the onboarding instructions it was like, “Paste in this command, and then hit enter in your command line, then change this database name to your local one.”
And he wiped the production database. And it’s like, well, that’s not really his fault.
Max: Oh, no. No, certainly not.
Charlotte: Thankfully that would never happen in my company or I would’ve probably deleted the prod database by now :)
Max: It sounds like certain best practices are being followed for sure.
Charlotte: Yes, thank God.
Max: Do you think that those safety precautions in place where you work at Blend are there because there are more engineers, perhaps?
Charlotte: Oh, totally. I’m sure that when they were four engineers that was not the case at all. Those things have been in place since I joined, but I joined four years into the company’s existence. I think it’s definitely more common for smaller startups to not have as many tests.
Max: Did Hack Reactor cover tests or testing?
Charlotte: They do test-driven development, which means you write your tests before you start coding. Then you would write the code until it pass the test. I highly doubt anyone does that at a real job because usually the spec will change a little. It won’t be exactly what I thought it was gonna be when I started. I would waste so much time if I wrote my tests first. But, yeah, we do testing.
You don’t have to do it in your big thesis project, which is what you devote a month to. I think we did a little bit of testing just to say that we had done testing, but it was mostly server testing not like, client testing.
Max: Do you mind sharing what are some of the different kinds of tests out there?
Charlotte: Sure. An example would be to render a component and make sure it looks like what you want it to look like.
A unit test might test the utility function that’s being used in the component.
Back-end tests are testing your back-end functionality, and end-to-end tests, you spin up an instance of your app click through it. By click through I mean select elements based on their class, or based on their ID, or whatever, and fill them in, or click on them, making sure that you get the expected result.
Charlotte: Definitely, but they’re so nice when you’re making a change. You can just run your tests and know that you didn’t break something. I can’t even imagine coding without tests now. It’s horrible.
Max: Are they a stress control mechanism?
Charlotte: I think it’s more a “less bugs in production” control mechanism.
Our code is well-tested but there are some bits of old code that don’t have tests. One time I modified some of it and I did all the manual testing I could think of. I was like, “All right, pretty sure this is fine.” And then I broke something because there was something I hadn’t thought of. If we had tests, they would have caught it. I like tests.
Max: There’s a book called “Working Effectively with Legacy Code”–it defines what legacy code refers to and their definition of legacy code is any code that does not have tests. Tests are super important in life-or-death software where you’re making software to run on airplanes or heart rate monitors. In those cases the value of tests is self-evident.
If you need to make some change to a heart rate monitor’s software you wanna be dang sure that you don’t stop anybody’s heart in the meanwhile. But by-and-large the type of jobs that folks out of the Hack Reactor are getting are not working on heart rate monitors, I imagine.
Charlotte: I’d hope not.
Max: Do you mind sharing what you’re doing specifically with Blend or what your peers are doing generally at the other jobs they’ve gotten?
Charlotte: I am pretty full-stack. I’m on the UI team, but I’ve rotated a little bit when I started, so I was on some back-end teams. Now I’m mostly working on UI infrastructure, which has been really cool.
I’d say that most people, probably the slight majority of people end up doing front-end stuff. I think Hack Reactor definitely prepares you for front-end way better than for anything else. I know CS degrees often don’t teach people front-end at all.
It’s a lot easier to get a front-end job out of the Hack Reactor, I think, than to get a back-end job. People that studied CS are probably way better prepared for back-end jobs. I know one or two people who have pure back-end jobs, but they taught themselves a bit of extra stuff after [Hack Reactor]. I’d say a majority is full-stack or front-end.
Max: Do you think there’s any kind of trade-offs in working on user interfaces in the front-end versus working on database or Python scripts like you are mentioning on the back-end? It sounds like you’re getting some of both.
Charlotte: I think it depends on the person. Some people at my job just love front-end. I think it’s so cool, and they’re balling at it. I think it just depends on the person.
Max: Do you think that it’s getting easier to develop for the front-end?
Charlotte: Oh yeah, although I have very little perspective since I started a year ago. When I started our whole front-end code-base was in Angular 1.5. We’ve since transitioned to React which is just so much easier to use and so much more intuitive and easy to test. You can go a lot faster with it. Before angular there is Backbone, which is even more unwieldy. I think it’s just getting easier and easier because the tools are getting better.
Max: One of the things that I find really interesting on the front-end are companies that provide snippets of code to be included in other companies’ webpages to either track analytics about how people are interacting with your website, or even to incorporate and pull in content. For example, these guys aren’t super ethical but the Taboola or Outbrain guys–these are two companies that add content beneath CNN.com articles. They have those “Three weird tricks, lose belly fat” or whatever.
Charlotte: That’s interesting.
Charlotte: I’d say so. React is a framework but it’s easier to wrap your head around I think.
Max: What experiences did Hack Reactor give you around creating your own websites and making them visible on the Internet to be able to be shared with, I don’t know, your parents?
Charlotte: We did a lot of creating tiny apps and we deployed a fair amount of them on Heroku or AWS, but it was a little more ambitious. Heroku is so easy especially if you’re making something that one person will use a month.
Max: They have a free tier of pricing?
Charlotte: Yeah. We did a lot of building little apps from scratch which I think is kind of rare. A lot of people hadn’t actually sat down and just made their own little express server, started their own React app, etc.
Max: Did you guys also use GitHub at Hack Reactor?
Charlotte: Oh, yeah.
Charlotte: They didn’t really teach us how to use Git. It was like, “teach yourself how to use Git before you get here because we’re not gonna waste time doing this, if you don’t know it then you’re screwed.”
Max: Do you have a concise way to describe what Git does or what purpose it serves?
Charlotte: Version control for your code. You can commit a change and then you’re like, “Oops, I don’t want that,” you can roll it back, and then push it up to GitHub where other people can pull it down and make additional changes. I don’t know how anyone functions without it!
Max: What are the hardest aspects of getting familiar with Git?
Charlotte: Well, for learning resources I don’t know. There’s a lot of good online documentation. I think that the hardest part is getting a good workflow going with your team to make sure we’re all on the same page of how to use it.
Max: In the the six months that you’ve been at Blend so far you’re telling me that when you started there were 35 engineers?
Charlotte: Yeah, 38-ish.
Max: And six months later, how many engineers are there?
Charlotte: I actually don’t know. We had 17 interns this summer. When I started, hiring was not as rapid, but now we get new engineers every week or two weeks or so.
Max: What types of problems arose from having to onboard so many people into the business?
Charlotte: I think the main thing that I can think of is infrastructure. We’re bombarding our Jenkins jobs with so many more runs because we have so many more engineers that things break a lot more often. I’m sure managers spend more time answering questions and doing code reviews than they used to. But people seem to ramp up pretty quickly.
Max: Are there a set of tools that management uses for communicating what needs to be built or fixed, and ranking their priority, or who’s working on them?
Charlotte: We use JIRA, which does exactly that.
Max: This is in pretty sharp contrast to how things probably were managed in economic consulting?
Charlotte: Oh, yeah. In consulting it was more like everything is priority number one. If you have a task then do it immediately because the client wants it. Then my other job was like… I would get a weekly email from my manager after we had our weekly meeting with the things I was supposed to do before the next meeting.
Max: Are there any other contrasts you can think of, to share for people who might be in the position that you were in? Just having graduated and not knowing yet that they wanna be engineers, or software engineers? About how much greener the grass is on the other side?
Charlotte: I think one main thing is that, as an engineer, you can start right out of college, and if you’re really good then you’ll rise up the ranks. More often there is a level you can get to and you can’t get any higher without getting a PhD, or getting an MBA, or some kind of master’s. I definitely prefer the engineering way. Grad school’s probably a waste of time, you know.
Max: Back to earlier in our conversation, it’s pretty cool getting paid to learn stuff versus the alternative.
Charlotte: Yeah, definitely.
Max: Well, thank you Charlotte. This has been freaking awesome :)
Charlotte: Thanks for having me.
Max: I hope we get to do it again! Cool.
Charlotte: Sweet. Goodbye.