Some books/articles/websites etc. that I have enjoyed reading in the last few months (just to prove my interests do occasionally stretch beyond computers) and which I can recommend:
- Letters to a Young Contrarian (Christopher Hitchens). Just seeing the title of this book was enough by itself to compel me to buy it; memories of my childhood and my parents calling me "a contrarian bugger" were abound. Although it is a relatively short book structured as a series of essays, it is consuming reading in which Hitchens defends simple but essential ideas: free speech, free thought, enlightenment values, science, secularism, atheism, but to name a handful. Be careful though; reading this book will be the gateway into the world of the Hitch. Before long, you'll be seeking out his many essays, speeches and debates that exist on the web.
- Freakonomics (Steven D. Levitt & Stephen J. Dubner). Seemingly everyone has at least heard of this one, but I only recently got around to reading it. Economics is not a particularly strong interest of mine, but when it overlaps into the kind of empiricism expounded here, I suddenly take notice. (The approach blends many disciplines, including mathematics, sociology and psychology, much like the work of empirical software engineers like myself.) The discussions are very absorbing (particularly the theory of legalisation of abortion reducing crime rates), and sometimes I could not help but recall parallel problems in software engineering (compare Levitt showing how fining people a little for being late makes the problem worse, with giving bonuses to software developers for the number of bugs they fix).
- The Classical World (Robin Lane Fox). I haven't quite finish this one yet (it's taking a while, being a 600 page monster). A superbly readable text on the period of Ancient Greece and Rome, with an impressive level of detail. After reading this, I realise why Stephen Fry finds the achievements and sophistication of the Ancient Greeks so precious.
- How Pair Programming Really Works (Stuart Wray). IEEE Software, Jan/Feb 2010. A great article that clarifies misunderstandings of pair programming and backs it up with some solid theory.
- IEEE Software, Mar/Apr 2010. Special issue on architecture in Agile Development. This was interesting to me, even if it's only because it gives me some kind of personal validation (being the architect on an agile software project).
- Agility and Architecture: Can They Coexist? (Abrahamsson, Babar, Krutchen). The editorial, which sums up nicely the argument that architects have an important place in agile software projects.
- Agile-Architecture Interactions (James Madison). A really good piece that gives the author's take on the agile architect's responsibilities and how they relate to the practices:
- Quality control
- Establishing important design patterns
- Important hardware/software stack decisions
- Peaceful Coexistence: Agile Developer Perspectives on Software Architecture (Falessi, Cantone, Sarcia, Calavaro, Subiaco, D'Amore). A smaller work presenting findings from a survey of agile developers in IBM. Interesting and thought-provoking, but I found the survey much too limited.
Finally some link love for the enjoyable things I've found on the web:
- Should the Web Be Allowed in Class? Thanks to Florian Thiel for bringing this one to my attention, very relevant for someone in my position as a young(ish), new lecturer in IT-related subjects. It concerns the age old problem (incidentally one of the first discussions I got into as a graduate student), discussed by lecturers for a long time, about how to deliver course content. I happen to think there's scope to be quite radical with lectures, but that would deserve a post of its own.
- The Beginning of the End for Impact Factors and Journals. I've mentioned this before, but I'll mention it again, just because reform of this system is so sorely needed. An old colleague of mine, Joss Winn, is a particularly active advocate in this area.
- Badscience. I can never recommend Ben Goldacre's work enough. It came on my radar a few years ago just as I was beginning my PhD studies, and was one of the things that helped me to learn what it is to investigate and know something empirically. I even recommend it to my students on my Empirical Software Engineering course, as a source of examples of good vs. bad use of statistics. On his site you'll find links to the many other fine bloggers on good/bad science, too numerous to mention here.
- The Old New Thing. Open source types get a reputation for being Microsoft-hostile, unfairly I happen to think, so here's a shout out to a Microsoftie. Raymond Chen's blog spends most of its time telling you why Microsoft Windows is the way it is. According to Joel Spolsky, it was Chen's job at Microsoft to keep Windows's backwards compatibility to a maximum. After reading some of his posts on the matter and appreciating the staggering complexity of a computer operating system, I think you will be impressed at the achievements.