The impact of technology on Business Models

As architects we are mostly working on translating business models and goals to IT strategies, plans and designs. We accept the business model as it is, and work from there.

Business models however, are not immune to IT changes. This blogpost, Amazon and the reintermediation of the spectacle, is a nice illustration of the fact that business models are impacted by software.

This means that architects should understand technological progress, be able to determine what the impact will be on business models, and be able to help organisations understand how IT impacts their business model.

I personally really like this part of working in IT, understanding new technology and thinking about it will impact businesses and customers.

Product Development Example

My post Nice example of product development as a learning process is getting a surprising amount of hits from people looking for product development example in google. I’m curious to know what exactly it is that you are all looking for?

Product Development is an interesting subject. Many people I talk to think that they need to aim for doing it right the first time, minimising rework. Minimizing rework is a apparently a huge problem.

There’s a lot of information however that this isn’t the right approach to product development. Trail and error through prototyping not only increases innovation and creativity, it is also faster and increases quality. Another important aspect of product development is the fact that involving users, or better yet, being a user, improves the quality of the product developed.

Scrum – It all starts with the Product Owner

In my experience the Product Owner is the most underestimated role in Scrum. I think it’s also the root cause of many problematic Scrum implementations.

Every Scrum implementation should start with the Product Owner. You should be very clear about the responsibility of the Product Owner:

  • The product owner is responsible for the success of the product.
  • The product owner is responsible for the long term vision of a product.
  • The product owner is responsible for the release planning.
  • The product owner is responsible for enabling a scrum team to implement the product.

This means that a product owner is much more than a user story writer. Most Product Owners I’ve met so far are requirements analysts with a new title. They are not empowered to sort the backlog, they are not empowered to learn from feedback and improve user stories.

If you are about to start with Scrum, start with the product owner. This will be hard enough, as many companies do not have a role or person responsible for the success of their products.

Using the Backbone router

Derick Bailey has some good advice regarding the backbone router: Stop Using Backbone As If It Were A Stateless Web Server.

A javascript application using backbone is stateful, and implementing MVC doesn’t mean that all actions have to be handled by the router. Only use the router when you want to expose a url in your browser history, something the user can bookmark or email.

I think it’s useful to look at it from a REST perspective: a url is an id or address of a resource. Use the backbone router to create urls to things that are resources, not to actions on resources.

When will we dump server side web frameworks?

Single page web applications have been around for a while. Applications that run all user interface code in the browser using Javascript to update the user interface. The application server only exists to provide access to data and business logic.

However, most Java Enterprise web applications i encounter still use serverside web technology like jsf, seam, wicket or similar. It’s not like these frameworks are perfect. Heavy weight on memory usage, problems with history and back buttons, complex lifecycle to maintain state, complex model split over multiple tiers.

Why are most enterprise web applications still using server side webframeworks? Some years ago I wrote a single page web application, mostly using JQuery (Here’s a presentation I did for nljug in 2008 about this project: Client-Server 2.0 using JQuery and Grails).

Today, the javascript frameworks to support single page webapps have matured a lot: we have MVC frameworks like backbone.js, UI component frameworks, javascript templating, QA tools like jslint and google closure linter, unit testing frameworks like qunit and jsunit, and documentation tools like jsdoc and docco.

So a full set of frameworks and tools to create single page webapplications exists. What is keeping us from using these for enterprise web applications?