karl karl 6 Jan 2010

Doing It Right And Simple

Tim Bray in Doing it Wrong explains the big differences between the big traditional software companies with a lot of process and the Web companies and its associated culture.

Obviously, the technology matters. This isn’t the place for details, but apparently the winning mix includes dynamic languages and Web frameworks and TDD and REST and Open Source and NoSQL at varying levels of relative importance.

More important is the culture: iterative development, continuous refactoring, ubiquitous unit testing, starting small, gathering user experience before it seems reasonable. All of which, to be fair, I suppose had its roots in last decade’s Extreme and Agile movements. I don’t hear a lot of talk these days from anyone claiming to “do Extreme” or “be Agile”. But then, in Web-land for damn sure I never hear any talk about large fixed-in-advance specifications, or doing the UML first, or development cycles longer than a single-digit number of weeks.

But what Tim explains in the rest of his post is the controlled environment versus the wild forest. Many big software projects have been conceived in a controlled environment where everything is stable, where the odds are unlikely to happen. That said when you deploy software and are being confronted with the real traffic, with the awkward decisions of users with regards to your product, you are stepping in a wild directory, very wild. You have to be alert. You have to be able to be reactive. Things will not be perfect. It will be an iterative process. Tim Bray continues

The point is that that kind of thing simply cannot be built if you start with large formal specifications and fixed-price contracts and change-control procedures and so on. So if your enterprise wants the sort of outcomes we’re seeing on the Web (and a lot more should), you’re going to have to adopt some of the cultures and technologies that got them built.

The emphasis are mine. In the world of a Web agency, these are harder to put in place than a startup. It’s a triangle story. There are the product developed by the agency, the requirements of the client, and the contract with a limited budget.

If you are developing a traditional Web site with a CMS and a very limited user interaction, no social features, then you are in a safe zone. But if you are mandated to develop a very interactive Web site such as a social network, then you enter in a turbulent field. Either, the budget doesn’t scale or the philosophy around the project is awkward.

There is a very difficult balance to achieve. Doing it right and simple often conflicts with the desire of many features, because the budget seems too important for only one feature.

In twitter, for a very long time, there was one feature, only one feature. They have a team of more than 50 persons, They refactor their code all the time. They have have made big changes in the architecture a few times. Optimization and refactoring are part of the project, you have to plan and discuss it with the clients forefront to not have them surprised during the project.

Developing a social network is hard. It is a territory of unknowns. It is a jungle, where you might have to change the strategy a few times before getting it right. But the more, you pack your shoulders with features, with options, the more you set yourself in a lot of difficulties and budget explosion.

One opinion

  1. Un projet technologique hautement innovant, inscrit dans du long terme et développé pour répondre parfaitement aux besoins d’utilisateurs se développe dans un environnement rempli d’inconnus et de risques autant du point de vue technologique que du modèle d’affaires. Dans ce cas le modèle Agence ne semble pas le cadre le plus approprié pour maximiser les facteurs de réussite.

    Pour être un peu provocateur : “comment bâtir un beta efficace en payant des développeurs 150$ de l’heure dans un environnement où le soucis principal est de limiter les risques ?”

    Si on considère qu’une Start-up “is an organization formed to search for a repeatable and scalable business model.” On est, même au niveau de la stratégie d’affaire, dans une proche “agile” ce qui veut dire que l’on planifie par itération. La planification stratégique devient plus en enjeu de méthode de validation de scénarios et d’analyse de données a posteriori que de recherche en amont et de mise en place de processus pour atteindre des objectifs financiers précis.

    C’est souvent un processus difficile pour des organisations qui ont déjà leur structure et un modèle d’affaire bien établi. Elles doivent passer d’un objectif de génération de profits à court terme (ou du moins sur une base régulière) à un objectif de compréhension d’un marché et de réductions progressives d’inconnues.

    Il faut beaucoup de motivation et un réel désir d’évolution pour prendre ce chemin. Le choix d’un partenaire « technologique » d’accompagnement est aussi crucial. Ses compétences, sa culture mais aussi sa structure organisationnelle ainsi que son modèle de revenus ont une influence cruciale sur le succès de l’association.

    En complémentarité d’un modèle agence, pour de tels projets il serait plus efficace de développer de nouvelles structures de partenariat entre organisations et agences technologiques. Ces structures ressembleraient plus des accélérateurs de projets et développeraient leurs opérations sur des bases similaires aux nouveaux types d’incubateurs technologiques que sont YCombinator ou Seedcamp. Ces structures, composées d’équipes mixtes (organisation-partenaire technologique), pourraient développer rapidement et efficacement d’un point de vue des coûts des projets innovants à haut niveau d’inconnue.

    Ces structures permettraient à l’organisation de maintenir un contrôle sur la direction du projet, de développer une expertise à l’interne, de contrôler ses coûts, tout en réduisant les risques inhérents à ce type d’initiative. L’organisation aurait le meilleur des deux mondes en profitant de tous les avantages de l’ « outsourcing » (accès à des expertises complémentaires, nouvelles connaissances, non-interférence avec les opérations courantes, nouvelles opportunités de partenariat, etc.) et de ceux du développement interne (coûts moindre, développement de nouvelles expertises, contrôle, etc.).

Leave an opinion