Three insights

Publicado por · Deja un comentario 

I would like to share three insights that have lately become a kind of guiding principles for my work on product/project management on analytics:

  • Make it work, make it right, make it fast
  • Separation of compute and storage
  • Agile is not the same as fast

Make it work, make it right, make it fast

I first knew about this principle in a guide to data science job interviewing. Later on I read about its many interpretations in the mother of all wikis. The meaning for me is as follows.

Firstly write the skeleton of the algorithm, program or thing you are trying to build. Just the basics, with no real functionality, just to ensure that it compiles, runs or executes. Then write the logic in a simple, naive way, but that yields the correct answer. Finally try to improve on speed, space or any other critical performance parameter.

Apart from being in line with the avoidance of premature optimization, this way of operating helps in reducing uncertainty, building confidence, and showing early results.

Separation of compute and storage

Recently I read an ebook titled Creating a Data-Driven Enterprise with DataOps, and this principle appeared in a chapter about Cloud Architecture. Although initially it seemed counterintuitive, the more thought I poured into the concept the more sense it made.

In the cloud, storage and processing are decoupled, and the former is cheap and permanent while the latter is ephemeral and expensive. Compare this to on-premise analytics where both are coupled, permanent and limited.

The impact that this principle has had on me has been profound, even considering how recently I have discovered it, and it has helped me design, implement, and communicate analytical architectures in a convincing manner.

Agile does not mean faster

I have recently discovered the deeply rooted misconception that being agile means giving up on preparation and alignment of stakeholders, and just hoping that every problem will sort out itself during the process of development. This is utterly wrong.

The Agile Manifesto does not mention fast development a single time. Moreover, there are other references that explicitly state that agile does not equate to fast.

In my experience, an agile framework introduces routines and discussion environments where new requirements and feedback from users can be introduced in the scope of the project or product, faults can be detected earlier, and a valid outcome is ready at the end of a sprint. This, however, comes with an associated cost in time and coordination. Agile methods will make reacting to changes easier, but they will not replace preparation before starting a project, and they are not, by any means, an excuse to cherry-picking features to boost in the middle of a sprint for the sake of showing them off in a committee.

In the long run, being agile will mean being faster. This will be caused by hitting the mark more frequently, not by making individual projects faster. As a matter of fact, less projects are expected to be run with a higher level of resources. At the individual project level this is clearly slower and more expensive, but at the project portfolio or the product levels it completely makes sense, if the required time for the methodology to provide results is allowed.

Conclusion

These three insights have become guiding principles in my endeavors in software development, and they help me make decisions and structure my work. I am always open to improve and learn from others, so… what are your guiding principles?

Construction vs. Design

Publicado por · Deja un comentario 

I recently read a somewhat old essay by Scott Berkun, Why software sucks, and the discussion about Construction vs. Design left me thinking.

In essence, the Construction viewpoint starts from the small pieces and tries to build up a vision, whereas the Design process begins with a wide perspective and tries to find the pieces needed to fulfill it.

In some way I think that this can be compared greatly to Google and Apple, and maybe to Android and iOS. While Google has great tools and services for a quite large number of tasks, it lacks a grand vision and the interactions are sometimes complicated. Apple, on the other hand, begins with the user experience and slowly but steadily tries to accomplish it, although some features may be missing.

This is very idealistic, of course, but maybe the background is the fight between Engineering (we do it because we can) and Product Management (to complement the user experience we have to do it).

Personally I’m making the transition from Construction to Design, but now that I think of it I’m realizing that I started this journey some time ago.

Android vs. iOS

Publicado por · 4 Comentarios 

Estos últimos dos meses he estado trasteando bastante con los móviles de gama alta, Android y iOS. Incluso parecía que en ocasiones era el único tema del que podía hablar, así que ahí van mis ánimos a quien me haya tenido que aguantar durante este tiempo.

Tras casi tres años de servicio y más de un año declarado oficialmente obsoleto, creía que había llegado la hora de jubilar mi viejo iPhone 3G y sustituirlo por alguno de los nuevos teléfonos de gama alta: un iPhone 4S o un Samsung Galaxy S II. Dadas las dificultades de conseguir un iPhone 4S subvencionado y a que había oído hablar muy bien de Android, lo había probado y me había gustado (y había flipado con el vídeo de Ice Cream Sandwich, todo hay que decirlo), al final me decidí por el Samsung Galaxy S II.

Tengo una mente abierta, aunque tengo que reconocer que soy algo puntilloso y exigente. Creo que esto provocó que en poco más de una semana estuviera deseando tirar el teléfono con Android contra una pared de pura frustración. Al final lo he vendido de segunda mano y he vuelto al universo iOS con un iPhone 4S.

No todo es malo, así que voy a comenzar por las partes buenas de Android que echo de menos en iOS:

  • La list de contactos está integrada e incluye los datos de Google, Twitter LinkedIn, Facebook y WhatsApp.
  • Las aplicaciones de Google están muy bien y son mejores que las contrapartidas de iOS.
  • Hay una mayor integración de aplicaciones entre sí.
  • Con Android 4.0.3 se puede utilizar Chrome, que tiene sincronización de marcadores.
  • Hay más aplicaciones variadas que son interesantes y cuya versión de escritorio ya utilizaba.
  • Sistema unificado de ficheros.
  • Fotos panorámicas en el sistema base.

Sin embargo, Android está plagado de fallitos y de detalles mal acabados que acaban haciendo que la experiencia de uso sea frustrante. Tal vez algunos de los puntos sean más debidos a Samsung que a Google, pero ahí van de todos modos:

  • La integración de contactos de Twitter no funciona.
  • Una aplicación que se cuelgue es capaz de tumbar todo el sistema.
  • En general el sistema es más lento y se atasca, por potente que sea el hardware que haya por debajo.
  • Hay problemas conocidos en el componente de sincronización con Exchange, que hacen que en ocasiones entre en un bucle que vacía la batería en un par de horas. Está detectado desde hace un par de años, pero no se arregla ni se soluciona.
  • Las citas del calendario de Google incorporan invitaciones a los afectados, lo cual es horriblemente molesto en calendarios compartidos. De nuevo, está detectado desde hace más de un año pero no se soluciona.
  • El teléfono se calienta horriblemente a la que se intenta hacer algo más que tenerlo en espera.
  • No hay una forma razonable de hacer una copia de seguridad completa.
  • No hay un mecanismo de sincronización fácil más allá de la copia de ficheros manuales en el sistema de archivos montado como unidad USB.
  • Hay muy poca estabilidad en los lanzadores no oficiales.
  • Las aplicaciones de teclado tampoco son demasiado estables.
  • Se producen reinicios aleatorios y relativamente frecuentes.
  • Hay aplicaciones que se borran solas. Restaurando con un back-up de Titanium conseguí que el teléfono entrara en un bucle de reinicios sin fin.
  • Mis aplicaciones de gestión personal daban muchos (pero muchos) problemas de sincronización.
  • He sido atacado por mensajes push no deseados de todo tipo.
  • Las aplicaciones de Google Play no me han inspirado demasiada confianza.
  • Las aplicaciones novedosas llegan más tarde a Android que a iOS.
  • No me gustan los botones cuadrados, pero sí los redondeados.
  • Odio las aplicaciones de letras blancas sobre fondo negro, aunque haya un motivo de reducir consumo de batería.

Como sistema con potencial Android es fantástico. Ahora bien, necesita una máquina poderosa y se debe reconocer el mérito de iOS de funcionar en un hardware inferior con prestaciones similares o superiores. Tampoco ofrece una experiencia de usuario consistente, ni da las herramientas necesarias para el mantenimiento adecuado del teléfono (aunque tal vez Google Drive sea la solución a esto). Tras acostumbrarme a iTunes, restaurar copias de seguridad (en unas 10 actualizaciones de sistema operativo creo que no he perdido ningún dato aún), sincronizar listas de reproducción y otras maravillas (en 10 minutos tenía el móvil nuevo en el mismo estado que el antiguo y con las nuevas opciones configuradas), el vacío presente en el universo de Android me asusta.

Tampoco entiendo los clamores de libertad: Android no es libre, al menos no lo suficiente como para hacer funcionar un teléfono por completo (el núcleo sí que lo es, claro). Pero el ecosistema permite que surjan ROM’s de todo tipo, con relativamente poco soporte, poco estables o con funcionalidad incompleta. Poca gente (casi nadie) ha cambiado el kernel del sistema, o ha flasheado una ROM. Algunos ni siquiera han instalado aplicaciones. Pero lo peor es que las herramientas necesarias para hacer esto, y las de copia y sincronización, funcionan mejor en Windows que en otros sistemas. Todo esto por la libertad.

Como usuario me parece mucho mejor la experiencia que proporciona iOS, que se puede resumir en que los caminos para hacer cosas están limitados, pero lo que se puede hacer, que cubre la gran mayoría de necesidades, simplemente funciona. Si bien se corre el peligro de un recorte de la libertad de uso de los dispositivos, en realidad Apple y iOS están consiguiendo traspasar la frontera entre tecnología y usuarios eliminando la capa de frikismo que suele interponerse y que dificulta su utilización.

Pienso que uno se acostumbra al primer smartphone que utiliza. No obstante, invito a los usuarios de Android a hacer el paso inverso que yo he hecho y a que descubran qué se siente al poder dedicar el tiempo a hacer cosas productivas con iOS y no a colocar los iconos por decimoséptima vez en el lanzador. Tal vez no vuelvan atrás: en mi caso prefería utilizar iOS 4.1.2 con un iPhone 3G a Android 4.0.3 con un Samsung Galaxy S II, que a pesar de las numeraciones están separados por dos generaciones de sistemas operativos y hay un abismo a nivel hardware.

Es una pena, pero veo que por culpa de Android y por otras muchas cosas Google se está hundiendo en la mediocridad.

Hasta aquí quiero leer. Me he vendido a Apple; soy un forofo de la simplicidad y de las cosas que funcionan. ¿Es eso malo, acaso?

Google Sync lost link

Publicado por · Deja un comentario 

For those of you looking for the old Google Sync for iOS link (which has not been working for quite a bit of time, although the documentation still points to it), the new address is:

https://m.google.com/sync/settings/iconfig/device

Kudos to the forum contributors!

Primeros pasos con Android

Publicado por · 2 Comentarios 

Hace unos días cambié mi venerable iPhone 3G por un flamante Samsung Galaxy S II con Android 2.3.

Como soy algo inquieto durante los últimos días he estado probando diferentes versiones de firmware, además de rootearlo y de desbloquearlo. Por ahí se ha ido la garantía…

He probado los siguientes firmwares, además del oficial de Samsung de fábrica:

  • MIUI 2.2.24: muy bonita y pulida, en blanco y en línea con mi gusto, pero no se aprovecha del todo la magnífica cámara de 8 MP y la aplicación de calendario no muestra una enumeración de las citas de cada día en la vista mensual.
  • CyanogenMod Stable 7.1: muy agradable y conseguida pese a ser de tonos oscuros, pero la cámara no funciona, por lo que queda descartada.
  • Samsung Ice Cream Sandwich oficial: al menos con la interfaz TouchWiz es muy similar a la versión anterior, aunque se notan muchas mejoras en el sistema. Sin embargo es un derrochador de energía y la batería se está gastando de forma que no creo que dure un día entero.

Me planteo volver atrás a la versión de fábrica Android 2.3 de Samsung. ¿Es triste? Sí, pero es la mejor forma de aprovechar el potentísismo hardware que es el Samsung Galaxy S II.

La daré antes una oportunidad a Ice Cream Sandwich probando a recalibrar la batería, porque en teoría gasta menos que la versión anterior.

Probaré otros lanzadores más allá de la interfaz TouchWiz, pero es fundamental que encuentre una aplicación equivalente al «Program Monitor» al que me he acostumbrado.

Una cosa que me irrita es que el software es muy inconsistente, casi tanto como métodos hay para obtener acceso de root, desbloquear, instalar kernels o firmware.