Wednesday, March 26, 2008

Notes of Ch. 2 for "Beyond Software Architecture"

Sometimes software developers may not be the best candidate for creating a winning solution if they do not have a clear view of what is product management.
So, what is product management? It has many definitions. There are two sides in product management. From a product manager’s point of view, these two are the internal and external sides. The external side is about to go to the customers (or, users) and turn their requirements into strategies and objectives of the product. The internal side is about to let the organization to support and implement the strategies and objectives.

Why should we think about product management before talking anything about architecture? Generally speaking, what you delivered, as a software product, must be maintained, upgraded, re-developed by a set of people in your developing organization. Then it matters quite a lot that, at the beginning of developing this product, you start by considering how the software is managed by the product management team. Without a successful product management, no architecture can be said as successful.

There are many product development models, such as the waterfall, spiral, and XP. What makes these models successful in individual teams, is that one must bare in mind that the delivery is not just a software-thing, it is a suite of things, including a software, a set of product management protocols, and so on. The principles behind the agile development method should be very well understood by modern software teams. One important thing is to put test always in the first place. Before you design anything, design the test first.

Normally a product development process starts from a business plan and then a project proposal and so on. When we come to new releases, it is very important that all differences in the different releases are captured in at least one document. The book mentioned a “marketing requirements document (MRD)” to keep track of these differences.

There are quite a few things important to the product development cycle.
1. Freezing. When we work on stuff in a serious manner, it is always important to have test, freeze, and production environments. Freezing environment is where we put a batch of updates together and commit, test them before these updates are finally moved to production.
2. Change management should always be thought of as something should be documented, implemented, tested, analyzed, and linked to the source of change.
3. Documentation is always a challenge. It is always hard to know how much documentation is enough or what kinds of documentation is enough for the users and the product management team.
4. Recycle Bin. It is always a good idea to say “no” if you know that you do not have enough capacity to develop a new feature required by the customer. Just put it to a recycle bin and get back in the next life cycle of the product.

Actually modern software architecture design must also be tightly connected to the product marketing process. There are 4 “Ps” of marking, i.e., product, price (and the business model), place (distribution channel), and promotion (advertising and marketing communication). In fact some of these can be considered in the architecture design and be implemented accordingly. One should also look at a market segmentation when thinking about the architecture design of the product.

No comments: