Hola Si está leyendo este artículo, lo más probable es que tenga una pregunta sobre cómo convertirse en programador. Quizás incluso haya decidido aprender el lenguaje de programación Java, pero no sabe dónde comenzar a aprender. También me atrevo a admitir que muchos se hicieron la pregunta: ¿es posible aprender Java en 1 año? ¿Qué pasa si no estudié en la universidad como programador? Ni siquiera tengo una especialidad técnica. ¿Podré? ¿Cuánto tiempo tendré que pasar en esta lección? ¿Qué tendrás que aprender? ¿Dónde comenzar a entrenar? Si tiene al menos una de estas preguntas, ahora está en el lugar correcto.
No es sorprendente que muchas personas se pierdan al principio, sin saber por dónde empezar, porque hay muchos idiomas, muchos libros de programación, varios tipos de entrenamientos, cursos de video e incluso tutorías individuales. ¿Cómo elegir lo que más le convenga y cómo lograr resultados en un plazo adecuado? Hablemos de todo en orden.
Motivación
Antes de comenzar cualquier tarea difícil que requiera mucho tiempo y energía, debe comprender por qué esto es para usted. Cada uno de nosotros debe responder tres preguntas importantes por nosotros mismos:
Por qué Es la pregunta más difícil. Subraya la motivación. Debe comprender claramente cuál es su objetivo y por qué se esfuerza. El dinero aquí no debería ser una razón clave, sino simplemente una adición importante. Si le gustan las tecnologías modernas, le gusta crear algo, puede sentarse durante horas en su negocio favorito, está listo para hacerlo de forma gratuita y tiene un pensamiento lógico, entonces es probable que estas clases sean solo para usted. Debes poder disfrutar del trabajo. Solo en este caso es posible lograr resultados realmente buenos.
Que? - Esta es una pregunta bastante lógica. Lo que hay que hacer para tener éxito en este asunto. Aquí, puede surgir la misma pregunta, qué idioma elegir y qué materiales se necesitarán para estudiarlo.
Como? - Cómo lograr resultados significativos en un marco de tiempo adecuado.
Si todos responden la primera pregunta de forma independiente, entonces podemos lidiar con las dos últimas juntas.
¿Qué idioma elegir?
Supongamos que con motivación, todo está bien y podemos pasar a la siguiente pregunta. Antes de elegir cualquier idioma, debe comprender si hay vacantes en el mercado laboral, si estarán en el momento en que haya dominado el nivel básico y comenzará su búsqueda de empleo. Además, la complejidad del lenguaje de programación juega un papel importante. Cuanto más complejo sea el idioma, más tiempo necesitará para dominarlo. Por otro lado, elegir lo que es más fácil tampoco siempre es bueno, porque la competencia puede ser mayor aquí que en otras categorías. Para determinar las perspectivas del idioma, debe analizar dónde se usa, qué tan amplio es el alcance y con qué frecuencia salen nuevos marcos en el idioma elegido. Aquí la calificación de los lenguajes de programación nos puede ayudar.
Creo que es hora de respaldar las palabras con números. Según varias encuestas, los cinco líderes son Java, JavaScript, C ++, C y Python.
Ejemplos de encuestas se pueden encontrar en abundancia en Internet. Estos son solo algunos de ellos:
Por ejemplo, según la versión de tiobe.com , que publica regularmente una clasificación de lenguajes de programación, Java ha seguido siendo líder durante muchos años. Los cinco primeros también tienen C ++ y Python.

Otra fuente autorizada de estadísticas, el sitio web Stackoverflow , que realizó encuestas entre sus usuarios, dice que JavaScript está en primer lugar, mientras que Java está en la quinta línea de la calificación. Pero aquí también se tuvieron en cuenta los lenguajes de marcado HTML y CSS.

Vale la pena considerar el hecho de que muchos programadores de Java, hasta cierto punto, pueden conocer JavaScript. Entre los desarrolladores de JavaScript, hay menos personas que también conocen Java. Esto agrega algunos puntos a JavaScript en una encuesta anterior.
Ahora veamos el número de vacantes y respuestas de candidatos en diferentes idiomas. Para no explicar durante mucho tiempo, daré solo unos pocos enlaces. Por ejemplo, el sitio web DOU.ua publica regularmente diversas estadísticas sobre vacantes, salarios, etc. Por ejemplo, puede observar tendencias interesantes en el crecimiento del número de vacantes en los idiomas principales, y allí mismo puede usar todo tipo de filtros que muestran la proporción del número de vacantes en diferentes ciudades y en diferentes idiomas. Los datos están disponibles tanto en forma tabular como gráfica. Entre los favoritos aquí, como de costumbre, están Java, Python, C ++, .NET. Además, la proporción del número de vacantes / respuestas para 2018 es mejor para C ++, 2-3 personas por lugar. Desafortunadamente, no pude encontrar estadísticas similares para otros países. Pero en Habré hay un buen artículo con infografías específicamente sobre Java.
En general, debe elegir uno de los idiomas principales y luego, al momento de la graduación, tendrá una buena oportunidad de encontrar un trabajo.
En mi humilde opinión, una buena opción para comenzar una carrera es Java. Lenguaje no demasiado complicado, un gran alcance y un número suficiente de vacantes. Se trata de Java que será la segunda mitad de nuestro artículo. Si tuviera que comenzar todo ahora, Python podría convertirse en una buena alternativa, ya que está ganando popularidad activamente.
Descripción general del ecosistema Java
Para que comprenda mejor lo que necesita para convertirse en un programador de Java, le daremos una pequeña descripción del ecosistema de Java. Sugiero mirar la siguiente ilustración. Ciertamente no cubre todos los aspectos, pero le dará algo de comprensión.

En el centro del universo, como de costumbre, tenemos el lenguaje Java en sí. Más específicamente, Java Core. Al momento de escribir este artículo, Java JDK 10 vio la luz. Oracle ha cambiado la política para trabajar con versiones de Java y ahora no hay una diferencia tan grande entre las versiones como cuando se lanzó Java 8, por ejemplo. Es esta versión la que sigue siendo la más popular y de uso frecuente en La gran mayoría de empresas y proyectos. Puede comenzar a aprender el idioma de forma segura con esta versión y aprender nuevos chips imponiéndolos en un conocimiento básico. Estudiar esta parte es quizás la tarea más difícil para un principiante. Tienes que dominar un nuevo tipo de actividad y comenzar a pensar de manera diferente. Una gran cantidad de material que necesita ser adquirido también se superpone a esto. La mayoría de los que recién comienzan a abandonar son precisamente en esta etapa. Todo depende de tu motivación.
Si aprender Java está bien, necesitará herramientas adicionales, como un sistema de control de versiones (Sistema de control de versiones) y un sistema para construir proyectos. Como VCS, recomiendo usar Git, que es el líder absoluto entre los suyos. Todos los demás sistemas, como Subversion y Perforce, son cosa del pasado. Además, puede usar los repositorios Github o GitLab, para su código, de forma gratuita. Con una alta probabilidad en la empresa, utilizará BitBucket de Atlassian. Pero esto es solo una cáscara. Si aprende a usar Git, todo lo demás no será esencial. Atlassian también es un proveedor de productos como Jira y Confluence, pero esto no juega un papel en sus estudios.
En cuanto a las herramientas para construir proyectos, hay dos opciones: Maven y Gradle. En mi opinión subjetiva, Maven es preferible, pero otros desarrolladores pueden tener su propia opinión. En principio, ambos marcos son equivalentes.
Después de familiarizarse con las cosas anteriores, vale la pena considerar qué camino seguir. En la figura anterior, verá cuatro direcciones principales de movimiento: Front-End (HTML, CSS, JS), Back-End (Hibernate, Spring, SQL), Android y Big Data. Estas cuatro partes, aunque separadas en la figura, en realidad están bastante estrechamente conectadas. Por ejemplo, si decide convertirse en un desarrollador de Java Full-Stack, tendrá que estudiar bien la parte Back-End y tener una comprensión general de los conceptos básicos de la parte Front-End. No debe esperarse que participe en el diseño del sitio, pero debe saber HTML. También debo señalar que en la sección Back-End, Spring se refiere principalmente a Spring Core. Es con esta parte del marco que necesita comenzar. Ahora ha crecido hasta tal punto que cubre todos los aspectos del desarrollo de Java. Alternativamente, Oracle está tratando de promover la especificación Java EE, pero no lo están haciendo muy bien.
En cuanto a BigData, también hay una gran cantidad de tecnologías. Básicamente, todos están diseñados para el almacenamiento distribuido y el procesamiento de datos distribuidos utilizando el enfoque Map-Reduce. La tecnología más antigua y famosa aquí es Hadoop.
Creo que no vale la pena explicar Android. Solo puedo decir que para escribir aplicaciones para esta plataforma móvil, tendrás que aprender Java.
Como habrás notado, hay muchas aplicaciones para Java, por lo que en el futuro previsible, habiendo aprendido Java, no te quedarás sin trabajo.
Por donde empezar Que leer
Obviamente, debe comenzar con lo básico, es decir, con Java Core Luego Maven, Git, y luego la dirección que prefieras.
Aquí tienes tres opciones. No consideramos la situación cuando elige esta especialidad en la universidad. Ella todavía no excluye esas opciones que se describen más adelante.
Opción uno - Libros JavaLa forma más antigua, tradicional y hasta ahora la más probada. Ventajas: la mayoría de los libros de editoriales conocidas están escritos por autores profesionales, muchos de los cuales tienen docenas de años de experiencia desarrollando y enseñando en prestigiosas universidades occidentales. Estos libros también son revisados cuidadosamente por los propios editores, por lo que la probabilidad de errores es muy baja. Especialmente cuando el mismo libro se vuelve a publicar una y otra vez a medida que se actualiza el idioma. Después de leer los libros básicos, debe pasar a los más avanzados. Hay pocos lugares donde puede encontrar temas de programación avanzada considerados con la misma profundidad. Desventajas: muchos libros están escritos en un lenguaje académico seco y son más como libros de referencia. El famoso autor Kay Horstmann mismo admitió repetidamente que no lee tales libros por completo, sino solo aquellos capítulos que lo ayudan a resolver el problema actual.
Entre los libros más populares y mejores para principiantes se encuentran los siguientes (los nombres están en inglés, en los casos en que el libro no se tradujo al ruso o no se encontró la traducción):
- Programación Java: Paul Daytel y Harvey Daytel. Este libro ha sobrevivido a muchas reimpresiones y es quizás el tutorial más completo de Java. Además del lenguaje en sí, los conceptos básicos de los algoritmos todavía se explican bastante bien allí.
- La filosofía de Java, Bruce Eckel , también se ganó un lugar de honor en la biblioteca de programadores. Explicaciones accesibles y comprensibles. Bueno para principiantes.
- Head First Java, 2nd Edition - Bert Bates, Kathy Sierra - un libro que se ha hecho popular por su capacidad de explicar conceptos complejos con ejemplos de vida simples. No es demasiado profundo en contenido, pero sigue siendo interesante.
- Java Biblioteca profesional Volumen 1.2 - Kay Horstmann. Este libro de referencia también se ha asentado en los estantes de muchos desarrolladores de Java. Es solo de la categoría de esos libros de los que se leen capítulos separados para resolver problemas, y no todo el libro.
- Java 8. Una guía para principiantes - Herbert Shildt. Yo mismo no leí este libro, pero escuché varias críticas positivas. Lea o no, decida por usted mismo.
- Estructuras de datos y algoritmos en Java - Robert Laforet. Uno de los mejores libros sobre estructuras de datos.
- Java Programación efectiva - Joshua Bloch. Un libro de Java un poco más avanzado. Contiene una gran cantidad de consejos y trucos sobre cómo puede mejorar su código. Recientemente lanzó la 3ª edición de este libro. Recomiendo leer.
- Concurrencia de Java en la práctica - Brian Goetz. Es una buena y antigua guía de subprocesos múltiples en Java que no pasa de moda.
Recomiendo leer los últimos tres libros a aquellos que ya están familiarizados con los conceptos básicos de la programación Java, pero planean desarrollar más. No se darán ejemplos de libros sobre varios tipos de marcos. También se han escrito bastantes.
La segunda opción: cursos de video sobre programación y no solo ...Los cursos en video y varios tipos de lecciones en video han comenzado a ganar gran popularidad. La idea en sí es muy buena y personalmente me gusta. Este tipo de material de capacitación es especialmente adecuado para imágenes, para personas que perciben mejor la información visualmente. Además, también puede usar la comprensión auditiva. Una ventaja es el precio asequible. Además, en YouTube puedes encontrar una gran cantidad de lecciones gratuitas, entre las cuales hay bastante buenas. Entre las deficiencias de las lecciones en YouTube, debo señalar la frecuente fragmentación y la falta de sistematización, así como el hecho de que el material en ellas se presenta de manera bastante superficial. Pero incluso aquí hay excepciones en el buen sentido de la palabra.
Las lecciones alternativas de YouTube pueden ser tales sitios:
Safari O'Reilly : una gran colección de libros, videos tutoriales y seminarios web sobre diversos temas. La calidad de los materiales es una gran ventaja. Libros y videos de capacitación son grabados por reconocidos profesionales en el campo. El principal inconveniente aquí es el precio. $ 400 por año si paga de inmediato o $ 480 si paga mensualmente. Todos los materiales están en inglés. Si decide suscribirse, le recomiendo materiales preparados por la propia editorial O'Reilly, generalmente son mejores que las lecciones de otros editores.
Pluralsight es un buen lugar para tutoriales en video. La elección de los materiales sobre los temas es amplia, pero en su mayoría son más superficiales que en el caso anterior. Todos los materiales aquí también están en inglés. El precio de suscripción es de $ 29 por mes, o 299 por año. Aquí, como en el caso anterior, hay acceso a los materiales mientras se paga la suscripción. No puedes comprar uno o dos cursos para siempre.
Udemy es una gran biblioteca de varios cursos. Se diferencia en que los cursos aquí no son solo en inglés, sino también en ruso. La política de precios aquí es completamente diferente de los recursos anteriores. Aquí puedes comprar un curso y permanecerá contigo para siempre. Al elegir un curso sobre Udemy, debe prestar atención a la cantidad de horas de lecciones en video, la calidad del sonido (por lo general, varias conferencias están disponibles sin registro), las reseñas de otros oyentes. Aquí quiero recomendar el curso "Java. De lo simple a lo complejo . En términos de calidad (número de horas) al precio, este es quizás el curso Udemy más rentable en ruso. Siguiendo el enlace obtienes un precio fijo con un 90% de descuento. Solo 10 con un pequeño dólar por 33 horas de excelente contenido de video. En el proceso de preparación del curso, el autor analizó una gran cantidad de cursos, libros y materiales de capacitación, y también aplicó una experiencia de siete años en el desarrollo de aplicaciones a nivel empresarial.
Opción tres: cursos de tiempo completoOtra opción de entrenamiento que puede llevarlo a su objetivo preciado. Aquí todo es ambiguo. Por un lado, ir a cursos de tiempo completo que espera que se muestren y que le cuenten todo lo que necesita. Por otro lado, tienes que aprender de todos modos. Ningún maestro puede enseñarte lo bueno que es. Aquí, como en todos los demás lugares, todo depende de la motivación personal y la perspicacia personal. Así que digo con confianza que no hay escapatoria de libros y lecciones en video. La ventaja puede ser que un buen maestro te ayudará a comprender aquellas cosas que no podrías resolver por tu cuenta y acelerará un poco el proceso de aprendizaje.
Aquí, como en el caso de los video cursos, debe abordar cuidadosamente la elección. Como en otras áreas, la demanda crea oferta y se espera que haya muchos cursos de tiempo completo de baja calidad en el mercado. Las razones de la mala calidad son diferentes y la razón no siempre es el maestro. Un problema común es que para aumentar los ingresos, los cursos escolares obtienen demasiados estudiantes, e incluso el mejor entrenador no podrá dedicar suficiente tiempo a cada estudiante. Cuanto más grande sea el grupo, más diversos serán los estudiantes en el grupo. Al final, el grupo se divide en más fuerte y más débil. Al final, o pisoteas en el acto, porque el maestro debe explicar lo mismo varias veces, o si la mayoría del grupo tiene más experiencia que tú, comienzas a quedarte sin remedio. Después de un corto tiempo, se pierden intereses y queda claro que el dinero se desperdició. Al elegir los cursos, preste atención a las revisiones de aquellos que ya han completado los cursos, la cantidad de horas del curso, cuántas personas hay en el grupo. Un indicador importante es la disponibilidad de pruebas de entrada y una descripción de los requisitos mínimos.
¿Qué opción elegir?Aquí, todos deberían tener su mejor opción. Según el autor, la mejor opción es una combinación de las tres opciones en un grado u otro. Definitivamente sin libros no funcionará. Si decide tomar un curso de programación a tiempo completo, primero debe comprender si esta actividad es adecuada para usted. Si es así, antes de ir allí, lea al menos un libro, mire un par de videos tutoriales. En primer lugar, entenderás claramente el tuyo o no. En segundo lugar, con una base mínima, puede plantear las preguntas correctas y, en última instancia, sacar el máximo del curso. En tercer lugar, puede ir a un curso donde se requiere un estudiante un poco más que las habilidades básicas de computación.
Una vez que haya adquirido un conjunto mínimo de conocimientos, sería bueno encontrar un mentor. El placer no es barato, pero si el mentor es bueno, le ahorrará mucho tiempo. , — , , , , , .
?
. , . , . . Hello World , . . , . — , .
. , . . . , .
— . , . , . . , .
hackerrank . , . .
GitHub GitLab. , . - . , . , , , , . , . .
En este nivel, es probable que pueda pasar de contrabando a código abierto. Si aún no hay trabajo, practique allí. Usted se beneficia, la sociedad se beneficia.
Paralelamente al repositorio, es hora de preparar un currículum y comenzar a superar los umbrales de las empresas. Recuerde incluir enlaces a proyectos en su repositorio. Obtenga tantas entrevistas como sea posible. La capacidad de pasarlos es una habilidad muy importante que al final te traerá ingresos adicionales.
En conclusión, quiero desearles buena suerte. Recuerde, Facebook y Apple también fueron alguna vez pequeñas empresas con alguien en un garaje o dormitorio. Solo necesito aprender. No importa cuántas horas al día estudies, sino cuántos días seguidos lo haces.