You are on page 1of 25

Welcome

http://www.reddit.com/r/cscareerquestions/wiki/index
General Information
Finding a Job
Salaries
Programming Languages
Recommended Books
Learning to Program FAQ
Guides
A Guide to Lifelong Employability for Tech Pros
Pre-Summer Questions for College Students
Giant list of categorized job-search related submissions
How to Prepare for Tech Interviews
What Every CS Student Should Know About the First Job
Salary Negotiation: Make More Money, Be More Valued
Can you get an internship as a freshman in college: A Guide
Popular AMAs (Ask me Anything threads)
CTO's, Creators, and Co-Founders (AMAs)
I'm the CTO of AngelList.
I'm the CTO of MongoDB.
I'm the CTO of Thoughtworks.
I'm the CTO of KhanAcademy.
I'm the Creator of Ruby on Rails.

I'm the Creator of Google Docs & CTO of Box.


I'm the VP of Software at GoPro.
I was an Engineering Director at Apple.
Software Engineers (AMAs)
I'm a Software Engineer and moderator at /r/cscareerquestions
I'm a Software Engineer at Blizzard.
I'm a Software Engineer at DropBox (Employee #1).
I'm a Software Engineer at Google.
I'm a iOS Software Engineer at Facebook / Instagram.
I'm an iOS Software Engineer at Coursera, previously Apple.
I'm a Software Engineer at Square.
I was the 2nd engineer at Linkedin.
I was a Software Engineer at Twitter and Amazon.
I'm an Android Software Engineer at Secret.
I'm a Software Engineer at Google[x].
IAMA Microsoft Engineer who interviews candidates and recruits at
Universities.
Recruiters (AMAs)
I'm the Director of Recruiting at Salesforce.
I'm the ex-director of Recruiting at Twitter.
I'm a University Recruiter at Facebook.
I'm a Technical Recruiter at LinkedIn.
I'm an ex-Google recruiter.
I'm Dave Fecak, Software Engineering Recruiter of 16 years.

I'm Dave Fecak, recruiter and author/blogger behind Job Tips For Geeks.
Other Popular Posts
I recently got a job at Amazon. Here's what went down.
New Grads 2013: What was your offer? Hard numbers
I'm Scott Hanselman, Author, Professor, Programmer, and speaker to 500k+
developers worldwide. AMA!
FAQ
Getting Started
What is a typical work day like for a programmer/software engineer/etc?
Getting into computer science/software development without a CS degree

Also, read about discrete math, data structures, and algorithms. Read a
bit about number theory and encryption. Watch some of the Stanford
or MIT CS course videos online. Or, take some of the online courses
you mentioned. If you are still interested in CS at that point, then you
might want to consider pursuing the degree.

The standard Reddit answer is not Ruby or Python, because those


are not marketable skills outside of Silicon Valley. Normal rules don't
apply there and there are many more jobs outside of SF than there are
in. In general C#, Java, PHP, ASP.Net,and C are marketable in no
specific order.

Computer Science is a type of Math degree, so it's not like you're


coming from a degree in creative writing.

There are companies who hire people with Math and Business degrees
and teach them to program. I'm not saying they are common, but they
exist. I know of one who's about to start a new class of 15-20. I
personally know 3 Math majors who are programmers there.

The four most important things you need to understand well are data
structures (for modeling data), algorithms (for processing that data),
pointers (to have a vague idea of how the memory is being used) and

recursion (usually more awkward than using loops, but for the cases
when it isn't you'll thank God for that.)
My standard suggestion is to read SICP cover to cover while doing all
exercises. SICP is widely considered the best intro to programming
textbook, its biggest downside is being math-heavy but that shouldn't
stop you. That book is available for free online, you should read the
first few pages and if you don't like it just disregard my suggestion.
As others have likely suggested, learning by project is the canonical
way of learning programming, but it has a downside - there are
concepts that you can't just acquire by osmosis, or derive from first
principles. How I suggest you do it is as follows:
1. Do a project that is slightly out of your reach
2. Improve your programming on the way
3. The second you feel like you're reaching a plateau, drop everything
and learn some new concepts from a textbook.
4. GOTO 1.
Also, a lot of people disregard the importance of learning theoretical CS, but
not doing so constitutes a dead-end in the middle to long term. Even if it is
not immediately evident why you should learn something, try to learn it
anyway. I've had some extremely important insights pop from places where I
least expected them (ex. class on database implementation made me
understand SQL performance, class on highly abstract concepts of lambda
calculus made me understand functional programming).
Can I switch from my current unrelated career to computer science/software
development?
Go to code academy or khan academy and learn for free. Then write a ton of
code. Build things, make them work well, figure out how to sculpt the code so
that it's easy to add new features and configure it the way you want. Build
something awesome and open source it. You can build up your resume in this
field without ever having an actual job.
How important is a CS Bachelors to work in the field?
Suck it up and get the degree if you're interested in software development.
The truth is it will get you into software development a lot faster and with
better companies than going to a boot camp or doing something on your
own. While I know people who have gotten jobs without a degree, they have

often needed to work twice as hard to convince the hiring manager that they
can do the job.
In IT you pretty much need certificates to get hired/promoted. In SE, there are
no good measures of software development aptitude besides writing
software.
Certificates are really more of an IT thing from what I understand. If your end
goal is to be able to operate and manage a set of products, then I can see the
certificate route being a viable solution.
CS and software engineering typically do not have much use for the
certificate model, because you get certified to handle predictable problems in
a structured way, whereas programming is more a free-form problem solving.
It's not strictly necessary but it makes it a million times easier to get your
foot in the door, and helps improve your value in the long term.
Being self taught usually leaves a lot of holes in your expertise. You list off
what languages you know and that's usually the sign of a very novice
programmer. What do you know about OO principles, algorithms, data
structures, and design patterns? Successful webdev requires having these.
There are plenty of outliers here who have succeeded without degrees, but
you must understand that they are outliers, either in terms of ability,
dedication, or just plain luck.
Self teaching yourself a language is pretty hard. I would be curious how well
you really know java if you think you can side step college already. It's easy
to look at books, tutorials, and run through code and say, "Oh yea, that
makes sense", and then when you are in an interview room and they start
asking difficult questions or give your something to program you realize how
unprepared you are. I actually purposefully didn't put any languages on my
resume unless I had invested a couple hundred hours in real programming
with them first.
Some questions I got and some of my friends got in an Amazon interview
about Java were, "Whats the difference between final, finally, and finalize in
Java?", "How does garbage collection work in Java?", "Whats the difference
between HashMap and HashTable in Java?", "Whats the difference between
String, StringBuffer, and StringBuilder?". These aren't hard to figure out with

a Google search, but you aren't going to have that luxury in an interview so
you had better know the language inside and out.
Let alone more general questions like: "Tell me everything you know about
HashMaps and then implement a simple HashMap", "What is the range of a
32 bit Integer", "How do you modify a HashMap so that it can pick a random
element in O(1) time?", "How do you rotate a 2D matrix 90 degrees?",
"Implement quicksort/mergesort", "What are the 4 famous/common simple
recursion functions", "How do you find the biggest substring palindrome in a
string in O(n2 )?", "How do you reverse a linked list?"
If you cannot answer these questions, and you don't have a good grasp on
the underlying concepts there is no way you're ready to side-step college.
Also HTML doesn't really count as a programming language, and it is pretty
much implied if you know JQuery, CSS, or PHP. Also JQuery is of course a
framework of JavaScript, but for brevity that is fine. I am surprised you didn't
write down SQL? You really need to learn SQL and get familiar with a MySQL
asap, especially for web coding.
I guess my point is that going to school and getting a degree will help you get
used to a lot of the stuff you will need to do well in an interview, even if it
doesn't feel like it when you are in the classroom all the time. At my job and
my friend's jobs (as best as I can tell), people without degrees or years of real
world experience go to the bottom of the pile (internships help a lot as well).
Not to mention they have to quiz self-taught programmers extra hard
because they don't want to accidentally hire someone who thought that
reading a programming book makes them a programmer.
From what you have said it's probably possible for you to get a job or do
some freelance web development (though you REALLY need to know MySQL
and SQL first), but if you ever want to do anything besides web coding, the
easier and better way is to tough it out and get a CS degree at a university
(might as well go to community college first, it's easier, cheaper, and it'll
make it easier to get good GPA at your university when you transfer).
Computer Science Degrees and School

Does it matter where I go to school?

Anyhow, the consensus here is that the quality of education among any
accredited undergraduate programs is pretty uniform. The two big benefits of
higher ranked programs are connecting you to a more ambitious or
connected group of peers, and better connections to professors and research
opportunities if you choose to pursue grad school.
Google, Facebook, Amazon and Microsoft also have a reputation for recruiting
much more heavily out of maybe the top 5 or 10 US News-ranked schools.
Lucrative albeit stressful jobs working on high frequency trading algorithms
on Wall Street might emphasize pedigree even more.
Which universities do the "big" tech companies recruit from?
Tier 1
Stanford
Berkeley
CMU
UIUC
UT-Austin
GaTech
MIT
UMich
UW (washington)
UCSD
Tier 2
UMD
Purdue
Cornell
Rutgers
USC
UCLA
Univ of Ga
Duke
UNC
VaTech

UVA
UPenn
PennState
Univ of Wisc @ Madison
RIT
RPI
Columbia
NYU
How do I choose between computer science, computer engineering, software
engineering, etc?

Computer science is software-focused but more abstract than the other two.
You'll learn a lot more about the mathematical foundations of good software
than on the other two tracks. Key classes that you might not find in the other
two include discrete math, algorithms and data structures, and compilers.
This is the track to follow if you want to do fundamental research on software,
if you like a mathematical way of looking at things or if you want to feel like
you know what makes good software from top to bottom.
Computer engineering will teach you the nuts and bolts of software
development along with how to build and test digital electronics. It's a great
degree if you want to get into embedded or systems programming. Big
employers of these types of graduates include Intel, AMD, Nvidia and other
companies that do both hardware and software.
Software engineering is computer science, minus some of the theory, plus a
lot more emphasis on how to work within a real organization to build and
maintain good software. Good if you want to work on big budget software
projects in particular, have an interest in project management or prefer the
craft to the theory.
Seems like my peers always know more than me. Should I be worried?
No.
I don't have a computer science degree, should I get a BS in CS or a master's
degree?
I don't have a bachelor's in computer science... but am looking to get
my Masters in it. Is it too late for me?

The biggest issue with Computer Science is the sheer weight of domainspecific knowledge. If you don't have any CompSci background, you'll
probably have to take so many pre-reqs that you'll be better off getting a
second Bachelor's in Comp Sci.
But if you've got a few years of dabbling and practicing, it might be a
perfect fit for you.
I've just gotta warn you: a lot of people get into CompSci because they hear
that it's full of high paying jobs. That's a loaded myth. Yes, you can make a
lot of money in this field, and yes, people who can leverage CompSci with
something else (like Marketing) are going to do better than the average.
But if you don't actually LIKE doing the work of programming and solving
intricate problems, you're going to have a lot of trouble getting through
school and may hate what you're doing at the end.
Do you already know a good amount of programming and computer
science? If not you're going to have an extremely difficult time.
MS programs often do admit people without CS undergrad degrees but
they'll assume you know almost everything you would have learned getting
a BS in CS or EE.
So to answer your question, if you're passionate about learning this stuff
and already have at least some CS background you should be alright. Just
don't expect it to be easy!
Career Change to CS -- Second Bachelors or Masters?

I recently graduated with a very fulfilling yet very useless bachelors in film.
I've realized that film is not the place for me, and I've discovered my
passion for coding and CS over the past few months. I've been spending
almost every minute of my spare time practicing coding and learning as
much as I can from online resources. Without a doubt, I would like to pursue
a career in CS.
I was accepted into Oregon State's online post-bacc CS degree. It fits my
needs very well because it is intended for people such as myself who have

already completed a bachelors (thus no need to re-take GEs that don't


transfer), is very affordable compared to getting a second bachelors at
another institution, and can be completed in one (very intensive, 60 credit)
year. I'll come out on the other end with a B.S. in CS.
My family, however, has been pressuring me to get a masters in CS. To
them, the masters degree is the golden standard for getting a job. From the
research I've done and from what I've seen on this thread, it seems getting
a masters in CS is not always a great idea, especially if one didn't get a
bachelors in CS. One might miss out on some of the foundational CS
courses offered in a BS and be a worse programmer for it. A masters also
might be too specialized. It seems from what I've read that, contrary to
fields in the humanities, a bachelors in CS is usually the standard in this
field.
I've also considered self-teaching instead of a bachelors, but I really want to
make sure I have all my bases covered and ensure the longevity of my
career, because I've read that some companies, although not all, only hire
people who have a bachelors in CS, and the bachelors should help open
doors for the career search.
One potential downside to the program I'm entering is that because it is
completed in 1 intensive year (4 quarters, including summer), I do not have
a summer break with which to complete an internship, and even while I'm
studying, I'll be living in a smaller town that doesn't have CS internship
opportunities. I've read that completing a side project independently,
putting my code on github, and possibly working for open source projects is
a good way to offset the disadvantage of not having completed an
internship, although maybe that's not a feasible alternative in some
people's eyes. I do have to say that I am a very hard worker who is used to
putting in many more hours than is necessary for class into side projects,
which is what I did during my bachelors. Another potential downside to my
program is that it is an online program, and Im not sure if some employers
would look down on that.
So, to end a very lengthy question... Does my line of thought make sense,
or am I completely off? In your opinion, would a post-bacc second bachelors

or a masters be preferable for my situation? Would the online and


internship-less nature of my degree be too much of a disadvantage?
I obviously want to ensure my future success by laying the foundations of
my education properly. And I also want to be able to argue cogently to my
family why I am making the best possible choice for my future, because,
after all, they are footing the bill!
Bootcamps
What are your thoughts on coding bootcamps like App Academy, Dev
Bootcamp, etc. and the languages they offer?
TL;DR: I don't think the cost of bootcamp is currently justified. If you're
considering one/some and it/they seem oversold/overmarketed, it's b/c they
are. If you're coming in with a good background and real programming
experience, you'll do well (but you're still mostly paying to sit in a room with
students and 1 or 2 pros and sometimes have your questions answered,
assuming you can even make progress on your own without instruction)
the instructor to student ratio (i.e., ACTUALLY on the floor, teaching and
actively answering questions--be sure to ask about this very specifically.
otherwise they might tell you a general ratio of students to instructors which
could include those not actively teaching every day, but developing the
curriculum too. for example, they might give you a ratio that could be a total
average over 2+ locations, rather than telling you specifically about the 1
location you'll be attending. to be even more specific, one should question
how many instructors are on the floor w/ students at all times, rather than in
a backroom working on something. if it seems like they're avoiding the
question, dont know the answer, or aren't being specific, request to visit the
class and sit in the back to get an idea for yourself. If they don't allow this, I
highly recommend not considering the bootcamp. Even if they say no,
politely press the issue-- they're business owners, they want your money (so,
feel free even to let them know you plan on attending, you just want to spend
one day in class to ensure you're making the right investment. this way they
think you'll probably attend if they let you visit class, but you can still pull
out.),

the structure of the education (i.e. are their lessons planned out and
teach a particular way of solving something (and then show you a new
but similar problem and let you figure it out, while providing some tools
(i.e. functions that one needs, questions to ask/try and figure out, and
considerations to make)), or is their style to almost completely let you
figure it out yourself (in which case, why bother paying them?)),

the structure of insutrction (i.e. is there method for managing the


queue of students with questions? do instructors actually stick to this
flow, or do they go out of order and simply answer the question of the
next person with their hand up? well, what if 5 people need help at the
same time? are they all going to physically line up, or physically keep
their hand up for several minutess while the instructor goes to each of
them? then there needs to be a queue. At the bootcamp I went to, the
instructors forgot to follow it practically all of the time, it was
meaningless, and therefore the order in which they answered student
questions was out of order.)

the classroom environment, in my opinion, shouldn't feel like too much


of a college experience / college party. it's awesome that people have
a great time... but it shouldn't be noisy, have games in it... noise and
distractions should be at a minimum. the environment (in my opinion)
should be minimal, zen, and surrounded with coding concepts on the
wall (such as print outs, posters, etc, on stuff like design principles,
SOLID, data types, best functions for basic examples of
problems/challenges/concepts, best practices,). It should be a learningrich environment, not a fun/party-rich environment. I'm done with
college, I'm not interested in fun and games, I need knowledge and
skills and I need to learn them quickly, efficiently, and
comprehensively. (for the record, I experienced none of these latter
beneficial things, they're my idea after having the experience I had,
which was pretty much the opposite of these good, learning focused
things (i.e. no posters, no structure, too much laughing, games,
distractions))

And then I came across CodeIgniter. After a few tutorial videos and
ebooks, now I understand the basics of MVC and can create a database

CRUD system or basic e-commerce site (though I had not learned


about it in bootcamp at all-- I quit before they went over MVCs).
Are Dev BootCamps worth the money?

I am currently applying to several bootcamps and here is what I've found


you'll want to look for in a school:
Length of course - if it is a 3 month or less course, and they do not
have extensive pre-work, skip it. Most of the pre-work I have seen gives you
familiarity with the languages you'll be using in the course.
Do they touch on data structures and algorithms and how/where to
implement them? If not, you WILL need to study these on your own. In fact,
even after touching on these, you will still need to study them on your own.
Even more, you will be studying for a good chunk of the rest of your career
as technologies change rapidly. So many people are starting to
prosthelytize that Go is the new messiah, and you may see the shift in 2-3
years from Ruby to Go. Maybe not. Who knows. But after you learn
Ruby/JS/Python at your chosen school, you're going to need to pick up new
languages.
Is it full stack? If so, you're good. If not, ask yourself if you are OK
with being specialized. However, from what several developer friends/coworkers/mentors have told me, regardless of which area you end up in, a
healthy knowledge of the full stack will make your life easier.
Be prepared to work your ass off. Like, say goodbye to anything but
coding. No Game of Thrones, no benders, nothin.
My top choices right now, due to costs/location/etc. are the following:
www.turing.io[1] - The Turing School of Software and Design - currently my
top choice due to the length, the topics covered and the reputation of it's
founder Jeff Casimir. 7 months long.
http://www.galvanize.it/school/#main[2] - gSchool - program designed by
Jeff Casimir. Not sure why he left, but it should still be a good program. 6

months long.
www.makersquare.com[3] - MakerSquare - In Austin, surrounded by tech
companies, has a great placement rate and due to it's length, makes you
learn the language before attending.
As far as a lot of the complaints I see from devs and those with CS degrees,
I have the benefit of coming from a position where I was doing some QA
work along side both self taught and those with traditional degrees....the
code these guys write is indistinguishable from each other. As well, many
people with CS degrees say they only use about 10% of their knowledge in
web dev. Yes, you probably won't be able to develop amazing search
algorithms or revolutionize the industry with some new backend
technology, but you will be able to write code that is useful and
functional(and having QA'd a lot of code from those with CS degrees, they
should probably take the courses too). Frankly, I see these bootcamps as a
way in to an industry that is desperate for developers.
I would love to see the naysayers actually attend an open house and
possibly mentor students/graduates before making rash assumptions on
the validity of these programs. Yes, some schools put out crappy
developers, but if you took the time to investigate which schools actually
prepare you properly, you might just find some amazing developers who
can seamlessly fit in to your organization.
Experiences with Programming boot camps?

To me they are a little bit expensive 9k-17k and you might have to resign
from your job.
Maybe you can wait for Udacity's nanodegree in the fall. A lot cheaper i
believe 6-12 months @ 200/month so in the range of 1.2k 2.4k https://www.udacity.com/nanodegrees[1]
In the meantime continue learning. I suggest
Headfirst Java (book)

Headfirst Design pattern (book)


Cracking the Coding Interview(book)
Data
structures http://dept.cs.williams.edu/~bailey/JavaStructures/Book_files/JavaS
tructures.pdf[2]
https://www.coursera.org/course/algs4partI[3]
https://class.stanford.edu/courses/Home/Databases/Engineering/about[4]
https://www.coursera.org/course/hciucsd[5]
https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs169-1x-engineering1377[6]
Best of luck
Sample CS curriculum for UC-berkley
http://www.eecs.berkeley.edu/Programs/Notes/sample-curricula-CS.pdf[7]
Considering you have finished a engineering degree, all you have to do is
focus on CS stuff
Question to graduates of Coder Camps, Dev Bootcamp, MakerSquare, and all
other similar camps

1.

Learn to program before boot camp. With all the resources online
there's no reason you can't learn to program on your own. This ensures a
whole bunch of things. It ensures that you actually like programming. It
ensures that you can learn on your own which will be important to your
career. It will let you figure out what branch of software engineering you
enjoy. It will teach you to think logically if you don't have a STEM background.
It will keep you from spending $20k if it turns out you hate programming.

2.

Figure out what type of development you like. Most bootcamps are
focused on webdev because that's big right now, but even then there's a big

variety. You can do backend stuff in Java, you can do RoR, you can go full
front-end and focus on JavaScript, you can do full stack stuff that involves
DevOps. Each bootcamp will have its own focus and each person has their
own niche they enjoy so you should make sure you pick the right one (go
back to #1 to figure out which one you enjoy).
3.

If you have a lib arts background your path will be much harder. If you
have a STEM degree you will have the baseline for thinking algorithmically. If
you have a music or English or art history degree you might find that you
have trouble with algorithmic thinking. This is not a given just a stereotype.
"Coding Bootcamps" good or bad when it comes to finding work?
I work at a coding bootcamp in the Midwest, and so feel it's important to
disclose my biases first:
Some programs have job placement rates like that, and it's pretty great.
Some do not (and in fact offer very little -- I remember reading an article
about a code school that would teach its students how to make iOS apps, but
then ended up just getting them a couple of textbooks and letting them come
into its office to work).
So here are some questions to ask:

1.

What can I expect to learn? How does that match up to what


companies in this area use? Who are my instructors? What are their
qualifications both as developers and as teachers?

2.

How many portfolio projects can I expect coming out of this? Of those
projects, how many am I responsible for designing the specs myself? How
many of those projects will be done in collaboration with other students?
What are some examples of projects that students have created?

3.

From the last two classes, what percentage of students are now
employed as software developers? Of those, what percentage first got
internships, and what percentage were able to make the jump to full-time
employment immediately? How long did it take for your last cohort of
students to all be hired? What support did you offer to your students who
were searching for jobs? Is there a job fair? Do students have the opportunity
to practice interviewing?

4.

Who hires your students? Are there any companies in this area who are

resistant to hiring students? Why? What are you going to do about that?
The second biggest benefit I see to a code school / boot camp is that doing
the work requires you to learn quite a bit (assuming a well-composed
curriculum), and the structure lets you learn faster than you might on your
own. The biggest benefit is that you have someone else who can look at your
code and offer meaningful feedback (most of my job when we have students
is doing one-on-one code reviews with students -- I try to meet with everyone
at least once a week).
Because this is a growing (and increasingly lucrative) field, there are
definitely folks who are in it for the money, rather than because they're
skilled educators or committed to the mission or whatever. There are also
plenty of well-meaning folks who aren't very good at teaching.
You could certainly, with a bit of work, learn everything you need elsewhere
and on your own. Certainly. You could even take that tuition money, live off of
it for a few months, and really work at this. Doing so would require some
drastic restructuring of your life, but you could do it.
The question is whether or not you've got the discipline and the stick-to-itness to do this on your own, and whether you've got a network of folks who
can help to at least point you in the right direction. A really common mistake
that a LOT of beginners make is wasting time with trivial stuff ("I heard that
the best programmers use vim/emacs/etc. and Dvorak keyboards, so I'm
going to get really good at those before I start coding!"), so you need
someone who can tell you when you're wasting your time with stuff that
doesn't actually matter... or, I guess, you need to develop a good sense for
that, but it takes a while.
4 month bootcamp grad
fullstack w/ focus on front end
most grueling 4 months of my career. work for 8 hrs and then lots of
work to do at home to keep up
big sacrifice. a big part of why my 2 yr relationship failed.
landed six figure job about a month after graduation. several 80k
offers. 100% grads accepted offers within 1 month of program ending
Having worked around lots of developers, it's very clear that my skills are
more crash course vs them having put in years of work but they are all pretty

impressed w/ how much content we covered in 4 months. You can get ALOT
done when you dedicate your entire life to it for 4-6 months.
Think about it like this. If you get a CS degree, how many hours of actual CS
content do you sit through over the course of 4 years? Then look at how
many hours you put into (40+ hrs/ week * 16 weeks) a bootcamp. There you
have it.
I would take the bootcamp in the city that you want to work in. I took mine in
a city I live in but wanted to move. That worked out for me but everyone else
got more value out of it because the bootcamps have relationships in the
cities they are located in to make it easier to get jobs/ projects.
I can only speak for our students, but the short answer is "Only so far as they
want to be."
The longer answer is a little bit more complex, and varies from market to
market at least a little bit, but there are a few ways that our students have
avoided getting stuck with a single role:
1.

Improving their own skills. If all you ever learn is the Rails stack,
then all you'll ever be able to do is build Rails applications. Even though you
generally don't learn algorithm design or data structures or design patterns
to a meaningful degree in a boot camp (ditto for other languages /
frameworks / tools / etc.), our students who branch out and learn more things
generally find that there are opportunities to work their way up.

2.

Domain Knowledge. If you've got really strong domain knowledge


(for example: I spent 7 years teaching and doing non-profit administration
before I transitioned into my current role as a developer/educator), then you
can solve business problems as well as software problems (instead of just
solving software problems), and thus there is room for growth.

3.

Seeking new employment. We've had a few students who were


hired by smaller shops to help out with a large client project (often as
interns), and who, upon completion of that project, sought new employment.
There are plenty of instances of junior developers (the traditional role upon
graduation from a boot camp) realizing that their advancement opportunities
within their current company is capped and who then chose to seek out a
new job with more room for growth.
All of which is to say, regardless of what your educational background

is, and regardless of your first job, you can learn new skills and you can find
ways to prove your competence with those skills (even if that means doing
side projects). And of course it's up to you to make sure that those skills are
of relevance to at least someone, but if you know how to do things that other
people need doing, probably you can find someone who will pay you to do
those things regardless of what things you've previously been paid to do.
Programming bootcamp VS. Uni

I decided to go the boot camp route. I definitely learned a tremendous


amount in about the 3 months I was there. If your goal is to only learn the
basics of programming (mostly these book camps just teach you web
development because I don't think software programming can be taught in
10 weeks), have a lot of cash saved up on top of the intial cost of the boot
camp to last you 3-6 months AFTER the program, and have the confidence to
be in the top 5 students of your class, then go for the boot camp.
Don't expect a job placement to be guaranteed after the boot camp is over.
That will be a HUGE mistake that you will regret later. Also after graduating
from a boot camp, you will only be a junior developer. Although there are
always talks that there is a developer shortage, this only applies to
EXPERIENCED developers.
I would also ONLY recommend the boot camp if you have previous experience
in technology or went to a college known for the technical prestige. If you
have a CS degree then even better. A lot of HR have filters that don't even
consider your application if you do not have a CS degree or an IT degree.
Also if you do go back to college, you will have much easier access to
internships. Internships is key. As I said before, there is a shortage of
EXPERIENCED developers. The more experience you are able to get the
higher the chance of you getting hired.
Also, these two choices aren't even the only ones. Set up a Github account
and start pushing up code, even if it is something very simple like a hello
world. Push up code regularly so that people can see you progress. Try and
find ways in which you can implement web development in your current job.
I'm sure you can find something. Go to meetup.com and look up python
groups or javascript groups. They are (usually) nice and love to teach people

(also free pizza is usually included). Ask them for project ideas and for code
reviews. I just wanted to let you know that there are other options rather then
quitting your job and going full force into programming.
I hope this helps.
If you go to a good university, you'll learn theory and fundamentals of
computing, and also have a number of project courses where you can put
theory into practices. Most universities these days realize they will be
graduating software professionals and not researchers, and throw in a useful
amount of software engineering.
If you go to bootcamp, you'll learn some programming. It'll probably be more
immediately useful, but won't have the depth.
t's going to take much more self-discipline, but yes, it's feasible to gain the
depth of knowledge on your own. I don't think it'll come by just day to day
coding: it will take reading the right books (probably serious math and proofheavy textbooks, and they can be dry they can be even with a teacher and
TAs to help you through them), doing projects much like the course projects
you would do in school, and ideally a good mentor that has a strong
theoretical and practical background to help point out where particular
algorithms are being used in the code base, or could be used in code you're
writing (and help you avoid being Shlemiel the Painter[1] ), encourage
complexity analysis, and so forth.
Some of it may never apply directly, but it's part of what a computer scientist
applies holistically to problems. Fortunately, computer science does not
require expensive specialized equipment (as it once did, or as other
engineering disciplines do). For an embedded course, for example, when you
want to tackle learning about computer architecture and systems, an Arduino
or Raspberry Pi is cheap, and you can pretty cheaply build all sorts of devices,
such as basic robots, on top of them.
Open source projects or personal projects on GitHub look good, so whatever
you can do in that regard will be usefulobviously the more applicable to
what you're applying the better, but any reasonably complex project or

contribution will help.


Career Paths
Is programming a good career to get into?
Software engineering, however, is probably where you want to be. The rate of
pay for software engineering out of college is about $50k to $100k per year, the
average being close to $62k. College/university is a must for some companies
but not others (for example, Microsoft doesn't require it as far as I know, but
Google does). In terms of getting a job, it's a hot market. If you know your stuff
and have projects/internships to make yourself look good, you're pretty much
guaranteed a job.
First of all, the skills deprecate fast. It's a race to keep your skillset relevant as
new technologies emerge and die out. And often it requires a considerable
amount of time beyond workplace, classrooms etc. to master new skills of trade.
Unfortunately, most employers are not paying you to learn Clojure and Backbone
but they have their deadlines with that legacy Java-system you have been
building for last 5 years.
It's hard to build a career out of it. The reinventing yourself part (and often it
means finding new jobs and relocating), working in truly globalized industry and
the low value of genuine experience often suits well with young, travelling and
uncommitted workers. Combining software work with traditional stuff, like
building families, settling down, paying down mortgage and working for the
same dude for 40 years is a bit harder than with traditional industries.
I re-emphasize - you really don't want to wake up one morning to realize you
have been doing legacy tools for the last 10 years which the company just
decided to finally lay to rest. Getting fired and finding out the market gets
instantly filled with thousands of professionals with your kind of (now irrelevant)
background. Competing with 18-30 year olds who can learn the same stuff you
can for half the price you need to pay your mortgages.
Then again, programming and software is one of the better backgrounds to
extend yourself to other industries as well. Everything is becoming more
dependent on software, so I guess there will be an increasing need for people
with a technical knack in other business critical processes as well. It's a great

skill to have, but I wouldn't build the rest of my life on the assumption I will be
programming 'till I retire.

What's the best 9-to-5 software development job out there?


Web developer:
Visual designer / UI designer
Front-end developer / JavaScript developer / UX developer. To be honest I
don't know the difference between UI and UX.
Backend developer / Python|PHP|Java|Rails|Perl|Node|ASP.NET|what have
you developer
Sysadmin / DevOps
Jack-of-all-trades full stack web developer
Mobile developer:
iOS developer
Android developer
Game developer:
Engine programmer / graphics programmer / physics programmer /
network programmer
Game designer / scripter
Sound designer / composer
Artist / 3D artist / 3D modeler
Writer
Jack-of-all-trades indie game developer
Specialized positions within larger companies:
SDET / QA
Project manager / product manager
Miscellaneous domains
Data scientist / "statistician with software development skills"
Computer security professional / information security professional
Scientific programmer
Quant / financial software developer
Embedded systems / robotics / home automation (Arduino / Raspberry Pi
being popular with hobbyists)
Operating systems / compiler developer
Hardware industry / CAD? / low-level drivers

Portfolios
GitHub, GitHub, GitHub
How do you build a portfolio without professional or intern experience?
Is a portfolio filled with games good to get a job as a programmer for a
normal software company?
What do hiring managers expect out of an Entry Level candidate's GitHub
profile?
How can I build a really good software portfolio for something like an
internship over the next 6 months?
Github project for portfolio
Internships
Should I take an unpaid internship? Are they legal?
Can I get an internship as a freshman?
How much do interns make?
Declining a internship offer after accepting it
Company A offered me an internship but I want to work at Company B
How did you get your first internship?
Am I too old for an internship?
How hard are internships?
First internship jitters
Feeling overwhelmed as an intern
Frustrated and confused at internship
I don't have anything to do at my internship. What should I do?
Job Interviews

How do I prepare for a technical interview?


I got an offer, but still have other interviews or am waiting to hear back. What
do I do?
Tips for an algorithms heavy interview
How do you stay fresh on the generic interview questions?
Phone interview tips
In-person Interview Analysis
Dress code/attire
Interview Cake
Coding for Interviews
Careercup
Interviews at Specific Companies
Had a phone interview with Twitter for Software Engineer
Just failed interview at Amazon. Advice?
First major phone technical interview - Amazon - Any tips?
Tips for Amazon interview?
More tips for an Amazon interview?
Onsite interview experience at Google
How to prepare for a Google Intern interview?
Recruiting and Job Offers
Dealing with offers during college
Is it okay to drop out of college if you have an offer for employment already?
Considering dropping out of college, already have a job lined up
What should I know for my first day on the job?

Is it ever a good idea to tell your boss you are looking to interview for other
jobs?
Stay where I am needed or go to better position?
Corporate or Startup?
Burnout
How common is programming burnout?!
I'm feeling burned out already...What do I do?
New grad with new job here... How do I avoid burnout?
Help. Am I ruined? Turning 33 now, I lost my drive, and feel insanity is the
only way out.
Computer scientist hating his career - Lost

You might also like