Posts Tagged Thoughts

change of service agreements

I read two articles yesterday (which is a while back when this post hits the blog). The first was the closing of iFlow reader, which is sad and out-right wrong as seen from a market perspective. There should be some marketing laws that prevent the elimination of competition in this way. Obviously Apple is scared of the competition. This post isn’t about Apple how ever. I also read the year a head for Google AppEngine, where Google announced that they were changing their subscription plan for AppEngine.

This is of course perfectly fine for Google to do, in fact it’s not that big of a deal. Their pricing still makes sense. But as a developer who was some services on AppEngine I have to consider. What happens if Google suddenly changes their pricing model to a model which doesn’t work with the plans for my services?

Suddenly I have to move my services else where, but with AppEngine I’ve developed most of the backend solution for Google AppEngine. Sure you can host Django on AppEngine and then move to a Django based hosted solution in the cloud, but there’s still the API:s that are used.

I guess what we can learn from iFlow is to keep check of what your dependencies are on service agreements for your services, and have backup plans in case things get out of hand.

, ,

No Comments

Development as a team or development as stars?

A good friend and colleague of mine Johan Andersson read somewhere that you can see the communication patterns of a company in the architecture. I can see how that makes sense, but I think its much clearer than that. I think you can see the communication patterns of a company in the interface of its products. Both API’s and UI.

Every bump in the flow of a product, every view that is different from the main theme, every glitch in the feel of the application. They all show where a Star has solved a problem. They all show where communication failed and brute force problem solving stepped in to save the day.

An example could be an integration that uses a mostly unused field to store some information that it was not meant to store. Such as dates being printed in a text-field. Or having to leave the application to complete parts of the workflow on a webpage (or on a different site).

If we consider an application and its features as an onion. At the heart of every application there is a core functionality, the minimum viable product. On this other features evolve, or are developed. In essence making it a bigger onion for every aspect covered.

It could look something like this:

Teamwork feature circle Stars feature cicle
Teamwork feature circle Star work feature circle

Now let each layer be complete, if the workflow of the feature is complete. A layer is incomplete i.e. graphed, if they break the flow of the product in order to solve a problem. If they just add enough functionality so it solves the task at hand.

Naturally these describe the wholeness of the experience, and is not tied to the implementation in any other way other than the feeling one gets when using the product. A product developed with good teamwork feels whole and complete around each feature. A product developed with individual stars will still solve the task at hand, but the experience of using it is scattered and lacks flow.

Is this bad?

Pros

  • The problem was solved
  • Functionality is implemented as the customers wish
  • A sale was hopefully made, money was gained
  • It might have gone faster due to reduced communication costs

Cons

  • There is a glitch in the workflow of the application
  • Something looks astray if you consider the whole
  • There is a severe risk of bugs being introduced at a later stage, due to things not working as expected
  • It might cause rework to repair the flow, or fix the later introduced errors

These lists are probably longer, but they show the pattern

Let’s look at this from a sales perspective. If your method of selling is by listing features and selling a complete system, the stars approach is desirable, it will give you a list of features quickly. At the risk of the development going slower further down the road, especially if you build on “previous” features.

If you, however, sell by demos or free trials, showing the experience of the product and how convenient it is while solving the problem. Working with previous customers who testify to the product’s stability and trustworthiness. The teamwork approach will most likely give you the best experience, and reduced amount of bugs. Thus it might go faster in the long run.

From a buyers perspective, I’d rather use a product with complete flows.

Now ask yourself, are you a star or are you a team member?

How does your organization sell its products? Does selling like that benefit Star development or Team development?

What benefits your organization most? Teamwork or stars?

, ,

No Comments

What if I worked with a story to being with?

I’ve been working on a pet project, just to see if my idea was possible at all. Central to the idea was sharing of content between users, and I wanted to see if I could build a model to make it work on Google AppEngine.

Now I started out with some spec-style unit tests to make sure that it was feasible. Then when I started to see some progress started to bone out a walking skeleton for the application, a thin red line.

However somewhere along they way I drifted off testing the primary entity of the application and instead the focus was around one of its neighboring entities. The reason was that the other entity is central to controlling the sharing but its not the entity shared. Once my walking skeleton was complete I noticed that I had indeed created a model that solved the wrong problem.

Now all was not lost, I changed the tests that had drifted off in the wrong direction and a few hours of intense thought later I had conceived a model that solved to correct problem. I had my spec-style unit tests in python covering my refactoring and most of the skeleton still worked after I refactored.

To rethink my model I went back and wrote down what I wanted to achieve in a story format. The tests I rewrote became more like Given When Then than the spec style that was a result of the initial unit-testing.

So now I can’t help but wonder, what if I had had a cucumber acceptance test to begin with?

I’d be forced to consider what I wanted to solve on the correct level of abstraction, and I might not have drifted away from the original idea.

,

No Comments

On Google-TV

It hit me last night that Google’s move into the TV-market has a significant meaning to where the Internet is heading.

I work with distributed systems, flaky connections and clients capable of being online to collect data to then take it offline. Most clients work with the assumption, you cannot be online all the time.

Now Google’s move into the TV-market marks the beginning of an era where the Internet is just as available in homes as the TV-network. With that I mean that homes have stable available Internet with enough bandwidth to stream video and audio just like the TV-network.

It’s been predicted that just like the radio and TV, the Internet will become a Utility service, and I think that Google’s market entry marks the beginning of just that.

It will be interesting to see how software services will change as this becomes a reality.

No Comments