Pair-Programming cf. Brainstorming

One of the reasons that pair-programming works so well is the same reason that brainstorming is such a powerful technique in a group setting.  Pairing basically amounts to an endless stream of mini-brainstorms between the two partners.  I swear that whenever I pair with someone, we’ll write code that is easily three times tighter and cleaner that if I had written it alone, and I think the brainstorming aspect has a lot to do with why.

In formal brainstorming, you start with an initial pool of ideas and build it up by pushing the boundaries, piggy-backing on the previous ideas, and inverting or negating the previous ideas.  It’s the job of everyone to be contrariwise with each other — to keep asking “What if?” and “Why not?”  In pair programming, a similar thing happens.  It’s the job of the person who’s riding shotgun to be looking at the bigger picture (while the one who’s driving is focused more on the task at hand), and this is what makes for the same kind of contrariwise/collaborative atmosphere as brainstorming.

ISR Distinguished Speaker Lecture Series at UC Irvine

The U.C. Institute for Software Research (ISR) hosts free monthly lectures by thought leaders in software development. The Winter/Spring schedule has been posted. It includes topics ranging from architectures for mobile computing to social intelligence.

There is no charge to attend Distinguished Speaker meetings, but RSVP required. Distinguished Speaker meetings are held on the U.C. Irvine campus, typically in the Donald Bren Hall, room 6011.

“Why are manhole covers round?”

Manhole CoverThe famous Microsoft interview process (as described by William Poundstone in "How Would You Move Mount Fuji? Microsoft’s Cult of the Puzzle…") asks the candidate, among other things, to solve puzzles such as the quintessential question, “Why are manhole covers round?” It’s a question with multiple answers (see below), and the interviewer is looking for how the candidate approaches the question more than what answers are givens.

I view this question as a quintessential example of simplicity. Continue reading “Why are manhole covers round?”

Top 5 Ways to Keep a Software Development Project On Track

These tips originally appeared in an old version of this article.  I’m reprinting them here for the convenience of a friend who asked about it.  Basically, I maintain that good communication is the number one success factor to any project. Continue reading Top 5 Ways to Keep a Software Development Project On Track

pivotaltracker.com, so far, so good

Pivotal Tracker ScreenshotsI started playing with pivotaltracker.com today, which is a free, hosted storyboard tool. It’s free, but not open source, so you do not have the option of hosting it yourself, which means you’ll have to trust Pivotal Labs with your data. This includes: trusting that the service will remain up, trusting that the service will remain free, trusting that Pivotal won’t use your data to compete with you, etc. Some of these issues can be mitigated (e.g. by performing frequent exports of your data.)

Trust issues aside, so far, so good. Continue reading pivotaltracker.com, so far, so good

Role-Based Security and Separation of Concerns

In a side conversation at the Orange County APLN meeting last week, we got to talking on the subject of role-based security, and I said that there should be a strict separation between permissions and roles, and between roles and users.  That is, that the programmers should code their security checks only against permissions (never directly against roles or users), and, going the other way, that users should only be assigned roles (never assigned permissions directly). Continue reading Role-Based Security and Separation of Concerns

“Clean Code” — Crafting On Principles

The inaugural post for blog that focuses on simplicity in software development has got to be one that mentions the book called “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert Martin. As I originally mentioned on the ThotSpots blog, this is no ordinary book on writing better software. It’s not just another “Code Complete” or “The Pragmatic Programmer.” Continue reading “Clean Code” — Crafting On Principles

Getting Started

I’ve been listening to advice that says I need to push my own “personal brand,” and starting this new blog is the first step. To get the ball rolling, I’ll be cross-posting references to my writings that are elsewhere on the web, but soon enough I’ll flip-flop and the original posts will be posted here first. Eventually, this will become one-stop-shopping for my online presence. In the mean, please continue to look for my previous posts on http://www.thotspots.com and http://www.codejacked.com.

a blog by Craig L. Jones, Software Agilist