¡Dé la bienvenida a nuestro patrocinador semanal, Pusher , a Hacker Noon! Pusher crea API en tiempo real que permiten a los desarrolladores de todo el mundo agregar rápidamente funciones de comunicación y colaboración a sus aplicaciones. Su producto principal permite a los desarrolladores crear fácilmente funciones como notificaciones en la aplicación, flujos de actividad, paneles en tiempo real, rastreadores en vivo y mucho más.
Hoy nos reuniremos con el evangelista desarrollador de Pusher, Zan Markan , para analizar el estado de Kotlin, qué lo impulsa a hacer lo que hace y qué hace que un vaquero espacial sea un vaquero espacial.
David : Comencemos con el estado de Kotlin . Recientemente realizó una encuesta de Kotlin (más sobre los aspectos prácticos aquí ). Encuestaste a 2.744 personas de enero a marzo de 2018 para tomar el pulso al ecosistema. ¿Qué resultados desafiaron sus suposiciones? ¿Qué resultados confirmaron sus suposiciones? ¿Y cuál es la conclusión sobre lo que está pasando con Kotlin?
zan : Así es. Notamos que cada vez más desarrolladores utilizan Kotlin al crear aplicaciones con nuestros productos, por lo que decidimos profundizar más y descubrir qué los motiva. Descubrí algunas cosas sorprendentes.
En primer lugar, me sorprendió mucho el cariño que los estudiantes y los desarrolladores junior le están dando a Kotlin. Esperaba una diferencia mayor entre desarrolladores con más o menos experiencia, pero las nuevas multitudes realmente están entrando en Kotlin desde que Google puso sus armas detrás de la comunidad.
Otra cosa que me sorprendió fue cuántas personas están interesadas en probar las funciones etiquetadas como experimentales por el equipo de Kotlin, es decir, corrutinas y soporte para proyectos multiplataforma, alrededor del 25% al 30% cada una.
Los resultados de la encuesta confirmaron más o menos mis sospechas sobre el tamaño de Android: alrededor del 80% según los datos de nuestra encuesta. Algunas otras encuestas que he visto muestran un poco menos de Android, pero todavía cómodamente por encima de la marca del 75%. Parte de esa diferencia podría deberse a que mi red está principalmente centrada en Android, pero el efecto no fue claramente tan grande.
Una conclusión es que Kotlin es un lenguaje interesante y que hace felices a los desarrolladores.
Esto es bastante raro (al menos para algo como un lenguaje de programación convencional) y ha resultado en una comunidad vibrante y entusiasta que se formó alrededor de todo el ecosistema Kotlin.
El desarrollo principal de Kotlin proviene de un equipo de programadores de JetBrains con sede en San Petersburgo, Rusia. ¿Qué más puedes contarnos sobre su fundación? ¿Y cuándo usaste Kotlin por primera vez?
Hasta donde yo sé, la historia de Kotlin es la de JetBrains queriendo un "mejor Java" para sus herramientas de desarrollo. La interoperabilidad y la mejora de la productividad eran algunos de sus principales objetivos, y ningún otro lenguaje basado en JVM en ese momento realmente cumplía los requisitos: Scala cumplía con la mayoría de los requisitos, pero las herramientas simplemente no estaban allí y los tiempos de compilación eran demasiado lentos. para las necesidades de desarrollo de JetBrains.
Esa idea exacta de un Java mejor y altamente interoperable fue la razón por la que esto comenzó a atraer a tantos desarrolladores de Android (incluyéndome a mí, que he hecho Android desde los primeros días).
Hace unos años, el ecosistema de Android estaba mayoritariamente atascado con una versión antigua de Java: un extraño híbrido entre Java 7 y Java 6, que no tenía características interesantes como lambdas y era bastante detallado. Entonces la gente empezó a jugar con esta novedad que parecía muy interoperable y permitía una mayor productividad (especialmente las veces que no estropeaba todo 😅).
Eso es lo que también me atrajo a esto: escuché sobre él por primera vez en 2014 y luego seguí de cerca el desarrollo de Kotlin, ya sea jugando con él en mi tiempo libre o usándolo para crear prototipos rápidamente. Escribí el primer código Kotlin de producción cuando trabajaba en los productos Pusher Chatkit y Feeds .
¿Por qué crees que Kotlin se dirigió a desarrolladores menos experimentados? ¿Y qué impide que se convierta en una moda pasajera?
¡Ja! No creo que esté dirigido a desarrolladores menos experimentados per se; de hecho, lo veo como una agrupación bastante similar a la que hemos visto con los resultados de la encuesta de StackOverflow, por lo que no hay nada inesperado en términos de cómo se está desarrollando la industria.
También hemos visto que fue adoptado por primera vez principalmente por desarrolladores experimentados (empleados) y recientemente comenzó a verse adoptado por estudiantes y desarrolladores más jóvenes.
Veo a Kotlin como un lenguaje rápido de aprender. Existen excelentes herramientas que nos permiten ser productivos incluso sin conocer la mayor parte. Es interoperable con Java, por lo que cualquier portabilidad o migración puede realizarse a su propio ritmo. Y, por último, tanto Google como JetBrains están haciendo un excelente trabajo preparando documentación y recursos que respaldan a Kotlin.
¿Qué separó a Kotlin de otros lenguajes de programación que cree que impulsó su rápida adopción? Y de manera más general, ¿qué crees que separa los lenguajes de programación que obtienen adopción de los lenguajes de programación que luchan por lograrlo?
El soporte de Google y JetBrains definitivamente ha ayudado. Por otro lado, Google decidió admitir oficialmente Kotlin en Android solo DESPUÉS del impulso masivo de la comunidad de desarrolladores, por lo que ya hubo un impulso sustancial del otro lado también.
De hecho, creo que es un lenguaje que apareció en el momento adecuado, en la comunidad adecuada: la comunidad de Android, a medida que maduraba y la gente quería nuevas herramientas para volverse cada vez más productiva. Kotlin simplemente estaba ahí, seguro que tenía sus defectos, pero estaba ahí y era lo suficientemente bueno como para que la gente lo hiciera bien.
¿Cómo ve a Kotlin compitiendo y complementando eficazmente los lenguajes y arquitecturas existentes durante los próximos cinco años aproximadamente?
Si comenzamos con lo obvio, entonces Java es bastante fácil y Kotlin ya lo complementa bien. Creo que definitivamente veremos más de eso, especialmente cuando las herramientas se consoliden y surjan algunas herramientas “estándar de oro”. Una de estas herramientas es Arrow, un conjunto de herramientas de programación funcional para Kotlin, que se desarrolló a partir de la unión de los equipos de Funktionale y Kategory para crear algo mejor y más completo. Creo que esa va a ser la tendencia.
En cuanto a otros lenguajes de programación, en JVM veremos qué sucede con Scala y otros, y fuera del mundo JVM aún es demasiado pronto para decirlo, pero he visto algunas ideas prometedoras sobre Kotlin/Native y Kotlin para múltiples lenguajes. proyectos de plataforma: ambos todavía son muy experimentales, pero ya existen algunas pruebas de concepto, que funcionan y son bastante interesantes.
Cuando “ Funtores, aplicativos y mónadas en imágenes de Kotlin ” de Alberto Ballano llegó a Hacker News , surgió una discusión interesante... ¿A qué crees que Kotlin es una droga de entrada?
¡Eso suena nefasto! Es una droga de entrada a los lenguajes de programación modernos, que nos hacen tanto productivos como felices. Definitivamente expondrá a varias personas a la programación funcional, especialmente con cosas como Arrow, y eso podría permitir a algunas personas saltar a FP más duro. idiomas más fácilmente.
Algunas otras cosas que podría hacer es estimular a un grupo de desarrolladores de Android a aventurarse en el desarrollo web o nativo, con todo su soporte multiplataforma, y además, a medida que más y más desarrolladores lo adopten como su primer lenguaje de programación, inevitablemente lo harán. Llegué a ver a Kotlin como un punto de referencia con el que comparan todos los demás lenguajes, y eso también es bastante emocionante.
En lingüística, se necesita mucho tiempo para que un idioma, como el inglés o el español, sea adoptado. Y hay muchos dialectos, pero el uso de un idioma hablado completamente nuevo debe ser menos prominente que el uso de nuevos lenguajes de software. ¿Cree que llegaremos a un punto de madurez de la industria en el que disminuirá la tasa de nuevos lenguajes de software? ¿O seguirán surgiendo más lenguajes de software nuevos?
Ya hemos visto un montón de lenguajes de programación excelentes obtener una adopción seria rápidamente y, en los últimos años, me vienen a la mente Swift, Go, TypeScript y Rust. Cada uno de ellos cuenta con el respaldo de una (o más) gran organización de ingeniería con recursos sustanciales y comunidades de desarrolladores existentes que la respaldan.
Cada uno de ellos también detectó una picazón particular en sus organizaciones, y si esa picazón es compartida por muchos otros desarrolladores, entonces se produce la adopción y un lenguaje despega, lo que le permite alcanzar una "masa crítica". Eso es lo que sucedió con cada uno de estos lenguajes que mencioné: Go, por ejemplo, comenzó cuando Google quería lograr una buena concurrencia y uno de los objetivos de Rust nunca fue fallar.
En cuanto al futuro, creo que definitivamente habrá nuevos paradigmas informáticos, se desarrollarán nuevas ideas (quién sabe, tal vez Blockchain se convierta en algo algún día); eso no será muy útil con nuestras herramientas existentes. Algunos otros ejemplos son los cuánticos. informática o IA.
Si bien la mayoría de los lenguajes hoy en día afirman ser de propósito general, eso no significa que sean igualmente adecuados para todos los propósitos. Veremos nuevos propósitos que exigirán nuevos lenguajes.
Hablemos de Zan la persona. Las dos primeras palabras de la biografía en su sitio web personal dicen "Space Cowboy". ¿Algunas personas te llaman el gángster del amor? ¿Otras personas te llaman Maurice? ¿Encarnas la pompatus del amor?
¡Ja, me encanta esa canción! Gángster del amor, tal vez, ya que no creo que nadie haya logrado escribir mal a Zan en Maurice, ni siquiera el personal de Starbucks. También me encantan los cohetes y todavía lamento la pérdida de Firefly, así que también es una especie de tema de vaquero espacial.
La historia real detrás de ese "título" es que hace unos años, cuando todavía dirigía una startup que fundé con algunos amigos que salieron de la universidad. Para parecer un poco más legítimo al pedir dinero a extraños (es decir, recaudar una inversión), hicimos tarjetas de presentación para cada uno de nosotros.
No me gustan mucho los títulos, especialmente los títulos C, cuando todo el mundo hace prácticamente de todo, así que decidí ir por el otro lado y elegí Space Cowboy, que es tan (in)preciso como cualquier otro. Al menos pensé que sería un buen inicio de conversación.
El hecho de que hayas preguntado al respecto demuestra lo bueno que es realmente para iniciar una conversación.
Se ha dicho que te gusta la IPA al estilo de la costa oeste. Estoy en Colorado ahora y extraño a Laguinatis. ¿Cuáles son tus 3/5 principales IPA de la costa oeste?
Me gustan violentamente fuertes y despiadadamente lupulados.
Cada vez que visito la costa oeste, me aseguro de tener un Pliny the Elder junto a Russian River y, por supuesto, Stone IPA; ambos de barril, obviamente. Cuando estuviera más cerca de casa, mi opción sería Jack Hammer de Brewdog.
¿Qué caracteriza a un buen desarrollador evangelista? ¿Cómo has mejorado en tu trabajo? ¿Qué hace que valga la pena evangelizar la tecnología Pusher?
Lo más importante para un evangelista de desarrollo (cualquier persona de relaciones con desarrolladores en general) sería una pasión genuina por enseñar y compartir conocimientos. En realidad, probablemente sea aún más importante ser genuino. Punto final. Los desarrolladores son detectores naturales de tonterías que odian que les vendan cosas.
También es una gran sensación saber que has ayudado a alguien a convertirse en un mejor desarrollador.
Una de las primeras cosas en las que tuve que mejorar es la gestión del tiempo. Al tener experiencia como desarrollador, es mucho más común asignar grandes cantidades de tiempo a ciertas tareas. Mi trabajo actual es mucho más dinámico que eso, y al principio no esperaba ese cambio o ajuste, fue bastante abrumador. El excelente ensayo de Paul Graham sobre los horarios de los creadores y gerentes me ayudó mucho.
Otra habilidad útil que he adquirido es la gestión de proyectos: con State of Kotlin, por ejemplo, la mayor parte de mi trabajo giró en torno a configurar la encuesta y crear el contenido al principio, y luego pasé a una gestión de proyectos más clásica, como la coordinación con otros equipos involucrados, como diseño y desarrollo (ellos han hecho ese trabajo, no yo, gracias de nuevo, ya sabes quién eres) y, finalmente, hacer correr la voz en varias publicaciones y realizar entrevistas en la Web.
La tecnología de Pusher es conocida por su rapidez de integración, así como por el hecho de que "simplemente funciona".
Como tal, es muy fácil evangelizar. Incluso hubo personas que vinieron a verme en una conferencia de desarrollo móvil y me dijeron que sus colegas del equipo web que usan Pusher les dijeron que me contaran lo fantástico que es nuestro producto Canales. Eso fue emocionante.
Considerándolo todo, ¿dónde encaja Kotlin en la realización de la visión a largo plazo de Pusher?
Ya apostamos por Kotlin como lenguaje de desarrollo principal para nuestros SDK de Android. Comenzamos con los SDK para los nuevos productos: Beams , Chatkit y Feeds , y actualmente estamos bastante contentos con eso.
También creemos que Kotlin tiene una de las comunidades más interesantes y comprometidas, y esa es también parte de la razón por la que decidimos crear la encuesta sobre el estado de Kotlin y el informe correspondiente. Ciertamente esperamos que Kotlin siga haciendo felices y productivos a los desarrolladores, y que el Estado de Kotlin ayude a impulsar aún más su adopción.
Pusher , nuestro patrocinador semanal, crea API de comunicación y colaboración que impulsan aplicaciones en todo el mundo, respaldadas por SDK fáciles de integrar para web, dispositivos móviles y las pilas de backend más populares. Empezar.