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?
<i>I want to join an ambitious startup as a programmer.</i><p>No you don't. This may be what you think you want, but it's not what you really want.<p>Why do you want to join an ambitious startup rather than creating your own?<p>Why does the startup you join need to be ambitious?<p>Why does it need to be a startup?<p>For that matter, why do you want to join as a programmer rather than, say, a graphic designer?<p>If the answer to the above questions is "because this is a route to making lots of money", then what you <i>want</i> 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".<p>But whatever you want... well, it's almost certainly not "joining an ambitious startup as a programmer".<p>--------<p>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, <i>then</i> you can start thinking about which startups currently exhibit those traits, and what skills they look for.
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.<p>Programming is such a small part of the job, understand the OS and the DB and you own the house!!!!<p>In the end, if you can simply read the hot fix readme files and apply them correctly, you are valuable. Hello 6 figure income!<p>The administrator/programmer is a God among boys.
All of them. Or, none of them.<p>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.<p>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.<p>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.<p>Rinse and repeat.
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.
Don't be just a programmer. Be part designer, part manager, part innovator and always suggest big ideas.<p>I think finding people who are masters of all trades (or important ones anyways), is more important than just finding rockstar programmers.<p>Best of luck
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.<p>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.<p>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.
Ability to learn new things quickly & Fearlessness to fly in the face of conventional wisdom.<p>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.
(1) breadth of system/code understanding, so you can contribute anywhere needed.<p>(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.)<p>(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.)
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.
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.
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 <i>says</i> they are good at learning.)<p>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.