La ingeniería de software es un campo gratificante. Hay muchos “caminos”. Ciertamente, el camino que tomé no es el mismo que la mayoría de la gente toma en estos días. Pero incluso hoy hay muchos caminos válidos.
La ingeniería de software en sí misma es un campo sobre el ciclo de vida que produce software. No solo escribiéndolo. Tales cosas como comprender el problema, definirlo, convertirlo en tareas, dividir las tareas entre diferentes equipos, volver a armarlo para probar, probar, implementar, mantener y solucionar problemas (desde la etapa más temprana hasta la etapa de producción). Según su descripción, supongo que está hablando de escribir el software en sí.
Enseñé algunas escuelas de codificación diferentes en los últimos dos años y cada una adopta un enfoque muy diferente, pero al final de 12 semanas, los graduados consiguen trabajo en alguna parte. Una ruta de autoaprendizaje podría verse así:
- ¿Qué distingue a un gran ingeniero de software de uno bueno?
- He sido ingeniero de software durante 20 años. ¿Puedo aplicar un puesto de director de ingeniería en otra empresa ahora?
- ¿Dónde debo buscar proyectos de aplicaciones móviles subcontratados?
- ¿Cuáles son las oportunidades profesionales para ingenieros?
- ¿Hay alguna diferencia entre ingeniería de software, programación y desarrollo web?
- elige un idioma Recomendaría Javascript y HTML / CSS juntos. Puede construir cualquier cosa con él, incluidas las aplicaciones móviles.
- Aprende los conceptos básicos del idioma. (bucles, variables, funciones, módulos, etc.)
- Cree algo como una aplicación de chat, algo que procese archivos, algo que requiera acceso a datos
- Obtenga más información sobre la programación orientada a objetos (objetos, herencia, polimorfismo, modelado de objetos)
- Cree algo más, como un visor de fotos, una aplicación de carrito de compras simple, algo
- Obtenga información sobre la depuración (como herramientas de Chrome, registro, pruebas unitarias, TDD, etc.)
- Obtenga más información sobre la programación funcional (mapa, reducción, funciones de orden superior, devoluciones de llamada, asíncrono, etc.
- Comience a aprender sobre NodeJS / Express [o Hapi]
- Comience a aprender sobre SQL (MySQL o PostgreSQL) y datos relacionales
- Cree algo más, como una aplicación con reconocimiento de geolocalización (geocaching, hacer un recorrido en algún lugar, hacer turismo, planificar un viaje con estaciones de servicio calculadas y paradas de comida después de cierta distancia, etc.)
- Aprenda sobre las mejores prácticas (el libro eficaz de Javascript, el código limpio, los patrones de diseño de Javascript, que en realidad no tiene mucho que ver con los patrones de diseño en el sentido tradicional, sino un buen libro para JS)
- Aprenda sobre el ciclo de vida del software, como Agile (específicamente, iteraciones), pero también sobre otros ciclos de vida, como cascada, RUP, programación Xtreme, etc., pero practique una variante de agile.
- Cree algo más como una API HTTP / REST de algún tipo, tal vez extendió esa aplicación de reconocimiento geográfico a algo en lo que otros se enganchan, o para que otros puedan usar la aplicación de chat que escribió anteriormente
- Obtenga más información acerca de OOP, como: patrones de diseño, refactorización, SÓLIDO, SECO
- En algún momento, ahora estará listo para comenzar a usar bibliotecas que lo hacen todo por usted, pero lo mejor es que no comience allí, debe saber cómo funcionan las cosas porque cada lenguaje, herramienta, nuevo marco es lo mismo en su esencia, reimplementar cualquier otra cosa que ya se haya hecho. Hará que tus habilidades sean más portátiles.
Mencionaste que estás creando una aplicación. Recomendaría seguir construyendo otra aplicación por el bien de la diversidad de habilidades, encontrará muchas cosas que no mencioné que ayudarán, pero tal vez a medida que crezcan sus habilidades, siga construyendo su aplicación a medida que sus habilidades mejoren con lo que usted ‘ he aprendido Esta es una versión condensada de lo que escribí anteriormente sobre esta pregunta de Quora que tiene más detalles.
Encuentre algunos amigos programadores, nada mejor que tener un mentor (o compañero) que tenga experiencia.
Enseño en las escuelas de codificación y, aunque son diferentes, la fórmula general es algo como esto:
- Aprenda un poco por su cuenta sobre usando Aprender a codificar haciendo | Code School o Codecademy: aprende a codificar, interactivamente, gratis o algo
- Empezar. Continuarán donde dejaron las habilidades requeridas. Conducirán directamente a algo como el modelado de objetos, llamando a las API REST, un poco sobre HTML / CSS, NodeJS, Express, bases de datos (MongoDB y SQL), seguridad y algunos otros misceláneos. cosas. Todos los lugares que enseñé tenían soluciones parcialmente completadas y tuviste que llenar los espacios en blanco
- Estructuras de datos y algoritmos. No todos lo enseñan, es necesario, creo. Los que lo hacen, profundizan en varios niveles de detalle. Algunos superficialmente, algunos mucho más deliberados a lo largo de todo el programa.
- Proyectos Tú eliges qué construir.
Y brindan una comunidad sólida de pares y mentores para superarlo en 12 semanas.
Hacerlo solo no funcionará de la misma manera. Pero para el ritmo personal, el mapa que mostré anteriormente (y en el enlace que proporcioné) debería ayudarlo a llegar allí. Por encima de eso, no tengas miedo de usar Learn JavaScript, React, Angular y más, ¡profundamente! o Pluralsight | Desarrolladores en línea ilimitados, TI y cursos creativos o cursos en línea de Udemy: aprenda cualquier cosa, en su horario como recursos de aprendizaje. Realmente necesitas estar expuesto a lo que los grandes practicantes del campo tienen que decir sobre su oficio. Google, StackExchange, codeproject.com, etc., son tus amigos. Usalos, usalos a ellos.
Cada vez que quieras saber cómo funciona algo, ve a explorarlo y construirlo. Así es como crecí. Construí casi todo como un ejercicio de aprendizaje (y aún lo hago, 20 años después), incluso si reutilizo algo ya construido al completar un proyecto para trabajar.
En resumen, el camino es este:
- Aprende los fundamentos de . Los conceptos no cambian.
- Aprende a poner en uso
- Práctica práctica práctica
- Aprenda sobre el SDLC
- Sigue mejorando pero siempre estarás aprendiendo