JavaRush /Blog Java /Random-ES /El truco, o cómo conseguir trabajo como desarrollador jav...
Юрий
Nivel 30
Москва

El truco, o cómo conseguir trabajo como desarrollador java medio sin experiencia en Java

Publicado en el grupo Random-ES
Saludos a todos los estudiantes y profesionales de Java. Quizás mi historia sea para algunos un ejemplo de cómo hacerlo y para otros de cómo no hacerlo. Es 19 de octubre de 2021 y hoy completé un período de prueba (3 meses) como desarrollador intermedio de Java en una gran empresa. No tenía experiencia previa en el desarrollo de Java. Hasta el 4 de junio de 2020 no sabía nada sobre Java. Cuando me contrataron como javaísta, prometí que si pasaba el período de prueba escribiría una historia de éxito. Este artículo se dividirá en dos partes lógicas: Antecedentes profesionales ( capítulos 1 a 5, no relacionados con Java, pero en el que podrás adquirir conocimientos sobre tu carrera). Convertirse en javaista (capítulos 6 a 9: aprender Java, entrevistas, conseguir un trabajo, primera experiencia real). <h3>Capítulo 1. Economista</h3>Para entender con qué nivel de conocimiento llegué a JavaRush, necesito dar una nota biográfica sobre mí. 2013, noviembre, 8 h. Estoy sentado en una cafetería en Taganka y repitiendo instrucciones SQL. En una hora tengo una entrevista para el puesto de economista líder en el departamento financiero del banco. Esta es la única entrevista a la que me invitaron y necesito dar el 100%. Por su bien, volé desde San Petersburgo y me quedé en la cocina con familiares para no gastar mis ya pequeños ahorros. Pasan 30 minutos, se comen las tortitas con jamón y queso y hay que avanzar hacia nuestro preciado sueño. Pero todo tiembla. ¿Qué pasa si no paso la entrevista? Vale, no lo fue. Voy al banco, obtengo un pase y espero a mis entrevistados en la sala de reuniones. El tiempo pasa durante mucho tiempo. Entran un hombre de unos 35 años y una mujer de la misma edad. Se presentan y te piden que te cuentes sobre ellos: “Yuri, es un placer”. Tengo 21 años, estudio a tiempo parcial en una universidad de San Petersburgo, trabajé durante 3 meses como cajero en un banco. Me di cuenta de que no era para eso que estudiaba, comencé a mirar el mercado laboral y vi que en Moscú los economistas tienen SQL como requisito. Así que lo estudié, fui a cursos (Administración de MS SQL, eso es lo que tenía, eso es a lo que fui) y me llamaste. Hablan de la empresa, de lo que hacen (la mayoría de las palabras son incomprensibles) y luego te piden que hagas un examen. La prueba tiene 3 preguntas sobre SQL: 1. Dada una tabla, extraiga todos los registros con id = 10. 2. Dadas dos tablas, conéctelas y muestre una columna de cada una. 3. Agrupe los departamentos y proporcione el número de empleados de cada departamento. Es con gran vergüenza que escribo estas solicitudes. A esto le sigue una discusión sobre mis expectativas del trabajo. Y me dicen la frase mágica: “Gracias por la entrevista, te llamaremos”. Pasa una semana y me ofrecen ir a trabajar con ellos. ¡Euforia, conmoción, alegría! Y por qué dinero: ¡70 mil rublos en la mano! ¡Sí, seré rico! Vengo a Moscú, me instalo, alquilo una habitación en el centro. Los primeros días son eufóricos. Después de 10 días, comienza la comprensión: ¿a dónde he llegado? ¡No entiendo nada de nada! Tenía que preparar informes de gestión para todo el banco todos los meses. Naturalmente, a mí me pasó lo mismo que a ti, querido lector. Percibí los términos crédito interbancario, swaps, asignación de gastos, costos, etc. como hechizos en latín. En el camino, tuve que dominar el aspecto técnico del problema: MS Access (todos los informes se hacían allí a través de VBA), MS SQL (como un nuevo almacenamiento, en lugar de Access), Oracle (al que inicialmente llamé Oracle, lo que provocó histeria). entre programadores). Y de repente empiezo a comprender que el aspecto técnico me resulta mucho más interesante. Hay intentos de crear consultas complejas (como resultado, la base de datos se cuelga de mis scripts y los administradores furiosos corren de un lado a otro tratando de descubrir quién lo hizo). Pero el trabajo principal son las finanzas, lo cual empieza a enojarme. Después de un mes y medio, escribo una carta de renuncia, ya que no puedo dar ningún resultado (y realmente no esperaban ninguno de mí, para ser honesto). El jefe del departamento financiero lo rompe y dice: "no te molestes en tonterías". Un mes después, vuelvo a escribir una declaración, y el jefe del departamento, sorprendido por tal descaro (que luego se convirtió en presidente de la junta directiva del banco), firma con extremo desconcierto: el chico tiene 21 años, sin un superior educación, les dieron salario y confianza, pero él se comporta así. Los motivos del despido fueron dos factores más: el jefe, cuya arrogancia no pude reaccionar con calma, y ​​la silla incómoda, desde la que empezó a dolerme la espalda. Esto es increíblemente divertido, pero aquí está el motivo. Cuando lo dejé, pensé que ahora me sentiría aún más cómodo. Pero no estaba ahí. <h3>Capítulo 2. 70 entrevistas</h3>Al salir del banco, respiré hondo. "Lo arreglaré de esta manera, todos quedarán atónitos". Se programaron entrevistas, los salarios para ellas eran más altos y parecía que no habría necesidad de ocuparse de informar. Son 4 entrevistas y nadie me contrata. 5, 6 entrevistas: lo mismo. Vivía con una chica en una habitación alquilada y ella consiguió un trabajo y pudo cubrir mi falta de ingresos. Pero todavía no tenía idea de cuánto tiempo estaría sin ingresos. Fui a entrevistas (vacantes a la analista) y me preguntaron principalmente sobre SQL y VBA. Para aquellos que no lo saben, VBA es un lenguaje de programación en Excel, Access y otros productos de MS Office. Se realizan 10 entrevistas, nada. 20, 30 - nada. Todo el mundo se avergüenza de la falta de experiencia y de formación superior (lo que a mí me parece poca cosa). 40 entrevistas y la desesperación comienza a invadirlo. Durante el período de 55 a 60 entrevistas empiezo a estudiar 1C. La niña, que ya se ha convertido en esposa, pide irse a San Petersburgo, ya que al menos tiene allí su propia vivienda. Y en la entrevista número 70, me invitaron a ser administrador de la base de datos 1C (con la perspectiva de convertirme en desarrollador 1C) en una pequeña empresa en la zona industrial de San Petersburgo por 50.000 rublos. ¡Eso sí que es crecimiento profesional! <h3>Capítulo 3. El regreso de la leyenda</h3>Mirando por la ventana de un minibús (transporte corporativo) a la gris zona industrial de San Petersburgo, y viajando una hora y cuarenta de ida, me di cuenta de que no podía vive así. El interés en 1C desapareció con el primer toque del sistema autoescrito. Se necesitaba un plan. Y maduró: por las tardes estudiaba SQL y al mismo tiempo supervisaba el conocido lugar de trabajo. El detonante final del despido fue la situación: el director general no quería dejarme ir a unas vacaciones planificadas, aunque los billetes ya estaban comprados. Después de mis vacaciones, escribo una solicitud y nuevamente envío mi currículum para las vacantes en Moscú. Una vez más me ofrecen una entrevista en un gran banco, hora de Moscú. Nuevamente vengo a la cocina de mis familiares y voy a una entrevista. Cuando escribí la dirección, no podía creer lo que veía: este era el edificio en el que soñaba con trabajar (en el momento de mi última residencia en Moscú, estaba apenas en construcción). El puesto se denominó especialista jefe en soporte de sistemas de información. voy a la oficina Me saluda un hombre de unos 30 años con una chaqueta moderna y unos vaqueros. Subimos al piso 15 y cuando vi el panorama de la ciudad me quedé sin aliento: todos los rascacielos estalinistas eran visibles. Todo el estilo del edificio era muy moderno: en la oficina del jefe había refrigeradores para vino, acuarios de moda y un cuadro de una mujer desnuda en blanco y negro. Esto provocó un efecto "wow". La conversación con el jefe no se desarrolló como de costumbre: durante unos 40 minutos habló de lo que estaba pasando en el banco. No entendí nada, pero asentí con la cabeza. Cuando pregunté: ¿cuándo empezarás a preguntarme? No estaba prestando atención. Una vez más, a mi pregunta “¿cuándo es la entrevista técnica?”, la respuesta fue “sí, te contrataremos de todos modos, si no puedes soportarlo, te despediremos”. Lo dijo con una sonrisa y me di cuenta de que todo, ¡el sueño se había vuelto a hacer realidad! <h3>Capítulo 4. Encontrarse en TI </h3>Cuando llegué al nuevo lugar, entendí por qué me contrataron de inmediato. Describiré un retrato típico de un empleado del departamento: edad promedio de 55 años, moscovita, educación en la Universidad Estatal de Moscú, trabajo en un instituto de investigación de defensa en la época soviética y transición al sector bancario en los años 90, ha estado trabajando aquí durante 20 años, la mitad son hombres y la otra mitad son mujeres. Entraron en completa disonancia con los interiores circundantes. Estuvimos involucrados en el mantenimiento de programas de informes para contabilidad. Naturalmente, todo esto estaba en antiguos scripts VBA y SQL escritos por desarrolladores a finales de los 90 y principios de los 2000. Era 2015 y la automatización se realizaba a través de MS Access. Es decir, parecía extremadamente pobre. Pero había un matiz: proporcionaron lo que quería el cliente (contabilidad). Y exactamente a tiempo y en la forma requerida. Sólo ellos sabían cómo funcionaba, y ni siquiera Onotole podía imaginar la complejidad de su desarrollo. Y ningún gerente de TI, incluso con el mayor deseo, no podía despedirlos: el jefe de contabilidad acudió a la junta directiva del banco y defendió a cualquier empleado que sirviera a los intereses del departamento de contabilidad. El gerente quería que yo hiciera el papel de un caballo de Troya: estudié todos sus desarrollos y luego migré los datos al nuevo sistema. Entonces los antiguos empleados pueden ser despedidos y yo puedo ser transferido a un nuevo sistema. Primero, profundicé en sus procesos y miré el código VBA. Poco a poco aprendí a leer código VBA. Un año después ya sabía escribir el código en sí. Tarea típica: dada una base de datos, extraer datos de ella y colocarlos en Excel en un formato determinado. Ahora, como dijo Zadornov, respiren hondo: ¡todos los informes del departamento (y eso son 50 informes diarios y 20 mensuales!) se ejecutaron manualmente. Karl, ¿entiendes que la gente cambia las fechas a +1 todos los días con sus manos en 50 informes? Se sientan, esperan el resultado de un informe durante 1 a 10 minutos y lanzan otro. Además, los informes diarios deben publicarse a una hora determinada y ¡Dios no permita que llegues tarde! ¡No sólo crean informes, sino que ejecutan procedimientos manualmente en la base de datos sin utilizar variables! Es decir, en lugar de usar la variable @startDate = '2015-01-01', ¡cambiarán la misma fecha manualmente en 20 lugares! Después de ver todo esto, comencé a aprender Python. y junto con VBA, SQL y el programador de tareas, automaticé todo esto en dos años. No solo automatiza, sino que también acelera muchos informes: si abandona MS Access + VBA en favor de MS SQL + TSQL, puede lograr un aumento múltiple en la productividad. Mi registro está acelerando la creación de informes en100¡una vez! Pero mis colegas estaban extremadamente descontentos con tal automatización, por lo que me declararon enemigo del pueblo (querían quedarme sentados en silencio hasta la jubilación). Pasó el tiempo y la migración de datos fue exitosa. El gerente me valoró mucho: si al comienzo de mi carrera llegaba a trabajar a las 8 am, después de un tiempo podía venir en cualquier momento hasta las 12:00, aumento constante de salario y puesto, pago por trabajo los fines de semana más. del doble de la cantidad, taxi hasta casa si llega tarde al trabajo, comunicaciones móviles, en resumen: ¡la élite! <h3>Capítulo 5. La jaula de oro</h3>De repente, después de 3,5 años, llega una nueva dirección de TI y dice que el sistema al que migré los datos ya no es necesario. Pero el viejo sistema permanecerá. Mi jefe está ascendiendo en la escala profesional y me invita a pasar a un departamento más progresista. En una reunión con el jefe del departamento progresista, entiendo que desconozco el stack tecnológico de este departamento: Oracle, .net, C#, Linux, etc. + Antipatía hacia el jefe potencial. Le digo a mi jefe que no estoy interesado en el departamento progresista y él, convenientemente, se olvida de mí. Y entonces la pregunta es: ¿qué hacer a continuación? Los ingresos ya eran decentes, el desarrollador junior no me contrataría por ese salario. Después de pensar en mis habilidades, me di cuenta de que necesitaba dedicarme al aprendizaje automático. Todo fue interesante hasta el primer encuentro con la estadística matemática, lo que sólo provocó disgusto en el instituto. Eso es todo, ¡estupor durante seis meses! Pasó el tiempo y un día, mientras caminaba, pensé en un sitio web que mostraría buenos restaurantes en un mapa de Moscú. Comencé a aprender HTML, CSS, JS. Pasé 3 meses estudiando; no tenía los conocimientos para crear un sitio web completo, pero podía practicarlo en el trabajo. Nació una idea: crear un portal para que los contadores pudieran descargar ellos mismos cualquier informe mediante un botón. Se necesitaron 2 meses para crear el portal y nació la aplicación web SPA (aplicación de página única) en React js con un backend Node.js. Ejecuté scripts SQL (no conocía marcos como Hibernate), inicié Python y almacené información adicional en MongoDb (por ejemplo, sobre los usuarios del sitio). Externamente, el sitio se veía muy decente (bootstrap 4, animación de moda). Todavía estoy orgulloso de este proyecto. Pero cuando mostré mi código a los desarrolladores web del banco, quedaron atónitos. ¡NI UNA CLASE PROPIA! ¡Solo funciones, solo hardcore! Me elogiaron, pero dijeron que todavía necesito estudiar mucho para convertirme en desarrollador intermedio completo. Intenté conseguir trabajo como analista, pero no hubo ofertas especiales. Pienso: no estuve allí, publicaré mi currículum de desarrollador full-stack. Las llamadas llegaron, pero durante las entrevistas volé como madera contrachapada sobre París: por ejemplo, no sabía qué eran HashMap, HashSet y por qué eran necesarios. No había la menor idea sobre programación orientada a objetos, patrones de programación, algoritmos, pruebas, Git. Recordé sentimientos de vergüenza largamente olvidados por la ignorancia de las cosas básicas. De repente, llega una oferta para un trabajo como jefe de análisis de clientes en una empresa financiera. Una semana antes de que el país cerrara debido a la pandemia. Conseguí un trabajo en una empresa financiera, pero tenía una doble sensación: por un lado, el alto salario era cálido, por otro lado, el desarrollo técnico sería mínimo. Pasó una semana desde que se instaló el dispositivo y se introdujo el trabajo remoto. Como en el sector financiero no existían días no laborables, trabajamos como de costumbre. El nuevo jefe resultó ser una persona muy loca: se ofreció a eliminar Facebook y crear sus propias redes neuronales para estudiar a los clientes (sin un científico de datos en el personal). A los nuevos empleados se les ofreció aprender Python en una semana, etc. Los días libres no remunerados se convirtieron en la norma. Fue una estupidez renunciar: ¿dónde conseguirás trabajo durante una pandemia? Pero la paciencia se acabó después de 2 meses, cuando se anunció que no habría bonificaciones trimestrales. El matiz es que cuando acordamos el salario, al momento de la contratación, RRHH dijo que el salario se divide en salario (60%) y un bono trimestral (40%), que siempre se paga. Quedó claro que se había tomado la decisión equivocada y necesitábamos empezar a buscar un nuevo trabajo. <h3>Capítulo 6. Empezando a dominar Java</h3>Un buen día de mayo recibo una invitación a una entrevista para el puesto vacante “Desarrollador”. Una empresa del sector de seguros necesita una persona que desarrolle productos de seguros. Se necesita experiencia en programación, pero como se trata de un desarrollo “único” de la empresa, no es necesario un lenguaje específico. También se necesitan Git, etc. Programé una entrevista en dos días y estudié los conceptos básicos de Git en mi tiempo libre. Durante la entrevista, me preguntaron sobre Python, JS, Git, SQL. Respondí todo menos el concepto de “sobrecarga de métodos” y me invitaron a trabajar en 2 semanas. Resultó que la empresa había comprado el sistema hace mucho tiempo. escrito en Java (anverso y reverso), con el que puede crear procesos de negocio sin conocer un lenguaje de programación (más precisamente, utilizando el lenguaje de programación Jelly integrado). Suena bien, pero en realidad todo estaba distorsionado. Digresión lírica: cualquier tecnología tiene su propia época y su propia escala. Hacer todos los informes en 2000 sólo en Excel es genial. Hacer lo mismo en 2021 no es muy bueno. Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear por otro lado, habrá un desarrollo mínimo en el aspecto técnico. Pasó una semana desde que se instaló el dispositivo y se introdujo el trabajo remoto. Como en el sector financiero no existían días no laborables, trabajamos como de costumbre. El nuevo jefe resultó ser una persona muy loca: se ofreció a eliminar Facebook y crear sus propias redes neuronales para estudiar a los clientes (sin un científico de datos en el personal). A los nuevos empleados se les ofreció aprender Python en una semana, etc. Los días libres no remunerados se convirtieron en la norma. Fue una estupidez renunciar: ¿dónde conseguirás trabajo durante una pandemia? Pero la paciencia se acabó después de 2 meses, cuando se anunció que no habría bonificaciones trimestrales. El matiz es que cuando acordamos el salario, al momento de la contratación, RRHH dijo que el salario se divide en salario (60%) y un bono trimestral (40%), que siempre se paga. Quedó claro que se había tomado la decisión equivocada y necesitábamos empezar a buscar un nuevo trabajo. <h3>Capítulo 6. Empezando a dominar Java</h3>Un buen día de mayo recibo una invitación a una entrevista para el puesto vacante “Desarrollador”. Una empresa del sector de seguros necesita una persona que desarrolle productos de seguros. Se necesita experiencia en programación, pero como se trata de un desarrollo “único” de la empresa, no es necesario un lenguaje específico. También se necesitan Git, etc. Programé una entrevista en dos días y estudié los conceptos básicos de Git en mi tiempo libre. Durante la entrevista, me preguntaron sobre Python, JS, Git, SQL. Respondí todo menos el concepto de “sobrecarga de métodos” y me invitaron a trabajar en 2 semanas. Resultó que la empresa había comprado el sistema hace mucho tiempo. escrito en Java (anverso y reverso), con el que puede crear procesos de negocio sin conocer un lenguaje de programación (más precisamente, utilizando el lenguaje de programación Jelly integrado). Suena bien, pero en realidad todo estaba distorsionado. Digresión lírica: cualquier tecnología tiene su propia época y su propia escala. Hacer todos los informes en 2000 sólo en Excel es genial. Hacer lo mismo en 2021 no es muy bueno. Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear por otro lado, habrá un desarrollo mínimo en el aspecto técnico. Pasó una semana desde que se instaló el dispositivo y se introdujo el trabajo remoto. Como en el sector financiero no existían días no laborables, trabajamos como de costumbre. El nuevo jefe resultó ser una persona muy loca: se ofreció a eliminar Facebook y crear sus propias redes neuronales para estudiar a los clientes (sin un científico de datos en el personal). A los nuevos empleados se les ofreció aprender Python en una semana, etc. Los días libres no remunerados se convirtieron en la norma. Fue una estupidez renunciar: ¿dónde conseguirás trabajo durante una pandemia? Pero la paciencia se acabó después de 2 meses, cuando se anunció que no habría bonificaciones trimestrales. El matiz es que cuando acordamos el salario, al momento de la contratación, RRHH dijo que el salario se divide en salario (60%) y un bono trimestral (40%), que siempre se paga. Quedó claro que se había tomado la decisión equivocada y necesitábamos empezar a buscar un nuevo trabajo. <h3>Capítulo 6. Empezando a dominar Java</h3>Un buen día de mayo recibo una invitación a una entrevista para el puesto vacante “Desarrollador”. Una empresa del sector de seguros necesita una persona que desarrolle productos de seguros. Se necesita experiencia en programación, pero como se trata de un desarrollo “único” de la empresa, no es necesario un lenguaje específico. También se necesitan Git, etc. Programé una entrevista en dos días y estudié los conceptos básicos de Git en mi tiempo libre. Durante la entrevista, me preguntaron sobre Python, JS, Git, SQL. Respondí todo menos el concepto de “sobrecarga de métodos” y me invitaron a trabajar en 2 semanas. Resultó que la empresa había comprado el sistema hace mucho tiempo. escrito en Java (anverso y reverso), con el que puede crear procesos de negocio sin conocer un lenguaje de programación (más precisamente, utilizando el lenguaje de programación Jelly integrado). Suena bien, pero en realidad todo estaba distorsionado. Digresión lírica: cualquier tecnología tiene su propia época y su propia escala. Hacer todos los informes en 2000 sólo en Excel es genial. Hacer lo mismo en 2021 no es muy bueno. Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear cree sus propias redes neuronales para estudiar clientes (sin un científico de datos en el personal). A los nuevos empleados se les ofreció aprender Python en una semana, etc. Los días libres no remunerados se convirtieron en la norma. Fue una estupidez renunciar: ¿dónde conseguirás trabajo durante una pandemia? Pero la paciencia se acabó después de 2 meses, cuando se anunció que no habría bonificaciones trimestrales. El matiz es que cuando acordamos el salario, al momento de la contratación, RRHH dijo que el salario se divide en salario (60%) y un bono trimestral (40%), que siempre se paga. Quedó claro que se había tomado la decisión equivocada y necesitábamos empezar a buscar un nuevo trabajo. <h3>Capítulo 6. Empezando a dominar Java</h3>Un buen día de mayo recibo una invitación a una entrevista para el puesto vacante “Desarrollador”. Una empresa del sector de seguros necesita una persona que desarrolle productos de seguros. Se necesita experiencia en programación, pero como se trata de un desarrollo “único” de la empresa, no es necesario un lenguaje específico. También se necesitan Git, etc. Programé una entrevista en dos días y estudié los conceptos básicos de Git en mi tiempo libre. Durante la entrevista, me preguntaron sobre Python, JS, Git, SQL. Respondí todo menos el concepto de “sobrecarga de métodos” y me invitaron a trabajar en 2 semanas. Resultó que la empresa había comprado el sistema hace mucho tiempo. escrito en Java (anverso y reverso), con el que puede crear procesos de negocio sin conocer un lenguaje de programación (más precisamente, utilizando el lenguaje de programación Jelly integrado). Suena bien, pero en realidad todo estaba distorsionado. Digresión lírica: cualquier tecnología tiene su propia época y su propia escala. Hacer todos los informes en 2000 sólo en Excel es genial. Hacer lo mismo en 2021 no es muy bueno. Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear cree sus propias redes neuronales para estudiar clientes (sin un científico de datos en el personal). A los nuevos empleados se les ofreció aprender Python en una semana, etc. Los días libres no remunerados se convirtieron en la norma. Fue una estupidez renunciar: ¿dónde conseguirás trabajo durante una pandemia? Pero la paciencia se acabó después de 2 meses, cuando se anunció que no habría bonificaciones trimestrales. El matiz es que cuando acordamos el salario, al momento de la contratación, RRHH dijo que el salario se divide en salario (60%) y un bono trimestral (40%), que siempre se paga. Quedó claro que se había tomado la decisión equivocada y necesitábamos empezar a buscar un nuevo trabajo. <h3>Capítulo 6. Empezando a dominar Java</h3>Un buen día de mayo recibo una invitación a una entrevista para el puesto vacante “Desarrollador”. Una empresa del sector de seguros necesita una persona que desarrolle productos de seguros. Se necesita experiencia en programación, pero como se trata de un desarrollo “único” de la empresa, no es necesario un lenguaje específico. También se necesitan Git, etc. Programé una entrevista en dos días y estudié los conceptos básicos de Git en mi tiempo libre. Durante la entrevista, me preguntaron sobre Python, JS, Git, SQL. Respondí todo menos el concepto de “sobrecarga de métodos” y me invitaron a trabajar en 2 semanas. Resultó que la empresa había comprado el sistema hace mucho tiempo. escrito en Java (anverso y reverso), con el que puede crear procesos de negocio sin conocer un lenguaje de programación (más precisamente, utilizando el lenguaje de programación Jelly integrado). Suena bien, pero en realidad todo estaba distorsionado. Digresión lírica: cualquier tecnología tiene su propia época y su propia escala. Hacer todos los informes en 2000 sólo en Excel es genial. Hacer lo mismo en 2021 no es muy bueno. Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear <h3>Capítulo 6. Empezando a dominar Java</h3>Un buen día de mayo recibo una invitación a una entrevista para el puesto vacante “Desarrollador”. Una empresa del sector de seguros necesita una persona que desarrolle productos de seguros. Se necesita experiencia en programación, pero como se trata de un desarrollo “único” de la empresa, no es necesario un lenguaje específico. También se necesitan Git, etc. Programé una entrevista en dos días y estudié los conceptos básicos de Git en mi tiempo libre. Durante la entrevista, me preguntaron sobre Python, JS, Git, SQL. Respondí todo menos el concepto de “sobrecarga de métodos” y me invitaron a trabajar en 2 semanas. Resultó que la empresa había comprado el sistema hace mucho tiempo. escrito en Java (anverso y reverso), con el que puede crear procesos de negocio sin conocer un lenguaje de programación (más precisamente, utilizando el lenguaje de programación Jelly integrado). Suena bien, pero en realidad todo estaba distorsionado. Digresión lírica: cualquier tecnología tiene su propia época y su propia escala. Hacer todos los informes en 2000 sólo en Excel es genial. Hacer lo mismo en 2021 no es muy bueno. Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear <h3>Capítulo 6. Empezando a dominar Java</h3>Un buen día de mayo recibo una invitación a una entrevista para el puesto vacante “Desarrollador”. Una empresa del sector de seguros necesita una persona que desarrolle productos de seguros. Se necesita experiencia en programación, pero como se trata de un desarrollo “único” de la empresa, no es necesario un lenguaje específico. También se necesitan Git, etc. Programé una entrevista en dos días y estudié los conceptos básicos de Git en mi tiempo libre. Durante la entrevista, me preguntaron sobre Python, JS, Git, SQL. Respondí todo menos el concepto de “sobrecarga de métodos” y me invitaron a trabajar en 2 semanas. Resultó que la empresa había comprado el sistema hace mucho tiempo. escrito en Java (anverso y reverso), con el que puede crear procesos de negocio sin conocer un lenguaje de programación (más precisamente, utilizando el lenguaje de programación Jelly integrado). Suena bien, pero en realidad todo estaba distorsionado. Digresión lírica: cualquier tecnología tiene su propia época y su propia escala. Hacer todos los informes en 2000 sólo en Excel es genial. Hacer lo mismo en 2021 no es muy bueno. Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crear Un sitio web de empresa en HTML puro era genial en 1999, pero no en 2021. Entonces, la tecnología que utilizó la empresa en el momento de su creación (2005) era genial: Java era responsable tanto de la parte del servidor como del cliente (las llamadas páginas de servlet Java). Además, si crea un nuevo proceso de negocio (que tiene su propia interfaz de usuario), se almacena dentro de la base de datos y no en el código de un archivo. Para comprender lo inconveniente que es esto, imagine que escribe código Java en Intellij idea, lo guarda en la base de datos y luego. cuando desea ejecutar su código, el núcleo del programa va a la base de datos y lee su código desde allí. En consecuencia, no puede depurar completamente su aplicación. ° 1: cuando desee enviar código al banco de pruebas, deberá crearSQL скрипт, que contendrá su código. ¿Desagradable pero tolerable? Entusiasmo #2: La base de datos consta de más de 200 tablas que tienen conexiones entre sí. Esto significa que necesita saber en qué tablas colocar su código y qué entidades deben crearse en otras tablas. El resultado es un script SQL con una longitud de ~ 1000 líneas. Esto es verdaderamente repugnante. Cuidado con el legado. En resumen, al darme cuenta de que todo estaba en Java, fui a JavaRush (¡finalmente llegamos al tema del sitio!). Junio-julio de 2020. Los primeros 10 niveles se cerraron rápidamente (tal vez un mes), porque no había nada fundamentalmente nuevo. Luego la velocidad disminuyó. Julio-octubre 2020. Niveles 10-20 cerrados. Octubre-Marzo 2021. Niveles 20-30 cerrados. Ahora comienza la diversión: en marzo de 2021, comencé a buscar vacantes en Java y me di cuenta de que había muchas palabras desconocidas allí. Algún tipo de Spring, SpringBoot, Hibernate, JUnit. Después de haber comprado cursos en vídeo en un sitio web conocido, simplemente toqué Spring y pensé que ahora lo sé y puedo hacerlo todo. Después de eso, encontré el curso TopJava de Grigory Kislin. En su sitio web puedes intentar completar una tarea de prueba y, si lo logras, podrás realizar el curso. En este curso, creará una aplicación web completa e incluso la publicará en Internet. Por este dinero, te harán una revisión (revisión del código por parte de un programador más experimentado), te darán comentarios y te darán consejos en caso de problemas. Llegué a la tarea 3 y la dejé. La razón es sencilla: te exigen mucho, pero no te aportan ningún conocimiento. Los requisitos de las tareas son muy confusos. La información se presenta de manera extremadamente inconsistente. En mi opinión subjetiva, este curso es necesario para desarrolladores bastante experimentados que provengan de otros lenguajes similares. Porque en su curso prácticamente no hay explicación de las tecnologías que pide utilizar. También necesitas conocer bien Git (todo se envía a tu repositorio personal). A finales de abril de 2021, publico un currículum para un desarrollador de Java (con el salario deseado en el nivel medio+), en el que indico que en mi último trabajo programé en Java (mentí). El mismo día, el banco recibe una solicitud para un puesto de desarrollador de Java. <h3>Capítulo 7. Entrevistas sobre Java y perfeccionamiento de habilidades</h3>Entonces, ¿cuál era el plan? Necesito conseguir un buen salario, ya que estoy acostumbrado a vivir con unos ingresos considerables y préstamos. Por lo tanto, los puestos junior no son adecuados para mí. Necesitas conseguir una posición intermedia. ¿Pero quién me contratará sin experiencia? La decisión fue natural: en mi expediente laboral dice que trabajé como desarrollador durante un año y otros 4 años como experto en el departamento de TI en mi puesto anterior. Entonces diré que llevo un año desarrollando en Java. Y si preguntan por nuevos productos, diré que el antiguo Java (7) estaba ahí y no soportaba nada. Antes de mi primera entrevista (remota), estaba nervioso. No tengo experiencia, muy pocos conocimientos y pido mucho dinero. Pienso: no importa, la experiencia negativa también es experiencia. Me comunico vía Skype y seré entrevistado por dos jefes de departamento. Lo que me asustó aún más. Comenzaron las preguntas: programación orientada a objetos, dispositivo HashMap, transmisiones, estructuras de datos, qué es Spring, Hibernate, AOP. Y si antes de Sping era más o menos tolerable, en Spring se vino abajo por completo. La gente me pregunta: ¿cómo te desarrollaste en Spring si realmente no lo sabes? Yo: lo copié, lo pegué, funciona y gracias por eso. Esta respuesta les hizo gracia. Luego me preguntaron sobre SQL, en lo que yo era como un pato en el agua. Lo siguiente fue Git y una pregunta sobre rebase, cherry-pick (que tampoco sabía) y terminé sobre JS, ya que figuraba en mi currículum. Allí también hubo un completo fracaso, porque preguntaron por OOP JS. Según los resultados de la entrevista, quedó claro que mis conocimientos no eran comme il faut y, por lo tanto, no calificaría para esta vacante. Por la noche, RR.HH. escribe que mi candidatura ha sido aprobada y que están listos para llamarme. De hecho, me atraganté con una hamburguesa en McDonald's. Estaba contento, pero después de 3 días, Recursos Humanos informó que habían elegido otro candidato. Por primera vez en mi experiencia, se retiró una oferta. Después de la primera entrevista en Java, intensifiqué mi juego: tomé un curso (¡y lo completé por completo!) en Git de Colt Steele en un conocido sitio de venta de cursos en vídeo. Esto cambió mi percepción de Git. Luego, tomé un curso (brillante) de Zaur Tregulov sobre Spring+Hibernate. Esquema de entrenamiento: lo veo como en el video, hago lo mismo en mi computadora, pero nombro las variables y clases de manera diferente para no copiar estúpidamente el código de otra persona. Subo todo mi trabajo a mi Github (practicando así Git). Era mediados de mayo y comenzaron las llamadas de recursos humanos. Comenzamos a programar entrevistas una por una. Muchas invitaciones tuvieron que cancelarse por los siguientes motivos: RR.HH. no leyó la descripción de mi currículum y me invitó a un puesto directivo. También vale la pena mencionar una casta de recursos humanos separada: aquellos que confunden Java con JavaScript. Por eso escribí Desarrollador de Java Medio en el título de mi currículum. <h3>Capítulo 8. Lista de preguntas típicas y cómo se desarrollan las entrevistas</h3>Comencé a asistir a entrevistas y gradualmente formé un grupo de preguntas básicas en el medio. Requerido: 0. POO - definición, hable sobre cada principio de POO (+dé un ejemplo de la vida real). 1. Iguales y código hash: ¿cuál es el contrato (relación) entre ellos? 2. HashMap: cómo entender en qué depósito irá un objeto, qué es una colisión, en qué estructura de datos se almacenan los datos dentro del HashMap, el tamaño estándar, cómo aumenta el número de depósitos. 3. Stream: qué tipos de operaciones, cuál es la diferencia entre ellas, dé un ejemplo de cada tipo de operación. 4. Grupo de cadenas, grupo de enteros: ¿qué es? 5. Montón, pila: ¿qué es, cuál es la diferencia? 6. Diferencias entre Runnable, Thread, Future. 7. Volátil, atomicidad. 8. Sólido, Beso, Seco: definiciones, ejemplos de la vida real. 9. Modificadores de acceso en Java. 10. ¿Cuál es la diferencia entre una clase abstracta y una interfaz? ¿Puede la interfaz ser privada? 11. Interfaces funcionales. 12. Enumere todos los métodos de Objeto y diga por qué son necesarios. Características del método de clonación. 13. ¿Qué es la serialización y la deserialización? 14. Intente capturar con recursos: describa qué es y dígalo usando la interfaz Closeable. 15. ¿Diferencias entre Final, finalmente, finalizar? 16. Sobrecarga, La diferencia es la anulación del método. 17. Por qué String se hizo inmutable, cuéntenos sobre StringBuilder y StringBuffer. 18. ¿Qué es la complejidad del tiempo O (1), complejidad de la memoria? 19. Estructuras de datos: hable sobre map, set, queue, deque, list y su implementación en Java (treeMap, hashSet, hashMap, arrayList, linkedList, PriorityQueue, blockingQueue), describa la complejidad (peor, promedio, mejor) de la inserción. buscar, eliminando un elemento en cada estructura. 20. Tipos de datos primitivos en Java. ¿Por qué es necesario cada uno de ellos? 21. Tipos de errores. Excepciones marcadas y no marcadas. 22. ¿Qué es JVM, JRE, JDK? 23. ¿Con qué coleccionistas trabajaste? Maven: ciclo de vida de la construcción. 24. Primavera: definiciones de Ioc, Di, ciclo de vida de Bean, contexto, anotaciones de @Bean, @Configuración, @Autowired, @Advice, @Aspect, @Service, @Repository. 25. Genéricos: ¿definición de qué es un límite superior e inferior? 26.Patrones de programación: al menos Singleton (disposición a explicar por qué esto a veces es un antipatrón) + Constructor, Adaptador, Fábrica, Decorador, Proxt. Deseable: 26. Pruebas: tipos de pruebas con las que se trabajó en las bibliotecas (JUnit). ¿Qué es burlarse, apuñalar, espiar? 27. Spring Boot: por qué es necesario, preparación para crear una aplicación SpringBoot en línea. 28. Hibernar: por qué es necesario, entidad, columna de unión, carga diferida o ansiosa, niveles de almacenamiento en caché (difícil). 29. Descanso de primavera: por qué es necesario, cómo hacer que @post y @get sean puntos finales. ¿Cómo leer los parámetros/cuerpo de la solicitud? ¿Cómo enviar en formato json? 30. Estructuras de datos: árboles, sus tipos. 31. Algoritmos: tipos de clasificación. Además de Java, pueden preguntar: 1. (¡Obligatorio!) Git: por qué es necesario, operaciones de fusión, cambio de base, selección, inserción, extracción, confirmación, registro, pago, bifurcación, reinicio, reversión, actualización. 2.SQL: capacidad de escribir una consulta: unir dos tablas en una (unión interna, unión izquierda). 3. Bases de datos: 3 formas normales, índices (por qué se necesitan, tipos), clave primaria, clave externa. Cómo va una entrevista remota típica: hr envía un enlace a zoom (Skype, Google Meeting). A una hora determinada te conectas y hay de 1 a 3 personas ahí (experto técnico, jefe, RR.HH.). En casos especialmente difíciles, hasta 8 personas. Primero cuentas sobre ti, luego la parte técnica, luego una historia sobre la vacante y adiós (te dicen cuando te contactarán o cuáles serán los próximos pasos). Durante las despedidas, se puede solicitar retroalimentación sobre conocimientos. Le pregunté: “¿Puedes decirme, durante mis respuestas, dónde te duelen los oídos?” Mucha gente responde, pero prepárate para ser rechazado. Durante la entrevista evalúan: 1. Tu capacidad para expresar pensamientos y conocimiento del idioma ruso (conozco un caso en el que un candidato fue rechazado por escaso conocimiento del idioma ruso). 2. Experiencia previa (pueden preguntarte minuciosamente qué hiciste en tu último trabajo). 3. Una reacción adecuada cuando te presionan (hubo una entrevista en la que la gente empezó a hablar irrespetuosamente: ignorando mis respuestas, tratando de inculcar sus posiciones, etc. Terminé la entrevista 15 minutos después de comenzar y ellos: ¡Fue una entrevista estresante!) 4. Nivel de conocimientos. Entraré en más detalles aquí. Conocer las definiciones de un tema es sólo el 10% de lo que se espera de ti. Es necesario entender cómo funciona (al menos en el nivel superior). Voluntad de explicar en qué punto del desarrollo elegirás tal o cual solución. Esto es mucho más importante que la precisión de su definición. Analizaré esta tesis usando dos ejemplos. Primer ejemplo: durante una entrevista me preguntaron sobre HashMap y le di la definición: "esta es una estructura de datos que almacena paquetes de claves y valores". Entonces el entrevistador preguntó: ¿cuál es la diferencia con TreeMap? Respuesta: La diferencia es que HashMap codifica la clave y, debido al hash, el acceso es rápido. El entrevistador inmediatamente pidió contarnos la estructura interna de HashMap y al mismo tiempo preguntar sobre hashCode y sus iguales. Y irá profundizando hasta que estés satisfecho con la respuesta o te detengas. Aprendí a responder correctamente sobre HashMap solo después de 2 meses de entrevistas y un curso sobre estructuras de datos en hexlet. Segundo ejemplo: el concepto SÓLIDO. Me piden que les dé una definición que me he memorizado. Pero tan pronto como llegaron los ejemplos de la vida real, comenzaron los problemas. Внимание!Si no lo sabes, no lo inventes, pero di esto: no conozco este tema, pero puedo suponer que funciona así. Muchos expertos técnicos se enfurecen cuando una persona habla herejía como si entendiera el tema. 5. Su nivel de entusiasmo durante la discusión laboral. Se espera que usted esté interesado y haga preguntas sobre la vacante (pero no solo preguntas inventadas). 6. A veces el humor (solo sobre el tema) y los intereses comunes te ayudan a comunicarte. No dudes en hablar sobre tus aficiones; quizás al entrevistado también le guste Dota/fútbol/fantasía. Y esto es una ventaja para usted como candidato. Conozco casos en los que una comunidad de intereses hizo la vista gorda ante la escasa formación técnica del entrevistador (eres un tipo normal, te formaremos). <h3>Capítulo 9. Conseguir trabajo, bautismo de fuego</h3>Las entrevistas se llevaron a cabo desde finales de abril hasta mediados de julio. Las primeras entrevistas fueron embarazosas, pero gradualmente la situación mejoró hasta un nivel aceptable. El estudio de preguntas y comentarios comunes se hizo sentir. Las primeras 25 entrevistas no tuvieron éxito. Luego de esto, comenzaron momentos de desesperación. Sentimientos: ¿y si no me contratan por ese salario? De repente, las cosas empezaron a dispararse: en una semana, tres empresas presentaron propuestas. Elegí una empresa cuyos detalles conocía, además tenía un buen salario y la oportunidad de trabajar de forma remota. Durante mi entrevista, me hicieron alrededor de 30 preguntas sobre Java core y Spring, el 97% de las cuales respondí correctamente. Después de eso hubo comunicación con las autoridades superiores y después de una semana y media conseguí un trabajo con ellos. En primer lugar, cuando llega a cualquier trabajo, comienza a obtener acceso a todos los sistemas necesarios e instalar las herramientas que necesita. Pasó una semana y media y me encomendaron la primera tarea: cambiar el texto estático en el aula. Cuando abrí el proyecto, me sentí mal: había muchos módulos dentro de un proyecto, muchas clases, pruebas, etc. En ese punto estaba perdido, pero un segundo desarrollador me ayudó y me puso al día. El error se solucionó en 10 minutos, se publicó en Git, se realizó una solicitud de extracción (una solicitud para fusionar dos ramas donde otros desarrolladores verifican su código) y luego se fusionó con la rama principal. Resultó que no todo es tan difícil. Hasta la primera tarea completa... En el momento de planificar las tareas para las próximas dos semanas, me dijeron: harás la integración con otro sistema, que está ubicado en OpenShift. Aquí es donde las cosas se pusieron realmente aterradoras: OpenShift es todo un grupo de tecnologías: Docker, Kubernetes, Linux, etc. Un sudor frío me corría por la espalda: bueno, trabajaba como jawista. Inmediatamente después de la reunión, llamé al desarrollador, quien me tranquilizó: se habían escrito adaptadores para este sistema y bastaba con importar ciertas clases a mi proyecto, después de lo cual podía usar la integración de manera segura. Volvió a ser divertido, hasta que el desarrollador mostró una integración típica: vi más de 20 clases creadas para una integración similar. Además, se notaron anotaciones nunca antes vistas @Value, @Builder, @NoArgsConstructor, @Getter. @Sl4f: resultó ser el proyecto Lombook (leído en Internet). Cuando el desarrollador me explicó cómo hacerlo, intenté anotar las conexiones de todas las clases y no se me quedó nada en la cabeza. El momento más embarazoso fue el desconocimiento de Intellij Idea: cómo buscar globalmente un proyecto, refactorización de código, etc. Habiendo asumido la tarea, entendí por qué se necesita programación orientada a objetos: para una cantidad tan grande de código, es necesario dividirlo en clases; Los métodos que no se utilizan fuera de la clase deben declararse privados para no ejecutarlos accidentalmente en otra clase, etc. Habiendo escrito mi integración por analogía con otra integración, me enteré de la existencia de CheckStyle, un complemento especial que verifica el estilo. de su código, y no podrá compilar su proyecto hasta que corrija los errores (por ejemplo, espacios adicionales, nombres de variables con letras mayúsculas, nombres de variables que son demasiado cortos). Después de derrotar a CheckStyle, envié mi código para que lo revisaran desarrolladores senior y corregí mis errores en una semana. En general, tuve mucha suerte de que en mi equipo tenía una buena relación con el segundo desarrollador, quien me explicó muchas cosas. Un mes después del dispositivo, se lanzó mi primera integración en el stand de Integración Funcional (se prueba el funcionamiento de todas las aplicaciones juntas), ¡y todo funcionó allí! ¡Victoria! La siguiente tarea fue crear una clase que permitiera ocultar datos por clave en json. Por ejemplo: hay json {texto:"JavaRush"} -> procesamiento -> {texto:"****Rush"}. Aquí hay dos complicaciones: puede haber anidamiento {text:{mytext:"JavaRush"}}, y lo que es más desagradable es anidar dentro de la matriz: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (por supuesto, debe ocultar todo el texto.mitexto). Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. Intenté anotar las conexiones de todas las clases y no se me quedó nada en la cabeza. El momento más embarazoso fue el desconocimiento de Intellij Idea: cómo buscar globalmente un proyecto, refactorización de código, etc. Habiendo asumido la tarea, entendí por qué se necesita programación orientada a objetos: para una cantidad tan grande de código, es necesario dividirlo en clases; Los métodos que no se utilizan fuera de la clase deben declararse privados para no ejecutarlos accidentalmente en otra clase, etc. Habiendo escrito mi integración por analogía con otra integración, me enteré de la existencia de CheckStyle, un complemento especial que verifica el estilo. de su código y no podrá compilar su proyecto hasta que corrija los errores (por ejemplo, espacios adicionales, nombres de variables con letras mayúsculas, nombres de variables que son demasiado cortos). Después de derrotar a CheckStyle, envié mi código para que lo revisaran desarrolladores senior y corregí mis errores en una semana. En general, tuve mucha suerte de que en mi equipo tenía una buena relación con el segundo desarrollador, quien me explicó muchas cosas. Un mes después del dispositivo, se lanzó mi primera integración en el stand de Integración Funcional (se prueba el funcionamiento de todas las aplicaciones juntas), ¡y todo funcionó allí! ¡Victoria! La siguiente tarea fue crear una clase que permitiera ocultar datos por clave en json. Por ejemplo: hay json {texto:"JavaRush"} -> procesamiento -> {texto:"****Rush"}. Aquí hay dos complicaciones: puede haber anidamiento {text:{mytext:"JavaRush"}}, y lo que es más desagradable es anidar dentro de la matriz: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (por supuesto, debe ocultar todo el texto.mitexto). Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. Intenté anotar las conexiones de todas las clases y no se me quedó nada en la cabeza. El momento más embarazoso fue el desconocimiento de Intellij Idea: cómo buscar globalmente un proyecto, refactorización de código, etc. Habiendo asumido la tarea, entendí por qué se necesita programación orientada a objetos: para una cantidad tan grande de código, es necesario dividirlo en clases; Los métodos que no se utilizan fuera de la clase deben declararse privados para no ejecutarlos accidentalmente en otra clase, etc. Habiendo escrito mi integración por analogía con otra integración, me enteré de la existencia de CheckStyle, un complemento especial que verifica el estilo. de su código y no podrá compilar su proyecto hasta que corrija los errores (por ejemplo, espacios adicionales, nombres de variables con letras mayúsculas, nombres de variables que son demasiado cortos). Después de derrotar a CheckStyle, envié mi código para que lo revisaran desarrolladores senior y corregí mis errores en una semana. En general, tuve mucha suerte de que en mi equipo tenía una buena relación con el segundo desarrollador, quien me explicó muchas cosas. Un mes después del dispositivo, se lanzó mi primera integración en el stand de Integración Funcional (se prueba el funcionamiento de todas las aplicaciones juntas), ¡y todo funcionó allí! ¡Victoria! La siguiente tarea fue crear una clase que permitiera ocultar datos por clave en json. Por ejemplo: hay json {texto:"JavaRush"} -> procesamiento -> {texto:"****Rush"}. Aquí hay dos complicaciones: puede haber anidamiento {text:{mytext:"JavaRush"}}, y lo que es más desagradable es anidar dentro de la matriz: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (por supuesto, debe ocultar todo el texto.mitexto). Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. Para una cantidad tan grande de código, es necesario dividirlo en clases; Los métodos que no se utilizan fuera de la clase deben declararse privados para no ejecutarlos accidentalmente en otra clase, etc. Habiendo escrito mi integración por analogía con otra integración, me enteré de la existencia de CheckStyle, un complemento especial que verifica el estilo. de su código, y no podrá compilar su proyecto hasta que corrija los errores (por ejemplo, espacios adicionales, nombres de variables con letras mayúsculas, nombres de variables que son demasiado cortos). Después de derrotar a CheckStyle, envié mi código para que lo revisaran desarrolladores senior y corregí mis errores en una semana. En general, tuve mucha suerte de que en mi equipo tenía una buena relación con el segundo desarrollador, quien me explicó muchas cosas. Un mes después del dispositivo, se lanzó mi primera integración en el stand de Integración Funcional (se prueba el funcionamiento de todas las aplicaciones juntas), ¡y todo funcionó allí! ¡Victoria! La siguiente tarea fue crear una clase que permitiera ocultar datos por clave en json. Por ejemplo: hay json {texto:"JavaRush"} -> procesamiento -> {texto:"****Rush"}. Aquí hay dos complicaciones: puede haber anidamiento {text:{mytext:"JavaRush"}}, y lo que es más desagradable es anidar dentro de la matriz: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (por supuesto, debe ocultar todo el texto.mitexto). Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. Para una cantidad tan grande de código, es necesario dividirlo en clases; Los métodos que no se utilizan fuera de la clase deben declararse privados para no ejecutarlos accidentalmente en otra clase, etc. Habiendo escrito mi integración por analogía con otra integración, me enteré de la existencia de CheckStyle, un complemento especial que verifica el estilo. de su código y no podrá compilar su proyecto hasta que corrija los errores (por ejemplo, espacios adicionales, nombres de variables con letras mayúsculas, nombres de variables que son demasiado cortos). Después de derrotar a CheckStyle, envié mi código para que lo revisaran desarrolladores senior y corregí mis errores en una semana. En general, tuve mucha suerte de que en mi equipo tenía una buena relación con el segundo desarrollador, quien me explicó muchas cosas. Un mes después del dispositivo, se lanzó mi primera integración en el stand de Integración Funcional (se prueba el funcionamiento de todas las aplicaciones juntas), ¡y todo funcionó allí! ¡Victoria! La siguiente tarea fue crear una clase que permitiera ocultar datos por clave en json. Por ejemplo: hay json {texto:"JavaRush"} -> procesamiento -> {texto:"****Rush"}. Aquí hay dos complicaciones: puede haber anidamiento {text:{mytext:"JavaRush"}}, y lo que es más desagradable es anidar dentro de la matriz: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (por supuesto, debe ocultar todo el texto.mitexto). Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. los nombres de las variables son demasiado cortos). Después de derrotar a CheckStyle, envié mi código para que lo revisaran desarrolladores senior y corregí mis errores en una semana. En general, tuve mucha suerte de que en mi equipo tenía una buena relación con el segundo desarrollador, quien me explicó muchas cosas. Un mes después del dispositivo, se lanzó mi primera integración en el stand de Integración Funcional (se prueba el funcionamiento de todas las aplicaciones juntas), ¡y todo funcionó allí! ¡Victoria! La siguiente tarea fue crear una clase que permitiera ocultar datos por clave en json. Por ejemplo: hay json {texto:"JavaRush"} -> procesamiento -> {texto:"****Rush"}. Aquí hay dos complicaciones: puede haber anidamiento {text:{mytext:"JavaRush"}}, y lo que es más desagradable es anidar dentro de la matriz: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (por supuesto, debe ocultar todo el texto.mitexto). Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. los nombres de las variables son demasiado cortos). Después de derrotar a CheckStyle, envié mi código para que lo revisaran desarrolladores senior y corregí mis errores en una semana. En general, tuve mucha suerte de que en mi equipo tenía una buena relación con el segundo desarrollador, quien me explicó muchas cosas. Un mes después del dispositivo, se lanzó mi primera integración en el stand de Integración Funcional (se prueba el funcionamiento de todas las aplicaciones juntas), ¡y todo funcionó allí! ¡Victoria! La siguiente tarea fue crear una clase que permitiera ocultar datos por clave en json. Por ejemplo: hay json {texto:"JavaRush"} -> procesamiento -> {texto:"****Rush"}. Aquí hay dos complicaciones: puede haber anidamiento {text:{mytext:"JavaRush"}}, y lo que es más desagradable es anidar dentro de la matriz: {text: [ {mytext: "JavaRush"}, {mytext: "JavaRush "} ] } (por supuesto, debe ocultar todo el texto.mitexto). Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil. Resolver este problema resultó bastante difícil, ¡pero lo logré! Aquí el segundo desarrollador dice: cubra este desarrollo con pruebas. Había desconcierto en los ojos. Así conocí la biblioteca JUnit en combate. La esencia de las pruebas unitarias: usted tiene datos de entrada, los pasa a un método y compara los datos recibidos con el resultado correcto (crea una variable con el resultado correcto). Escribí 11 casos para mi biblioteca, en los que comprobé que la aplicación no fallaba con una NullPointException y que oculta correctamente datos con cualquier tipo de anidamiento. Luego de completar esta tarea, se me dio una nueva integración, cuya peculiaridad era la siguiente: tenía que exportar un Spring Bean desde una biblioteca externa. En este punto, me convertí en un cliente habitual del sitio web Stack OverFlow. Una vez, incluso un desarrollador oficial de Spring respondió. Después de implementar esta integración, mi período de prueba llegó a su fin. El jefe me felicitó por pasar el período de prueba y comencé a escribir este artículo. En total, me tomó 8 horas escribir este artículo) Gracias por su atención, espero que el artículo haya sido útil.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION