
Just Make It Faster - admp
http://www.feld.com/wp/archives/2010/12/just-make-it-faster.html
======
yesno
Good post. Don't forget to pay your full-stack engineer with a full-stack
money. Don't be cheap on them mkay?

On the other hand, I'd like to have a full-stack CEO as well. Not just someone
who can only say "make it work", "make it faster", "make me some money".

~~~
supermanwillfly
I'm curious to know what do you think is a reasonable wage in SF for a "full-
stack" developer. Feel free to break it down by years of experience.

And by full-stack CEO, you mean someone who understands all the aspects of the
business and isn't a pandering, disconnected, figure-head? In a lot of
companies they'd be called the operating CEO, or in more cases, the
COO/president.

~~~
yesno
How about in the ballpark of a health specialist (doctor) salary? 200k at
least? 300k? Or maybe pro-Athlete level salary? 700k/season (NBA, 2nd round
draft)

Am I exaggerate in terms of salary? probably... these days, who can learn
every single technology (from hardware to software) under the sun?

WebServices, REST, ORM, DB, data modeling, data warehouse, virtualization,
security, capacity planning, storage, performance tuning, backup and recovery,
test automation (you do test your own code right? not just throwing shitty
code to QA right?), build and deployment strategy.

[No, NoSQL doesn't count]

------
Eliezer
There are _non_ -full-stack programmers? That's a scary thought. I have
trouble imagining what sort of mind could be able to write code, but only one
kind of code.

~~~
DanielBMarkham
Non full-stack is the norm, actually.

There are really two types of coders: the scrappy Ill-figure-it-out-as-I-go-
along full-stack coders, and the Im-working-9-to-5-and-have-50-certifications
coders.

Of course I exaggerate a bit, but businesses like to put people in little
boxes. That means that the vast majority of business programmers (which are
most of them) are working in one specialized area. They can write code, but
don't know how the database works. Or they can make a kick-ass website, but
have no idea how the back-end works. They can make the best library you ever
saw, but they have no people skills. It's very common.

In fact, "full stack" to me means making things people want, which includes a
lot more than just bits and bytes. It starts with words coming out of
somebody's mouth and ends with them being happy. Lots of little steps in
between.

If anything, the generalist is a dying breed.

------
rhymeswithcycle
The author achieved a big speed increase with a faster disk, more RAM, adding
indexes, and rewriting slow queries. The relevant skillset is "knowing a thing
or two about databases", not "full-stack programmer".

~~~
fleitz
Incorrect, the point about being a full stack programmer is knowing where to
look. You only need to know about databases to FIX the problem but you need
the full stack to FIND the problem.

If you knew a little about assembler then maybe you'd waste a lot of time
rewriting code. Instead of fixing the db. Full stack programmers are valuable
for their knowledge that is an inch deep but a mile wide. Any fix a full stack
performs is going to seem trivial to an expert in that field.

~~~
protomyth
A "full stack programmer" will be able to look at the whole and see what
should be done differently, but a database performance person (not a generic
DBA) will be bring a much deeper knowledge of that one area (just as a GPU
programmer will know more about GPU optimization then the application
developer). Sometimes you need that specialist to get you over the hump. An
"inch deep and mile wide" sort of knowledge will not get you the fastest
performance.

~~~
pmiller2
It's been my experience that most of the time, you don't need "the fastest
performance." You really only need things to be "fast enough." Though the
dividing line between "too slow" and "fast enough" is pretty murky, it's
obvious when you're firmly on one side or the other. In the article example,
24 hours is clearly too slow, while 10 minutes is clearly fast enough.

Consider, too, that expert-level knowledge of the sort a DB performance person
will bring is often (rightly or wrongly) more expensive than that of a
generalist. Maybe the expert can bring the runtimes down by a further factor
of 100 (to 6 seconds), but, at that point, you have to seriously question
whether it's worth it. They might be able to get another factor of 100 and get
the runtime for a single analysis down to 6 seconds, but at that point, you
have to start seriously questioning whether it would be worthwhile to do it.
In the article's example, the analysis step could only be run twice in a week
because it took 24 hours to execute (and, then, presumably the other 3 days of
the week were spent doing something with the results). Since it might take a
full day and a half of work to actually do anything with the results, getting
the time to run an analysis down from 10 minutes to 6 seconds clearly isn't
worth it. If it were me, I might have even stopped once I got the runtime down
below an hour, because then it could be run over a lunch break or during a
meeting or something.

I suppose my point is basically equivalent to Knuth's quip about premature
optimization. In this particular example, there seems to be no reason to
optimize further, because the system is probably 95% as useful as it can
possibly get. Eliminating 47.8 hours of runtime per week lets you squeeze in
one more run per week, but cutting that runtime down to 12 seconds per week
(which is essentially 0) would seem to have a very small marginal gain.

~~~
j_baker
Wait a minute, who says that the specialist also can't do "fast enough"? And
more to the point, how do you know that the "fast enough" solution is within
the reach of the generalist or that the specialist can't figure it out sooner
than the generalist can? I can't count the number of times I've spun my wheels
on something for days and then brought the problem to an experienced database
developer who figured it out in minutes.

~~~
khafra
I think his point is that there's usually a bottleneck somewhere, and unless
the bottleneck lies within the specialist's realm of specialization, the
generalist is in a better position to spot it.

~~~
j_baker
What are you trying say? That there are pros _and_ cons behind the decision
between specialization and generalization? That's crazy talk if ever I heard
it.

------
michaelbuckbee
Am I wrong in thinking that most technical founders are full stack developers?

~~~
waterlesscloud
I'm thinking "Full stack developer" is about to start replacing "ninja
rockstar" in job ads.

~~~
Jach
I'm okay with that, at least "Full stack developer" is a bit more descriptive.

~~~
jaxn
And can verified.

------
maeon3
If something is taking way too long, often times it shouldn't be made faster,
it should be done differently. For example, it takes me 4 hours to get to
work, just making the car faster isn't going to help. Maybe the solution is to
take a plane, get a different job,work from home, or move closer to where you
want to be.

~~~
pierrefar
Yep. What the post described as the final solution was bringing down the
running time from 24hrs to 10min using straightforward optimisations. I would
guess moving from 10min to 30sec would take doing it differently.

------
binaryfinery
Ain't nothing faster than 0. I've done games for 20 years. The best
optimizations are figuring out how to avoid running the code in the first
place. This is where full-stack programmers come in.

There seems to be a battle here between full-stackers and specialists, but if
you think of a full-stacker as "an extremely experienced generalist", then I
think there are plenty of "extremely experienced specialists" who fit that
description too. That is to say, an extremely experienced "database optimizer"
is going to know how the presentation layer hits the database and how the
database hits the disc, and I expect they would know many different database
technologies.

------
binaryfinery
If everyone could just say "I'm a full-stack" or "I'm a generalist" it'd save
me a lot of reading. Thanks. :-)

