¿Cómo convertirse en un programador de la desesperanza y alcanzar las alturas del éxito? Hoy en nuestro estudio virtual Pasha
asm0dey Finkelstein responde preguntas. Pasha es uno de los pocos que sabe cómo crear backends en Kotlin. Además, vio el código abierto, participa activamente en la vida de la comunidad y, por un minuto, ha asistido a casi todas nuestras conferencias de Java en Moscú.
Cómo encontrar tiempo para los commits
- Hay varios temas que pueden discutirse. En primer lugar, estás dando una charla en Joker. En segundo lugar, eres un miembro activo de la comunidad, constantemente haciendo algo. En tercer lugar, asiste constantemente a nuestras conferencias y, por alguna razón, cree que esto es bueno.
- En cuanto al hecho de que soy miembro de la comunidad. Yo, como la mayoría de las personas, sufro del síndrome del impostor, no tengo la sensación de que estoy haciendo muchas cosas útiles, especialmente para la comunidad Java, especialmente recientemente. Lo último que hice fue útil para la comunidad: los chicos y yo escribimos una biblioteca genial para Spring llamada spring-flow-state-machine , que te permite controlar el estado de los objetos en la aplicación. Ella es pequeña y cómoda.
- Esta es la biblioteca que ahora está promocionando en la primavera principal?
- No, probablemente Spring Statemachine está allí, y es tremendamente miserable: está muy mal escrito, funciona de manera muy extraña y no hace absolutamente nada. Spring Statemachine administra el estado de la aplicación cuando su aplicación es una especie de máquina de estado finito y funciona de manera diferente en diferentes estados. Hicimos otra cosa: cuando tienes algún tipo de entidad, estableces un ciclo de vida para él y puedes conducirlo a través de este ciclo de vida. Y nuestra tarea es pensar en cómo funcionan sus transacciones y todo eso. Simplemente tenemos la anotación @Transactional en un lugar correcto, como saben, y esto es suficiente para decir que controla el estado. Lo principal es que hay un conveniente DSL que le permite decir de dónde puede y dónde debe hacer en el camino.
"Y entiendo correctamente que dado que esta cosa controla las cosas abstractas, ¿puedes hacer lo mismo que hace Spring Statemachine?"
- Sí, es cierto, hay un matiz. La entidad principal que controla esta cosa es, al parecer, entidad con identificación o algo así. Esta es realmente una biblioteca muy pequeña de dos interfaces, dos de excepción y cuatro clases.
"Y lo que hizo Spring, ¿por qué crees que esto es algo extraño y por qué no está claro por qué?"
"Es comprensible por qué es necesario, simplemente se hace muy mal. Se afirma como si supiera cómo hacer todo. En primer lugar, los ejemplos que tienen en la documentación no se recopilan, y en segundo lugar, si intenta profundizar en el código fuente (y siempre profundiza en el código fuente de Spring cuando quiere hacer algo, porque no todo está escrito en la documentación), descubres que está escrito de la manera que es mejor no escribir. Por cierto, parece que Spring Batch generalmente tiene las mismas quejas.
"¿Usaste Spring Batch también?"
- Me parece que usé casi todo lo que está en el ecosistema de Spring.
"¿Y cómo continúas usándolo?"
- Sabes, en el próximo lugar de trabajo no tendré Spring, la tendré. No fue mi elección. Probablemente hubiera usado Spring, pero en realidad, en nuestro podcast, una vez dije que ahora mi favorito es el microframework Jooby, que lo sabe todo. Fue escrito en una persona por un campeón de Java. También hay inyección de dependencia, que se basa en Guice. Es genial, tiene un ecosistema, a diferencia, por cierto, del resto de microframes.
- Veo que hay dos opciones: para Java y para Kotlin.
"Sospecho que puedes para cualquier cosa". Probablemente también sea posible Scala, pero debes abandonar Guice, que probablemente no funcione con Scala. Yo, como siempre, amo la inyección de constructores con anotaciones. Y esto se hace en Guice.
- Y si dicha aplicación puede ensamblarse estáticamente usando GraalVM, será solo espacio.
"No creo que ganes mucho allí". Es como la primavera, por supuesto, ganarás algo en rendimiento.
- Aumentar la velocidad de inicio, por ejemplo.
- Por supuesto, en producción arrastraremos algo marginal escrito por un campeón de Java, ¡y lucharemos por la velocidad de una startup allí!
- Ya veo.
- Probablemente los chicos que realmente se preocupan por la velocidad de inicio toman un poco de Azul Zing y los sintonizan con algo escrito en SE desnudo.
"¿Entendí correctamente que la biblioteca que escribiste era de código abierto y todo eso?"
- Sí, es de código abierto de mi antiguo empleador y de alguna manera le pertenece, como se usó en el borrador de trabajo.
- Ya veo. Es decir, lo escribiste durante las horas de trabajo.
- Sí, escribieron durante las horas de trabajo.
- ¿Y qué piensas, hay alguna posibilidad de escribir software después de horas?
- Escribo software después de horas, aunque ahora no es un software real. Y lo último que escribí ... ahora en Rusia el problema con las cerraduras es real, y para mí el problema urgente es evitar estas cerraduras. Hay un maravilloso servidor proxy llamado 3proxy , así que escribí el libro de jugadas Ansible para Fedora, Ubuntu, Debian y Centos, lo probé todo y lo compartí en GitHub. Y en Ansible Galaxy, también, compartido.
"¿Y dónde encuentras el tiempo para eso?"
- Yo, como todos, tengo problemas con el tiempo, porque me canso en el trabajo, tengo una familia, necesito pasar al menos un tiempo con mi familia. Pero los fines de semana la familia duerme hasta tarde, y soy un alondra y me levanto temprano, mi cabeza funciona bien por la mañana y puedo hacer muchas cosas. A veces escribo algo incluso antes del trabajo.
- ¿Qué le aconsejarías a aquellos que desean comenzar a escribir algo en código abierto, pero no funciona?
- Pregúntate por qué no funciona. Y dependiendo de la respuesta a la pregunta, intente escribir algo.
- Hay una respuesta estándar: no hay tiempo, no está claro dónde la necesito.
- En cuanto a "no hay tiempo", sucede que realmente no hay tiempo, pero sucede que realmente no hay tiempo. "Sin tiempo" es una manera de decir que no tengo motivación. Esto es absolutamente claro, y no el hecho de que esto deba ser combatido. No todas las personas deben comprometerse con el código abierto. Esta es una forma genial de hacer algo por usted y por la comunidad, pero nadie le debe nada a nadie.
Si no está claro quién te necesita, la pregunta, nuevamente, es por qué. Hay dos razones: todavía tiene muy poco tiempo haciendo algo así en la programación, y le parece que esto es algo extremadamente aburrido, y entonces probablemente sea cierto, en esta etapa no puede ayudar a nadie. Aunque conozco personas, por ejemplo, Slava Semushin, lo primero que hizo, comenzó a pasar de contrabando en Alt Linux antes de comenzar a programar en algún lugar de la producción. Fue su camino a la programación (esto es una broma, por supuesto). Pero realmente no entendió nada, cuando comenzó, lo entendió en el camino. Y esto ya no es una broma.
Sucede que las personas se dedican a la empresa durante mucho tiempo y no entienden lo que pueden hacer. He estado en esta situación durante mucho tiempo. Hace unos 4 años seguro. He estado en la empresa durante 6 años y no entendí lo que puedo hacer. Pero con el tiempo, vi que este componente del sistema que quiero reescribir, en principio, puede separarse en un módulo separado y detectarse en exceso. Esto debe ser acordado con el empleador. Lo principal es dar el primer paso.
A veces, el empleador no quiere coordinar, este es un tema bastante animado. Por ejemplo, Tinkoff no está ansioso por abrir algunos de sus componentes de back-end, aunque en teoría podría hacerlo.
Empiezas a ver oportunidades con el tiempo. Lo principal es aislar esto en un componente separado. Si el empleador no lo permite, lo usará dentro del empleador, habrá un código abierto interno, como lo hacen en algunos Zalando. Luego, en el próximo proyecto, verá que esto también se puede distinguir.
- Wow O escríbelo de nuevo, por ejemplo.
- Sobre el "escribir de nuevo". Uno de los problemas que resolvimos en último lugar fue el registro. Está claro que todos los krupnyaki se confunden con el registro centralizado, sin esta vida en absoluto. La solución estándar para esto es ELK stack, ElasticSearch, Logstash, Kibana. Solo hay un pequeño problema: este es Logstash. ElasticSearch, Kibana funcionan bien, pero Logstash no. No funciona de forma persistente o muy lentamente. Si no funciona de forma persistente, entonces el tamaño de la cola es de 5000 mensajes. Abarrotado más: los mensajes comienzan a caer. Para decirlo suavemente, una característica desagradable. Por lo tanto, teníamos a Kafka en lugar de él. En Sberbank, escribimos nuestro propio apéndice de Kafka Logback , que también es de código abierto y funciona bastante bien por sí mismo.
- ¡Así que así era!
- Ya hay tres de ellos, no estoy seguro de lo que viste el nuestro.
- De acuerdo. Volviendo al tema del código abierto y el registro. ¿Y por qué las personas usan registradores centralizados en la empresa constantemente, intentan escribirlos ellos mismos, si hay Linux y las formas en que los abuelos inventaron por ellos, subir todo a un archivo, por ejemplo?
- No sé en Linux el registro centralizado normal. Existe rsyslog, que es un buen formato, pero, para decirlo suavemente, no está adaptado, por ejemplo, a Java, porque si observa algún tipo de pistas de pila, de repente resulta que las pistas de pila son muchas líneas, no solo una. Entonces, en rsyslog, estas serán entradas de registro separadas. Si todo esto se mezcla en una gran pila, me parece que perjudicará a todos.
- Si, probablemente.
- Y, sinceramente, no sé qué garantías ofrece rsyslog. Usualmente me atasco cuando tengo algún tipo de solución, trato de encontrar su lugar en el teorema de CAP. Y simplemente no encontré esta información en rsyslog, tal vez estaba buscando mal. Pero rápidamente no pude determinarlo. ¿Generalmente nos garantiza la entrega y por cuánto tiempo? ¿Qué marcas de tiempo habrá cuando silbe en alguna parte? Si él garantiza, esto ya es bueno, si normalmente inicias sesión con todo tipo de tramos y trazas, entonces aún lo resolverás, sin importar lo que haga allí. Si no garantiza la entrega, esto es absolutamente un desastre. En este sentido, confío más en kafka, pero tiene más ancho de banda. Esto es a pesar del hecho de que no conozco bien a Kafka, para ser honesto.
- Allí debe dividir de alguna manera, probablemente, los registros en crítico / no crítico, porque si el servidor de registro falla, nunca sabrá lo que sucedió.
Mientras hablamos de Java, todo es muy simple. Corremos en algunos Docker y tenemos registros en stdout ingresados desde el nivel ERROR. Y todo comienza a fluir hacia Kafka, comenzando desde la depuración o desde la pista. Soy el tipo de persona cuyos registros de débito en realidad nunca se apagan. Nunca he vivido para ver este momento brillante, cuando me di cuenta de que es todo, ya no uso el registro para analizar problemas.
"¿No teme que el rendimiento, por ejemplo, de la red de Kafka simplemente tome y termine si todos estos terabytes de registros vuelan allí?"
- Siempre fuimos demasiado pequeños, teníamos 100 GB de registros por día y 100 GB. ¿Cuál es este volumen? El principal problema es cómo almacenarlo, no cómo transferirlo. ¿Realmente tenías terabytes de troncos?
- No sé cuánto fue en términos de almacenamiento en disco, pero sé que a veces el sistema se inició tan lentamente que no esperamos a que comenzara. Alguien organizó accidentalmente ya sea depuración o rastreo, y eso es todo.
Espera Me parece a mí, ¿o te equivocaste cuando sincronizaste los registros a través de la red?
- No, simplemente se vertieron en Kafka.
- Pero sincrónicamente? Es poco probable que tuviera la opción de hacerlo de forma asincrónica, tendría que esperar el ACK de Kafka desde al menos un nodo, incluso si es completamente terco y no desea una garantía en los registros. Al menos un ACK que aún esperabas.
- Probablemente si.
- Digo que porque escribimos el apéndice de logback, entiendo por qué nos guiamos. Pero envolvimos este apéndice en AsyncAppender, y luego calculamos experimentalmente cuántos mensajes tenemos en el pico, y el búfer en este AsyncAppender se retorció un poco más, como si hubiera un pico más 10%. Resultó que nuestra aplicación no está bloqueada.
"Qué historias tan terribles tienes". ¿Y por qué esto no es estándar en Java, por qué debería escribir con las manos?
- Debido a que tiene que escribir con las manos en todos los idiomas, solo en Java al menos está claro dónde escribir. Y si tomas alguna ventaja, no sé por dónde empezar.
- ¿Entonces cree que no hay bibliotecas que se puedan agregar a Maven, y todo se instalará solo?
- Comencemos con el hecho de que no tienen un Maven normal, porque tienen Ninja, Make, CMake, qmake y todo está un poco pesado con Maven. Por supuesto, tienen bibliotecas para iniciar sesión, están en Java y está claro cómo adjuntarles anexos. Además, en Java son hermosos, flexibles, generalmente trabajan con fachadas y todo eso. Y si miras algo de Rust, hay algo completamente triste, triste. No sé dónde poner y escribir mis registradores. Apenas dominaba cómo configurarlos.
"¿Entonces realmente te gusta Java?"
- Me gusta el ecosistema. Me gusta Kotlin como lenguaje y Java como ecosistema. Por cierto, ni un solo idioma es mejor que Kotlin, no sé nada ahora. Una vez que me quedé con Groovy, incluso tengo una camiseta de Baruch con la inscripción Groovy.
¿Por qué Kotlin?
- Elegir entre Java, Scala, Groovy y Kotlin: ¿por qué exactamente Kotlin?
- La combinación perfecta de buena sintaxis y complejidad para dispararte en el pie. No me gusta el rock, porque es muy fácil disparar en la pierna, y a veces no para ti, sino para tu vecino. Agrega variables implícitas, todo funciona mágicamente para usted y el infierno está en su depuración. Puedes, por supuesto, aceptar no usarlos, luego pierdes algunos de los encantos de la Roca. Por supuesto, si eres completamente inteligente, usas macros en la roca y nadie, excepto tú, entiende cómo funciona esto.
- En la roca completó las macros, ¿resulta?
- Quiero decir que funcionan, pero no quiero decir que se puedan usar. Y si eres aún más inteligente, entonces usas una biblioteca como Cats. Pero esto probablemente esté al mismo nivel cuando te volviste un poco más inteligente y ya estás aburrido de usar scalaz, y usas Cats. Pero nadie puede leer este código excepto usted.
- Y otros gatos adherentes.
"Lo dices como si fuera cierto, pero no es cierto, porque otros adherentes de los gatos lo usan de manera diferente".
- Esto es parte del poder de este sistema.
- Muy potente, que recuerda a BFG .
- Que disparas a tus pies.
"A veces para ti, a veces para otros, qué suerte". Por cierto, noté que las personas que escriben en la Roca a veces se olvidan de pensar. Tienen conceptos tan hermosos que pueden hacer 2 inserciones seguidas en diferentes lugares y no pensar en el hecho de que todo esto debe estar envuelto de alguna manera en una transacción. Pero tienen hermosas llamadas a la base de datos con un poco de habilidad (o lo que sea que esté de moda ahora para trabajar con SQL en Scala).
- Pero puedes hacerlo en dos lugares en Java ...
- Pero en Java, tengo Spring, y puse la anotación @Transactional. En Java no se acostumbra hacer cosas complejas. En Kotlin, parece, por cierto, también. Pero en la roca aceptó. En cuanto a Groove, este es un lenguaje genial, por supuesto, hasta que entras en el código de bytes por un lado o te encuentras con el hecho de que no entiendes qué tipo de objeto tienes. A veces también les gusta gritar que cualquier código Java válido es cualquier código de ranura válido, pero esto no es cierto porque las clases internas anónimas no funcionan allí. No puedes tomar e instanciar. Tienes que crear una lambda y luego lanzarla. Entonces, elijo Kotlin, tiene una sintaxis ligeramente diferente que en Java, pero hay un convertidor allí si realmente lo desea. Por otro lado, no hay nueva complejidad. No hay nada en lo que no puedas hacer Ctrl-clic en algo y no ir. Puede hacer clic y hacer clic en el doble igual y cambiar al método igual.
- Un momento tan resbaladizo: ¿confías en JetBrains? Ahora, muchos no confían realmente en Java, porque es Oracle, pero ¿qué hacer con JetBrains? ¿Están los chicos normales sentados allí, desarrollando un lenguaje?
- No quiero estropear una parte del informe, pero en general me gusta cómo dicen y me gusta lo que veo. No tengo la opción de "no confiar". De acuerdo, bueno, no confío en JetBrains, entonces todo se vuelve realmente triste, porque ¿qué otros idiomas hemos desarrollado algunas personas relativamente sensatas? Probablemente Rust (desarrollado por Mozilla), Golang es desarrollado por Google. Además, todos son desarrollados por comunidades, incluso Java. Simplemente no está claro en quién y por qué puede confiar. Tengo problemas con la paranoia, no sé cómo hacerlo.
En el primer día de la conferencia Joker (19-20 de octubre de 2018), Pasha hablará sobre los backends en Kotlin en el informe "Kotlin: 2 años en producción y ni una sola brecha" . Joker es una de nuestras conferencias principales, y constantemente escribimos sobre eso en Habré. Si es posible, asegúrese de venir.
- Recientemente, Baruch y yo descubrimos cierto estudio sobre el tema de Kotlin, que muestra que el programa en Kotlin con 40 de sus loros (loros de estudio) es mejor que el programa en Java.
- No mejor, pero en resumen, si mi memoria me sirve bien.
- Ambas son más cortas y mejores. Lo midieron todo en olores de código. No se como decirlo. Probablemente, en cierto sentido, esto puede ser reemplazado por la palabra "mejor".
- Genial Solo sepa, en cualquier comparación de los dos idiomas, hay un pequeño problema. ¿Se dieron cuenta de la misma tarea y existían las mismas herramientas de medición? ¿Es cierto que los códigos en negrita miden la misma calidad en Java y Kotlin? ¿O escribieron los últimos 20 años en Java y aprendieron a encontrar el código de las parejas 800, y en Kotlin escribieron 2 años y aprendieron a encontrar 20?
- Wow, esta es una muy buena pregunta. Pero no son los números que dedujeron que son interesantes allí, sino las preguntas que han dicho. Solo hay 5 de ellos, quiero preguntarte también. ¿Cuál es el nivel de adaptación de Kotlin en cualquier parte de la zona? Depende de cuántas personas trabajas, cuántos proyectos, cuántos ejemplos.
- Está claro que todo Android casi se ha mudado a Kotlin (desarrollo moderno), y el backend se mueve muy lentamente. Uno de los objetivos de mi informe es acelerar este proceso. Cuando vine a HH para una entrevista y dije que durante los últimos dos años había estado escribiendo un backend en Kotlin, me dijeron, ¿es posible? ¡Esto es solo para teléfonos móviles! Los empleadores realmente no saben que esto es posible. Probablemente, los empleados tampoco lo saben. Es difícil hablar sobre la cantidad de adaptación, creo que en Android es del 80-90%, y en el backend, probablemente un 10 por ciento como máximo. Sí, qué 10! Si cuenta todos los sistemas heredados, no habrá dos por ciento. Pero si solo cuenta nuevos proyectos, entonces tal vez el 10 por ciento.
- Es decir, ¿al menos ya existe Kotlin en el backend?
- Sí, escribí en el Real Estate Center de Sberbank. Y antes de eso, él también escribió.
- bien. Simplemente, muchos dicen que este es el marketing de JetBrains, y las personas vivas reaccionarán de manera diferente a esto.
- Parte de mi informe está dedicado al hecho de que, como resultado, toda la parte de Java de la compañía comenzó a cambiar a Kotlin después de que nuestro proyecto voló con éxito.
- Entonces, surge la siguiente pregunta: ¿qué porcentaje del código en Kotlin es la aplicación? En primer lugar, puede mezclar Java y Kotlin como base. En segundo lugar, Kotlin puede usarse como DSL y comenzar a reescribir todo en una fila.
- Desde mi punto de vista, hay muy pocas situaciones en las que deba interferir deliberadamente con Java y Kotlin. Tiene sentido escribir todo el proyecto en Kotlin. Tal vez si cree que va a traducir toda la aplicación a Kotlin, primero puede comenzar a escribir nuevas clases en Kotlin y luego, en algún momento, comenzar a convertir las viejas clases de Java a Kotlin y recortarlas con bolígrafos. Pero debo decir que "Java2Kotlin" es una herramienta regular, no perfecta.
- ¿Por "Java2Kotlin" te refieres a Ctrl C - Ctrl V en la Idea entre archivos?
- Sí, pero todavía hay algún tipo de atajo, probablemente.
- Por cierto, una vez intenté que Scala usara exactamente Ctrl C - Ctrl V en la Idea, pero como resultado resultó una basura rara.
"Tampoco me gusta lo que hace Java2Kotlin". Yo escribo mejor A veces puedes comenzar con esto, por supuesto. Tiene dos formas: o convierte todo el proyecto, especialmente si no es muy grande, y luego corrige todos los lugares incorrectos. O lo haces según un clásico: reescribir con las manos durante mucho tiempo, mucho trabajo mecánico. Pero probablemente quieras comenzar por algún lado.
- ¿Hay algún tipo de complicación allí, relacionada no con la sintaxis tonta, sino con la parte semántica?
- Parece que hablaré de esto en un informe.
- bien. Cuando se agrega Kotlin al proyecto, ¿aumenta o disminuye su cantidad? ¿Cuánto debería ser Kotlin para que él comience a devorarlo todo?
"No tengo esa experiencia". Inmediatamente escribimos la solicitud en Kotlin, excepto por un caso. ¿Te guía el ecosistema de complementos para la Idea?
- Un poquito.
— , , , - . - , , , , , .
— Community Edition , , .
— Community Edition , Ultimate.
— Ultimate , Spring-.
— , , Spring-, .
— -, , endpoints, , .
— . endpoint', ?
— , . , , .
— , , Shift-Shift-Shift, - , Shift-Shift-Shift , , endpoint' , . , - .
— , Search Anywhere, .
- Entonces. , , . . , , , . , , , , , , , , .
— , ?
— , . , , , .
— . , , , . . , , , , .
— , , , , , , , , , . . , -. . , , . Java-, . generic , , invariants, in. . . , , . , . , Haskell, ? : map, fmap, .
— .
— : , , . , — sequence. — , .
, , , - . GraalVM , , . , @graalvm_ru.
— ?
— . 2, 2 2 . .
— , . , .
— - . : for- , for-, ( baseline), . 2 6 . , — : sequence' sequence'. , , - . . . , . , , , baseline.
— , ?
— , - .
— , , GraalVM .
— . JDK10 JVMCI , GraalVM EE, , C2.
— - , Community Edition -Community Edition, , .
- No , , . . , , , .
— ! :-)
— , .
« »
— . : . , . : ?
- No . « ». , , , , : , , , . 2008 , , , . , . , , . .
— ?
— 4 C++ Builder, Java, , -, , . Java , C++ Builder, , , C++ Builder, . . , . , , , .
— — VCL, .
— , . , - , - . - , SQL, . , , .
— C++.
— , Java, . C++ - , , , , , . MVC. , NetBeans, , . , , . GroupLayout BorderLayout. , , , , . , , -.
— , IDE-?
— . , , - Electron.
— . , Java.
— , . - - : JavaScript. .
— GraalVM , Electron JavaScript -.
— . , , , . Nashorn . Truffle- JavaScript? , .
— , , Nashorn, . Electron, .
— , ?
— , Electron.
— ?
— Node.js, Graal Node.js, . .
— ?
— . - .
— . — Node.js, Electron Builder, SQLite ORM . , , — SQLite — 10 . -, , . .
— , , , .
— . . , Java FX, , , , 10- . , JRE, . , — , . , -. , - , .
— , .
— - , - , . -, .
— - desktop environment , , -. , - to do list, - . , , , , . , , , . — F1, .
— , , . - – CLI-. , Task Warrior, . , .
— « ». , , , - . ?
— , ?
— .
— , .
— -. , ?
— , : «, , ?» : «». , - . - , - , . : « ?» , . : «, . , ?» «». « , ».
— : , , . ? , - ?
— , , , : . (5 , ), , - , , , , . , , , - , , , , .
— , , — , , ? , , ?
— , - . , . , . . , . . .
— : - , , - — SQL , . .
"¿Son buenos?" La única pregunta importante es si están bien. No hay una forma abstracta abstracta para que todos vivan. Para mí es correcto avanzar y buscar tareas interesantes. Para alguien es correcto quedarse quieto y hacer el trabajo que siempre funciona bien, y recibir un pago por ello. Se necesitan todas las personas.
- Por cierto! Sabes muchas cosas interesantes y puedes contarlo. ¿Por qué no estás en nuestras conferencias todos los años con algún informe nuevo?
"No creo que sepa lo suficiente como para contar mucho".
"¡Pero todavía viniste!"
- Sucedió por casualidad que tengo una experiencia más o menos única para la industria. Muy pocos realmente escriben un backend en Kotlin. Parece que ninguno de ellos está ansioso por hablar al respecto. Y probablemente no tengan esta veta de evangelismo. Siempre tengo el deseo de enseñar a otros cómo vivir (o al menos intentarlo). Por lo tanto, por supuesto, estoy interesado. Además, yo mismo estoy algo interesado en este informe, porque el próximo empleador, a quien vendré y pediré que escriba en Kotlin, dirá: "¿Por qué?", Diré eso ahora, hice un informe en Joker a ver
- ¿Cómo formular el momento en que entiendes que tienes suficiente experiencia para hacer un informe?
- De ninguna manera El informe se realiza no porque tenga experiencia, sino porque tiene algo de experiencia y desea hablar de ello. Tengo el deseo de saberlo desde la primera vez que llegué a JPoint. Pero el tema deliberado "para contar" no lo había hecho hace mucho tiempo. Tal tema para que puedas hablar unos 45 minutos.
¿Por qué ir a la conferencia?
- ¿Por qué conferencias? ¿Por qué son necesarios? Por el hecho de que generalmente vas a ellos, resulta que los necesitas.
- No, por el hecho de que voy a ellos, resulta que solo voy a ellos.
"¿Pero los necesitas por alguna razón?"
- No sé cuán honestamente estoy listo para responder esta pregunta. No estoy seguro de ir a la conferencia para obtener información. En cierto modo, voy a la conferencia para que me conozcan.
- Esta es una idea normal.
- Cuando digo "tú", me refiero a mucha gente que se acuerda de mí. En general, es útil para mí que el mercado me conozca simplemente en términos de mi valor, especialmente si hago una buena impresión. Y trato de hacer esto, porque en realidad parece que no sé tan poco y constantemente me falta trabajo interesante. Estoy constantemente buscando un trabajo más interesante. Muy raramente aparece algo que parece más interesante que lo que tengo ahora.
Por otro lado, voy a una conferencia para subir a los intestinos. No hay tal oportunidad en ningún lado. Fui a escuchar cómo funciona Azul Zing, porque es interesante. Sí, apenas puedo usar este conocimiento, pero es interesante. Esto difícilmente se puede leer en un libro. Tengo otro problema: leo un poco los libros. Prefiero leer ficción. Probablemente soy uno de los pocos al menos algunos técnicos serios que viven así. Leo referencias, libros blancos, pero casi nunca leo libros. Y en referencias y whitepeppers esa información rara vez es posible.
- Sí, y en los libros no ocurre tan a menudo esta información.
- Los libros son directamente difíciles para mí, para ser honesto. El último libro significativo que leí sobre Java es "Concurrencia de Java en la práctica", y en el ecosistema de Java es "Persistencia de Java de alto rendimiento", Vlad Mihalcea (este es un libro muy bueno). Pero, por lo general, es una lectura muy difícil y no me la dan.
- ¿Vale la pena leer el muelle de Java?
- Depende de tu forma de aprender. Las personas se dividen en dos tipos según la forma en que estudian: algunas prefieren escribir primero, luego entienden cómo funciona, y algunas primero leen cómo escribir y luego escriben. Pertenezco al primer tipo. Siempre empiezo con la experimentación y no me sumerjo profundamente. Me sumerjo profundamente mucho más tarde. Una chica maravillosa trabajó conmigo, quien, antes de escribir la primera línea en Kotlin, fue a leer un muelle en Kotlin.
- Probablemente, lo habría hecho, por cierto.
- Esta es una manera maravillosa, no tengo nada en contra.
"También estoy muy interesado en cómo las personas como usted pueden escribir inmediatamente de manera normal".
- No hay tarea para escribir normalmente, hay una tarea para escribir. Esto es muy importante En general, la tarea de escribir normalmente no siempre surge, especialmente cuando estás estudiando. Cuando aprendo algo, no puedo comprender una gran cantidad de información y luego ir a escribir. Siempre empiezo con la experimentación. Tal vez sabes que a veces escribo un podcast. En el primer número, que grabamos y publicamos, hablé sobre el hecho de que logré estudiar todo solo porque nunca lo pospuse para más tarde. No tengo la tarea de leer algo y, por lo tanto, ahorro mucho tiempo, porque inmediatamente me siento y empiezo a usar algún tipo de tecnología, ya sea en un proyecto de trabajo o en algún tipo de proyecto hogareño. Entonces, si es necesario, profundizaré. Pero para empezar, puedo decirte que entiendo cómo usarlo. En el siguiente paso, puedo decirte que sé cómo funciona esto. Comencé a usar Spring antes de darme cuenta de cómo funciona. Probablemente unos 6 años.
- Parece que deberíamos enrollar :-) ¡Muchas gracias! Nos vemos en Joker, definitivamente voy a escuchar tu informe.