June 2nd, 2009

On Twitter

alexzender

March 29th, 2009

A Camel is a Horse Designed by Committee

I was about to write a post on this topic for a long time. Each time I postponed it for different reasons and almost forgot about it. But now, once I see this excellent post on TechCrunch, let’s talk about it. Here you go!

Just think what makes our tech industry to move further. There are many reasons, you can say. It’s technical evolution. New inventions, etc. But it’s not only about technology. It’s also about people. Few people push it. Those people who have own and unique vision with ability to foresee our future. Once they see it, it’s a matter of time,resources and efforts to convince others.

Personally, I believe that iPod becomes better and better with each version. It gets better design, its functionallity gets better too. That’s why I buy new versions each time. Apple push them to me. And I buy.

Basically, there are many examples. Car producers do the same. That’s a kind of formula. Of course, sometimes they fail and you switch to another vendor.

We need different leaders pushing different ideas. We will select a right one among them. Definitely we need for competition.

But the bottom line is, that’s how it works. Strong leaders drive us, and we follow. Truly, unless you see new iPod Touch, you have no clue how the next successful version should look like. Unless you are professional in this business, working e.g. on Zune :) .

Applying this subject to our software world, to the ideas of web2.0 development and service deployment. E.g. make users participate in forming of new requirements. Be careful with that. It’s indeed a good idea to make development cycles short and roll out changes to your site and hear to user’s feedback quickly.Quickly respond to market needs. But don’t let users drive your strategy, point directions. You may loose your innovation, all that things that made you different. Indeed, it’s a true art to keep focus on your main direction and still keep old users and discover new ones in enterprise world, where almost everything should be customizable, at least in the next release.

Another thing is a design by committee issue. Look, the overwhelming majority of innovations were created by one and independent company/person/group of people. This is a rich soil for innovations. In this case you have a freedom for changing and driving a product in any direction. You move quickly, you are fast. And finally, you are the first.

Of course, there are areas where you do need committee in order to make the whole engine work. But in this case you fall into slow reviewing cycles, conflicts of interests and so on. That’s why it doesn’t work as supposed in most of cases.

So, it would be great just to have an alchemic formula to keep a balance and follow trade-offs, to make users happy and to make them even happier once you roll out dramatically better new version, that you developed according to your own and unique vision… innovation-lab-marquee

March 18th, 2009

The Business Model and its Impact on Product Architecture

Today I would like to talk about the impact that business model actually makes on a product architecture. I mean how the way that company uses to earn money affects its growth and profitability via product architecture.

When you are writing custom piece of software for particular customer, the strategy is simple – do your best to satisfy the customer as much as possible with the minimal development efforts/investments. In order to achieve that you need to design architecture in that way to predict as much number of future changes as possible, make your product easy to change and move sequentially forward in the future. That’s why you split your architecture into layers, you create abstract interfaces, you apply concrete implementations, and finally you make your architecture pluggable and easy to extend.  You rely on 3rd party libraries, you try  to re-use previous experience and code snippets/libraries. Of course you are facing a lot of other development challenges here, as everyone does in software world today, but the key question is how to save efforts on product development. Do more with the help of less.

This question leads us to that idea that almost every company that has specialty, tries to build a platform instead of developing an ad-hoc solution each time from scratch. They develop platform that is easy to customize for particular customer. If the job is done properly (by perfect beings in perfect world:), number of your customers will not depend on number of development investments. Profitable model.Write once, sale many times.
That reminds me one of easy to scale patterns – write once, read many times(read optimized scenario requires you to optimize data at write time)
In this case the challenge is to split you product architecture into bricks. Easy to replace, easy to rebuild, easy to append. Another challenge is how to build ideal platform, the framework that can be easily customized for any customer…and keep it simple. Both, on UI and code level. That’s true art, to build the system that’s complex in a whole, at the same time consisting of simple disjoint blocks.

So, we examined companies that sell products and platforms. But there are companies that don’t sell products and nevertheless stay alive in software business. They do have own products, but they sell advertising. Google is the best example. This is indirect model. The profitability lies in a number of users using a product. Nobody will use Google AdWords if few clients use Google Search.So, to stay alive in this business you need to keep existing customers and constantly gain ground using new ones. Like a shark, keep moving or you will die. Other competitors will intercept your users.

In order to serve such incredible number of users you need to scale your product easily. You need to do less job with a less number of machines in a cluster. Electricity bills matter here. Performance, fail-over, load balancing, capacity reserve. All these items are answers to one simple question stated by the business model – how to handle large number of users/content transparently and efficiently without expensive hardware infrastructure at the same time saving development efforts.

The main idea is that everything has its origin, like anything in a universe. Everything starts from something and leads to something. There is a reason for everything around us. And each day, on each page of code you can make your influence on the company in whole.