
Ask HN: Self taught programmers without CS degree working at one of the big 5? - employee123
Self-taught programmers without CS degree working at one of the big 5 Google, Facebook, Apple, Microsoft or Amazon. Kindly share your experience, how you did it &amp; how happy you feel.
======
skylark
I don't have a CS degree and currently work at Google.

I used a bootcamp to get my foot in the door. I studied college textbooks in
my spare time for a few years to fill some of the gaps in my knowledge, and
then hardcore interview prepped for a few months leading up to my interviews.
I got accepted into all of the tech giants and ultimately decided to go to
Google.

This is by far the best job I've ever had, and I couldn't be happier with how
this all panned out.

People vastly overestimate how much you need to know to get a job at a tech
giant. Not everyone at Google is a computer science or math wizard - in fact,
the number of jobs that require people with highly specialized knowledge is
quite low. Most people are doing the same app development you'd do anywhere
else.

~~~
EnderMB
Out of interest, how did you go about actually getting the interviews?

Unlike you, I have a CS degree, and I've applied to the top five a few times
now. Microsoft and Amazon contacted me, and after I agreed to an interview
they both went quiet. Facebook never got back, and Google rejected me twice
after sending in my CV.

I've tried a number of ways, through LinkedIn, direct applications, and even
asking face-to-face at conferences, but it feels like I've angered some
almighty tech god because none of them seem remotely interested, or are happy
to tease me with an interview, only to ignore me after I reply.

I've always assumed that if it's this hard for me, then it must be as hard, or
harder for others, so it'd be interesting to hear about the actual process of
getting an interview from your perspective.

~~~
skylark
I'm honestly not sure what to tell you - the recruiting side of things is so
opaque that I'm not sure what you can do to get past the initial screen. I
personally had a strong referral at Google, but everywhere else I applied
through the front door and had no issues.

If I were to take a guess, I'd say that I got a bit lucky - right place/right
time sort of thing. I had a few years of experience under my belt, which
separated me from the new grads, but not so many years of experience that I'd
be competing with senior engineers. On top of that, I applied for front end
positions, which I think tech giants have only recently started to value -
this has left a bit of a void that needs to be filled, which possibly made it
easier for me to get the initial recruiter calls.

My resume was also relatively strong for someone with two years of experience.
Solid university, strong GPA, and at my previous jobs I always tried my best
to wiggle myself into taking on large projects and write tooling to make
everyone's lives easier. This gave me a lot of stuff to talk about during the
interviews and made for some impressive looking bullet points.

------
giaour
I don't have a CS degree and work at Amazon. I picked a specialty completely
unrelated to academic CS that's generally welcoming of beginners (PHP
development).

After getting a very entry level PHP job based on reading a few O'Reilly
books, I spent a couple years getting progressively less shitty jobs with
progressively higher pay and levels of responsibility. By the time I got an
interview with Amazon, I was a legitimate PHP expert. I read a book on
Amazon's leadership principles and worked through Cracking the Coding
Interview to prep for my interview loop at Amazon, and I'm pretty sure only
one or two of my interviewers knew I didn't have a CS degree -- the rest
didn't look at my resume.

Now that I've been at Amazon for two years, I don't think any employer would
care about my lack of a CS degree. I'm certainly happy to be making several
times more than I did in my previous career (French teacher).

------
bsvalley
Self taught programmer WITH a CS degree, worked at 2 of the companies you
mentioned. I got a master's degree in CS a while ago. I still call myself a
self taught programmer because I started learning as soon as I started
practicing CS at work. A degree is like a passeport, hard to move around
without it and people assume you do have a passeport because it's easy to get.

So, it could be just a memory exercise. If you practice on leetcode and
memorize about a 100 different problems, then you should be able to get in any
of these companies (as illustrated by other people here).

Last but not least, to really answer your question, you basically feel
pressured to deliver a lot in a small period of time. Not once, not twice,
always. You get judged a lot on your abilities and at the end of the day, you
still work on products that solve very basic problems - web app, mobile app,
e-commerce, social, etc.

It's all about fear and ego. Was I able to work at one of these top companies?
Am I the smartest employee in my group? Is my annual package bigger than my
friends packages? Am I wearing a t-shirt of my employer during the weekends?
Things like that... from experience, you should be hunting for a much bigger
opportunity in life. Go where things don't exist yet and don't get distracted
by very successful people like zuck, jobs, gates, etc. who have built empires.
Do you want to work for their missions or yours? Use them as examples, don't
work for them!

~~~
pythonovice
This is the same impression I got by interviewing at the big 5. Everybody
there drinks the Koolaid while building things that have a negative impact on
the world

------
Bahamut
I start at Apple tomorrow - unfortunately I can't really say much about it
except that my industry experience and experience interviewing with a myriad
of companies helped prepare me for the interview process at Apple, although
Apple is pretty intense as far as interviews go (I only study interview
failures).

While I am self-taught and without a CS degree, I did spend 4 years at a top
15 PhD program in mathematics (UIUC), and have undergrad degrees in math &
physics.

After leaving grad school, I was desperate for any career track job - after 2
years of fruitless job searching, I got fed up and started teaching self
whatever skills I felt I needed. Observing lots of web developer positions
open, I decided to target programming skills. Half a year after then, I got my
first job as a frontend web developer. Turned out I loved the work, and
invested a lot of hours outside of work investing in myself to improve my
skills. I also was introduced to the world of open source, and guided to
contribute. Fast forward to today, I have 4 1/2 years of web development
experience, predominantly frontend but about two years working across the
stack. I have architected frontends for most of my career, as well as done
some major open source work.

~~~
ud0
Congratulations! as a front-end engineer, did you also have to master
Algorithms and Data Structures to be able to get into Apple?

------
dsacco
To preface my answer: I don't work at one of the companies you mentioned, but
before I joined a graduate program I didn't have any undergraduate degree and
I still worked in the industry just fine. I am reasonably certain I'd be hired
at at least one of them if I tried, and I've been invited to interview at one
of them a few times by a specific team.

It's going to be hard to be hired at one of those companies without previous
experience, whether that is through academic accreditation or through relevant
work experience. So if you're already working as a developer in some capacity
that's a good first step.

The knowledge you're missing (specifically for the interview process) comes in
two flavors: breadth and depth.

In terms of breadth, you want to understand databases (applied set theory, you
can focus on RDBMS), networking, computer architecture (including latency and
memory), and system design.

In terms of depth, you want to dive into complexity theory, algorithms and
data structures. You'll want to know data structures and algorithms such that
you can both implement them and reason about their asymptotic complexity.
Specifically, know data structures (arrays, linked lists, stacks, queues, etc)
and algorithms (searching, sorting, graphs, etc) and know their respective
complexity classes.

On a practical note, you should practice whiteboard coding for implementing
the foregoing as well as 1) testing your code and 2) incrementally improving
it (i.e. get comfortable writing a reasonably quick solution to a problem,
then grappling with it to improve the approach and make it faster). You'll
also want to practice mapping problems to the algorithms and data structures
you've learned.

Functionally, in an interview you'll be doing the following:

1) Receive problem,

2) Think about the problem before diving into it, and map the problem to a
first order solution,

3) Test the solution to reasonably account for edge cases,

4) Now improve your solution's complexity for time or resource requirements.

I can't comment on how happy the working environment is, but I'm familiar with
folks working at at least two of those both with and without CS degrees. It's
not at all an insurmountable hurdle; the biggest obstacle is taking an
inventory of your unknown unknowns and working through them.

~~~
employee123
Thanks for sharing this, I'm currently using this
[https://teachyourselfcs.com/](https://teachyourselfcs.com/) as a study tool.

------
burntrelish1273
TL;DR: helps, not usually a deal-breaker.

Self-taught programmer here for a long time (later got a CS & Engineering
degree at a UC).

I worked at Trimble, Stanford (with IITians) and many other Fortune 500 shops
as a consultant without a degree. No problem.

The only thing a degree really solves it tells HR "candidate completed some
hazing ritual, with a smattering of learning how to learn."

Some people look at degree as a pedigree, but it's mostly BS (and expensive).

The goal of certifications and degrees should be based on whether it's
required by a specific industry (ie professional engineer) or job role (ie
doctor).

