Ask HN: Current college student with big goals.
Hi everyone,
I have been lurking around here for some time and am in love with this site. I figured now would be as good a time as any to ask my question.
I am a current college student majoring in Computer Science. I know that, after I am done with school, I want to start a startup at some point (not necessarily right out of school). I know it's going to involve a lot of hard work, but this is something I have been thinking about for a while now. So, my question is this: what sort of advice can you guys give me that will prepare me for such an undertaking. Thank you.
~Aaron
45 comments
[ 6.1 ms ] story [ 91.7 ms ] threadThat's what I tell everyone that says he wants to do something after they graduate. This goes for anything, not just startups/programming. The best time is now.
The problem with starting "some time after" you graduate is how easy it is to burden yourself with life responsibilities (wife/kids, new car loan, mortgage etc) when you have real income and stability from a job. When you are halfway into getting your startup off the ground and ramen profitable and you graduate, you can maintain your poor college kid lifestyle much easier than a previously well off wage earner can go back to a poor college kid lifestyle.
This worked well for me, but I also didn't care for any of the other "college experiences". I got my partying (drinking, smoking, minimal sleep etc) out when I was in high school and my early 20's, so found most of my younger college peers boring when I eventually finished my CS degree.
2. Know algorithms to make smart software. If you make a board game, A* comes in hadndy for the AI. If you make a service like dropbox Minimum bounding box algorithms lower your costs.
Now you can build some stuff. Time to sell.
3. Learn the basics of finance and legal stuff of your country to be able to solve paperwork related stuff.
4. Learn some marketing to attract users
Profit!
Tip: A lot more in Ask HN Archive - http://www.gabrielweinberg.com/startupswiki/Ask_YC_Archive
It really pays off much better than just being very good.
1. Connecting and networking with others in the field. A blog is a great way to do this and get started.
2. Build something said network will appreciate. It doesn't have to be the next twitter, maybe it's some dumb little app that a 5 year old kid will spend 10 minutes playing with and get bored. Remember we are all 5 year olds on the inside, except pg, he's 7.
You may even realize it's not what you want to do after college.
"I want to have a startup" is not a plan. It is a path to failure. If you haven't got any idea what you want that startup to do, you're just setting yourself up for disaster.
Real, productive startups happen when someone wants to do or create a specific thing, and then creates a startup as a vehicle for that thing.
A startup is not an end. It's a means.
2. Learn what to build. Once you get really good, your time starts to be more valuable than gold. There will be very few people in the world who are as good (the internet will bias you to think that the world is full of great people - this ain't so, there isn't enough of 'em). You owe it to people and to yourself not to bother with improving something by 1% or 10% because you're wasting time in opportunity cost and could be improving something by 1000%. Make sure what you're building is worth building, and make sure every line of code you write is worth writing, otherwise you will fail. Break the NIH syndrome in yourselves now (all good people have it, phenomenal people that build successful companies broke it in themselves). Learn to infer what people want.
3. If you're that good, you will easily get a $100k job after graduation (probably more by then), and grow to $180k in a few years. That's very, very comfortable. It's not worth busting your ass 16 hours a day to build another CRM tool when you can have a $180k job. So don't start a business to start a business. Start a business to bring a meaningful change in the world. A huge change. A 1000% change. There are lots of hugely successful companies out there that do what's not meaningful to you - ignore them. But do make sure that what's meaningful to you is also meaningful to millions (hopefully billions) of others. You won't get rich writing Lisp compilers.
This is what matters. Most everything else is fluff.
A big part of creating a high-quality product is about good presentation & interaction - even if you have a designer in your future team it helps to speak their language.
Previous HN threads on design: http://news.ycombinator.com/item?id=1604915 http://news.ycombinator.com/item?id=1103578 http://news.ycombinator.com/item?id=1474315
Or perhaps it's to teach you how poorly some languages express algorithms.
To take an example of a web startup (just because the are the most common), here are some question that require understanding the basics of operating systems:
1) "why is my database cache constantly being swapped out to disk when there's enough memory in my machine"
2) "why are the pages taking so slow to load, even though I'm only serving a few hundred hits a second"
3) "what is my webapp doing that's making python/ruby take up 100% of the cpu" (to find this out, you'd likely be using gdb, ltrace and strace which very explicitly require at least a passing familiarity with C and POSIX)
4) "why is there a process showing up in ps/top that I can't kill even with kill -9"
Finally, you certainly have to be a good programmer to start a startup: not the best one, not a "10x programmer", but a good one (irrespective of what sort of applications you write). You can't be a good one without understanding how your programs work.
[1] That said, I had my hands dirty in Linux source code when debugging an issue while working in (of all places) an email security company.
Fundamental algorithms can't be expressed sanely in anything other than C. How the heck do you implement a hash table in perl, for example?
Sure, higher-level languages provide some data structures; but they're not always going to have the internal tradeoffs required to make them a good fit for your problem space. A few weeks ago I had to rewrite malloc (well, technically I added a caching layer in front of it) in order to get a 4x speedup to my code -- you're never going to do that in a language which doesn't even admit that malloc exists.
I agree with advice 1 ("Be good. Be very good."). But do you really believe you have to be -that- good to start an online business?
Also, I believe breadth of knowledge is also good (not only depth) - I've studied and worked in networking and most of the parts of the software platform, so when something fails I have a decent idea of where to start looking (I guess you cover that base with "Don't be the "front-end guy" or the "back-end guy"").
And you very likely won't get that knowledge from college - you have to learn it in the "real world" I agree with the other advice here about working in a challenging environment like another startup.
Also, point 2 - "the internet will bias you to think that the world is full of great people - this ain't so", I suspect that it's true as well.
Which brings me to point 3 - I'd do what's more comfortable for you and the way you want to live your life.
What I don't entirely agree is with not being worthwhile to start your own business unless your change is that dramatic.
I believe that wanting to be your own boss is a good enough reason (bringing a 1000% change TO YOU) - see the guy who quit Goldman Sachs for example: http://news.ycombinator.com/item?id=1690001 .
Or doing something that eases a pain point to 10 users (say, bingo cards for teachers :) ).
Not everyone has to change the entire world :) (though it's good to try!)
Just my opinion, 4 years after college (and 8 years of corporate jobs).
If you don't know what you are going to do and you just start because you want to start. Chances are more that you will fail.
Some people give an excuse, failure is necessary for success. Total BS. Crap.
Those people misinterpret the saying.
If you want to start a business of Restaurant, you should know what is the job of a Dish Washer.
You should be good at what your business is going to be.
There. One down, four to go :)
I know it might be heretical to say this on HN, but establishing and growing the kind of organization that can create this kind of change in the world will require a lot more than just technical and/or academic chops. Ultimately, what you'll need to make a difference in the world is a lot more intangible than that: vision, leadership, ambition, tenacity, etc. My advice would be to focus on society and find a way to "hack" it in a novel way that is mutually beneficial to both your organization and to society as a whole--this is how you can really make a huge change in the world.
My company was most successful after we stopped offering small accounts and focused on the customers paying us hundreds or thousands of dollars a month. We got pretty quickly to 7 figures after that.
http://www.paulgraham.com/college.html
I've basically come to the conclusion my time here in school is gain enough knowledge an experience in my field that when startup time comes I'll not just be quicker than competitors, but I'll know of better methods and techniques for doing so.
(2) Make friends with and keep track of your talented classmates, especially those whose talents are in other areas.
(3) Learn how to evaluate folks in those other areas.
Some startups are easy to bootstrap, others aren't.
The main advice I'd give you is this: Figure out what you really, really want to do... the thing that makes you most excited and passionate. And demand of yourself that you do it.
There's nothing worse than working very hard at something and realizing that you've put blood, sweat and tears into something you don't really give a damn about.
Running a business is extremely hard for some people. Expose yourself to it. It would be even better if you worked for a smaller company to get a more holistic view of it.
When I was in college my first job was managing the entire ecommerce side of our business from building to maintaining to figuring up innovations. There were 4 of us. I got significant experience in accounting, marketing, cash flow, customer service... everything. Having that exposure has helped me immeasurably thus far.
2. Understand that much of what you learn to do as an undergraduate CS student are "historical reenactments" (http://research.swtch.com/2008/03/rotating-hashes.html). The core algorithms and data structures you need are almost always provided by the language or libraries.
2. Between now and then, work at a small company, a just-funded startup, a raw startup and a big company (maybe in that order, maybe in any order). Watch the management closely and LEARN.
3. No matter how frustrating it is to work for someone else, stick to your plan.
4. Keep your technical skills current.
5. Learn management skills.
6. Save your money - live frugally now so you can self-fund your startup and keep control of it.
7. Become an expert or become good friends with an expert in some domain - gaming, architecture, finance, whatever.
8. Do your startup in that domain.
9. Develop a healthy lifestyle. You'll need your all your health and stamina to make the startup succeed.
10. Regularly sell things on eBay and/or Craigslist to get used to selling to people.
11. Watch how your non-technical friends use computers. They compose most of your customer base.
(edit: Actually all that mhewett says, is right, observe as much as you can (surprisingly not many really do), try to learn whatever you think can be useful in the future, except for one very deadly thing(the fatal flaw) - the 'plan to start in 10 years'.)
Start a start up or go execute an idea or help somebody else execute an idea and use that as a tool for learning relevant stuff that is required to successfully execute an idea. Whatever reason you are not able to execute it, thats an indication of where you have to plug holes in your skill set, either by learning yourself or developing relationships with somebody who is strong in that area.
If you keep executing and keep plugging the holes in your skill set, you will have the fastest learning curve that no college education can provide by itself.
Do complete your college education, it does teach a lot of good basics on different useful stuff and its a great backup in case things don't work out with the business end by the time you complete education. But thats what it gives - basics, useful basics, basics that are not enough for anything but an entry level job.
College education + loads of experience by the time you complete education = killer resume.
This is from a guy who has done his fair share of education and waited too long to go after his dream ( of course, not too long to let the dream die or go after it now :))
Good luck.
(edit: If you start the action part now, you will also attract a network of friends and teachers who appreciate a person like you and can probably help you. That network you start building now can be a deal maker or breaker for succes later. )