All I Really Needed to Learn About Programming, I Learned from Java

Own CJS Hayward's complete works in paper!

Write once, debug everywhere; Prefer compile time errors to run time errors; Gotos and pointers are like bad words — they can get you into a lot of trouble; Novice-friendliness and expert-friendliness are at a trade-off; An intentionally simple syntax is compatible with a complex collection of objects; Programming in a high level language is faster than programming in a lower level language; It takes longer to learn the high level ways of calling algorithms than the low level building blocks needed to implement them; Every once in a while, you will be surprised at what you have to implement yourself — a ready-made method to return a stacktrace as a string, or have a method find its caller's class; Use the most restrictive keywords you can — it's kindness in disguise; If you want to circumvent security, you can't cast to (char *) and reconstruct private members; If you want to circumvent security, you very well may be able to serialize to a stream and reconstruct private members; Resurrect objects and die; There are some things that words cannot explain — for everything else, there are over 100 megs of documentation; Your program will see much more use if people can run it from their browsers; You can program your server to use any encryption algorithm allowed, but you can't stop your clients from storing their private keys on unsecured Windows boxes; Carefully designed languages can reduce bugs, but debugging will always be a part of programming; No matter how carefully designed the language is, people will still write code that should be indented six feet downwards and covered with dirt; A good new language makes it unnecessary to use older ones, just as a good cordless screwdriver makes it unnecessary to use a hammer or a wrench; You can lead a programmer to objects, but you can't make him think; You can paint on a glass pane in your computer or at your house — but just because you are allowed to do it doesn't mean it's (usually) a good idea; Writing a DWIM compiler is AI-complete; No matter how fast computers get, there will always be a way to make them move like molasses;