
Ask HN: Most desired programming skills in a startup? - crashmoriarty
My career ambition at this point is pretty straightforward: I want to join an ambitious startup as a programmer. And I want to get to that point ASAP. My current job doesn't allow much time for programming, so I'm teaching myself Ruby at home.<p>My question is, what skills do startups most look for, and when will I know I'm ready to start applying?
======
cperciva
_I want to join an ambitious startup as a programmer._

No you don't. This may be what you think you want, but it's not what you
really want.

Why do you want to join an ambitious startup rather than creating your own?

Why does the startup you join need to be ambitious?

Why does it need to be a startup?

For that matter, why do you want to join as a programmer rather than, say, a
graphic designer?

If the answer to the above questions is "because this is a route to making
lots of money", then what you _want_ is to make lots of money -- and you
happen to have identified "joining an ambitious startup as a programmer" as a
way to pursue that goal. Similarly, your goal might be "to change the lives of
millions of users", "to become a world-famous hacker", or "to work with a
bunch of really cool people".

But whatever you want... well, it's almost certainly not "joining an ambitious
startup as a programmer".

\--------

Now that I've finished ranting about desires vs. routes towards satisfying
those desires: The above is actually relevant to your question. The skills
looked for vary dramatically from startup to startup -- a startup which is
likely to make you a millionaire isn't necessarily going to be looking for the
same skills as a startup which is full of really cool people. Once you've
identified what you find attractive about startups, _then_ you can start
thinking about which startups currently exhibit those traits, and what skills
they look for.

~~~
crashmoriarty
Good point. I suppose to elaborate, I want to become a skilled hacker and I
want to push myself in a project that I care about with people who are
passionate about what they do. :)

~~~
swombat
Then you will gather those skills based on what's interesting to you, not
based on what's marketable to a startup.

I have never gone out of my way to learn a computing skill specifically for a
job (or even for a "dream"). All was always out of personal interest. By that
method, I have accumulated a skill set (including Ruby/Rails programming) that
has allowed me to start my startups when the opportunity was there.

You should be wary of even being a programmer if your primary driver to learn
new things is what might be useful to your career. All good programmers I know
and know of would be learning and applying their programming skills whether or
not there was money involved.

~~~
paulgb
I agree with you, but I don't think it invalidates the OP's question. There
are dozens of topics in computing I could learn right now that I would be
interested in, and I think pretty much every HN reader could say the same. If
some of those would help their career and others wouldn't, I don't think it
would be fair to blame them for learning the one that would help their career.

~~~
swombat
I doubt you can draw such a clear distinction.

I'm sure if Paul Graham had asked an equivalent of this community what he
should learn to increase his market value, "Lisp" wouldn't have been the
answer. At the time, probably C++ or Perl. Yet he used his knowledge of Lisp
to gain a competitive advantage for his company, and it ended up making him
rich. C++ and Perl may have helped him too, but that's actually less likely,
since they wouldn't have given his company its competitive advantage of
nimbleness and rapid changes.

You can't know in advance what will be worth learning. Except, you can: if you
want to learn it, if you have a desire to understand how it works, and if that
desire is storng enough to spur you to learning it, it's worth learning.

I'd add an extra indicator actually: if everyone tells you it's worth
learning, chances are it's not. If everyone tells you it's a waste of time,
chances are it's worth learning. Why? Because people in aggregate will point
you towards popular options (duh) - and those will probably give you less of
an edge. This makes the OP's question even less valid.

------
pragmatic
In ANY organization these skills matter: SQL - MOST Important - If you can fix
a SQL problem (mysql, sqlserver, oracle) you ARE THE MAN. Administration - can
you rotate the log files and fix the problems? Can you assign the correct
permissions to a directory in centos, redhat and windows (03, 08) server - You
are "teh" man. I can code in C++, Java, C# & Python but I get the most praise
(and raise) from fixing common mis-configurations on our web servers and
databases (things the "admins" don't know how to fix) and this is usually a
combination of batch files, dos and or *nix shell scripting abilities.

Programming is such a small part of the job, understand the OS and the DB and
you own the house!!!!

In the end, if you can simply read the hot fix readme files and apply them
correctly, you are valuable. Hello 6 figure income!

The administrator/programmer is a God among boys.

~~~
astrec
Not exactly sure why you're being downmodded.

If I follow, you're just saying (if a little enthusiastically) that DB/server
administrator skills for hackers matter in a startup.

You'd be right - at each startup I've ever been involved in I've done
everything from written code, configured the server, fixed the server at 3am,
answered the phones, licked stamps for invoices (ok, not in modern times) and
fetched coffee.

Startups generally don't have enough scale to hire one trick ponys.

In a younger founder/early employee, I'm not looking so much at programming
ability as entrepreneurial spirit and a willingness to get stuff done. Even
the coffee run.

------
subwindow
All of them. Or, none of them.

Basically, you need to be able to do everything. From graphic/ui design/css,
to html, to the MVC stack, to the database, to the system administration and
the networking.

For a startup, being a jack of all trades is far, far more valuable than a
specialist. How much use will a startup have for JUST a programmer that won't
touch the database or the servers? If I'm hiring a developer who is ostensibly
going to be coding in Rails all day long, their ability to do design and
database work is just as important (if not more-so) than their actual
experience in Rails.

Take a look at the stack above, and learn more about whichever one you're
least comfortable with. If you've never touched photoshop before, download
their 30 day trial and at least familiarize yourself with it (good frequently-
used "beginner's" task: making a transparent PNG of something like an arrow).
Never set up a linux system? Clean out that old windows box and install Debian
(server) and set it up as a file system.

Rinse and repeat.

------
DaniFong
I will first defer to cperciva's advice, but I'd like to add that the people
most in demand around the bay area right now are generalist who are
particularly sklled at designing and building good user interfaces for
webapps. There are many talented people working at levels further from the
user, and this skill is both truly in demand, and wonderful to have.

------
dimitry
Don't be just a programmer. Be part designer, part manager, part innovator and
always suggest big ideas.

I think finding people who are masters of all trades (or important ones
anyways), is more important than just finding rockstar programmers.

Best of luck

------
makecheck
It wasn't clear to me, is Ruby the first language you've learned? How many
mini-projects have you tried, to see what you're capable of? You're better off
starting with such projects, than leaping into anything big.

Versatility is important. Try to do many different things in your programming.
Even if you don't like some problems, think about how you'd solve them.

At a startup, you'd be one of few employees so you could have many different
tasks given to you. If you have experience or gut feelings on how to approach
several problems, you're more likely to be able to jump in and not take time
flipping through manuals.

~~~
crashmoriarty
To answer your questions: PHP is my first (and only other) language. My scope
of mini-projects is fairly small.

Thanks for your advice. :)

------
axod
Ability to learn new things quickly & Fearlessness to fly in the face of
conventional wisdom.

I'd say think of a cool project, a cool app you could write, and make it. That
will be worth a lot more than learning any specific language.

------
gojomo
(1) breadth of system/code understanding, so you can contribute anywhere
needed.

(2) consilience, which I will arbitrarily redefine here to mean being able to
keep the overall goal/strategy in mind even as you work on every detail. Then,
you know when to cut corners and when to spend effort on key differentiators.
(Or more generally: able to manage yourself once you know the mission.)

(3) speed, either because you've got such total mastery of some area that you
can do expert work at an amazing rate, or because you can immerse yourself in
learning something new and race through demonstrable progress, niggling
details and usual engineering detours/affectations be damned. (This is a
variant of the PG "could you describe the person as an animal?" test.)

------
maxklein
Start with Verilog, go on to Assembler, follow that up with C, then study C++,
then learn python, study HTML/CSS. Only go this route if you're pretty smart,
otherwise just learn PHP.

------
mattmaroon
Well, if by skill you mean fluency in a language/framework, Flex hackers are
in very high demand right now. I mean, like crack in the ghetto on the first
of the month type demand.

------
antirez
Best programming skill to do things from scratch (that's what startups do):
instead of over-engineer get things done in a simple way.

------
bjclark
You have to be able to learn anything, fast and only do things the right way,
the first time.

~~~
axod
Doing things right the first time? When does that ever happen?

I guess if you design your code on paper first and write it all out by hand,
calculate bottlenecks etc based on cpu timing manuals etc....

Most people take a more iterative approach afaik.

------
curiousgeorge
competence, initiative and reliability.

------
sygzzy
for loops.

------
xlnt
Being good at learning new skills quickly matters more than which skills you
know now. (Unfortunately it's hard to demonstrate in an interview and everyone
_says_ they are good at learning.)

However, if you focus on this, and just learn whatever specific technologies
are convenient for you, then you could later spend only a short time (perhaps
a week or two) learning specific skills targeted to a startup you want to
apply at.

