You are on page 1of 25

About The Guide

This is Part 1 of the Tech Boss Career Guide, an E-Book in 4 parts which focuses
on concerns of people who want to work as professional programmers.

Part 1: Choosing your Path
Part 2: Developing Skills Through Projects
Part 3: Getting A Programming Job
Part 4: Youre Hired! Now What?
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH
Who Is This Guide For?
Anyone who wants a career in programming. Beginners will
have the most to gain, but even if you have a CS degree, or
a year or two of job experience, this should help you solve
some of the trickier problems in coding as a professional.
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH
Who Is Part 1 Of This
Guide For?
Maybe you've tried on your own, got stuck or frustrated, changed
course, tried a di!erent language, and ended up coming up short of
your goals. That is unfortunate, but also totally normal and common.
It's ok to fail and try again.
Maybe you're stuck on choosing a language or starting projects.
Or maybe you're just not sure yet if programming is for you.
Part one of this guide is to help you through issues like those, help you
identify your goals, and put you on a productive path.
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH
Why Programming?
If you're not sure if you want to be a programmer, reading this section should
help you decide.
Let's go over some of the reasons why you might want to be a programmer:
1. Having talent or interest in programming
2. Being around smart people
3. Making more money
4. Changing the world
5. Startup Lyfe!
6. Having a chance to own your own business
7. Being the next Zuckerberg
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH
Why Programming?
Those are all legit reasons, ex-
cept for starting Facebook. That
one is really unlikely. You can try,
just don't take it too hard if it
doesn't work out.
Whatever your reasons, before
you learn to code, there are three
questions you need to answer.
5
3 Important Questions For
Beginners
1. What language should I learn?
2. What do I want to make?
3. Where do I want to work?
At rst, these questions might seem very di#cult to answer. Partly because of a
lack of information, and partly becuse limiting yourself doesn't feel good.
If you think of it as limiting yourself, you will have a di#cult time. Think of it as
focusing, and it will come easier.
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH
3 Important Questions
For Beginners
1. What language
should I learn?
Here is a (giant) list of program-
ming languages.
How can you possibly choose?
Well. Some languages are dead
or comatose. Some are just elabo-
rate jokes (yes, actual jokes).
Some are limited or specialized in
ways that you probably don't
want. They all have varying com-
munity sizes and adoption across
various industries.
Ok. So in short, don't try to pick
one from this list.
So why did we show you the list?
Partly because it's massive, and
it's incredible. So many people
spent so much time building
these tools. The other reason is
that you can't learn everything.
Accepting limitations and respect-
7
ing your time are important skills
to develop.
Ok. So if you can't pick every-
thing, should you pick 3 or 4 fa-
vorites and try to do them all?
No no no. Don't do that. People
who go that route are bound to
end up seriously frustrated. Pick
one, but not from that list.
A better way
We came up with a little "choose
your own adventure" book for
choosing a language.
Go here: Which Programming
Language Should I Learn?
This book has one really impor-
tant feature to note. It suggests a
mentor for new coders. If you
haven't learned a language be-
fore, then you'll have trouble
8
teaching yourself. Having a men-
tor is best, and if you have a
friend who can tutor you, we
would encourage you to drop the
question of "which language"
completely. Whatever your
friends can help you with is going
to be the best for you a signi-
cant majority of the time. Nothing
beats learning from humans.
If you aren't so lucky, then choos-
ing a language is all about what
you're planning to do with it.
9
3 Important Questions
For Beginners
2. What do I want to
make?
Our choose your own adventure
book provides a few options
(websites, mobile apps, games,
etc.), but for beginners looking
for a job in the short to medium
term, we would highly recom-
mend web development.
Why? Because there are an im-
mense amount of opportunities,
and unlike some areas, such as
game development or academia,
it really is a seller's market when
it comes to talent. The outlook for
the next few years (at least) is
promising, too. The biggest
"threat" currently is mobile devel-
opment, which is about as similar
to web development as you can
get.
At Tech Boss, we teach web de-
velopment with HTML, CSS,
JavaScript and Ruby. Those tech-
nologies have been around for a
10
while, have huge job markets,
and ultimately, have a good bal-
ance of trendiness and staying
power.
11
3 Important Questions
For Beginners
3. Where do I want to
work?
This actually has another little
question embedded in it. Where
do you want to live? In a major
city, you'll have many more
chances to nd work and con-
nect with a strong developer com-
munity. Salaries are high enough
to o!set the cost of living. Some-
thing to consider.
Ok. Back to the original question.
Where do you want to work?
A really big company? A small
start up? Your own startup? Your
own bootstrapped company?
You want to freelance?
All of these choices imply com-
pletely di!erent schedules, skills,
and experiences. But regardless
of your choice, learning to pro-
gram is the most sensible path,
even if you ultimately see yourself
in a di!erent role.
12
Doing it on your own is going to
be di#cult without programming
skills (or the money to pay for de-
velopers, designers, etc.), so let's
imagine that you're going to ei-
ther going to be an employee or
a freelancer. But freelance jobs
have a lot of inconsistencies, so
let's just assume that you want to
work for a company, at least at
rst.
(We'll go more into detail on get-
ting a job in the rest of this guide,
but for now, this discussion is im-
portant as it relates to basic ques-
tions around choosing what to
learn.)
Here's an exercise. Come up with
a list of 5 companies that you
would want to work at. They are
probably hiring and have a "jobs"
or "careers" link on their home
page, so look at their postings.
What skills are they looking for?
13
Copy their posts down and com-
pare them. You're likely to see a
ton of bullet points.
Figuring out what bullet points
are important and not is some-
thing that we'll talk about in Part
3, but for now, take note of what
bullet points you satisfy, and
which you don't.
For now, assume that each bullet
is important (except for a CS de-
gree if you don't have one. Going
back to school is a totally di!er-
ent path). If you had to learn all of
these things, and have all of
these experiences, what would
you need to do?
For a really large list of bullet
points (which is all too common),
this should remind you a bit of
the list of programming lan-
guages from earlier. It's impossi-
ble. What does "experience"
even mean for each of these? Do
14
you really have to know all of
these? To what degree?
It is unclear, and reading between
the lines is tough. Some of the
skills would take a few hours to
learn, and others would take
months or years to master.
Here's a shortcut. The hardest
part is the programming lan-
guage. All the other technical
skills take much less time.
Knowing what they use is impor-
tant, but it's more important to
know what type of language it is.
If they mainly do PHP, Ruby, Py-
thon, Java, Perl, or another
mostly server-side, high-level lan-
guage, you can leverage exper-
tise in whichever one you know
to learn theirs relatively quickly.
By looking at the type of lan-
guage that they use, you gure
15
out the type of language you
need to know.
A clear path is the most impor-
tant thing for learning your rst
language. The second and third
(and fourth...) are dramatically
easier.
The recommendation here is to
get comfortable with something
analogous to the company's tech-
nologies (and learn to drop the
ones that recruiters put there just
to scare away the timid). If you
truly master something similar,
then not knowing the specic lan-
guage or technology they use
won't kill you in the interview.
Example 1:
Let's say you spend a year or two
using Angular.js (a JavaScript
front-end framework). You can
still apply for your dream job,
even if they list Backbone.js (a dif-
ferent, front-end framework
16
which does roughly similar work)
as a required skill. There are 3 rea-
sons that you should feel comfort-
able with your decision to apply.
First, if your interview is a couple
of weeks away, that actually
could be enough time for you
(based on your extensive
Angular.js experience) to become
familiar or even well versed in
Backbone.js. Second, the inter-
viewers and hiring manager un-
derstand that having tangential
expertise with Angular.js is pretty
much the next best thing. Third,
Backbone.js might not be a real
requirement, because sometimes
(very often actually), the people
creating the job descriptions are
disconnected from the software
development process and may
not have all the facts about what
the team really needs. In that
case, Backbone probably won't
even come up unless you men-
tion it.
17
One Last Question
You have one more question, and it can be tough.
What are you willing to do to get there?
Would you leave your job for a few months? Permanently? Would you pay over
ten thousand dollars for a coding bootcamp? Would you give up signicant time
on nights and weekends to hit your goals? Would you comb through dozens, or
hundreds of technical books, looking for the one that will nally make a concept
sink in? Can you forgive yourself for wasting time on setbacks along the way?
If the answer to all of those is an emphatic no, then you're going to have a hard
time. There is light at the end of the tunnel, but that doesn't mean that there isn't
a tunnel.
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH
Micropaths
Assuming that you've conrmed that yes, you want to learn to code, and
you've identied your macropath (1-5 year goal), let's talk a bit about planning
micropaths.
"I want to learn JavaScript in 2 months."
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH
Micropaths
First of all, "learning JavaScript"
is a fuzzy goal at best, and an im-
possible one at worst. Putting a
timeframe on it might help you pri-
oritize and set aside time, but the
concept is potentially divorced
from the most common and mar-
ketable skills that you're trying to
acquire.
Example: Check out this page on
JavaScript Strings. If you don't
know what "strings" are, they are
the literal text parts of program-
ming, but don't worry too much
about that right now.
So let's say you wanted to "learn
JavaScript." Does that mean
"learn it completely?" Does that
mean you need to learn each one
of the methods on the left, and
then repeat that process for every
other object in JavaScript? That
sounds really boring, discon-
nected from what you want, and
worst of all, you wouldn't remem-
ber anything that you "learned".
In short, it would be a totally
20
tragic waste of your time. Did you
mean a subset of JavaScript? Of
course, but that's dubious too.
How will you gure out what's im-
portant?
Most professional web devs
probably don't regularly use more
than 10 methods from that list.
They know the most common
methods by heart though, and
they know where to look up
things that they haven't memo-
rized completely.
So can you can get by with just
nding whatever you want on-
line? Kind of, especially in a jun-
ior role. You're not a surgeon or a
pilot, so you don't have to have
the entire scope of what you do
memorized. But you denitely
need to know what things are
called, what they do, and what is
common. If you don't know that
"for loops" exist (like with
"strings", it's ok if you don't know
this right now), how would you
21
look up their implementation syn-
tax?
Your goal should be for the num-
ber of things you don't need to
look up anymore to grow, but
don't be surprised that the list of
things you know about (but still
have to look up) grows way
faster.
If you want a little theory on how
that works, check out the four
stages of competence article on
wikipedia. As a programmer, no
matter how good you are, you
will spend a great deal of time in
category 2: "Conscious incompe-
tence". Knowing what you don't
know is hugely important. Of
course, an earnest programmer
strives to put as many skills into
categoy 4 as possible, but be-
cause the range of tasks and
methods of performing them var-
ies and changes so wildly, a ra-
tional programmer realizes that
22
jumping between levels of compe-
tency comes with the territory.
Ok. So "learning a language" is
an ambiguous goal and kind of a
non-starter. What's better?
"I want to work with JavaScript
for two months."
That's more realistic sounding as
it doesn't imply comprehensive
mastery, but it's still not terribly fo-
cused. What would you work on?
And don't say "each method of
the string API."
So how can you ensure that you
"working with" your language ex-
poses you to the common tasks
and paradigms you want to
learn? For that, you need to work
on projects.
23
How To Really Get Started
"I want to work on an HTML5 Game (using JavaScript) for two
months."
Now we're getting somewhere. You have a timeframe, a project, and a
technology.
But how did you decide on making an HTML5 game? How should the
game work? How will you know when you're done? How should you keep
track of what you learned?
We'll tackle all those questions in Part 2 (available from www.techboss.co)
www.techboss.co
CAREER GUIDE PART 1: CHOOSING YOUR PATH

You might also like