
Ask HN: How can I be competitive? - brewerhimself
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?
======
NonEUCitizen
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.

~~~
brewerhimself
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.

------
leot
Most people spend most of their "free" time browsing the internet and being
unfocused.

Don't be like most people.

~~~
brewerhimself
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).

~~~
shyn3
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.

~~~
brewerhimself
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.

------
shyn3
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.

------
lumberjack
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.

~~~
brewerhimself
I would think that releasing before working out bugs is considered to be bad
practice. Is this not the case?

~~~
lumberjack
Bugs have priorities. It depends.

------
pizza
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.

~~~
brewerhimself
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.

~~~
bonesinger
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!

~~~
brewerhimself
I was thinking about working on a Reddit clone while making some open source
contributions. How does that sound?

~~~
bonesinger
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.

~~~
brewerhimself
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.

------
jiggity
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.

~~~
brewerhimself
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?

~~~
jiggity
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.

~~~
brewerhimself
I'll keep it in mind! Thanks!

