Alli Smith is self-taught software engineer who crowdfunded a loan for living expenses to learn how to code. She chats about her motivation, her struggles, and being a woman in technology.
Bootcamp Career Corner with WeFinance is a regular series that looks at unexpected (or expected) life experiences and how people have adjusted around them.
Are you thinking of teaching yourself how to code or doing a bootcamp? WeFinance for Bootcampers is the fastest way to crowdfund a personal loan for living or tuition expenses.
What were you doing before you took time off to learn programming?
I was doing web security — basically clients would hire my company to hack into their web applications and to tell them what their security vulnerabilities were.
What gave you the motivation to learn web development?
I wasn’t really happy doing security. Whenever I did the things that were closer to coding, I found that more interesting.
Even though “web security” sound sexy and cool, it didn’t pay as well as software developers.
Learning programming was actually something my firm at the time suggested. I mentioned that I wasn’t very happy with what I was doing and questioned how else I could add value. I reached out to some friends who were programmers, who were willing to help — I found out a ton of them wanted to help me! Given this, I decided to try and learn programming without doing a coding bootcamp.
Did you learn everything completely from friends?
I used some online resources but I didn’t go through and complete everything. For example, I did parts of Udacity and Coursera effectively as a study guide. I would only go through the lessons that were useful for me.
The moment I felt that my learning was slowing down and that I wasn’t gaining as much out of it, I’d skip through it. I’d skim through the concepts that were being covered and would see if I could grasp the concepts quicker through sources like Wikipedia.
I had friends suggesting projects to work on; they knew what I was working on and what I needed to learn, basically “here’s a thing to make, so you can learn x.”
I heard that a problem with some online programs is that they cover concepts but don’t help people apply them through projects, how true was that for you?
Udacity has actually changed this recently with their Nanodegree programs where you essentially only do projects.
Did you consider the Nanodegree programs?
I considered it when i was learning; I was a bit too early though. They had a web developer nanodegree that was mostly design focused (HTML/CSS), which wasn’t really what I was looking for.
At the time, I thought I wanted to do Android Development, so I considered the Android Developer Nanodegree but I wasn’t ready so I didn’t — I’m glad I’m doing web applications instead of Android though! It turns out I like the backend analytics side more.
Do you consider yourself a fullstack developer now? What language do you focus on?
I would consider myself a backend developer with a strong focus on Python.
I initially considered Java since I was thinking about doing Android development for wearables. I actually went to study hall and was going to find a Java tutorial online and dig into it — the first sentence of the tutorial was completely stupid and wrong and my friends just suggested that I learn Python.
When I started with Python, it just made sense to me and felt right.
Do you think you’ll eventually do Android or mobile development?
It turns out I’m a lot more interested in math and analytics than frontend development.
I know some people like to talk about developers as either builders or problem solvers. The builders are typically people who come out of bootcamps who can make beautiful apps and things look nice and shiny. I’m more interested in the math and algorithm side of it — the problem solver side.
Now that I understand what goes into different kinds of software engineering, I’m more interested in the backend analytics than the frontend.
If someone came up to you and told you they wanted to take the same path, what tips would you give?
So I wasn’t actually 100% sure that I didn’t want to do a bootcamp, bit I figured I’d try to learn by myself first and it worked out!
A big part of that was because I had a support network that was willing to help me as I was learning. I would suggest that they look around to see if they have people who could be able to help them. Even if you’re learning from online classes, you want someone to do code reviews for you since that helps a lot. If you have someone to explain computer science concepts to you, that helps a lot as well.
I would suggest trying to learn on your own for a little bit and seeing how it works. If you find that you’re getting through material and that you have the support network, keep going on your own. If that doesn’t work or if you’re hitting a lot of walls, I would recommend a coding bootcamp.
What bootcamps were you considering?
I was considering App Academy. I didn’t get to the point of applying since I was just self-teaching initially. Even my mentors weren’t sure whether I would make it without a structured curriculum — but I basically had one through my friends since they were teaching me (or directing me towards) what they learned in their CS degrees. They gave me a giant workflow and I basically tried to learn what was on it!
**Have you considered making your own “course”? I could see a lot of people being interested in it!”
I considered it at some point, or making it as a blog post, but I haven’t had the chance to get to it.
The problem with learning online is that it’s hard to know where to look, where to get started, what to do next. Having real life tutoring is so much more helpful than the things you find online.
It depends on what you’re trying to learn and who’s teaching you; sometimes online resources don’t go into the nitty gritty of how things work.
How did you tackle challenges as you were learning?
Mostly it was emotionally difficult. Most engineers will tell you that they have imposter syndrome. When you’re still in the learning phase, it’s worse. Whenever I stumbled on a problem, I’d wonder if I could do it and whether it was for me. WeFinance helpd a lot in this respect since I only borrowed a little bit of money at a time and put myself on a schedule — if I could get through x, y, z by the end of the month, than I’ll either have to get more money or be ready.
Did you consider doing consulting work as a project to speed up your learning?
I didn’t feel I was “worthy” of getting paid. I would do a project that I wasn’t sure if I could do and whether I could complete it. I didn’t want to take on paid jobs that I wasn’t sure if I could deliver on.
What tips would you have given yourself looking back?
I would borrow enough money for longer than I could get upfront so I didn’t have the constantly stress out about about “having to learn this by the end of the month” — in ways it was good since it created a deadline but it caused a lot of unnecessary stress.
Part of me wishes that I had more of a portfolio. I would learn what I needed and abandoned it instead of polishing it and making it something I could showcase. I actually planned to do a portfolio towards the end, when I was doing “practice interviews” with companies I didn’t really intend to join. I was surprised that I found a company that was amazing at that stage — so much so that I wanted to accept the offer. This was before I even finished up the curriculum I set up for myself!
I always tell friends are doing something similar that they should do interviews early. Even if it’s just practice interviews with developer friends, I think it’s really important to get into the mindset of presenting your thought process. Doing this also greatly improves your confidence, which can be lacking if you’re self-taught.
People are generally ready a lot sooner than they realize, imposter syndrome is a real problem in this case.
Was it hard to position yourself when you were job searching?
The first draft of my resume was horrible. The most helpful feedback I got from friends was to really ask myself “what story am I trying to tell” and to tailor my resume around that narrative. “Ok, I’m this person, look how much drive I have, look that I’m a self-starter.”
Interviewing and preparing was awkward. I tried faking the confidence and focused on how fast I was learning as the narrative — not how I’m really experienced.
In reality, this actually turned out to be the type of person a lot of startups really wanted! I got a lot of offers from startups because they were looking for generalists, people who weren’t necessarily skilled in a particular area, but could learn/adapt/advance very quickly and learn new technology — people who could change. In this way, self-taught people actually end up really good at startups.
Did the interview process go pretty smoothly?
Yep! It went a lot better than I thought it would go. I pretty much got offers from everywhere.
Is it hard being a female developer?
It’s hard for me since I’m a female AND I have a non-traditional background for a developer.
I was judged by a few companies but I initially chalked it up to practice interviews. They were having trouble hiring someone and I was recommended since I was self-motivated and a quick learner. When I went in for the interview, they were super condescending, asking me things like, “is it ok if we talk technical to you? Do you know what a git request is?”
I was super tempted to just walk out. They turned around mid-way through when they started asking me technical questions — seeing that I knew my stuff — but they were still condescending and rude to me. Hired (a startup recruiting platform) I used sent a follow-up email and asked me what I would rate them — if it’s under 5, they’ll tell the company I’m not interested. Someone from Hired reached out since they noticed I rated the company low, but, apparently, the company rated me highly and thought I would be a good fit.
There was another company that was initially interviewing me for a test engineer position. I was interested since I thought it would include analytics, but it wasn’t necessarily something I wanted to do. After interview with the head of test engineering, I could tell he was confident in my abilities. Ironically though, the engineers on the team automatically dismissed anyone who didn’t have a computer science degree — they literally walked into the room and tried to talk me out of working there (“we work until midnight every night!”). I ended up getting an offer bu the other engineers were mad about it.
I literally went back to the company and told them that I will do a second round of interviews — even though I already had the job offer in hand — because I didn’t want to work on a team where I didn’t have everyone’s respect. I, obviously, didn’t end up going with them despite getting the job offer again.
What was your experience with WeFinance?
I had a really good experience! It was a smooth transition and the team was very helpful in handling the loan (which was basically just a loan between friends). It was great because it took the technical work out of the transaction and simplified it — sort of like a Venmo but for loans.
My loan is now in repayment and I love how it automatically makes payments back to my friend without me having to do any work or risk forgetting to transfer funds for a specific month.
What do you look for when you consider financial products?
My main focus is on security, given my background.
Do you think you would use WeFinance in the future?
I would definitely want to use it if I had a friend that was in a similar situation that I was in.
Would you only lend to friends, people learning to code, alum of your college?
I would definitely lend to my friends and a network I support called Effective Altruism. Their goal is to push people to get better paying jobs as a way to increase their ability to donate to better and more charities.
The idea is that you “give what you can” and ideally pledge to donate 10% of your salary to effective charities.
I’ve actually been tutoring and mentoring a few people in the position to learn programming, since it’s a good way to increase your earning potential and increase your ability to do good.