A new graduate’s dilemma

Yesterday I found this email in my inbox from a soon-to-be graduate named Chris:

ok i will be graduating with a degree in MIS this spring. many companies what software or web developers who know multiple languages like (HTML, CSS, PHP, JS, VBscript)

i heard it takes 10 years to become master in something. I know a little about each language but for someone to become fairly proficient in ALL of these languages i do not see how software engineers do it. Or do software engineers/web developers just having a fair working knowledge of each language? I hope you understand my question. Basically i want to apply for jobs but when companies ask for web developers that know multiple languages i cant say i am very efficient in ALL the languages. But i do have a little working knowledge and i can always improve.

When I read this email I new exactly how Chris felt. Most job descriptions are daunting. So many technologies! It’s easy to feel inferior and not apply. Here’s my response:

Hi Chris,
I understand your frustration with job postings, many of them list
lots of technologies and decades of experience. I have a lot to say
about job descriptions, getting experience and how to learn. My email
will be long, but I think it will help you a lot.

First off, most job descriptions are about 50% exaggeration. Companies
describe their ideal, perfect candidate. Unfortunately those people
don’t exist. There’s no way anyone could be an expert in 5 programming
languages and frameworks for 10 years when some of those technologies
didn’t exist 5 years ago. Descriptions full of buzzwords are often
used to attract many different people. Usually what happens is if
someone doesn’t know a particular language or technology it’s ok as
long as the applicant can learn it on the job. If you know a language
a little bit it’s usually not to hard to pick up the rest.

Also, a good company will look at potential during an interview. If a
candidate seems smart and able to learn quickly, they are usually a
better option than someone who has only worked in one or two specific
technologies for a decade. It depends on the job, but in my opinion
brains and ability to learn is more important than knowing a language
or technology in and out.

In my opinion there are a few skills for programmers that are most important:

1) Ability to learn/teach themselves a new technology/language. This
is mandatory. Technology changes so fast you cannot rely upon what you
learned in school. By the time you graduate it will be antiquated. You
need to know how to read documentation, Google effectively and be
willing to dive and and make mistakes while learning. There is a
phenomenal amount of information on the web about anything you’d need
to learn. You just need to find it :) Pick a technology or language
you don’t know and start building. Read tutorials, read books, build
something (doesn’t have to be fancy). Go to clubs or meetups about
technologies you’re interested in. Most of all, don’t stop learning.

2) Communication. This is #2, but probably should be #1. I cannot
stress this enough: If you can’t communicate effectively it doesn’t
matter how good a coder you are. Writing, speaking and negotiation.
I’m not a genius programmer, probably in the 60% or 70% percentile,
but I attribute my success to my communication skills. Write clearly
and succinctly. Talk professionally, be friendly. *Listen* to people
and understand their needs. Communicate your status regularly. Tell
people what you do.

With those two skills you will be ahead of probably 80% of all
programmers out there.

Regarding what you know now, apply to the jobs you want! What’s the
worst that can happen? You’ll get a lot of interviewing experience,
which is always good. And if you get a job, even better! Don’t sweat
not knowing everything, just focus on continual improvement and
learning.

Hope that helps,
Ryan

What do you think? Anything I missed or you’d like Chris to know?