La mayoría de las personas deben aprender a codificar para que puedan estar listas para programar utilizando lenguajes de programación más simples dirigidos a su dominio que pueden ayudarles a administrar grandes sistemas de software que utilizan mejor su comprensión del dominio.
La mayoría de las nuevas empresas de tecnología están tratando de encontrar formas de automatizar el trabajo que hacen las personas en diferentes dominios. Puede ser minorista, medicina, derecho, política, educación o incluso industria del entretenimiento. Si cada vez más de lo que hacemos todo se puede hacer de manera eficiente utilizando software, la fuerza laboral humana puede dedicar su tiempo y energía a resolver problemas mucho mayores.
Cada año aparece una pieza revolucionaria de un software que intenta resolver uno de estos problemas. Dice mucho sobre el equipo que está detrás del software. El mayor logro en general es que, además de desarrollar software de manera eficiente, también han comprendido el dominio al que están dirigidos. Han entendido quiénes son sus usuarios. Cómo van a utilizar el software. Qué problemas encontrarán y qué tipo de interfaz de usuario se adaptará mejor a ellos y sacará lo mejor de ellos.
Sin embargo, la utilidad del software disminuye gradualmente. La brecha entre lo que exige la industria, cómo trabajan las personas y lo que proporciona el software aumenta. Si los propietarios del producto se vuelven complacientes y no renuevan su producto, otra nueva empresa verá la brecha y se lanzará con una solución completamente diferente que hace que la existente parezca obsoleta.
Así que ahora la gente tiene que aprender a usar un nuevo software. Tienen que aprender su terminología y sus convenciones. Una vez que aprenden, pueden aprovechar toda la bondad que tiene para ofrecer, pero esta es una evolución lenta. Las cosas pueden ser más rápidas si se da algún control en las manos del usuario para personalizar ciertos aspectos del trabajo, flujos de trabajo, reglas y configuraciones del software.
Esta es la parte más complicada. Si la interfaz de usuario apesta, la personalización será una tarea cuesta arriba para el usuario final. Ellos configurarán de manera incorrecta las cosas la mayor parte del tiempo o terminarán alejándose de las personalizaciones.
¿Ves un patrón aquí en las soluciones hasta ahora? Estamos considerando que el usuario del software sea un completo idiota. Tenemos miedo de darles el control del funcionamiento de un software que está en un dominio que entienden mejor que nosotros, pero tenemos miedo porque no entienden la implementación mejor que nosotros.
Hay una brecha y hasta ahora son los programadores quienes intentan cerrar la brecha desde su extremo, pero el usuario final no está tomando medidas para tratar de ser mejor que un idiota.
¿Qué sucede si los usuarios de software que tienen un mejor conocimiento de su dominio tienen una manera de expresar su lógica de manera concisa?
¿Qué pasa si les proporcionamos una interfaz para que puedan escribir código. No es el código que los programadores escriben, sino un pequeño subconjunto de él. Un subconjunto que no se ocupa de redes de distribución, servidores y sistemas operativos. En su lugar, habla en el idioma del dominio y permite que un experto en dominios escriba la lógica que controla el sistema.
Este enfoque les permite mucho más que cualquier interfaz de usuario de administración de flujo de trabajo y personalización formada por menús desplegables, casillas de verificación, latas de arrastrar y soltar.
Si solo estuvieran dispuestos a aprender un lenguaje simple que exprese la lógica de su dominio, estarían en mejor forma para administrar la lógica del sistema en comparación con un programador que no entiende el dominio.
No es un concepto nuevo. Estos lenguajes se denominan lenguajes específicos de dominio, también conocidos como DSL. Han existido por algún tiempo pero todavía están siendo utilizados solo por programadores. Todavía no hemos visto sistemas de propósito general basados en DSL en el mercado que estén siendo utilizados por abogados, médicos, periodistas, diseñadores o, digamos, fotógrafos para hacerles la vida más fácil.
Ejemplo: supongamos que tenemos un DSL para la administración de feeds de Quora a cada usuario.
gotTerms = [“Jon Snow”, “Dragons”, “Khaleesi”, “Game of Thrones”]
Quora.Feed.keep (
Contenido (tipo = Respuesta),
Contenido (tipo = BlogPost)
).retirar(
Tema (nombre = “India”),
Tema (name__in = gotTerms),
Tema (name__in = [“IIT”]),
) .order_by (
decreciente (upvotes),
) .limit (20)
NOTA : Esto es algo que inventé en 15 minutos, pero estoy seguro de que si se piensa lo suficiente, se puede diseñar un DSL mucho más simple para que los usuarios avanzados puedan aprender y escribir una lógica que gobierne el aspecto de su fuente y tal vez Quora pueda permitirlo. Nosotros, una interfaz de programación en la que nos permiten escribir un código que administra nuestros feeds de la forma que queremos. Esto también podría permitir escenarios donde las personas puedan compartir código con otros, lo que funciona para ellos y la gente puede ver finalmente qué tipo de lógica hace posible una mejor alimentación.
En una nota más ligera, algo como esto podría incluso conducir a preguntas como Quora.
- ¿Cómo se ve el código para la gestión de feeds de Quora?
- ¿Cuáles son algunos de los mejores códigos de gestión de feeds de Quora?
- ¿Cuál es el código que utiliza Marc Bodnick para administrar su feed personal ?
- ¿Qué cambio debo hacer en mi código para deshacerme de todas las respuestas relacionadas con Citas y relaciones?
Espero poder arrojar algo de luz sobre cómo aprender no todo, sino la mínima codificación que lo ayuda a expresar su lógica que hace su propia vida más fácil, no solo le brinda una mejor experiencia de usuario con el sistema de software que está utilizando, sino que también ayuda a los programadores a concentrarse en el imagen más grande