{"id":1616,"date":"2013-03-02T00:00:00","date_gmt":"2013-03-01T23:00:00","guid":{"rendered":"https:\/\/wwwneu.strehle.de\/tim\/weblog\/archives\/2013\/03\/02\/1565\/"},"modified":"2025-11-19T14:34:34","modified_gmt":"2025-11-19T13:34:34","slug":"1565","status":"publish","type":"post","link":"https:\/\/www.strehle.de\/tim\/weblog\/archives\/2013\/03\/02\/1565\/","title":{"rendered":"Reading list for younger programmers"},"content":{"rendered":"\n<p>As a so-called \u201csenior developer\u201d, I should have taken the time to help younger colleagues learn. (I may have shied away from teaching them because they usually have real Computer Science degrees, while I\u2019m just an Information Scientist-turned-programmer with lots of self-education and training on the job. But not all real-world wisdom seems to be taught in Comp Sci courses.)<\/p>\n\n\n\n<p>The best advice I can give: Don\u2019t take my advice, learn from the masters instead. There\u2019s so much more to the craft of programming than just getting your code to run. No matter what language you will be programming in, read these three books:<\/p>\n\n\n\n<p>Eric Steven Raymond\u2019s <a href=\"http:\/\/catb.org\/~esr\/writings\/taoup\/html\/\">The Art of Unix Programming<\/a> (free, online), <a href=\"https:\/\/pragprog.com\/titles\/tpp20\/the-pragmatic-programmer-20th-anniversary-edition\/\">The Pragmatic Programmer<\/a> by Andrew Hunt and David Thomas, and <a href=\"https:\/\/basecamp.com\/gettingreal\">Getting Real<\/a> by Basecamp.<\/p>\n\n\n\n<p>Then make sure you know these phrases, you might need them from time to time:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/www.dreamsongs.com\/RiseOfWorseIsBetter.html\">Worse is better<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/c2.com\/xp\/YouArentGonnaNeedIt.html\">You aren\u2019t gonna need it (YAGNI)<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/KISS_principle\">Keep it simple stupid (KISS)<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/c2.com\/xp\/DoTheSimplestThingThatCouldPossiblyWork.html\">Do the simplest thing that could possibly work<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.zdnet.com\/article\/complexity-kills-can-microsoft-and-all-of-it-simplify\/\">Complexity kills<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Gall%27s_law\">A complex system that works is invariably found to have evolved from a simple system that worked<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/c2.com\/cgi\/wiki?PrematureOptimization\">Premature optimization is the root of all evil<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/www.joelonsoftware.com\/articles\/LeakyAbstractions.html\">All non-trivial abstractions, to some degree, are leaky<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Eating_your_own_dog_food\">Eat your own dog food<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\">Don\u2019t repeat yourself (DRY)<\/a>.<\/li>\n\n\n\n<li><a href=\"http:\/\/worrydream.com\/refs\/Brooks-NoSilverBullet.pdf\">There\u2019s no silver bullet [PDF]<\/a>.<\/li>\n\n\n\n<li><a href=\"https:\/\/sensible.com\/dont-make-me-think\/\">Don\u2019t make me think<\/a>.<\/li>\n<\/ul>\n\n\n\n<p>Now go and read <a href=\"https:\/\/www.tbray.org\/ongoing\/\">Tim Bray<\/a>, <a href=\"http:\/\/scripting.com\/\">Dave Winer<\/a>, <a href=\"http:\/\/www.joelonsoftware.com\">Joel Spolsky<\/a>, <a href=\"http:\/\/www.codinghorror.com\/blog\/\">Jeff Atwood<\/a>, <a href=\"http:\/\/37signals.com\/svn\/\">Signal vs. Noise<\/a>, <a href=\"http:\/\/www.paulgraham.com\/articles.html\">Paul Graham<\/a>, and <a href=\"https:\/\/seths.blog\">Seth Godin<\/a>.<\/p>\n\n\n\n<p>Have fun and good luck!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a so-called \u201csenior developer\u201d, I should have taken the time to help younger colleagues learn. (I may have shied away from teaching them because they usually have real Computer Science degrees, while I\u2019m just an Information Scientist-turned-programmer with lots of self-education and training on the job. But not all real-world wisdom seems to be [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_share_on_mastodon":"0"},"categories":[1],"tags":[],"class_list":["post-1616","post","type-post","status-publish","format-standard","hentry","category-weblog"],"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/posts\/1616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/comments?post=1616"}],"version-history":[{"count":3,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/posts\/1616\/revisions"}],"predecessor-version":[{"id":2277,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/posts\/1616\/revisions\/2277"}],"wp:attachment":[{"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/media?parent=1616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/categories?post=1616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.strehle.de\/tim\/wp-json\/wp\/v2\/tags?post=1616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}