My new book Code Leader: Using People, Tools, and Processes to Build Successful Software
is now available and in stock at Amazon and hopefully soon at stores near you. The initial outline for the book came from a post I did a while back, This I Believe, the developer edition
. Writing up that post got me thinking about a lot of things, and I've continued to expand on them both in the book and in presentations
There is a lot of content in the book about working with tools like SCC, static analysis, and unit test frameworks to build better software more efficiently. I think if I were to sum up the focus, it is that we as developers owe it to our project sponsors to work efficiently and effectively, and there are lots of incremental changes that can be made to the way we work, both in terms of tools and processes to make that happen.
The reality of modern software development (mostly) is that since the physical constraints like CPU time and memory/disk space have largely fallen away, the goal of any development project (from a technical standpoint) should be optimized for developer productivity. That includes a wide array of factors from readability of design, how clear developer intent is to future readers, and how resillient our software is to future change to reducing barriers to developer productivity like implementing a good CI process. Working together as a team across disciplinary and physical boundaries is at least as big a challenge as writing good code.
I agree very much with Scott
that the why and how of software development are often just as important (and harder to get right) than just the what. I hope that I have something to contribute to the discussion as we all figure it out together...