
Articles Every Programmer Should Read - javinpaul
http://javarevisited.blogspot.com/2014/05/10-articles-every-programmer-must-read.html
======
patrickmay
The list is heavily weighted to implementation details. I'd include a few
essays like "The Rise of Worse is Better"
([http://dreamsongs.com/RiseOfWorseIsBetter.html](http://dreamsongs.com/RiseOfWorseIsBetter.html))
to encourage programmers to take a step back and think about design and
architecture more often.

~~~
platz
HOWTO: Be more productive
[http://www.aaronsw.com/weblog/productivity](http://www.aaronsw.com/weblog/productivity)

On Being A Senior Engineer [http://www.kitchensoap.com/2012/10/25/on-being-a-
senior-engi...](http://www.kitchensoap.com/2012/10/25/on-being-a-senior-
engineer/)

~~~
MasterScrat
> Life is short (or so I’m told) so why waste it doing something dumb?

Ooh Aaron... :-(

------
facorreia
Good list. I would add "Falsehoods Programmers Believe About Names"[1].

[1] [http://www.kalzumeus.com/2010/06/17/falsehoods-
programmers-b...](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-
believe-about-names/)

~~~
yread
[http://wiesmann.codiferes.net/wordpress/?p=15187&amp;lang=en](http://wiesmann.codiferes.net/wordpress/?p=15187&amp;lang=en)

Falsehoods programmers believe about geography

[http://www.mjt.me.uk/posts/falsehoods-programmers-believe-
ab...](http://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-
addresses/)

Falsehoods programmers believe about addresses

[http://www.cscyphers.com/blog/2012/06/28/falsehoods-
programm...](http://www.cscyphers.com/blog/2012/06/28/falsehoods-programmers-
believe-about-gender/)

Falsehoods programmers believe about gender

[http://erratasec.blogspot.com/2012/06/falsehoods-
programmers...](http://erratasec.blogspot.com/2012/06/falsehoods-programmers-
believe-about.html#.UaeWSGSG1qI)

Falsehoods programmers believe about networks

[http://pozorvlak.livejournal.com/174763.html](http://pozorvlak.livejournal.com/174763.html)

Falsehoods programmers believe about build systems

[http://infiniteundo.com/post/25326999628/falsehoods-
programm...](http://infiniteundo.com/post/25326999628/falsehoods-programmers-
believe-about-time)

Falsehoods programmers believe about time

[http://butgrace.com/2012/06/19/more-falsehoods-
programmers-b...](http://butgrace.com/2012/06/19/more-falsehoods-programmers-
believe-about-time/)

More falsehoods programmers believe about time

~~~
andyroid
All of these are great resources. Just as "Falsehoods programmers believe
about names" they are howevere not resources _every_ programmer needs to read
(though they may of course benefit from it).

And honestly, a lot of "falsehoods" are really just nitpicking. I mean yes,
you may once in your lifetime encounter a user with a real name longer than
2048 characters (or wherever you've set your limit) but really, if those are
your biggest problems you're in a really good position :)

~~~
shadowfox
It is usually the simpler issues that bite you when internationalizing. The
separation of first and last names don't always work outside the anglosphere
(and sometimes even within it). Some users have 5/6 part names etc etc.

------
mwnz
10 Articles every web programmer should read. Personally, SEO has zero bearing
on my work. Java is only relevant to a subset of developers.

~~~
nicholassmith
I'd argue that the ones on memory, floating point arithmetic and games
programming networking have little relevance for most web developers.

~~~
mschuster91
Any website dealing with any form of sales/money WILL have to deal with FP
arithmetic problems sooner or later!

~~~
sergiosgc
Sorry, no. If you are doing your accounting in floating point, you are setting
yourself up for really strange non-balancing balance sheets. You can do
everything in fixed point.

Remember that fixed point does not mean the point is at the rightmost
position. It means it is in a fixed position.

~~~
mschuster91
Of course, yes. But the naive people will start using FP math - so they have
to be warned as early as possible.

I'm doing all my math in fixed point (eurocent), but that has its drawbacks
too if you deal with VAT and have to hit a specific total price given only a
VAT rate and a net price... or if you're dealing with gas pumps and that x.xx9
cheating. Or scales, where the law requires more precision...

------
lmedinas
This article "How to write shared libraries"[1] also from Ulrich Drepper
should be added to the list. At least for C/C++ Programmers.

1 -
[http://www.akkadia.org/drepper/dsohowto.pdf](http://www.akkadia.org/drepper/dsohowto.pdf)

~~~
EdwardCoffin
Link broken. Should be
[http://www.akkadia.org/drepper/dsohowto.pdf](http://www.akkadia.org/drepper/dsohowto.pdf)

~~~
lmedinas
Done! thanks

------
bitlord_219
"What every programmer should know about SEO"

Yeah, no.

~~~
asolove
Why not? While there are lots of terrible SEO consultants and stupid
recommendations, knowing how SEO actually works and the way it rewards good,
up-to-date content, is incredibly valuable. And knowing how things really work
is the best way to defeat the crummy suggestions and gimmicks that a
misinformed marketer might suggest.

~~~
CanSpice
When the article title includes the words "every programmer", that's a really
large set of programmers. I don't think a programmer working on embedded
systems needs to know about SEO, nor do kernel hackers, nor do scientific
programmers...

~~~
Swizec
Until they want their sexy opensource library to be used by more than one
person.

~~~
k00pa
Make good enough library, keep the source valid and the persons will come.

I have never done any special SEO tricks and yet all my content is fairly high
on the results.

SEO in general is quite useless in my opinion. Make the content good enough so
that people want to visit the site! Don't trick people to come there.

~~~
sergiosgc
Oh, the engineer marketing moto: make a good product and customers will come.
So appealing and so false!

I'm not doubting your experience, but this is such a common misconception that
I must point it out.

If usage of your product is not what puts food on the table, by all means go
for the engineering marketing approach. It's genuine.

If you need customers to have a roof on top of your head, though, learn
marketing. It's not evil, it is necessary, and strange as it may seem, it is
as important to success as product quality.

~~~
ASneakyFox
I think he means if your website contains information google can find it.
simple as that. only thing you really need to know is that text on its own is
more easily searched than images. but that should be obvious to any one.

------
ufo
GOTO Considered Harmful

[http://www.u.arizona.edu/~rubinson/copyright_violations/Go_T...](http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html)

If you actually read the letter you can see that it also applies to modern
programming and not just to "goto". Its truly a timeless article that everyone
should read (and its really short!)

~~~
mncolinlee
One might argue that this classic article equally applies to callbacks.

You could read it as a manifesto for solutions to callback hell which do not
mess up your program's state, such as reactive programming.

[http://www.reactivemanifesto.org/](http://www.reactivemanifesto.org/)

------
krazydad
Ken Thompson's Turing Award Lecture: "Reflections on Trusting Trust"

[http://cm.bell-labs.com/who/ken/trust.html](http://cm.bell-
labs.com/who/ken/trust.html)

~~~
auvi
This is part of the reading list of Stanford's CS PhD qualification.
[http://seclab.stanford.edu/SecurityQual.html](http://seclab.stanford.edu/SecurityQual.html)

------
curiousDog
There should also be an article about how every programmer should write
without too many grammatical errors. Some of the emails I used to receive were
borderline incomprehensible and I'd have to go battle it out in person.

------
mabbo
"Numbers every programmer should know"\- Probably the most interesting part of
that article is the slider. As you move it up and down, you can see how all
the different things get faster over time.

... Except for the final one, "Packet Roundtrip". Networks have reached a
physical limit of the universe, the speed of light.

[http://www.eecs.berkeley.edu/~rcs/research/interactive_laten...](http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html)

~~~
tinco
There is no law that says that information can not travel faster than light is
there? The law is just a out mass/energy.

On top of that I believe faster than light transfer of information has already
been experimentally shown to exist.

~~~
pdonis
_> There is no law that says that information can not travel faster than light
is there?_

Yes, there is. Information has to be carried by some form of mass/energy, so
if mass/energy can't travel faster than light, neither can information.

 _> I believe faster than light transfer of information has already been
experimentally shown to exist._

No, it hasn't. If you're thinking of the CERN neutrino experiments a couple of
years ago, that turned out to be an equipment error.

~~~
mschuster91
Hmmm... shouldn't two linked quantum particles change their state in sync, no
matter the distance?

~~~
mdemare
I don't think so; see:
[http://lesswrong.com/lw/q2/spooky_action_at_a_distance_the_n...](http://lesswrong.com/lw/q2/spooky_action_at_a_distance_the_nocommunication/)

~~~
pdonis
It's worth noting that the full explanation given here assumes that the many-
worlds interpretation is correct, which not all physicists would agree with.
But the "no-communication theorem" is true independently of which
interpretation of QM you adopt.

------
sliverstorm
To really make something of the knowledge of memory & latency, an 11th article
to get you thinking about how your program interacts with the cache:

[http://research.scee.net/files/presentations/gcapaustralia09...](http://research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf)

------
laxatives
Can anyone provide some good reads on the replaying leap second concept? Has
anyone ever taken advantage of this? How do projects that rely on subsecond
accuracy and syncronization resolve the issue?

edit: for anyone interested, there has never been a negative leap second (it's
always been something like 23:59:59, 23:59:60, 00:00:00). see
[http://en.wikipedia.org/wiki/Network_Time_Protocol#Security_...](http://en.wikipedia.org/wiki/Network_Time_Protocol#Security_concerns)

edit2: however, there are negative leap seconds in UNIX time. I wonder if
there's a vulernability here? see
[http://en.wikipedia.org/wiki/Unix_time#Leap_seconds](http://en.wikipedia.org/wiki/Unix_time#Leap_seconds)

------
ggchappell
Perhaps we can back up a bit. The first reading I used to assign to my
students back when I was teaching lower-level classes (I'm a C.S. prof.) is
"On Following Rules" by Kirit Saelensminde.[1]

It's a quick, easy read. It makes a point that is important and not hard to
understand, but that is often missed. And it provides a framework for dealing
with the concepts you get from all those other articles you're supposed to
read.

[1]
[http://www.kirit.com/On%20following%20rules](http://www.kirit.com/On%20following%20rules)

~~~
zorbo
I'd like to add a rule 3: Don't impose or evangelize rules you don't fully
understand.

~~~
ggchappell
Good idea.

Another way to think about it is that if someone doesn't understand a rule,
then they are subject to the rule. If they do understand it, then the rule is
subject to them.

Kirit is saying that, in the latter case (and only in that case) they get to
decide whether to follow it.

One reason your idea works is that, in the first case, they don't get to
assume that others are also subject to the rule.

------
platz
For every article you tell me I _must_ read, I'll be happy to demand you read
10 articles of my choosing in return.

------
kawliga
SEO ???

hahahahaaha

