Quality attributes such as performance and scalability are among the attributes determined during architectural definition.
Whether or not a system will be able to exhibit its desired (or required) quality attributes is largely determined by the time the architecture is chosen.
– P. C. Clements and L. M. Northrup, “Software Architecture: An Executive Overview,” Technical Report No. CMU/SEI-96-TR-003, Carnegie Mellon University, Pittsburgh, PA, February, 1996.
As part of the process of moving things over from Tumblr, find one of my favorite quotes I’ve posted there below. I truly believe that the most critical education you receive in your profession depends upon the organizations you choose and the experiences you gain there.
“The management skills and intuition that enable people to succeed in new assignments were shaped through their experiences in previous assignments in their careers. A business unit therefore can be thought of as a school, and the problems that managers have confronted within it constitute the “curriculum” that was offered in that school. The skills that managers can be expected to have and lack, therefore, depend heavily upon which “courses” they did and did not take as they attended various schools of experience.”
– Clayton M. Christensen, Michael E. Raynor. The Innovator’s Solution: Creating and Sustaining Successful Growth (p. 179).
Over the course of the next few weeks, I’m going to be moving over some of the content in my Tumbr to this blog. It’s been a long time since I’ve written, and I’d like to start this up again. For now though, Happy 4th of July!
A simple list can be a very powerful tool. When it’s used to keep track of things to get done, it’s easy to see your progress as items on the list are crossed off one by one. I use them both at work and at home, and it’s not uncommon to see a list of items on my whiteboard with a few of them crossed out.
Another nice way to use lists is as a checklist. If you’re meeting a milestone or executing a process, having a checklist will help ensure that you’ve met all the criteria or that the process you’re executing is consistent every single time.
Making Things Happen: Mastering Project Management (highly recommend, very useful and practical)
by Scott Berkun
Rapid Development: Taming Wild Software Schedules (reference for managing software development projects)
by Steve McConnell
Requirements and Use Cases:
Writing Effective Use Cases
by Alistair Cockburn
Software Requirement Patterns (useful patterns for documenting requirements)
by Stephen Withall
by Karl Wiegers
Agile Project Management with Scrum (easy read, covers the basics)
by Ken Schwaber
Crucial Conversations (for handling contentious conversations)
by Kerry Patterson, Joseph Grenny, Ron McMillan, Al Switzer
* This has also been posted as a permanent page here which will be updated as new books are added.
Recently I’ve been reading the The Innovator’s Solution by Clayton M. Christensen and Michael E. Raynor, which seeks to analyze the process of creating and sustaining growth through innovation. As part of it, the authors explain how predictable end-results of a process can be obtained by building a good theory. This also applies to the software development process, where you must understand the process itself before you can make any meaningful recommendations for improvement and predictability.
An excerpt from the book which lays out the process for building good theory is below:
The process of building solid theory has been researched in several disciplines, and scholars seem to agree that it proceeds in three stages. It begins by describing the phenomenon that we wish to understand. In physics, the phenomenon might be the behavior of high-energy particles. In the building of new businesses, the phenomena of interest are the things that innovators do in their efforts to succeed, and what the results of those actions are. Bad management theory results when researchers impatiently observe one or two success stories and then assume that they have seen enough.
After the phenomenon has been thoroughly characterized, researchers can then begin the second stage, which is to classify the phenomenon into categories. Juvenile-onset versus adult-onset diabetes is an example from medicine. Vertical and horizontal integration are categories of corporate diversification. Researchers need to categorize in order to highlight the most meaningful differences in the complex array of phenomena.
In the third stage, researchers articulate a theory that asserts what causes the phenomenon to occur, and why. The theory must also show whether and why the same causal mechanism might result in different outcomes, depending on the category or situation. The process of theory building is iterative, as researchers and managers keep cycling through these three steps, refining their ability to predict what actions will cause what results, under what circumstances.
This past week witnessed what was most likely the end of a Hall of Fame coaching career for Phil Jackson. While he did coach some of the greatest players to ever play the game, often overlooked has been his ability to get the best out of his players. After all, you can’t accomplish anything great by yourself.
In a recent article by Bill Simmons, the Zen Master finally gets some credit for being the master manager that he seemed to be. The article is entitled “Appreciating the Zen Master in full.” It’s an interesting look into the coach, the challenges he’s navigated his teams through, and his management approach with the players.
It also provides a look into the 90’s Chicago Bulls and subtly hints at who Jackson thinks was the greatest player he’s ever coached.