
How to be a Programmer - nreece
http://samizdat.mines.edu/howto/HowToBeAProgrammer.html
======
nostrademons
Many of these are pretty good, but on a startup-focused site, I just have to
point out this:

"It then becomes your job to help the entrepreneur find a reasonable solution
which is merely hard and gets most of what they wanted."

Many startups are founded by doing something impossible (Google, Apple,
Akamai, YouTube, PayPal). Most of the remainder are founded by doing something
useless (Twitter, Facebook, del.icio.us, Reddit, etc.) This is for very good
reason. If something is neither useless nor impossible, it's quite probable
that there's a big company out there that's already working on it, and they
can bring more resources to bear than you can.

So if you _are_ the entrepreneur and not merely working for him, it's your job
to do the impossible. And yeah, that means turning it into the merely hard and
then doing it. But if you aim for "merely hard" to begin with, you'll probably
end up producing a mediocre product in the end. After all, products never have
quite the same glamor when they're done as when they're conceived in your
head.

~~~
protothomas
I think your point regarding impossible/useless ideas is very insightful, but
I'd take slight exception to the word 'useless'. I think a better word would
be pointless - things like twitter, reddit etc aren't useless by virtue of the
fact that millions of people do use them, if however you describe what they do
(and, as you point out, this is the reason that big companies wouldn't
approach those sorts of ideas) then a reasonable response would perhaps be to
describe them as pointless.

~~~
RodgerTheGreat
Perhaps "useless" from the perspective of advancing the state of the art?

~~~
anamax
> Perhaps "useless" from the perspective of advancing the state of the art?

Facebook is advancing the state of the art wrt computer systems.
<http://www.stanford.edu/class/ee380/Abstracts/100505.html> (plug) is one of
the things that they've released.

~~~
nostrademons
HipHop isn't exactly advancing the state of the art wrt computer systems. It
serves FaceBook's needs very well, but source-to-source translation is already
pretty well understood. There's Google's Closure Compiler (JS to tighter JS),
GWT (Java to JavaScript), PyJamas (Python to JavaScript), Fog Creek's Wasabi
(Visual Basic++ to PHP and Visual Basic), all the compilers that target C, and
a bunch of toy or one-off production systems that serve their authors' needs
but are never released.

The "state of the art in computer systems", IMNSHO, is things like Jekyll (
_bidirectional_ source-to-source transformation, where the generated C code is
readable & editable and can be transformed back into Jekyll), Subtext
(programming by copying & editing), Epigram (dependent types let the computer
write most of the program for you, interactively), and a few other research
projects that most people have never heard of.

~~~
anamax
> HipHop isn't exactly advancing the state of the art wrt computer systems.

HipHop advances the state of the art in the same way that a faster JVM does,
or a new VM for that matter.

The claim was that Google was advancing the state of the art and Facebook
wasn't.

If you exclude the application of known techniques to new problems or in new
situations, Google hasn't advanced the state of the art, so the claim is
false.

If you allow the application of known techniques to new problems or in new
situations, then Google has advanced the state of the art. However, so has
Facebook. (Thrift counts too.)

No, Facebook hasn't done as much, but it's younger.

~~~
jbooth
Cassandra and Hive have to count for something as well.

------
thecombjelly
I've been through this before and it does offer a lot of good advise but I
really feel like it isn't describing how to be a programmer but just some tips
for issues that programmers face. Being a programmer requires things like
creativity and curiosity as well as experience with these things.

~~~
mitjak
I was going to ask about whether there is any of the latter but I guess not.
Too bad.

------
alinekhalaf
Just a suggestion, but it worked for me. Play games that involve
scripting/programming. The more fun you make it, the more likely you'll be to
remember what you've learned. You could start with WoW - learn how to create
mods. What I enjoy most, though, are MUD's ( multi-user dungeons). What these
are, basically, are text-based games, most of which are RPG's, played through
a client. IRE has made a few games in which combat requires scripting. Being
able to script in your client's chosen language ( I use Lua ) gives you a big
advantage over those of the player-base who haven't learned to script. I got
into this about three years ago, and I'm still learning. While it's the most
fun I have gaming, it's also sparked my interest in learning to program.
What's best is I find myself grasping programming much more easily because of
what I've learned while MUD'ing.

<http://welcome-to-croatia.com/holiday-apartment>

~~~
gyardley
Please don't try to use Hacker News for SEO. Your comment is fine, and Croatia
is a lovely country, but holiday apartments in Croatia have nothing to do with
either your comment or the story.

------
jheriko
Its a shame this is out-of-date a bit... optimising loops by removing floating
point operations? On x86/x64 its hard to remove a native float and replace it
with something faster without some quality/accuracy tradeoff these days.

~~~
yason
Fixed point arithmetic is often much faster than even native floats if you
_really_ need the speed somewhere.

------
leif
Managed to skip forward to the one section with the word "synergize" twice in
one pageful, stopped reading immediately.

------
joegaudet
I like the bit about doc, I am in agreeance with most of that section.

