Ask HN: How can I be competitive?

9 points by brewerhimself ↗ HN
I don't have any projects to show off. I haven't been programming since I was 5 years old. I don't have a college degree. How am I supposed to compete with those who went to Stanford, started programming while still in the womb, and have already started 2 or 3 companies? Obviously I am exaggerating, but there are still loads of potential developers out there whose resumes would run circles around mine. What can I do to make sure I stand a chance?

20 comments

[ 4.1 ms ] story [ 48.6 ms ] thread
Take the time (a few years at least) to learn, and to write code. AFTERWARDS, you might be competitive, and might stay so if you continue to learn and code.

Note that it might be possible to do so while getting paid. I know of a guy who years ago applied for a job with Borland in SDK tech support. They gave him an open book test, saying "if you can find the answers in the manual, we'll hire you." After years of doing tech support, since he was immersed in the info day in and day out, he became one of the most knowledgeable C++ programmers I've met. Other potential paths include starting in QA, or tech writing.

Take classes. Khan Academy, Coursera, Udacity, and EdX offer free classes.

BUT it will take time. If you're not willing to spend the time, pick another field.

This is interesting because, while I know it will take time, I don't want to wait. Right now I feel so far removed from the technical community because the city I live in doesn't offer a lot. I think that, given the opportunity, I would be very happy to work in QA while I learn.

What resources would you recommend for finding a QA or similar job? I've never held a job even remotely related.

For now, do what you need to do pay bills. Eventually, you'll find problems you want to solve, and solve them for fun. Once you've programmed for long enough to deliver great solutions, you become competitive.
No offence, but I'm looking for something more proactive. :) I want to actively work towards my goal, not wait for something to come along.
I'm in the same boat as you, but the above advice is good advice. I'm looking for any job so that I can pay my bills while I take online classes and complete Ruby on Rails tutorial.

I also have 2-3 ideas that I want to develop that I can showcase. These projects are just vehicles to showcase my technical expertise. Then I'll apply for positions and use my portfolio I have made to showcase experience.

This is actively working towards your goal. If you can't find a job in the profession you want, you have to generate the opportunities yourself!

I was thinking about working on a Reddit clone while making some open source contributions. How does that sound?
Go for it man! the RoR Tutorial builds a twitter clone. The process of making the clone is the learning period.

Once I'm done with going through RoR, I want to develop my own blog from scratch.

I'm also taking some Udacity classes and Coursera as well.

Lastly, get involved, do some volunteer work (e.g. design a site for a nonprofit, church, whatever..)

Those kids from Standford started programming at a young age, but they built up a nice portfolio, you should do the same.

Shoot me an email at james@brewerhimself.com sometime; I'd be interested to hear what you think about Udacity. I'm taking the Introduction to Statistics class right now myself.
Most people spend most of their "free" time browsing the internet and being unfocused.

Don't be like most people.

Last night I read something about 16 ways to be productive or something like that. After some thought, I realized how much time I waste just mindlessly surfing the net every day.

One point the article made was that scheduling is key, especially is self-discipline isn't your strong point (and believe me, it isn't a strong point of mine). So I decided that, before going to bed, I would create a schedule for the following day (that is, today) and stick to it. There were a few bumps along the road that required moving some things around but now it's 7:00 PM and I've managed to complete everything on the list up until this point.

From now on, I will be explicitly scheduling free time (I actually have some coming up in about 30 minutes).

If you struggle to schedule, which you don't seem to, you can de-schedule.

What I do is schedule time for goofing off (browsing) that way the rest of the time is focused on what I have to do. Granted it helps listing the tasks but I struggle to complete tasks in allotted time frames.

I tend to schedule more time than I think I'll need to complete a task, rather than less. Any time left over goes to tasks that I didn't complete earlier in the day and, if none exist, I browse.
Perhaps you are being unrealistic. Don't expect to be competitive now. If you don't have the skills, you need to develop them. This takes time.

But then again all you need to create a startup, is some working code. I doesn't even need to be bug free or optimized or thoughtfully designed for that matter. If it's good enough to offer something for someone it's enough to get you started.

I would think that releasing before working out bugs is considered to be bad practice. Is this not the case?
You have it the other way around. Resumes, programming skill, college degrees mean nothing. NOTHING. You should be complaining about your ability to think up interesting problems and interesting solutions to solve them.

.

Think of programming like Legos. The only fun way to play with Legos is to pick an awesome thing to make beforehand (Say a 3 foot tall T-Rex) then figure out how to put random pieces together until you have what you had in mind. It doesn't matter you don't know fluid dynamics, rigid body mechanics, or structural engineering. You don't need a physics degree from MIT to make something interesting in Legos. In fact, the only real thing that really matters is your ability to pick something amazing to make. You will learn how to make it if you have sufficient motivation. You will get motivated because what you're about to make is incredibly exciting.

Say there was an amateur who managed to make a 3 foot tall T-Rex vs. a mechanical engineer who made a 10-inch high structurally sound lego table. An audience sudden enters and they immediately warm around the T-Rex. "But, but," protests the mechanical engineer, "my chair is built with industry best practices. Look at that T-Rex! It's a mish-mash of random structure. No self-respecting engineer would be seen next to that thing." The audience doesn't care. The T-Rex is cool. The T-Rex is interesting. The T-Rex is fun.

Could the amateur have built a better T-Rex if he knew about some of the engineering principles? Yes. But in the end, it doesn't matter. The mechanical engineer chose to build something stuffy and boring. The amateur, using his superior problem discovery skillset, chose to build something amazing.

There are a million engineers out there who can build to industry best practices. There is only one out of a million who trains up his ability to think of something crazy new and interesting to build.

.

A personal story:

I went to MIT and I still didn't know how to do MVC in php properly until my senior year. What I did know how to do was pick a fun problem then bash my head against it repeatedly until it worked. I would spend hours perusing through the docs and obscure questions on bulletin boards until I found a code snippet that did what I wanted. Even then, I didn't always know how the code snippet worked. I just pasted it in and prayed to god it worked. Sometimes it did, most times it didn't. When it didn't, I fiddled around with the variables until somehow, somehow I made it work. And boy, that felt great!

If a semi-decent programmer had looked at my code, he would've gouged his eyes out. The redeeming factor to all my franken-code was the fact that if I did manage to get everything functional at the end, it was always a fun result. Because it was fun, I did side project after side project. It was an addictive cycle -- with the new skills I picked up, I could envision even more fun projects. During the process, I learned about php, MVC, mySQL, then rapidly accelerated through to Android, ObjectiveC, Flash, HTML5, RabbitMQ, Node, and Redis.

.

Jiggity's Guide to Become a Rockstar Startup Founder

1. Try your best to think of a FUN problem. (Think T-Rex equivalent of something "cool" and "interesting" in tech.)

2. Try your best to think up a FUN solution. (Most people never fully achieve steps 1 and 2, settling for mediocre problems and mediocre solutions.)

3. Figure out what is the minimum set of skills you need to make the solution.

4. Learn those skills while making the solution.

5. Congratulations! You've added a creative product to your portfolio and increased your skillset by X amount.

Thanks for taking the time to type that beast. I can see how most people never achieve steps 1 and 2. I find it difficult to come up with an idea that other people think is really cool or, if I do, it's a ridiculously difficult idea that I don't possess ever a fraction of the required skillset.

One project that I've considered before is some sort of auto-piloted arduino-based plane that would fly across the US from Jacksonville, FL (where I live now) to Mountain View, CA. I think this might be comparable to your T-Rex example in that, while it has no practical use, it's still pretty damn cool.

Thoughts?

That's excellent! It certainly had me going, "That's pretty cool." I was checking the arduino docs and it looks like it has a ton of support for connecting the board to the Internet -- even being able to host its own webserver / connect with Twitter / run a Telnet client.

If your goal is to learn further web development, try including a net component as a more central piece of your product vision. It's your way of hacking your brain such that you'll have to, want to learn that stuff to achieve your cool project.

I am not a developer but a few people I know were able to score freelance gigs by creating open source software for businesses and blasting them.

One guy created a small utility for text expansion and easy to program keyboard shortcuts, hundreds of these exist, he emailed the Git URL to several businesses in the area who he thought would find it useful. They replied and now he has clients asking to modify/enhance his open source software.