

Ask HN: how can I prepare myself for a web startup (while still in college)?  - keiferski

TLDR: I've got 1-2 years to learn how to build web applications. What should I be doing?<p>-------------<p><i>WHO I AM:</i><p>I'm a liberal arts major with two years left in my degree. I've always been interested in entrepreneurship (and have done various little non-tech projects over the years) and have a few ideas I'm dying to implement. I have a background in computers, but mostly in IT, not programming.<p>-------------<p><i>WHAT I KNOW:</i><p>HTML, CSS, basic JavaScript, basic Java.<p>-------------<p><i>WHAT I WANT TO DO:</i><p>1. Be able to design, build, and manage a (fairly simple) web application entirely by myself. My ideas are not technically complex; most of them are database driven, and the majority of the work is in the design and content. As in craigslist or Wufoo, not Google.
2. Know the fundamentals/theory of CS and programming in general.<p>-------------<p><i>WHAT I don't WANT TO DO:</i><p>1. Learn super-complex mathematics and CS theory<p>2. Spend too much time on topics that are not related to modern web application development<p>3. Get a job as a developer in a large company somewhere<p>-------------<p><i>WHAT I'M DOING (TO LEARN THE ABOVE:)</i><p>I am not a CS major, but I am taking 2 CS courses this semester (OOP with Java and a foundation IT course). Next semester, I plan to take: 
"Data Structures", "Intermediate Programming with Java", and "Database Management Systems". After that, I'll be taking as many CS courses as I can.<p>I have also made an all-around CS "curriculum" for myself, which is composed of online course materials. At the moment, the plan is:<p>1. Stanford Programming Methodology (Introduction to Programming w/ Java)<p>2. MIT Introduction to Computer Science (Introduction to CS w/ Python)<p>3. MIT Structure and Interpretation of Computer Programs (principles of computation using SICP)<p>4. Stanford Programming Abstractions (abstraction, OOP, data structures, etc. using C++)<p>5. Stanford Programming Paradigms (Advanced memory management features of C and C++, brief survey of other modern languages)<p>6. Stanford iPhone Application Development (tools and APIs required to build iPhone apps)<p>7. Various tutorials/books/etc. on Ruby/Rails (what I plan to build my sites in).<p>-----------------<p><i>MY QUESTION TO YOU IS: WHAT SHOULD I BE DOING?</i><p>I'd like to stress that I don't want to be a software engineer (as a career); I'm mainly interested in entrepreneurship, and coding is but one skill I need to accomplish my goals.<p>I want to be able to design, build, and manage a web application on my own, and if/when it grows large enough, hire someone who is technically superior to me to manage it (while I then focus on the "business" aspects.)<p>- Does that curriculum align with my goals? I get the feeling that parts of it may be too low-level (Paradigms) or irrelevant to my goals (iPhone Development). Would I be better off jumping right into Rails after I get the fundamentals down? Or will the wide-variety of languages ultimately help me more?<p>- Should I try to get an internship at a startup? Or would I be better off just building my own little projects?<p>- Do you have any suggestions for learning materials?<p>-------------<p>Thank you very much for the help, and sorry for the length.
======
m0ntizzl3
IMO, if you have 1-2 years and you're very motivated/disciplined, you should
try to get to the point where you could be a professional software engineer or
web developer. I think that having strong programming skills will increase
your odds of success more than anything else in the software startup world.

(1) The time it takes you to develop a solid product/prototype will decrease.

(2) The quality of the product/prototype will increase.

(3) You will be able to tackle more technically challenging ideas (I think a
lot of the juicier ideas go beyond the difficulty of a trivial web app).

(4) Good software developers will be more likely to partner up with you if
they know you are a good developer.

(5) Your ability to come up with good solutions to technical problems will
increase. You'll start thinking, "how long will it take me to automate this?"
instead of, "I need to go hire a person to do X". Your technical toolbox will
almost always have a good tool for the job.

(6) What happens when you fail? Startups are always in need of good
programmers.... However, I've never seen a job description asking for a
mediocre programmer who is also an ideas man. It's possible that you'll need
to get money from a day job and work on your startup ideas on nights and
weekends. Being a good programmer is a good way to get a good paying day job.

The way to accomplish the above: program every day! Take all of the
programming intensive courses that you can (the ones you listed are good), but
you need to program more than just the projects. You don't need to overdo it
on the quantity of languages at this point. I would focus on JS, Java, and
Ruby (look into debates about learning languages and see why it's important to
learn languages from different classes (scripting, oop, procedural,
functional, etc...) I think C/C++ are very good to learn... but since you're
already on the java track, I'd just keep going.

If you code for 2-3 hours a day, you'll improve immensely. Make sure to go
back and refactor your old code. It's a good exercise.

Finally, if I have not persuaded you, I'll answer your well defined question
:P. Take the programming courses that you plan to take and simultaneously hit
ruby on rails (scratch your online curriculum except for #7). 2-3 hours a day
(min) of JS, CSS, HTML, and RoR. Find a website (e.g. twitter, facebook,
hacker news) and clone it using your RoR stack. Get them to look visually
similar and have the same functionality. Don't quit at 90%... try to copy
everything exactly (the main functionality at least). Once you can clone these
popular websites in no time, you're ready! Just be prepared for a lot of
struggling in the beginning.

Start your hacker news clone today.

------
vga15
I've been at this exact same place. The best way you can prep for a 'web
startup' is to leverage the skills you've got (javascript, java, html), and
take action RIGHT NOW. [I've a feeling you know enough to get hacking on an
idea, and learn along the way.]

We've no clue what the world would look like 2 years down the line. One thing
we'd be certain of -- insane amounts of competition. The most important thing
you'll learn right now is 'STARTING' with limited information. If you can
couple that with an insane drive to 'COMPLETE', you'd be prepped & ready.

\---------------

Since you mentioned 'web apps',

Get into action, the 'lean startup' way: [[http://www.amazon.com/Lean-Startup-
Entrepreneurs-Continuous-...](http://www.amazon.com/Lean-Startup-
Entrepreneurs-Continuous-Innovation/dp/0307887898)]

\- list a few target markets/niches you'd like to work with

\- research them online/offline (forums, meetup groups etc.) & dig out their
pain points

\- build landing pages (unbounce.com) around your MAGIC SOLUTION to their
problem

\- get enough folks to sign up for your landing page (might cost you about
100$ worth of adspend)

\- the inspiration you get from having actual folks that need your Magic Pain
Solver would drive you to complete your product

\- you'll relieve them of their pains by forcing yourself to build this ASAP,
or you'd hire someone

\- you'll have learned a ton about the essence of entrepreneurship through
this experience

\---------------

Basically, you're connecting a pain-point for an small-enough group of people,
that communicates amongst themselves regularly (the market), to a transaction
(business model).

And please, start Right Away.

~~~
keiferski
Thanks for the response. I actually have a ton of ideas and have done market
validation. The problem I have is of implementation.

~~~
vga15
That's great. You're much more of an entrepreneur than I'd assumed.

Check out chapter 6 from 'Getting Real', by the folks at 37signals.
[<http://gettingreal.37signals.com/toc.php>]

The problem I had starting out, was following an exact process for going from
an idea to a Minimum Viable Product. Most importantly, I had trouble getting
past my designs (PSD) being messy.

\-----------

Since you have an idea already:

\- figure out what features your minimum viable product should contain

\- throw out a whole bunch of those features, till there's just a few main
ones, and you feel a little uneasy

\- turn those features into screens (paper mockups). as few as possible.

\- go from paper mockups to PSD's (photoshop). use dribble, themeforest,
forrst, etc. for inspiration. especially the 'minimalist' designs

\- or you could just use one of the 'admin themes' from themeforest. or
'bootstrap' by twitter.

\- chop the PSD to css/html. This is where it becomes (sorta) 'REAL'.

\- since you know basic java, I'd recommend you use php (almost similar
syntax, and tons of help online) to hack together your first app

//---EDIT---

I see you're interested in Rails. Personally, with history in c, c++, dotnet &
java, rails just seemed a little 'off'. Since you're familiar with java, I'd
highly recommend GRAILS: <http://grails.org/> as a viable/quicker alternative
to rails.

//---END EDIT---

\- don't stress about languages and platforms just yet. I'd spent weeks trying
to figure out which framework would make me sound more technically proficient
to a third party(investor perhaps?). The right answer always is, whatever gets
the job done ASAP.

\- consider using facebook/twitter for user account management. makes a lot of
stuff easier

\----------

One thing I'd fix going back, would be rewiring my process to having the PSD
chopped first(and played with), before writing any server-side code.

------
ianpurton
I can't see any reason why you couldn't start right now. You should be able to
complete the following with the skills you already have.

1\. Follow a Ruby Rails getting started article and create a blog app.

2\. Open a heroku account and deploy your app to the cloud.

You may experience a few hiccups along the way, but it will give you the
outline of how modern web apps are deployed and managed these days.

------
agileqr
Don't waste your time taking courses. You'll learn good things in those
courses you listed and you should take them, but they won't help you get a
product out the door - you can get started way earlier.

Just define your MVP and at each point along the way ask yourself "what do I
need to learn to complete feature X?" and then dig that information out online
and implement!

------
scott_lee
Same thing a lot of the other people said -- start building. It doesn't have
to be complex. Try new things and learn as you go.

Build a network. Get to know meet people who are better than you (skill-wise)
or at least have the same interests and also share what you know. Try
different events and meetups.

------
LarryMade
You have two years, start banging out stuff, make some mistakes and have
fun... [http://www.codinghorror.com/blog/2008/08/quantity-always-
tru...](http://www.codinghorror.com/blog/2008/08/quantity-always-trumps-
quality.html)

------
c_t_montgomery
Just build stuff. I'm a student taking a semester off to work with a startup,
and that's all they cared about when talking about hiring me. I'd stay that's
how it is for the majority of companies too - just build things.

------
PonyGumbo
Everybody approaches learning differently, but honestly, my recommendation
would be to go ahead and start building stuff.

