Mi nombre es Sergey, tengo 40 años y ahora trabajo como desarrollador de Java en una empresa alemana. Estamos desarrollando software para cervecería evaluación de riesgos financieros y crediticios. Este es mi primer trabajo como desarrollador. Antes de eso, trabajé en el campo de soporte de TI e integración de sistemas. El 1 de febrero de 2019, mi período de prueba de seis meses finalizó y tengo un contrato perpetuo a mano. Quiero compartir mi experiencia sobre cómo aprender Java de manera independiente para conseguir un trabajo.

Este es mi escritorio. Se nos permite beber cerveza durante las horas de trabajo, estamos en Alemania.
Mi primer artículo: “ Emigración de TI con la familia. Y especialmente la búsqueda de trabajo en una pequeña ciudad de Alemania, cuando ya estás allí "
Mi segundo artículo: " Conseguir un trabajo en Alemania será más fácil ".
Descargo de responsabilidad
Diré de inmediato que todo tipo de "aprender a aparecer en 10 días" (21 días, 30 días, etc.) son utopías. No hay una píldora roja para ingresar rápidamente a la matriz. Pero durante un año o dos en paralelo con el lugar de trabajo principal, es bastante real.
Lo que tenía en mi activo antes de comenzar a aprender Java
Al principio quería nombrar el artículo "Cómo convertirse en un desarrollador de Java en 1,5 años desde cero ", pero cambié de opinión. Llegué a la programación no desde un campo completamente diferente, sino desde TI. Pero no trabajé en desarrollo, sino en apoyo. Es probable que a un camionero no le resulte fácil repetir mis pasos para convertirse en programador. Aunque, si mi esposa tiene éxito en su 34 para volver a entrenarse de humanidades puras a un desarrollador (o probador), escribiré otro artículo.
Vale la pena decir que ya sabía cuándo decidí convertirme en desarrollador.
En la universidad durante 2 semestres estudiamos programación en C y C ++. Nada especial o algún conocimiento profundo. Rendido - olvidado. Además, como estudiante, escribí algunos programas simples de Delphi para mí. Y eso es todo. Eso fue hace más de 20 años.
Entonces mi carrera se veía así:
- Administrador del sistema
- Ingeniero de sistemas
- Diputado jefe de departamento
- Supervisor
- Ingeniero de esos. apoyo
No hice la programación directamente.
Mi camino
Cursos en línea.
Comencé con las siguientes especializaciones en coursera.org :
Fundamentos de programación de Java e ingeniería de software - 4 meses
Tomé los siguientes cursos en línea:
Después de esta especialización, estaba más o menos versado en el idioma, pero escribir el programa en sí seguía siendo poco realista. El último proyecto final que no hice. Fue dificil para mi. Y para ser honesto, perdí mi entusiasmo. Me tomé un descanso
Programación Java orientada a objetos: estructuras de datos y más allá: 5 meses
Después de un mes, decidí volver a las clases nuevamente. Fui a la especialización de cinco cursos:
Tampoco dominé el último proyecto final. Pero el penúltimo curso sobre la lista de Entrevistas para dominar la ingeniería del software me ayudó a prepararme bien para la próxima entrevista. Y pude escribir mi primer analizador sin pretensiones de un sitio simple en HTML puro. Ya era bueno, pero no impresionante.
Cómo codificar - 3 meses
El siguiente paso fueron estos dos cursos extraños en edx.org :
Escribí "raro" porque no se trata de Java en absoluto. Los autores del curso usan el lenguaje de programación especial Lenguaje del estudiante principiante (BSL). Leí en alguna parte que son mega útiles. Quizás estos dos cursos me ayudaron a comprender mejor algunos de los trucos para escribir programas y se convirtieron en una buena ayuda para escribir pruebas de Unidad en el trabajo real. Pero para ser honesto, puedes omitirlos.
Estructuras de datos y algoritmos: 2 meses
Luego volví a coursera.org nuevamente y comencé una nueva especialización, que consta de los siguientes cuatro cursos:
Pero dominó solo los dos primeros. El resto ni siquiera se inscribió. Paralelamente a estos cursos, comencé a leer el libro OCA, que se discutirá más adelante.
Estampado en el lugar
En ese momento me di cuenta de que estaba marchando. La aprobación de nuevos cursos no produjo una cantidad tan tangible de nuevos conocimientos como los primeros. Es decir Parece que se agrega conocimiento, pero esto no me acerca a conseguir un trabajo. No entendía cómo con tal conocimiento generalmente puedes encontrar un trabajo. Todavía no podía escribir nada que fuera más complicado que el analizador. Bueno, ¿cómo es eso?!?!? Incluso intenté escribir el servicio de análisis de mi sitio con blackjack y prostitutas, pero después de una semana de desarrollo, mi proyecto se convirtió en un desastre de las clases. Y yo mismo ya no podía entender lo que escribí allí. Además, todavía no entendía algunos aspectos del funcionamiento del lenguaje. ¡Y esto es después de que ya pasé alrededor de un año en todos estos cursos! Doce cursos en línea y todo un año, Carl, solo piensa en ello. De hecho, fue un fracaso. Estaba seguro de que en un año podría convertirme en desarrollador gracias a estos cursos. Estaba equivocado Necesitaba un plan B.
Alternativa
Comencé a buscar cursos que me ayudaran a adquirir algunas habilidades prácticas que son muy demandadas en el trabajo real. Pero no había nada sensato, o valía un dinero decente. Los mismos cursos de otus cuestan 50,000 por seis meses y las revisiones en ellos son contradictorias. No estaba preparado para tales gastos. Estaba listo para investigar por mi cuenta y estaba buscando cómo hacer esto de forma gratuita o muy económica. Como resultado, todos los cursos en línea que encontré se dividieron en dos categorías:
- El primero está diseñado para principiantes o personas con cero formación. Con su ayuda, alcanzas el nivel de "tres con un menos". Soy yo! Esto es sobre mi!
- El segundo es para "buenos chicos" con experiencia laboral que quieren convertirse en "excelentes estudiantes". Como estos: "Cómo escribir microservicios en Java para proyectos de alta carga utilizando WildFly Swarm". ¿De qué se trata todo esto?
Y entre ellos un vacío enorme. Bueno, ¿dónde estoy y dónde están todos estos microservicios? Resultó que para los "trochiks" no hay nada en absoluto. O lo hay, pero por buen dinero. Y cómo convertirse en un "buen tipo" de forma gratuita, sin registro y SMS, generalmente no está claro.
Certificación Oracle
Entonces decidí convertirme en un desarrollador certificado de Java. ¡Porque la frase "Soy un programador profesional de Java" suena muy bien y debería derrotar al futuro empleador en el acto! En cualquier caso, pensé tan ingenuamente.
OCA: Programador asociado de Oracle SE 8 Java Certified - 2 meses
Para esto, compré un libro:
OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808 Me llevó unos 2 meses dominar este libro. Realmente me abrió los ojos a muchos aspectos y me hizo comprender cómo funciona el lenguaje en detalle. Fue un buen avance. Pero no en la búsqueda de empleo, sino en la comprensión del lenguaje Java. Fui al examen con la confianza de que lo aprobaría bien y lo aprobé. Obtuve un 84% con el 65% requerido. Estaba inmensamente orgulloso de mí mismo.
El costo del examen es de $ 245. En Rusia, cuesta un poco más barato.
Estime el costo de una capacitación oficial de Oracle para prepararse para este examen OCP: Programador profesional certificado de Java SE 8 de Oracle - 4 meses
Entusiasmado me puse sobre el segundo libro de los mismos autores:
OCP: Guía de estudio de Oracle Certified Professional Java SE 8 Programmer II: examen 1Z0-809 Para el desarrollo del segundo libro, pasé 4 meses. Y resultó ser realmente difícil. Dos veces tomé descansos una semana, porque me resultaba muy difícil entender las expresiones lambda o multithreading. Además, la abundancia de clases de entrada y salida me estaba matando. Todos estos NIO y NIO2, que son muy similares y que necesita saber. ¿Qué hay una clase base, qué es una derivada? Fue una verdadera pesadilla. Como resultado, fijé la fecha del examen por un mes, luego la moví a dos semanas, luego otras dos. Me estaba quedando sin tiempo, una entrevista se avecinaba en el horizonte. Y necesitaba este certificado. No hice el examen por tercera vez y fui con lo que tenía. A diferencia del primer examen, ya no estaba seguro de un buen resultado. No estaba del todo seguro de poder pasarlo. No había rastro de orgullo pasado. La cantidad de información para comprender y recordar en el segundo libro es cinco veces más que en el primero. Pero también pasé este examen. Afortunadamente, las tareas de prueba en los libros resultaron ser más difíciles que las que estaban en el examen. Pero fue un gran avance ... para mí. Un avance en términos de conocimiento y comprensión de cómo funciona el idioma y qué herramientas ofrece.
El costo del examen también es de $ 245.
Puedo decir que estos dos libros me han dado más que todos los cursos en línea que tomé antes. Pero no sé si podría aprobar estos exámenes si no hubiera tomado los cursos antes. Con la ayuda de estos exámenes, pasé al nivel de "tres más". Y eso ya era algo. Pero tampoco pude implementar independientemente ningún proyecto interesante. WTF ????
Me di cuenta de que había alcanzado el máximo de lo que podía obtener, y seguir aprendiendo el idioma no tenía sentido. Además, entendí que mi conocimiento, que tenía tan difícil de obtener, desaparece rápidamente sin práctica. Era imposible tirar, y comencé a prepararme para la entrevista y a adquirir las habilidades que se podrían requerir al solicitar un trabajo.
¿Qué necesitas para conseguir un trabajo?
¡Necesito pasar por una entrevista y una entrevista técnica! No escribiré sobre la preparación para la entrevista. Este es un tema para un artículo separado. Escribiré solo sobre el conocimiento que se necesita para pasar una entrevista técnica.
Preparación para la entrevista - 1 mes
Compré el siguiente libro:
Cracking the Coding Interview, 6ª edición: 189 preguntas y soluciones de programación Lo recomiendo mucho Ella ayudará a prepararse para la parte técnica de la entrevista. Pasé alrededor de un mes en eso. Muchas tareas eran incomprensibles, por lo que encontré otra copia en ruso, y cuando me resultó completamente incomprensible, lo investigué.
Habilidades adicionales
En este punto, ya estaba monitoreando activamente el mercado laboral en mi ciudad y elegí la compañía en la que me gustaría trabajar. Tenían una vacante de Desarrollador Java. Entre las habilidades deseadas en la vacante estaban el conocimiento de Oracle SQL, GWT, Eclipse, SVN, Maven, Jenkins. No necesitaba un conocimiento profundo de todas estas tecnologías, necesitaba una comprensión simple de qué es y cómo funciona. Para que en la entrevista puedas decir, sí, lo sé, pero no profundamente.
Oracle SQL - 1 semana
Ya conocía SQL bastante bien, ya que, como cuestión de deber, tenía que hacer muchos informes arbitrarios para la administración. Pero era T-SQL de Microsoft, y aquí se requería SQL de Oracle. Tuve que comprar un libro para recordar los puntos principales y entender la diferencia.
OCA Oracle Database SQL Exam Guide (Examen 1Z0-071) Ejecuté este libro rápidamente en una semana. Y me di cuenta de que estoy 70% listo para aprobar otro examen. Pero ya no estaba a la altura.
SVN - 1 semana
Sistema de control de versiones distribuido SVN. GIT o SVN se utiliza en la mayoría de las empresas de desarrollo de software. No encontré cursos de SVN, así que decidí tomar un curso corto sobre GIT: " Control de versiones con Git " para mantenerme al día con el tema. Incluso pensé que si preguntaban sobre SVN, diría que estaba tratando con GIT. Y luego me orientaré en el acto. Si de repente algo no está claro, entonces siempre puedes decir que en GIT es un poco diferente. Y eso, por cierto, funcionó.
GWT - 3 días
La próxima tecnología en la lista es GWT. Después de pasar varios días buscando información, me di cuenta de que simplemente no puedo entender este Marco de Google. Si se simplifica, puede escribir sitios complejos en Java, y este Framework convierte su código en HTML + JavaScript y lo muestra en el navegador sin complementos ni complementos. Demasiado guay. GWT decidí saltarme.
Eclipse - 3 días
Eclipse es un entorno de desarrollo, la principal herramienta de desarrollo con la que trato todos los días. No tomé ningún curso especial. Vi varios videos en youtube, entendí las técnicas básicas. Lo intenté todo con mis manos.
Maven, Jenkins: 15 minutos.
Simplemente no queda tiempo para estas dos cosas. La entrevista ya era por la mañana, así que solo leí 2 artículos de Wikipedia y me fui a la cama.
Resumen
Tiempo
Me tomó alrededor de 18 meses, 2 semanas, 6 días y 15 minutos obtener el conocimiento y las habilidades necesarias para obtener el lugar de un desarrollador. Lo hacía por las tardes, pasando de 1 a 3 horas entre semana. Y alrededor de 5-6 horas los fines de semana.
Dinero
Estaba listo para gastar mi tiempo y no estaba listo para gastar dinero. Pero todavía tenía que gastarlos.
Cursos:
- Todos los cursos en línea que tomé gratis . Cómo hacer esto en coursera.org, escribí aquí .
Libros:
Exámenes
Gastos adicionales:
- Viaja a otra ciudad para los exámenes, como en mi no hay centros de certificación - 120 €.
Total: 702 €
Desafortunadamente, no funcionó completamente gratis. Compré libros en inglés porque El examen también está en inglés.
Resultado
Este conocimiento fue suficiente para pasar una entrevista y firmar un contrato con una compañía alemana suficientemente buena. Incluso diría que fueron suficientes con un margen.
También fueron suficientes para pasar por un período de prueba de seis meses y obtener un lugar permanente en el personal de desarrolladores.
Durante estos 6 meses de trabajo como desarrollador, cerré más de 200 aplicaciones para el desarrollo, finalización y corrección de errores en el código de subsistemas y módulos completamente diferentes. Y no rechacé una sola solicitud "porque no pude". Sí, tenía que y ahora tengo que entender cosas nuevas, buscar información, profundizar en los detalles. Estoy haciendo algo lentamente, pero es interesante para mí y el proceso continúa. ¡Y lo pagan bien!
Pero no pienses que soy muy inteligente. Soy el tipo más fácil que decidió cambiar su vida para mejor. Yo soy como tu Y si yo pudiera, ¡tú también puedes!
Express es el camino
De hecho, para convertirme en desarrollador, no me llevó 1,5 años, sino dos. Pero esto se debe a mi propia estupidez (lea sobre esto en mi canal de telegramas ). Directamente en la realidad, pasé 1,5 años. Pero no es necesario repetir mis errores. Creo que es posible lograr el mismo resultado en menos tiempo. Tiramos todo el exceso y obtenemos algo como esto:
Primera parte - 5 meses
Tomamos los siguientes cursos de especialización de Programación Java Orientada a Objetos: Estructuras de datos y más allá en el cursor:
Paralelamente, leemos un libro:
En base a los resultados aprobamos el examen.
Segunda parte - 2 meses
Tomamos los siguientes cursos de especialización de Estructuras de datos y Algoritmos :
Paralelamente, leemos un libro:
Tercera parte - 4 meses
Leemos el libro:
En base a los resultados aprobamos el examen.
Cuarta parte: 1 mes
Analizamos específicamente lo que el empleador quiere de quienes buscan trabajo y dedicamos una semana a cada una de las 4 tecnologías, programas o marcos más necesarios (Git, Eclipse, Maven, Spring, etc.). Además, estudiamos el área temática en la que trabaja el empleador, sus productos, si los hay, etc.
Año total. Durante un año, es bastante real.
Mantenerse en contacto
Sobre cómo cambié mi vida a los 40 años y me mudé con mi esposa y mis tres hijos a Alemania, escribo en mi canal de telegramas @LiveAndWorkInGermany . Escribo sobre cómo fue, qué es bueno y qué es malo en Alemania, y planes para el futuro. Brevemente y por negocios. Únete a nosotros, será interesante.