Ask YC: So, why are you doing a startup?
This is a simple question: why are you doing your startup? why did you quit your job, or maybe even why didn't you get any? What is your motivation for doing this?
Mine is a personal motivation: I want to do something worth, something interesting. I don't want to look back and see I wasted my time doing worthless projects for money. I believe we have to do some kind of (Spanish) "obra", just like writers, musicians and scientists do: we have to be able to look in the past and say: "I did X, Y, Z, and this has my signature on it".
So, why are you doing a startup?
86 comments
[ 3.3 ms ] story [ 148 ms ] threadme: "yeah, I think it's OK"
her: "wonder who did it.."
me: "well, me and a couple of guys.."
her: "take me to bed you stud.."
:-)
if (MonthNbr == 1) {MonthDesc = "January"} ;
if (MonthNbr == 2) {MonthDesc = "February"} ;
if (MonthNbr == 3) {MonthDesc = "March"} ;
if (MonthNbr == 4) {MonthDesc = "April"} ;
if (MonthNbr == 5) {MonthDesc = "May"} ;
if (MonthNbr == 6) {MonthDesc = "June"} ;
if (MonthNbr == 7) {MonthDesc = "July"} ;
if (MonthNbr == 8) {MonthDesc = "August"} ;
if (MonthNbr == 9) {MonthDesc = "September"} ;
if (MonthNbr == 10) {MonthDesc = "October"} ;
if (MonthNbr == 11) {MonthDesc = "November"} ;
if (MonthNbr == 12) {MonthDesc = "December"} ;
is a retired millionaire while I'm still cleaning up his mess.
I think I can do better.
With money comes freedom in aspects of your life, you no longer would need to work a normal job to get by.
The key to getting freedom financially is living well below your means. That starts before you get rich, and has to continue at that point.
Money can either be a tool used by you to build freedom or dig yourself in a little hole.
I can confidently say that 90% of the code I have ever had to maintain is total garbage. I am often stunned that it even runs and I used to wonder how it ever made it into production. (I don't wonder any more, now I know, hardly anyone QA's source code anymore.)
(Another example: Today I refactored 1200 lines of code that edits credit card numbers down to 46 lines, removing 4 bugs in the process. This has been running in production for 18 years. This is not a joke.)
I realize that what I see is not a random sample of all code. I never get to work on the good stuff; no one does - that's the whole point.
My work, OTOH, has been wildly received by my customers and users for many years. I love what I do and love providing value to others. I can't imagine doing anything else.
I am currently working on my ultimate start-up, one that produces so much value that no one ever has to put up with garbage like my OP. For some reason (my internal metaprogams or something), I am much more highly motivated by seeing someone else's garbage doing well and thinking, "I can do WAY better than that," instead of people saying, "That was good." I don't know why.
Also, it's my experience that most people do not see the possibilities for truly excellent software (present readers excluded, of course). They believe they have to put up with my previous example. I can't wait to show them otherwise.
My OP was somewhat in jest, but not really. I hope you now understand why. Thanks for asking.
"Can programming make you rich? Well, let's figure it out: think of all the fantastically rich programmers you know. Not a very long list, is it? And did they get rich by virtue of being incredible programmers?"
"A startup that manages to get acquired doesn't have to have had great code; they simply had to either establish a lead in a new market, or put on a damn good road show."
# round to one decimal place and
# separate into whole and fractional parts
parts = str(round(star_sum/num_raters, 1)).split('.')
whole = int(parts[0])
frac = int(parts[1])
if frac < 3:
___frac = 0
elif frac > 7:
___frac = 0
___whole += 1
else:
___frac = 5
# recombine for a star rating rounded to the half
stars = float(str(whole)+'.'+str(frac))
is running a pretty famous startup.
(All motivators are appreciated.)
http://leahculver.com/2007/04/19/star-ratings/
Anyone who thinks they can do better than that should.
No. I'd prefer something a little closer to:
Months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
MonthDesc = Months[MonthNbr - 1];
"That's the best example you have of a mess?"
No. Just what came to mind.
"That makes me suspect that you don't think about programming at a very high level"
You suspect wrong. Don't suspect. Ask and find out.
"you like making largely arbitrary changes to code for (unacknowledged) ego-driven reasons"
If only I had the time, that would be my dream come true!
Perhaps that's why the original programmer is a successful founder, and you're fixing the code.
> You suspect wrong. Don't suspect. Ask and find out.
Don't have to ask. You actually think minutiae at this level is interesting discussion. That's evidence against you.
He could have posted an example of 600 lines of code that should have been 50, but I'm glad he didn't.
In any of these cases, we're in core, where measurements are made in nanoseconds. So it just doesn't matter. Anyone trying to squeeze a few nanoseconds out of anything is wasting their time.
Now let me tell you what DOES matter. Ready?
My back of the envelope solution is 15% as much code as the original. To do the same thing. THAT is a big frickin' deal.
If you've ever spent time building, deploying, enhancing, and maintaining anything of substance, then you already know that, right?
Never said the original programmer was a successful founder. I said he was a retired millionaire. Not hard to do after 40 years in this industry. Or in his case, 1 year's experience 40 times.
I'm fixing bad code because there is a stunning demand to do so now. Because of guys like the original programmer. Which is great. Because it demonstrates the demand for the startup I'm developing.
By the way, I don't decide what is interesting discussion here. The whole group does. Apparently, someone other than you thinks that what I have to say is interesting.
As I said before in the thread, over 90% of the time, no. Actually, more like 98%, no, so we are in agreement about nanoseconds. I only included the quip about performance for completeness.
True, the array indexing code is much shorter. That can be worthwhile. If your project has gotten to the point that these sorts of things are actually worth your time pursuing, then you're doing very well.
But that would mean that all your bugs are fixed, there are no more pressing architectural issues, and there are no highly demanded bits of new functionality to implement. In other words, your project would be practically dead.
Reducing a 600 line subsystem to 100 lines would be a big deal. Reducing 12 lines to 2? Nope. It runs. Reducing 12 lines to 2 in 500 different spots around your codebase? Well, if that's the case then I'm sorry that you have to put up with that all over the place, but at least it's correct. Again, if your highest priority is cleaning up stuff like that, then you probably have it easy. Too easy.
It's never my priority, it's always my customers' priority.
Here's my life right now:
Customer is opening new warehouse in 2 weeks and calls me to change whatever software needs changed to split orders to print in the appropriate warehouse. I agree because I'm a masochist. I find 15,000 lines of code to do what I (and you too, probably) could have done in less than 1000. Most of it was clearly written by someone who had no idea what they were doing, much of it is never accessed, much of it has never run properly, and I have to do something. I rewrite what, in my professional opinion, must be rewritten. I workaround what I can, and I add what I need. I want it to work right the first time and I never want to come back (until new business requirements come along). I am usually very successful doing this, making changes during unit and system testing and finishing in a day or two.
I use to be bitter about cleaning up other peoples' mess because they were too lazy, stupid, rushed for time, or whatever. But no more. I've turned around my thinking to use all of this as a motivator to build solid business apps where no one ever has to go though this again.
<closing loop...> THAT'S what has motivated me to do my start-up.
I threw out my original example because it's a classic, it came to mind quickly, and most readers here, even the juniors, could understand it. I had no idea it would spawn such discussion. Nice talking to you.
There's a good indicator that something will spawn a heated debate, and you pointed it out yourself:
> and most readers here, even the juniors, could understand it.
It's a bikeshed.
1. Right now the leverage that a small group of talented technical folks have is huge. Much more so than I expect it will be in 10 years, or it was 10 years ago. I don't want to cede that to the PHBs.
2. A really useful web startup is a way to touch a lot of people's lives, and ideally improve them in some small way.
#2 is hugely motivating for me.
What title(s) did you work on?
I just switched to the gaming industry so I hope the same doesn't happen to me.
So far though, I've just been stoked having an xbox360 on my desk...
Whoa, Pandora's box! :) I'll try not to break any NDAs and still be informative. Apologies if this degenerates into a rant. A lot of this stuff depends on the developer/publisher pairing you happen to work for, although I talked to quite a few people at Rockstar and it seemed even worse there.
* The publisher is always right. Even if they request illogical, stupid things, which clearly won't work, you have to implement them, only for them to withdraw them later. I spent weeks on stuff like that.
* Even 'obviously' good development practices seem to be considered purely theoretical, at least at the studio I worked at. The code was terrible, the bug count was astronomical throughout the project, because there was never time to fix them, everyone always had to add new stuff. The whole thing didn't even get any serious QA until AFTER the original intended release date. (which eventually slipped by almost a year; I blame all of the above for that)
* Uncompensated overtime is bad enough, but the attitude with which it was handled was the worst part. "No, I'm busy this Sunday" was treated as a serious problem and you had to have a 1-on-2 "chat" with senior management where you'd effectively be bullied into agreeing to working yet more overtime. They even tried to talk one guy out of being best man at his friend's wedding.
* There was always promise of that vaporous concept of bonuses, but to me it was pretty clear that the publisher had no interest in promoting the game, or even in it being a good game. I think everyone else was either lying or wearing their industry-standard rose-tinted-glasses. I left shortly before it was released in the US but as far as I can tell, it never made it into any top-10 sales list. It's not even out in the ROTW. (yet?) I suspect that nobody is getting any bonuses. (if the studio is even still alive by then)
* At least in the UK, game industry jobs are terribly paid compared to other programming jobs; specifically, about 30-50% less. And that's baseline salary, many "real" jobs pay overtime or give TOIL. Non-programming game jobs pay even less; my salary wasn't even enough to cover cost of living, even after being promoted pretty rapidly.
Sure, some of it is pretty cool.
* I personally really enjoy engine programming, which is what I was hired to do, even though I only did that until the engine/tools work was done.
* You tend to work with some pretty smart, if highly cynical people.
* I got to play with a Wii devkit a couple months before the Wii was out.
* You're making games!
I think I'd only work in games again if it was either for a very small company, or it was a company that has made >50% really awesome games that I personally enjoyed in the past. I'd definitely "test drive" the company before I stayed there, i.e. quit within the probation period if it felt iffy. EDIT: Yes, it's possible to be that choosy if you're any good. The industry greatly overhypes how hard it is to get in. Having been involved in the key parts of the hiring process (CV screening, interviews) at the company, I know how difficult it is to hire programmers.
Published game I worked on: Battalion Wars 2.
YMMV.
http://ourdoings.com/2007-12-19
I want to change the world (by making something people need).
I'm nerdy and think there is always a solution in technology. People just haven't found it yet.
I'll learn a lot.
I see through the veneer of "traditional" paths of employment.
PG says it all. I send this out regularly: http://www.paulgraham.com/notnot.html
Because every evening before I fall asleep I ask myself "What have you built/learned today?" and when the answer is nothing for too long I go crazy.
Were money no issue then I might focus on some exciting programming/engineering projects that aren't as certain a way of making money but would certainly help change the world.
Now imagine how much happier I can be and how much more I can earn while working on projects I passionately believe in, using the most suitable language and framework I know. I'm working 2 or 3 times as much per week as I used to, but I don't mind.
I agree completely with what you're saying. This is what is driving me away from my job at a software consulting firm at the moment.
But my point was that people were paying 5x more for my services than I need to live on, even though I was working at less than 10% of my potential (due to language, tools, motivation, working hours...).
There must be a more efficient way, and I hope this is it.
My situation: I'm 38, I saved up enough money to live on for a year with no other income, I quit my job, I have two kids, and my working wife is 110% supportive. As they say in the casinos, I am "all in".
Even if my startup proved to be an utter commercial failure, the 3 first points apply. I can't lose, I've already won! Of course I can win even bigger than now...
Those are my kinds of scenarios: a win for everyone and/or a success no matter what.
And here's the dirty little secret that makes programming startups the best "sport" of all: we all can.
That said, when I get around to doing my own startup I plan to create as few new technical things as I possibly can until it is safely out of the startup phase. To me creating new technology is more often than not a huge risk which you only want to do when you know the reward is worthwhile.
If you do something you like, at home, it is a hobby. If you do something you like, and try to get rich, than it is a startup. If you do something you don't like, just b/c to get rich, you will either fail, or be miserable and quit.