Slashdot Mirror


Beyond Software Architecture

jkauzlar writes "When thinking about a software product's architecture there are two viewpoints to consider: the marketecture (or the marketing architecture) and the tarchitecture (the technical architecture). Oftentimes an architecture is designed without consideration of the market toward which the product is directed and even a technically superior product can fail against competitors with an inferior product, but who understand the market a lot better." This book tries to remind programmers (and managers) about maintaining the right balance of these things; read on for the rest of jkauzlar's review. Beyond Software Architecture author Luke Hohmann pages 314 publisher Addison-Welsey rating 5 out of 5 reviewer Joe Kauzlarich ISBN 0201775948 summary A software architect's guide to designing software with the market and end-user in mind

Overview Beyond Software Architecture explains how to bridge the gap between the marketecture and tarchitecture- how to create a product that not only performs well, but which also appeals to the market. It is part of the Addison-Wesley Professional Series line of books (also containing notable titles like Design Patterns, Refactoring, and Patterns of Enterprise Architecture) but this latest installment in the series is (thankfully) paperback, so it comes at a paperback price ($39.99 USD).

I am a software developer with no marketing background who works in small development teams, usually in an open-source development atmosphere. I was excited to find this book because it told me what I need to consider for my projects to help them reach the intended user. There is a lot of helpful information in this book, and at times it almost seems to suggest more work than I can handle, but I think it will ultimately pay off to be able to use the knowledge gained.

Table of Contents Forwards by Martin Fowler and Guy Kawasaki
1. Software Architecture
2. Product Development Primer
3. The Difference between Marketecture and Tarchitecture
4. Business and License Model Symbiosis
5. Technology In-Licensing
6. Portability
7. Deployment Architecture
8. Integration and Extension
9. Brand and Brand Elements
10. Usability
11. Installation
12. Upgrade
13. Configuration
14. Logs
15. Release Management
16. Security
Appendix A. Release Checklist
Appendix B. A Pattern Language for Strategic Product Management

Organization by chapter: Chapters 1-3 set up the rest of the book, defining the scope of the book as well as concepts and key terms used throughout the book. They describe a product development cycle, the players involved, etc.

The remaining chapters each focus on a particular aspect of a software product and how it relates to both the customer and the product's architecture. Catalogs of alternatives are available for each topic along with caveats for each alternative.

For example, in Chapter 6, "Portability," the advantages and disadvantages of creating a portable application are discussed. If most of your customers are using Windows and your code is written in C++, then the cost of supporting Solaris as well may be the difference between a product's financial success and failure. The chapter reminds us that guaranteeing support for 6 operating systems and 4 database backends and 3 browsers means that we have to support and provide quality assurance for 6x4x3=72 combinations of products. Then it describes a process of eliminating or prioritizing combinations of platform support. The chapter goes on to describe ways in which a product's architecture can affect its portability and how best to write software to be portable.

Related to this is a discussion of how supporting particular platforms ties your release cycles into the release cycles of products you support-- another problem that can financially doom a project. Another point from Chapter 6 that I found interesting was what it means to support a platform-- the customer expects you to take advantage of the platform's features. Many cross-platform products are written to be identical on each platform they support, which means they probably ignore platform dependent libraries or features that can enhance performance or usability. This creates a potential place where competitors can gain an edge.

So you see each chapter goes into great length and detail to cover the nuances of its topic, and it is extensive enough that it can be overwhelming and even discouraging.

Who should read this book Anyone involved in software architecture or design, particularly project managers, whether in a very small group or a large corporate atmosphere. Open source developers are notoriously technically proficient, and often are not marketing-savvy. Oftentimes you have to be technically proficient to even install and use an open-source product. Ordinary developers who do not participate in architecture might benefit from reading this book in order to understand the decisions being made by the architects.

Why someone should read this book Many software industry professionals are not marketing experts and may even view the marketing department as their enemy. This book helps bridge that gap between marketing and project management, helping the two parties work together to create more effective, usable, or profitable software. Similarly, open-source developers usually architect and market their own software. Tactics described in this book could help OS developers create software that lasts longer, is more extensible, and more usable.

What this book is and is not. This is a general, and not technology-specific, guide to designing software and while doing so, keeping a marketing perspective in mind. It describes what things a software architect should remember when designing a product.

It is not a guide to marketing software. It does not recommend particular solutions for particular problems. It does not tell you what you should do, only what the consequences of your choices may be.

What I would like to see A similar book that concentrates on the open-source aspects of the topics included in this book and how and how not to use open source tools (like Freshmeat, Sourceforge, Bugzilla, CVS) for marketing and maintaining successful open-source projects.

Recommendation Buy this book if you have benefited from Design Patterns, Refactoring or Patterns of Enterprise Architecture. This book is a welcome addition to a line of books that has consistently contributed to the standard knowledge base of the software architecture discipline.

You can purchase Beyond Software Architecture from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

17 of 146 comments (clear)

  1. Marketing for Developers by Gortbusters.org · · Score: 3, Insightful

    Developers shouldn't care about the market. If you have a quality process in place with requirements that are reviewed by many disciplines (services, product management, etc) then they will modify the product to fit the market.

    If you don't have that well.. how much quality will you have anyway whether you get this book or not? ;)

    --
    --------
    Free your mind.
    1. Re:Marketing for Developers by C0deJunkie · · Score: 5, Insightful

      I disagree. If developers (and analysts, project mgr's etc..) do nothing to care about the market (read: at least make the product easy to change/adapt) then the best thing that could happen is a lot of money spent to match user/market requirements.

    2. Re:Marketing for Developers by Trigun · · Score: 3, Insightful

      You still have to find a balance. If you're modifying your product to fit every slight change in the market, then you're too far behind.

      Successful developers have the market modified to fit its products. Think Cisco.

    3. Re:Marketing for Developers by Jack+William+Bell · · Score: 5, Insightful

      Bullcrap!

      Developers should care very much about the market, for a variety of reasons. Not the least of which is the fact that the people who's job it is to do that may not have enough knowledge breadth to also understand the technical aspects, and how they are affected by market-based descisions. If you want your voice to be heard in these discussions you have to make certain you are talking in a language they understand.

      Of course if you are content to let marketeers and product managers design your product and build your feature list, and then set your schedule without reference to the technical realities, you might think differently. You might also be working for Microsoft...

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    4. Re:Marketing for Developers by Gortbusters.org · · Score: 2, Insightful

      The product manager should state the high level features that the market is demanding. It is then up to the development community, and more specifically a systems engineer or lead developer, to translate those marketing requirements into technical requirements. Customers want to do task A, so that means we need GUI X, and server component Y to let them do A.

      The person who actually sits down and writes the code for X and Y doesn't really need to know a lot about A, or be an expert in the market for A, as long as the requirements have been fully specified for X and Y.

      --
      --------
      Free your mind.
    5. Re:Marketing for Developers by Gortbusters.org · · Score: 2, Insightful

      Depending on the organization size, the requirements for a product usually take a few levels:

      - Market requirements
      - General Technical Product Requirements
      - Feature Requirements

      I wouldn't expect a developer to get involve at all in the first, a little in the second, and key on the third to say if it is doable or not in the time frame for the project. And of course the product manager (who understands the market) is a required reviewer of all three.

      --
      --------
      Free your mind.
    6. Re:Marketing for Developers by russellh · · Score: 4, Insightful
      Developers shouldn't care about the market. If you have a quality process in place with requirements that are reviewed by many disciplines (services, product management, etc) then they will modify the product to fit the market.

      That's a big if ! But you know, we're not talking about developers, we're talking about software architects. They're not usually interchangeable. Architects need to know a little bit of everything. In particular, seemingly minor points like supporting platform-specific features are often overlooked at the strategic level.

      --
      must... stay... awake...
    7. Re:Marketing for Developers by spybreak · · Score: 2, Insightful

      No, generally that would be the job of the business analyst or requirements engineer. It's not good practice to 'state' requirements, generally they are obtained by following a well-defined requirements discovery process, such as RUP.

      The product manager's role to is manage the overall strategy and provide the overall interface between all stakeholders of the product.

      In my company only people who know about X and Y, but not A are usually individual test engineers, who genuinely don't have to. And even then it never hurts if they do.

    8. Re:Marketing for Developers by bladernr · · Score: 2, Insightful

      The problem is, the requirements are rarely fully specified. It today's time-to-market and features-are-better-than-quality driven world, development - both for products and corporate IT - is very often expected to take off and work with incomplete requirements.

      That is why developers that understand the target use-case and market are so valuable. They can fill in the gaps to make sure of product quality and fitness for purpose. No, its not the ideal situation, but it is reality.

      I've never seen product management FULLY specify integrated, consistent logging and a unified configuration & management interface, but good developers know it is required. Developers with business knowledge of the target application can really help flesh out requirements and provide some sanity.

      It is obviously possible to hire just "pure developers" without domain knowledge, but, in my personal experience, the results are better with developers with specialized business knowledge (but they are harder to come by, and more expensive, so some companies settle for less).

      Developers with business knowledge also make the development process cheaper and faster overall, because fully-specified requirements simply aren't needed. This reduces cost (all of those hours of writing requirements and training developers) and time to market.

      As soon as customers start putting more emphasis on quality than time & money, then these realities will change. But, until that happens (if ever, I don't think it will), those developers who are focused on the market will continue to be the most valuable contributors.

      --
      Sarcasm and hyperbole are the final refuges for weak minds
  2. How this concept REALLY works by beavis88 · · Score: 5, Insightful

    1) Sales/marketing talk to some clients, find out what they want.

    2) Sales/marketing sign up clients for the beta.

    3) Sales/marketing finally gets around to communicating to the dev team what they have promised the clients.

    4) Sales/marketing blames the developers when they can't deliver what the client was promised.

    This is actually not a joke. On one of that last projects I worked on, I was handed the "specification", which was basically a collection of photoshop mockups, and told that clients were going to be beta testing in 30 days....wheee!

    1. Re:How this concept REALLY works by ShieldW0lf · · Score: 4, Insightful

      1) Sales/marketing talk to some clients, convince them we can give them what they want

      2) Developer talks to clients, determines what they need

      3) Developer talks to Sales/marketing, tells them what the client needs

      4) Sales/marketing talks to clients, sells them on what they need

      5) Developer builds what client needs

      6) Everybody Profits!

      If you are caught in the parent posts situation, insert:

      3.5) Developers firmly tell sales/marketing no and why not, cc owner

      --
      -1 Uncomfortable Truth
    2. Re:How this concept REALLY works by ShieldW0lf · · Score: 2, Insightful

      Most developers roll over for new features 10x quicker than your average salesman

      I think you mean bad developers roll over.

      Salespeople are all about saying yes. They are motivated by their contracts to say anything so they can get a signature and a commission. Once the job is signed, it's not their problem anymore.

      Developers, assuming they are interested in completing the project successfully and not dragging it out to keep the paychecks coming, will be motivated to make their requirements clear and realistic.

      At any rate, the developer shouldn't actually present the pitch to the client. They should develop the requirements document, and leave the selling of it to the pros.

      --
      -1 Uncomfortable Truth
  3. Developers MUST know the market by tjstork · · Score: 3, Insightful

    The top down hand requirements to developers process is conceptually the same as the top down hand work orders to factory people process that GM used to produce many of its illconceived cars in the 1970s and 1980s.

    Developers MUST know the marketplace because capturing all of the market knowledge into a requirements slows down business mobility too much to make it a worthwhile process.

    Besides, if developers know the market they are in, then, they have an automatic value add over requirements only shops that work overseas!

    --
    This is my sig.
  4. Follow-up to book by truth_revealed · · Score: 3, Insightful
  5. Translation for Hireabiltiy by rsborg · · Score: 3, Insightful
    ... know your domain.

    Too often I've been telling my friends in the software industry that when hiring into a software company, the primary thing a prospective employer should ask for is domain knowledge. ie, if you're looking to join Cisco's IOS team, you better have a pretty fundamental understanding of networking and routing. If you're joining an CRM software company, knowledge of CRM (at least a specialty like sales force automation) is the primary thing they will want. Even better is direct knowledge of the product/architecture itself. Programming experience is, of course, neccessary, but runs secondary to the actual domain knowledge.

    C++, Java, etc.. don't matter as much these days because everyone knows them ... including those offshore programmers who are probably better and/or cheaper than you. Understanding and becoming an expert in a domain gives you a value add that a non-knowledgeable person can't match.

    --
    Make sure everyone's vote counts: Verified Voting
  6. Welcome to the real world by joss · · Score: 4, Insightful

    > 3.5) Developers firmly tell sales/marketing no and why not, cc owner

    Try it in a US corporate structure and your career will be stuck in mud forever. You will be penalised for lacking a "can do" attitude. Meanwhile some other twinkie will claim that everything is fine and promise delivery. Then they fail miserably. Now comes the weird part: The collosal failure of the twinkie will be immediately forgotten and he will be promoted, but your negative attitude will be remembered. Nobody is less popular than the guy who correctly anticipates failure. When it turns out you were right, somehow the PHBs will figure failure is your fault even if you are not involved at all.

    In terms of what will help you climb the corporate ladder, these are your options in declining order:

    1. Predict success and succeed
    2. Predict success and fail
    3. Predict failure and succeed
    4. Predict failure and fail [or don't try]

    Option 4 is a LONG way below option 2.

    I am not recommending [2], just pointing out how things work. A better option is to get the hell out of that kind of environment.

    --
    http://rareformnewmedia.com/
  7. marketecture and tarchitecture by pmz · · Score: 1, Insightful

    Smoke and mirrors. How stupid.

    For example, Microsoft's "marketecture" is actually a lying-through-the-teeth-marketing department coupled with an unscrupulous aquire-and-crush department coupled with leadership that has a psychological deformity that makes them believe in world domination. Their "tarchitecture" are too-smart-for-their-own-good college graduates and a counter-intuitive culture of cut-n-paste and stock options.

    In the "real world", which Microsoft is not a part of, there is no distinction between "marketecture" and "tarchitecure". Well designed software is genuinely useful, with a healthy set of features, a healthy user interface, and robustness. I believe I will call it, simply, "architecture." If this "architecture" does not truly fill the customers need, then capitalistic natural selection provides an honest solution.

    You may claim that Microsoft has truly filled the needs of many people, but, upon closer inspection, this is not true. Many others have found ways to fill the same needs better, but, somehow, Microsoft skirted the laws of nature and invented their own microuniverse of delusion. I believe they will be short-lived in the grand scheme of things, where truly superior architectures will come in and make them obselete.