
Hace un par de años, había muchas publicaciones en el blog de "Mira qué interesante lenguaje Kotlin" que explicaban los conceptos básicos. En 2019, ya no necesita masticar lo básico, pero ahora aparece una publicación en un formato completamente diferente. Marchin Moskala, quien ha enseñado este idioma a la gente durante muchos años, ahora publica el libro "Kotlin eficaz", es decir, no solo "cómo escribir en Kotlin", sino "cómo escribir en Kotlin de la mejor manera".
Y pronto Marchin vendrá a nosotros en Mobius
con un informe . Por lo tanto, le preguntamos sobre el nuevo libro, el informe, la capacitación de la gente de Kotlin y sobre lo que está sucediendo en la industria en torno a este idioma. Y sobre la diferencia entre las palabras "efectivo" y "eficiente".
- Primero, cuéntanos un poco sobre ti. ¿Qué hiciste antes de comenzar a educar a las personas y crear Kt. Academia ?- He estado programando desde la infancia. Comencé con Visual Basic cuando tenía 10 años porque quería hacer juegos. Más tarde, durante el entrenamiento, descubrí Android para mí y me dediqué al desarrollo de Android. En los años siguientes trabajé para compañías como Samsung, Warta y mBank (como empleado de Apreel), Docplanner y Gamekit. Y también descubrió a Kotlin y se enamoró. Comencé a hacer presentaciones sobre él, escribir artículos y libros. Pronto, las compañías comenzaron a recurrir a mí para recibir capacitación, y Kt apareció. Academia
- ¿Tiene el estado de socio de JetBrains y qué significa? ¿Qué requisitos necesitas cumplir? ¿Sueles chatear con JetBrains?- El requisito principal es conocer bien a Kotlin y difundir el conocimiento al respecto. También es necesario que una persona sea confiable, y no será superfluo si se le conoce.
Me mantengo en contacto con algunos miembros del equipo de Kotlin, así como con los evangelistas, pero yo mismo no estoy seguro de cuánto está relacionado con el estado de socio. Principalmente, este estado es una forma para que JetBrains informe que alguien conoce una tecnología específica de JetBrains, y los certificados de esa persona son valiosos.
- Enseñas a la gente de Kotlin, por lo que recibes muchos comentarios y preguntas sobre diferentes personas. ¿Qué dicen y qué preguntan con más frecuencia?- A la gente realmente le gusta. Destacan especialmente su brevedad y el hecho de que lo hacen con mucha facilidad. Y sus funciones de nivel superior y destinatarios implícitos en expresiones lambda (receptores implícitos) están preocupados. En mi opinión, no hay problema con la primera opción, pero qué pasa con la segunda ... Creo que la gente está exagerando, y solo estamos comenzando a darnos cuenta de la magnitud del problema.
- ¿Y hay algún error común o antipatrón en el código de Kotlin de diferentes personas?- Creo que esto es solo un deseo excesivo de ocultar al destinatario. Bueno, ya sabes, todo tipo de DSL dentro de DSL, aplicar dentro de aplicar ... cada vez más a menudo el destinatario lo usa de forma encubierta. Es genial cuando escribes código, pero no cuando lo lees.
- Inicialmente, todos vinieron a Kotlin solo desde Java. ¿Ahora tienes que enseñar a las personas que no conocen Java en absoluto, pero que quieren aprender Kotlin?- Sí, entrené a muchos desarrolladores en JavaScript y Swift, un equipo de rockeros e incluso un equipo de desarrolladores en C, para quienes Kotlin fue un gran salto. Kotlin también piensa mucho en los pitonistas, espero que se unan también.
- ¿Recomendarás aprender Kotlin como primer idioma en 2019? ¿O los principiantes aún tendrán que lidiar con Java, por lo que será difícil?- Si una persona quiere participar en el desarrollo de Android, definitivamente lo recomiendo. Si tuviera más tiempo, escribiría un libro sobre el desarrollo moderno de Android, que no tocó los orígenes en absoluto, pero inmediatamente sugirió nuevos enfoques: Kotlin, AndroidX, Room, WorkManager, ConstraintLayout y MVVM con ViewBinding (y pronto Jetpack Compose ) ... Podemos vivir bien sin Java, Biblioteca de soporte, DatabaseHelper, AlarmManager.
El backend es más complicado, pero también es emocionante con los marcos modernos de Kotlin como Ktor. Entonces, para los estudiantes, esto también puede ser una opción interesante.
- Los diferentes lenguajes se evalúan de manera diferente en el contexto del aprendizaje: Python a menudo se elogia a este respecto, Java a veces se critica. ¿Cómo es enseñar Kotlin en comparación con Java?- Por un lado, en Kotlin es mucho más fácil hacer algo. Cuando enseñas a Kotlin, la capacidad de poner muchas clases y funciones en un archivo ayuda mucho.
Kotlin, por otro lado, tiene más funciones que Java, por lo que aprenderlas lleva tiempo. Aunque, hasta cierto punto, estos modismos aún incorporan patrones repetitivos de Java: por ejemplo, clases de datos, que para un principiante en Java serán difíciles, y en Kotlin trivial, es suficiente agregar el modificador de datos. Yo diría que aprender Kotlin es generalmente más divertido.
- A veces, Kotlin se percibe solo como el "lenguaje para Android", pero tiene ambiciones en otras áreas. ¿Qué ves en tus entrenamientos: toda la demanda de ellos por parte de los desarrolladores móviles, o también se aplican los backenders?- Hace un año, casi todos eran para desarrolladores de Android. Y ahora, creo, alrededor de 50 a 50. También hay un interés creciente en las rutinas de Kotlin y los entrenamientos efectivos de Kotlin.
- A la pregunta de Effective Kotlin: su nuevo libro se llama igual, y su informe sobre Mobius es Efficient Kotlin. ¿Significan nombres similares que el nuevo informe es un breve recuento de las tesis de todo el libro?- Las palabras "efectivo" y "eficiente" en la programación tienen significados muy diferentes, como "seguro" y "seguro". "Efectivo" es más general, sobre las mejores prácticas más diferentes. Y "Efficient Kotlin" se trata solo de optimizaciones de rendimiento y memoria, la tercera parte está dedicada a esto en el libro. Para Mobius, esto es mejor, porque la conferencia es conocida por los informes avanzados para desarrolladores experimentados. Y el tiempo del informe es limitado; no se puede cubrir todo el libro allí.
- Y los principios de "Effective Kotlin" y "Efficient Kotlin" son adecuados para todos los desarrolladores, sin importar lo que escriban en Kotlin, ¿o hay alguna especificidad allí?- Todos: no solo Android y el backend, sino incluso aquellos que usan Kotlin / JS y Kotlin / Native.
- El nombre "Effective Kotlin" recuerda de inmediato el "Effective Java" de Joshua Bloch. ¿Cómo se parece tu libro a ella?- Hay muchos libros en el formato "X efectivo", y todos se basan en el mismo principio: mostrar con ejemplos concretos cómo escribir mejor el código. Me inspiré en Effective Java y otros en Effective C #, Effective Python, Effective C, Effective JavaScript. Pero no existe un enlace estricto para ninguno de estos libros: todos estos son idiomas diferentes y se requieren diferentes consejos con ellos. Aunque, si los lee todos y luego lee Effective Kotlin, puede vincular cualquiera de mis consejos con los consejos de otros libros "efectivos". Y también con consejos de otros libros influyentes como Code Complete, Clean Code, Clean Archutecture, Estructura e implementación de programas de computadora, etc. Mi objetivo era tomar los mejores consejos que se ajustaran a Kotlin y presentarlos de la manera más comprensible.
- Ya se han publicado muchos libros sobre Kotlin, pero generalmente tenían el formato "cómo hacer algo en Kotlin" y no "cómo hacerlo de la manera más eficiente". ¿Crees que al principio la comunidad necesitaba lo básico de Kotlin, pero ahora ha dominado y quiere mejorar la calidad?- Sí, creo que la comunidad ha crecido tanto que ahora necesita mejores prácticas. Según el sitio web oficial, ya hay más de dos millones de desarrolladores de Kotlin en el mundo. Esto es mucho Ya hay muchos artículos y respuestas en formato "Cómo ..." para Stack Overflow, pero hay cada vez más personas que tuvieron que usar Kotlin debido a CTO, o para quienes se convirtió en el primer idioma. Ahora, establecer estándares es fundamental porque Kotlin permite mucho, y si no impedimos que las personas hagan locuras, pueden terminar amando y comenzar a considerarlo confuso e ilegible.
- Las mejores prácticas son siempre un tema discutible, las opiniones de las personas sobre "lo mejor" difieren. ¿Hay discusiones en sus entrenamientos o informes?- Sí, y estas discusiones me inspiraron a escribir Effective Kotlin. Como dije, las personas a menudo se preocupan por algunas características. Usualmente escucho y los dejo hablar. Como resultado, siempre es posible llegar a conclusiones sobre las ventajas y desventajas de la función, y luego los equipos deciden cómo tratarla.
"Estás publicando el segundo libro". ¿Cómo es el proceso de trabajar en ellos? Por ejemplo, ¿cómo decides quién lo publicará?- El primero que publiqué en Pact. No estaba muy contento con la colaboración, así que decidí publicar Effective Kotlin por mi cuenta usando LeanPub. Hasta ahora, la experiencia es excelente. Tengo excelentes revisores voluntarios, un buen diseñador y una bonita tipografía. Los problemas surgieron solo con la cuenta en Amazon, pero espero tener tiempo para tratarla antes de la publicación de la versión final del libro.
- ¿Aconsejas a los desarrolladores que escriban libros? ¿Qué tan útil es esto para el desarrollador?"Para llegar al libro, debes saber que casi con seguridad te llevará más tiempo del que esperas". Estima 1-2 horas por página. Y si eres desarrollador, es poco probable que el libro te traiga más dinero que si hubieras pasado este tiempo programando. Por otro lado, aprenderás mucho. Para escribir con confianza, debe estudiar cuidadosamente el tema y comprender verdaderamente cada argumento. Y esta es una experiencia única.
- Y la última pregunta: si pudieras cambiar una cosa en Kotlin, ¿cuál sería?- Creo que me desharía de Unit. Es un poco molesto. Especialmente cuando interactúas con otros idiomas.
Finalmente, recuerde los enlaces a lo que se menciona en el texto. El libro "Effective Kotlin" se publica en Leanpub , y la descripción del nuevo informe de Marcin, con el que llegará a Mobius en diciembre, se publica en el sitio web de la conferencia (y también puede ver su programa completo allí ).