As an experiment, today’s work log was published in Blank Page

http://blank.page/p/worklog

[edit: I removed the page because or a reorganization, I’ll post it here, as-is]

Voy a publicar este work log en el reader de blank.page. El motivo principal es que no he probado el reader con un texto largo, y aunque puedo meter un lorem ipsum en menos de un minuto, mejor aprovecho para escribir.

El reader es una cosa realmente improvisada, lo hice el día de ayer. El motivo fue técnico: queríamos usar blank.page también para leer textos, pero sin posibilidad de edición. Como esto nunca estuvo previsto, había que deshabilitar un montón de features para que funcionara en modo readonly.

La solución era clara: había que separar la experiencia de lectura de la de escritura para facilitar la programación de ambas experiencias.El desarrollo de un producto a menudo se refleja como espejo en el diseño, y viceversa. El hecho de que lector y editor sean productos distintos ahora nos permite diseñar cada uno para su tarea ideal. Esta necesidad de separación de tareas se percibe en la programación pero se resuelve desde el diseño producto.

Todo diseño tiene una lógica que se manifiesta en la implementación. Si un producto no es todo lo simple que puede ser, de igual manera el desarrollo no será todo lo simple que puede ser. Pero no hay que confundir lo simple con lo mínimo (aunque hay una correlación, pues lo mínimo tiende a ser simple). Los problemas complejos nunca son mínimos, pero sí pueden llegar a resolverse en su expresión más simple.

Llegar a la expresión más simple de un problema es prácticamente imposible sin llevar a cabo varios intentos (iteraciones), inclusive tirar todo para abajo porque has entendido que el problema no se resuelve de la forma en la que lo estabas intentado. Mi heurística cuando resuelvo problemas en programación es no hacer nada hasta que duela.

Cuando me encuentro plantando muchos if (write.mode === readonly) sé que la solución no es correcta, pero a veces lo completo porque me permite terminar de entender todas excepciones me ayuda a ver dónde está el código que necesito para la lectura y separarla del código que asiste en la edición de texto. Luego, plantando las excepciones como banderas, puedo destilar el código de tal manera que el reader comienza con el mismo ADN que blank.page, siguiendo un curso distinto a futuro.