26.04.2015 Views

Founders at Work.pdf

Founders at Work.pdf

Founders at Work.pdf

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Joel Spolsky 359<br />

For example, Ruby on Rails is a framework th<strong>at</strong> you can use with the Ruby<br />

programming language to access d<strong>at</strong>abases. It is the first framework th<strong>at</strong> you<br />

can use from any programming language for accessing d<strong>at</strong>abases to realize th<strong>at</strong><br />

it’s OK to require th<strong>at</strong> the names of the columns in the d<strong>at</strong>abase have a specific<br />

form<strong>at</strong>. Everybody else thought, “You need to be allowed to use wh<strong>at</strong>ever name<br />

you want in the d<strong>at</strong>abase and wh<strong>at</strong>ever name you want in the applic<strong>at</strong>ion.”<br />

Therefore you have to cre<strong>at</strong>e all this code to map between the name in the<br />

d<strong>at</strong>abase and the name in the applic<strong>at</strong>ion. Ruby on Rails finally said, “It’s no big<br />

deal if you’re just forced to use the same name in both places. You know, it<br />

doesn’t really m<strong>at</strong>ter.” And suddenly it becomes much simpler and much<br />

cleaner. To me, th<strong>at</strong> is an elegant hack—saying, “This particular distinction th<strong>at</strong><br />

we used to fret over, just throw it away.”<br />

I don’t know if th<strong>at</strong>’s wh<strong>at</strong> makes a good hacker. I guess th<strong>at</strong> would be<br />

answering a slightly different question to wh<strong>at</strong>’s a brilliant hack. I guess a brilliant<br />

hacker is someone who comes up with a brilliant hack.<br />

But it’s also a programmer who gets into flow—sort of wh<strong>at</strong> Paul Graham<br />

describes as an animal. I see it specifically as a programmer who sits down to do<br />

something and they get into a mental st<strong>at</strong>e where they’re just cramming away.<br />

They’re just gener<strong>at</strong>ing stuff and the time is passing and they’re not aware of it.<br />

They’re just typing, typing, typing, typing, and gre<strong>at</strong> things are happening<br />

because they’re in th<strong>at</strong> particular mental st<strong>at</strong>e.<br />

I think probably there are a lot of workaday programmers working on<br />

upgrades to Enterprise Java (now I’ve insulted all the Java programmers) who<br />

never achieve flow. To them, it’s just kind of engineering step by step; it’s never<br />

the magic of cre<strong>at</strong>ion.<br />

Livingston: Is th<strong>at</strong> wh<strong>at</strong> makes a good software company?<br />

Spolsky: To me, building a software company—and this is kind of hand-wavy—<br />

is cre<strong>at</strong>ing the factory th<strong>at</strong> was going to be equipped for, when I have an idea or<br />

when somebody has an idea, we can throw it into the factory and get the working<br />

code <strong>at</strong> the back.<br />

The first time we ever did this was last summer with Copilot, where we took<br />

four summer interns (three programming interns and one marketing intern),<br />

and we had this idea for a particular way of doing remote desktop assistance. It<br />

was a pretty obvious idea, and we looked out in the marketplace and there were<br />

not any compelling altern<strong>at</strong>ives. We realized th<strong>at</strong>, lo and behold, we could do<br />

this with four summer interns in one summer, because it was not th<strong>at</strong> big of a<br />

programming problem. There was a ne<strong>at</strong> hack where we could reuse somebody<br />

else’s code. We could accomplish this with a small amount of effort and it was a<br />

business opportunity, so for the first time ever, Fog Creek was actually able to<br />

take an idea and, within a few months, churn out the solution to th<strong>at</strong> idea on a<br />

fairly small scale.<br />

My goal is to build a company where I can take much more significant<br />

ideas—where I can say, “Golly, backup software is really, really terrible. It’s<br />

awful for all kinds of reasons. Let’s make good backup software.” Th<strong>at</strong>’s a big<br />

project. I want to have the organiz<strong>at</strong>ion th<strong>at</strong> I don’t have yet where, when we

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!