9 años de un desarrollador en solitario del editor de texto "Paper"
- En 2015, era un desarrollador web full-stack común, bastante alejado del mundo de desarrollo de Apple.
- Mientras usaba Mac, se sintió atraído por las apps de desarrolladores independientes y, inspirado por iA Writer, un editor de Markdown simple y elegante, decidió crear una app parecida.
- Para desarrollar un editor de texto nativo para Mac, empezó a aprender un nuevo stack tecnológico como Xcode, AppKit y Objective-C.
- Le puso a la app el nombre Paper y, buscando un minimalismo extremo, diseñó el editor como un simple rectángulo.
- Lanzó la app para Mac en la Mac App Store en 2017, y en 2019 lanzó la app para iOS.
Por qué eligió una app nativa
- Eligió una app nativa en lugar de una app de Electron porque su objetivo era ofrecer la mejor experiencia de usuario posible.
- Las apps nativas son ligeras y rápidas, y ofrecen más formas de implementar funciones únicas relacionadas con el texto.
Por qué eligió Objective-C
- En 2015, cuando Swift todavía estaba en una etapa inicial, compiló un proyecto vacío de Xcode tanto en Objective-C como en Swift y comparó los paquetes
.app.
- La app de Swift incluía el runtime de Swift y pesaba alrededor de 5 MB, mientras que la app de Objective-C era muy ligera, de unos 100 KB.
- Como quería una app distribuible más ligera, eligió Objective-C.
Dependencias de terceros
- Paper no tiene dependencias de terceros.
- Construyó todo por su cuenta, obteniendo una pequeña ventaja frente a sus competidores.
- Por ejemplo, el motor de parsing de Markdown de Paper es personalizado y admite menos sintaxis de Markdown que un editor de Markdown tradicional.
Visión
- La visión inicial de Paper era tener las funciones principales de iA Writer, pero en un paquete más elegante y minimalista.
- Se enfocó en aumentar la concentración minimizando los elementos que distraen al usuario.
- Con el tiempo, Paper fue encontrando su lugar en el mercado al mantener el minimalismo mientras añadía funciones gradualmente.
Arquitectura
- El código de Paper se compone de dos alcances: alcance de la aplicación y alcance del documento.
- Para cada alcance, definió un storyboard para describir vistas y widgets, y combinar los módulos dentro de ese alcance.
- Los módulos son clases de Objective-C encargadas de una parte de la funcionalidad dentro de la app, agrupando la lógica relacionada con una característica en un solo lugar.
Código multiplataforma
- AppKit y UIKit son similares, pero también muy distintos en muchos aspectos.
- Para resolver esas diferencias, usó macros y categorías de Objective-C.
Depuración
- En el caso de los frameworks de Apple, hay que leer la documentación en lugar del código, y usar breakpoints para analizar stack traces compilados.
Funciones de pago
- Entre 2015 y 2017, las suscripciones todavía no estaban ampliamente extendidas y en las app stores lo normal eran los pagos únicos.
- Como quería ofrecer funciones de pago de una manera amigable para el usuario, solo hizo de pago mejoras cosméticas, no funcionales.
Precios
- Al principio empezó con dos conjuntos de funciones Pro, cada uno con un pago único de 5 dólares.
- Actualmente, el precio es de 10 dólares al mes o 100 dólares de por vida para un único conjunto.
- A través de experimentos de precios, descubrió que los usuarios estaban dispuestos a pagar hasta 100 dólares por una app de un desarrollador poco conocido.
Partes difíciles
- Los editores de texto son complejos, y con cada actualización del sistema operativo se agregan nuevas formas de insertar, actualizar e interactuar con el texto.
Gimmicks
- Añadió funciones divertidas como el bounce al redimensionar la ventana, inspirado en la app Things.
Opinión de GN⁺:
- Enfoque innovador: Impresiona que, aun sin experiencia en desarrollo de apps nativas, el desarrollador haya creado Paper poniendo la experiencia de usuario como prioridad máxima. Esto muestra lo importante que es el diseño centrado en el usuario en el desarrollo de software.
- Aprendizaje y crecimiento: El proceso de aprender un nuevo stack tecnológico y crear un producto con él puede inspirar incluso a ingenieros de software principiantes. Esto subraya que el aprendizaje continuo y asumir retos son esenciales para crecer como desarrollador.
- Importancia de la experiencia de usuario: Uno de los elementos del éxito de Paper es la atención minuciosa a la experiencia de usuario y su enfoque en el minimalismo. Esto muestra lo importante que es entender lo que los usuarios realmente quieren y reflejarlo en el producto.
7 comentarios
La mayoría de los documentos de desarrollo de Apple no son muy amigables, así que hay que escarbar bastante en la documentación... y si aun así falta información, muchas veces toca revisar las interfaces del SDK... por eso también resulta admirable, en otro sentido.
Me preguntaba qué era una actualización cosmética, y resulta que en el texto original dice
visual changes.¿Se usa la palabra “cosmético” en ese sentido? Yo la veo por primera vez.
Como neo es un bot de IA, parece que terminó siendo una traducción mecánica jajaja
El original es más bien una mejora cosmética.
Entonces, una mejora estética parece verse mejor...
Parece un desarrollador digno de tomar como modelo a seguir.
Comentarios en Hacker News
"Los detalles cuidadosos en los márgenes son lo que se siente como magia"
"Un gran texto basado en 15 años de experiencia como desarrollador de apps iOS"
"La posibilidad de desarrollar con pocas o ninguna dependencia en plataformas Apple"
"La evolución de Swift y las especulaciones sobre componentes integrados en la plataforma o la optimización binaria"
"Desconfianza hacia la elección de dependencias y la importancia de aprender"
"Solicitud de materiales de aprendizaje y recomendaciones sobre AppKit y desarrollo para Mac"
"Respeto por la atención al detalle y la artesanía"
"Una mención interesante al gesto de girar para deshacer"
"Elogios al minimalismo del blog y de la app"
"Sorpresa por la falta de acceso al código SDK en el ecosistema de desarrollo de Apple"