This blog has moved. Go to SoftwareDevelopmentToday.com for the latest posts.

Thursday, December 21, 2006

The Software Engineering Institute (SEI) does it again...

The Software Engineering Institute gave us
CMMI, but they haven't stopped "helping" the software industry. Their report on "Documenting Software Architectures in an Agile World"(PDF alert) tries to define the difference between Agile-prone and Architecture-prone software projects.

They tell us that agile requires you not to document architecture (I did not know that...), and later in the same paper they tell us that, after all agile does use documentation, just not the superfluous kind of documentation, which incidentally they agree with.

They go on to tell us that Architecture documents should be a "primary vehicle for communication between stake-holders" (I'm assuming here that they include projects that they dim "agile-prone" also).

In chapter 4 they state that Agile discounts the use of Architecture documents for: 1. Education of new team members, 2. communication between stake-holders and 3. as a base for system analysis. After reading this I was thinking to myself: What have I missed in all the books and posts I've read and conferences and talks I've attended? I must have been asleep when someone said that if you do Agile you are forbidden to document the architecture of your system... Somebody tell Scott Ambler to stop calling himself agile, please! He's been discussing the Architecture issue for so long!

SEI's article (from 2003, maybe that explains it) is at least inaccurate in what comes to represent Agile approach to architecture document, the authors seem to have absolutely no experience on Agile. Don't they have peer-reviews for these papers?

It is unfortunate what passes for credible "science" in the SEI these days.

at 20:04 | 0 comments links to this post
RSS link

Bookmark and Share

Wednesday, December 13, 2006

The different values of software features, 9 different examples

A few days ago I posted an
entry about the different layers of value in a software feature. Today I ran into an excellent example of the differences between a system that focuses on what I called immediate value (Mac OS X) and another that clearly focuses on what I called expert value.

Take a look at the article, it is a very good description of the different approaches to the same features.

at 20:38 | 0 comments links to this post
RSS link

Bookmark and Share

Monday, December 11, 2006

Simple software is not simplistic software! Joel and Norman are wrong

Joel and Norman state several things regarding simplicity in their respective blog, but what they say can be summarized in a simple syllogism (pun intended):

  1. People like the products with more features

  2. All products with more features have more controls in the User Interfacea are less simple

  3. Therefore: People want products that are less simple and have more controls in the User Interface.


I don't know about you, but this syllogism seems to me to fall apart in the second premise. If you don't see why let's examine it closely.

It is no secret that people tend to buy products with more features. When you go to the shop the person trying to sell you the product gets paid based on what she sells. If you buy the cheaper model she will get a smaller commission, therefore there's a tendency from sales people to sell the most expensive, i.e. more feature-rich product. Now, I would argue that if all the most expensive products were simpler then the incentive on the sales side would be for the simple product, therefore contributing for more sales of simpler products.

It is true that people do buy the more complex products, but then they return them because they cannot operate them according to Barry Schwartz, who has studied the impact of too much choice on consumers.

Quality is multidimensional


People actually don't want more complex products. Even in S. Korea where Norman says people are attracted by exterior complexity because it is seen as a status symbol. People may even like to have products that enhance their perceived status (even if they look complex), but complexity is not the attribute they buy in the product! They are looking for one dimension of Quality: "perceived status deriving from the Item".

The same is true for a Rolls Royce, they are bought at stupidly expensive prices not because they are beautiful (even if you could argue they are) or functional (even if you could argue they are) or easy to use (even if you could argue they are). Rolls Royce get sold because they mean "I'm filthy rich, admire my exterior symbol of superiority". That is the quality of Rolls Royce.

If we come back to the world of software we have several examples of products that sell and are not simple. Linux sells because it has certain qualities that appeal to it's target: purchase price, flexibility, visual appeal, etc. But, arguably simplicity is not the main quality Linux users are looking for.

Simplicity sells, complexity makes sales difficult


Simplicity is a quality that is looked for in software. Simplicity is about delivering value without unneeded complexity. Making the product "simple but not simpler than it needs to be."

In your market, you need to decide: which qualities does your market appreciate. If your market appreciates features and does not consider complexity a sales breaker then by all means go and build a software that offers them all of the features without paying attention to the complexity. However, you must be warned, most users do not have the time or the patience to learn your software (no matter how many controls you put on the UI). If you end up with a lot of returned products or a lot of unhappy customers, you may find out that complexity was what caused the problems.

In fact complexity is a sales stopper. Take this example: if you get a sales person in front of you and she cannot explain the features that the product offers (because they are too complex) how likely are you to buy the product?

Simple features (to understand, to assess the value, to use) sell because you can get the value from them. Software products are tools for their users. We don't use software because we like to use it, we use it because we want to call our friends with Skype or chat with iChat or SMS via a web-site. Software either makes it possible or not, complex software makes achieving our objectives that much harder. That's why, even if it sells, it won't sell for long.

The broken syllogism: Simplicity is not less features, it is more "user-valuable-features"!


In Windows, if you use the CTRL-tab and try to select an application with your mouse you will not be able to. Why then can you do it on Mac? Because of simplicity! Yes, simplicity is not less features, it just means that it is "simple" to select an application when pressing CTRL-tab with the mouse. This is a feature that adds value to the CTRL-tab feature. There you go, more features but yet simpler. This also means that the second premise in the syllogism is wrong, therefore the syllogism is wrong.

The fact that Joel and Norman implicitly state that "more features == more complex to use software" is a sign that they don't understand the different levels of value that you can have in a software product.

at 21:52 | 0 comments links to this post
RSS link

Bookmark and Share

Quality is not just being "bug-free", it is being "valuable"

The value of a software feature/product can be divided into 4 layers. When you code a feature you probably think immediately about the "technical value", i.e. the technological improvement/innovation you are about to implement or algorithm/method.

But it does not stop there. The expert user will find in it "expert value", this is what a knowledgeable user (about the innovation/algorithm/method) can do with the feature you just implemented. This is normally seen in command line utilities like for example "grep" in Unix. A very powerful tool but very hard to use for most people.

The next layer is the "functional value", or the value a user that does not understand the technical feature can derive from the tool. As an example we can think of dificult user interfaces that allow the user to do what they want without having to type the commands (like in grep), but stil requires time to learn.

The last and most superficial layer is the "immediate value", meaning something that user can derive value from without spending any time learning the tool or reading a man page.

Many application developers do not make any distinction between these types of value for the features they implement. This led people to develop command line tools before the WYSIWYG IDEs were available, then led people to develop overcomplex graphical UIs but that's where most developers stopped! That's wrong!

Today, with the expansion of the web and pervasiveness of computers ordinary people need to use them. We, developers have an obligation to develop tools that fulfill the need to have "immediate value". Microsoft and large parts of the Open Source movement are still caught in the transition from the "functional value" to the immediate value. They have come a long way but not enough.

Users, especially avid internet/computer users, demand that the software companies don't make them lose time. I hate everytime I have to fight with Word, PowerPoint or other tools just because the developers did not make an effort to know what users really wanted to do with the software. They are taking my money from my pocket! Stop it!

If you are developing an application to be used by large numbers of users please think about what your users need (or better yet: ask them) before you code the next feature. Don't make users lose their time for you to save yours!

Many companies start understanding the importance of "immediate value" for their cusotmers. Google, Skype or Apple are good examples. Apple for example is gaining market share in the Computer and OS market not because of marketing (they were always that good), but because of a combination of price-competitiveness and excellent focus on quality products (quality is more than being bug-free).

When I see text rendered on an Mac for example I ask myself: How could we ever have used Windows for so long? (Yes, I know Vista is changing that).

Skype is another example. They came late and took a big part of the market, why? Because they did IM'ing better than any competitor. Finally someone understood the importance of voice in IM and was able to make the experience easy and appealing.

This is why I'm so shocked when I hear about certain large company CEO's saying to their people: "produce just enough quality, not more!". If you ask me they are asking for trouble!

at 21:00 | 2 comments links to this post
RSS link

Bookmark and Share

Friday, December 01, 2006

Is Apple the new "geek"?

As I type this blog entry in my new MacBook Pro, I'm thinking that Mac is the new "geek".
Apple products have become more and more attractive to those of us that have worked or played with computers since a young age. It's no longer only for the Advertising/Design or Publishing industry. Macs are getting affordable and they are becoming viable alternatives when the time comes to upgrade your home or work computer.

The "there's no games for Mac" line is old, many geeks have a console which, let's be frank, can play most of the games quite comfortably, even if you don't have an HD ready TV.

In the past, geeks were kept away from the Mac because there was no real console market, you needed a windows desktop to have a decent set of games to choose from. That's not the case anymore.

Another reason for geeks to be kept away from the Mac in the past was that Operating Systems were relatively easy to understand (if you were into those kind of things) and with Linux we had all kinds of flexibility in how we would use our OS. Again, that's not the case anymore, OS's are complicated enough today and not all geeks are willing to spend their nights hacking away at Linux to make all their gadgets integrate perfectly with their computer.

Then there's the "home entertainment" angle. If you wanted to "backup" your music and videos you needed to use open-source/shareware software on Windows or Linux and a set of command line tools. Not now. Apple is investing a lot in making their products a decent choice for those of us that prefer to watch movies at home or have a sizeable music collection.

Then comes the Web. Some time ago the Web was something that you consulted to search for some information but mostly as a reference to static information, now the Web is in all of the things we do. You pay your bills, you do your holiday shopping, you share your photos, your write your blog, you event have full-blown
desktop applications on the web and mail clients with lots of space. Let's be honest, unless you need to use Office-proprietary features or some "fat" software (like photoshop or other heavy/pro editing software) you don't need a Windows-compatible desktop.

This is all helped by the fact that Internet Explorer is slowly loosing market share and that most of the web today is standards compliant, and not using any Microsoft proprietary extensions. Well... almost.

In fact, the web has already released the "geeks" from the Microsoft grip. Those of us that develop software for the web don't need to use Windows at all (unless you use .NET of course :).

Lately I've been seeing more and more people with Macs, this is especially noticeable in software development gatherings where I've seen Macs taking the upper hand in the Windows/Apple battle for the laptop (I'm not the only one either).

So, it seems that all the things are in place for us to start seeing a world where people will really have a choice of computer OS. That can only be good, right? :)

The geeks in the past have set the direction by adopting Linux and making it the operating system of choice. Can they do the same with Mac OS X and Apple computers?

at 07:22 | 0 comments links to this post
RSS link

Bookmark and Share

 
(c) All rights reserved