Skip to main content

Book: Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and [...]

This book is effectively a collection of Joel's blog postings and letters, assembled into a somewhat coherent sequence of five parts. The first two parts are the most useful - “Bits and Bytes: The Practice of Programming” and “Managing Developers”.

I found part two exceptionally enlightening – this is the first book/article that I've read which deals with the matter of managing software developers directly, from the point of view of a former/current programmer.

Part one (The Practice of Programming) contains a very useful series of four chapters entitled “Painless Functional Specifications” - again, fantastically simple ideas and solid reasoning as to why it's critical that (almost) any piece of software development should be preceded by the thought process and documentation phase that amounts to a functional specification. I would just about say that this series of articles (or something resembling it) is a must read for any developer. Too many developers (myself included at certain times in the past) in my opinion are all to willing to dive into coding ahead of putting the simplest of designs on paper – this process alone can reveal fundamental flaws in a plan. Joel goes so far as to recommend that developers take a simple course on practical writing, totally agree. Almost all of the other chapters in this section are brilliant and enlightening – certainly however “Painless Functional Specifications” stands out as gold IMO.

Parts three, four and five are not so well organised and start to devolve somewhat into (loose?) assemblies of blog postings; many of which are revealing and fascinating (especially IMO, where Joel makes comparisons to his experiences as a Program Manager at Microsoft). There's a few posting about .NET that are particularly intriguing.

Many of the articles in the book were written in the years ranging 1999-though-2004; a period of time that the .NET Framework was in it's beta manifestation or in v1.0 and v1.1. I find this section fascinating for two reasons. Firstly, Joel has recorded, like a time capsule, some of the ridiculous announcements and summaries of .NET that Microsoft first put out there. I remember at the time, as a student and emerging professional developer being simultaneously intrigued and baffled as to what the heck .NET actually was. Over a period of a couple of years the hype boiled down to an apps development framework that was more-or-less similar to Java. Some of the fantastically broad and meaningless spiels that Microsoft were using to describe .NET at the time made it seem of equivalent magnitude and significance to a manned mission to Mars or Skynet becoming self aware, without providing any detail whatsoever about what .NET actually was. I guess however a campaign that marketed .NET as “Microsoft's equivalent to Java” wouldn't go down to well with non-technical folk. Joel saw though the bollocks back then with crystal clarity. The other element of Joel's commentary of .NET that rang true was his questioning of the need to engage .NET seriously as a development platform, and the cost of rewriting existing code-bases to integrate with .NET. To do this is a costly venture that many businesses are still struggling with the practicality of today. I remember at the time, the organisation that I was working with was wary of .NET and the cost that it represented from a business perspective. Joel's writings from this era reflect the exact same sentiment. For myself, at this time I was a fledgling developer who has just realised what .NET was all about and was keen as to get stuck into it – this didn't help things, and eventually led to my departure from a good company (voluntarily!). I have gone on to become a strong and accomplished .NET developer, at the cost of an opportunity to be part of a great NZ success story. Them's the breaks I guess – I enjoy what I do regardless and am still on good terms with the company that provided me with my first break into the software development industry (they are my Aunty and Uncle – the company is Abtrac), and that's what counts I think. Besides, I have moved on to another NZ success story! In summary, Joel's critique on the turmoil that the introduction of the .NET Framework brought to the Microsoft software development community is in depth and, I think, heartfelt. I enjoyed it.

In summary, this is an extremely useful book that is written in a lively and humorous manner. Well worth a read for anyone who has anything to do with software development. And in my opinion, a must read for Microsoft software development leadership/management people.

Title: Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity
Author: Joel Spolsky
Link: Amazon
Tags: .NET, Book, Joel, Management, Software Development


Popular posts from this blog

HOW-TO: Apply a “baseless merge” in Team Foundation Server 2010 (and 2012)

Another purely technical post on TFS...
The scenario We wish to migrate code between branches that do not have a branch/merge relationship, in order to expedite urgent changes being made by a project team, without disrupting on-going BAU development work. Sample branch hierachy/strategy Imagine the following branching strategy in TFS (visible by connecting to TFS via Visual Studio 2010 or 2012):

Essentially you have a "DEV" branch, which has a "QA" branch, which in turn has a "PROD" branch. DEV is the branch that you would be using for BAU development. As a piece of development matures, you move it into QA, where it is tested by your internal QA team. There may be further changes made in DEV that are moved into the QA branch as the QA team pick up issues. Once the QA team are happy with a packaged of changes, they will move them into PROD, which is essentially the hand-over to the customer. The PROD branch represents the software that the customer has.


HOW-TO: Add/edit a field in Team Foundation Server 2012 using Visual Studio 2012

It's been a while since I made a purely technical post...

So, today I wanted to make a change to a Microsoft Team Foundation Server 2012 (TFS2012) instance that I am working with to reflect "Actual" time spent on a task - mainly for reporting purposes, and because I have found in the past that making this minor process adjustment yields a relatively useful metric over the long-term.

I am using the Microsoft Scrum 2.1 Process Template ( for a project that I am working with. So that I don't forget how to do this (again!) I will blog-post the procedure I've used to add this field to the template as a screen-shot-based tutorial, as follows...
Before Assuming you are familiar with the Scrum Process Template (2.1-ish) - open a task and take a look at the "Details" section, as follows:

 This is where I want my "Actual" field to show up.
Get the Power Tools Download and install the latest v…

Eclipse/Android error: "Multiple dex files define [...]"

Wow, I am really going nuts blogging this-evening - 2nd post in less than an hour. 

Anyway this is a particularly nasty error that I keep running into with Eclipse/Android when starting the emulator after I have not run it for a little while. Since I run the risk of permanently forgetting the solution to the problem every time I walk away from my Android project (and thus having to spend a painful hour-or-so digging up the procedure again), I will blog it here, for my benefit, and for the benefit of anyone who may also suffer the same problem.

The gist is that when you start the emulator in debug mode (that is, you hit the button in the following image), you get the following error message come out on the console and a nasty popup telling you nothing more than there is an error with your program and you need to fix it:

[2012-04-06 23:20:57 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/google/gson/ExclusionStrategy;
[2012-04-06 23:20:57 - SimpleList] Conversion to Dal…