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

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;

Author: C.J.S. Hayward

C.J.S. Hayward is an Orthodox author and Renaissance man with master's degrees bridging math and computers (UIUC) and theology and philosophy (Cambridge). His most prized work is what he writes in Eastern Orthodox, Christian theology and apologetics. Readers of apologists like C.S. Lewis, G.K. Chesterton and Peter Kreeft, contemporary Orthodox authors such as Met. KALLISTOS Ware, and classic authors like St. John Chrysostom will find much food for spiritual reflection.