Some Links from "The Best Software Writing 1"
I picked up this book The Best Software Writing I in Barnes and Noble in New Jersey last November (2006); I was inspired by the back cover text, where the editor raged against the generally poor standard of writing by programmers, and how books like his aimed to set a standard for good writing on software. Amen brother!
(Only later did I realise that the editor is Joel Spolsky, of Joel On Software fame.)
Most if not all the essays in the book are available for free on the web. Still it was great to be able to read them in a book. And if some of them annoyed me, others made me think about things in a new way or from a different viewpoint, or introduced me to concepts that were completely new to me - which makes it all more than worthwhile for me.
Anyway I've assembled a set of links here to the ones that I liked the best:
- Style Is Substance Ken Arnold
- The Pitfalls of Outsourcing Programmers Michael Bean - if software development is principally a design activity rather than a manufacturing one, then outsourcing doesn't make so much economic sense.
- ICSOC04 Talk Adam Bosworth - ok, so the title doesn't tell you anything, but this is basically making the case for keeping things simple and flexible.
- Autistic Social Software danah boyd - if "social networking" software has interfaces designed by people with "autistic" social interaction patterns, then do they make their users also interact with each other with the same behaviours?
- Why Not Just Block the Apps That Rely on Undocumented Behavior? Raymond Chen - this gave me a pause for thought, another example of when the "right thing" isn't always the "best thing" when developing software that has to operate in the real world.
- Save Canada's Internet from WIPO Cory Doctorow - why should the internet be considered as different to the telephone system?
- EA: The Human Story ea_spouse - the real-life effects of bad management on your family and loved ones, actually this one frightened me a bit.
- Strong Typing vs. Strong Testing Bruce Eckel - "If it's not tested, it's broken"
- Processing Processing Paul Ford - Processing is a language that for creating images and animations. What if we had more elegant languages like this for the web?
- Great Hackers Paul Graham - the preface describes this article as controversial, which I guess it would be since it attempts to pin down the qualities that make a "great" software developer.
- Starbucks Does Not Use Two-Phase Commit Gregor Hohpe - I'd always been a bit leary of analogies between software problems and real-world situations (the ones that involve real people and all). However this is an interesting take on the form, which has made me think again.
- How Many Microsoft Employees Does It Take to Change a Lightbulb Eric Lippert - the project that I work for is certainly no Microsoft, however I really identified with the sentiment of this piece. It's for anyone who's ever been told that implementing a new feature must be trivial, right?
- A Group Is Its Own Worst Enemy and Group as User: Flaming and the Design of Social Software Clay Shirky - these two are about the dynamics of groups using networked systems as a communication medium. For some reason Shirky's writing in the second article in particular reminded me a lot of Eric Raymond's books.
- Closing the Gap, Part 1 and Part 2 Eric Sink - although these two articles are about how ISVs ("independent software vendors") can be successful, I think that there are some good points that are applicable to any project that wants to succeed.
- Hazards of Hiring Eric Sink - at least in part I think that this could be seen as another perspective on the Paul Graham "Great Hackers" article, since it's basically about how to recognise a great programmer.
- PowerPoint Remix Aaron Swartz - this is Edward Tufte's "The Cognitive Style of PowerPoint" (an anti-PowerPoint polemic) rendered ... as a PowerPoint summary.
- A Quick (and Hopefully Painless) Ride Through Ruby (with Cartoon Foxes) why the lucky stiff - I think only chapter 3 is in the book, however this was a really nice little introduction to Ruby. I haven't tried programming in it yet though...