Reading

“Always read stuff that will make you look good
if you die in the middle of it.” -P.J. O’Rourke

There’s always something new and interesting to learn. Here’s a few of my favorites.

Drive: The Surprising Truth About What Motivates Us

Drive - The Surprising Truth About What Motivates UsI’ve always thought it was odd (and lucky) that I enjoy software development so much. In “Drive”, Daniel Pink exposes some really interesting quirks in human motivation.

The discussion on intrinsic motivation stuck a chord with me. It summarizes exactly what I look for in developers I interview: A natural interest in doing great work.

The funny thing is many of us don’t realize how naturally rewarding work can be until we find the magical combination of position, employer, manager, team, and task that allow us to achieve “flow”. Getting lost in what Daniel calls a “Goldilocks” task – one that is neither too hard nor too easy – is intrinsically rewarding. The discussion on flow rings especially true given similar discussions in “Peopleware” and by various developers including Joel Spolsky. Developers need extended periods of quiet with no interruptions to create great work.

There is also an excellent discussion on the risks of carrot and stick motivators. Extrinsic motivators like salary and benefits matter, but generally only to the extent that they can hurt you. Providing incentives for routine non-creative tasks is generally low risk. But traditional carrot and stick approaches for non-routine creative tasks often backfire in unexpected ways and produce nasty side-effects such as lowering creativity and reducing intrinsic motivation.

“Drive” reminds us that great work with the right people is its own reward.

Microsoft.NET: Architecting Applications for the Enterprise

.Net Architecting Applications for the EnterpriseDino provides an excellent overview of a wide-variety of fundamental architecture topics. The tone is a bit dry, but he makes up for that with clarity. I was impressed with the balanced design pattern presentation and the clear explanations of the pros/cons for each. The text provides an excellent discussion on DAL, BLL, Presentation layer designs and the capstone project pulls it all together as a cohesive example. It also does a great job discussing the impact of ORM on N-tier development.

Inspired: How To Create Products Customers Love

Inspired: How to Create Products Customers LoveIf you’re a pure coder and want a bigger picture of the business or already own your own software product company, this book provides an excellent overview of the various roles and tasks involved in designing and creating excellent products. It spent more time detailing the role of product managers than I expected but does an excellent job contrasting product vs project managers.

Marty discusses how to assess product opportunities, testing approaches, deployment processes, and when to build new.

I really appreciated the emphasis on building in “headroom” by allowing engineers 20% of their time every week for maintenance and refactoring. This assures the application never requires a from scratch rewrite due to unbearable technical debt. It also assures scalability issues are incrementally addressed instead of being handled on the fly in an emergency.

Marty brings impressive experience to the table and presents a holistic and inspiring view of how to create amazing software.

Code Complete

Code CompleteSteve has a gift for clear, concise descriptions and justifications for improving code quality. This is an engrossing and easy read for any coder, regardless of language, and is easily the best programming book I’ve read. This text forms the foundation for writing clean code that is easy to read and maintain and helps establish a common vocabulary for evaluating code quality.

Peopleware

Peopleware: Productive ProjectsPut simply, Peopleware outlines best practices for managing programmers. Quiet, autonomy, excellent tools, and large comfortable work spaces with windows and closing doors are just a few best practices. Though this sounds like a programmer’s panacea, multiple studies have documented the value of quiet uninterrupted periods when working on difficult tasks. Peopleware makes a compelling case that the benefits far outweigh the additional costs.

Rocket Surgery Made Easy

Rocket Surgery Made EasyIf you’re not familiar with usability testing, this is the canonical reference. I’m a big believer in the value added and the cost is minimal. You have no idea if your product is going to confound users unless you test. And the beauty of usability testing is it doesn’t have to be time-consuming or expensive. The simplest method is to simply grab a few random people who know nothing about the project and watch them try to use the tool. This experience can be very enlightening.