La creación de software es un proceso de dos etapas:
1) Diseñar el sistema.
2) Escribir código para implementar el sistema diseñado.
Para ser un buen diseñador de sistemas, necesita saber sobre:
1.1) Obtención de requisitos: para comprender lo que está construyendo, por qué lo está construyendo y cómo sería el resultado final.
1.2) Arquitectura de software: para construir sistemas escalables que cumplan con los requisitos descritos. Identifique las tecnologías principales, comprenda los méritos y deméritos de cada una y seleccione las tecnologías que mejor se adapten a los requisitos de su proyecto. Por ejemplo, ¿debo usar RoR o PHP, MySQL o Postgres, Unix o Apache, etc.
- ¿Debo abandonar la universidad mientras tengo un trabajo?
- ¿Debo quedarme en una startup prometedora o seguir un doctorado en visión por computadora y aprendizaje profundo? Tengo 25 años y mi salario actual es superior al promedio en el Área de la Bahía. Mi oferta de doctorado es de un importante grupo de investigación en Asia, que lleva 4 años en completarse.
- ¿Importan las calificaciones universitarias al encontrar un trabajo siempre que obtenga un título?
- ¿Cuál es una mejor ruta hacia un MBA: un BTech + MBA o un premio de economía en DU + MBA?
- ¿Cuál es la diferencia entre BBA y BBA (finanzas)?
1.3) Análisis y mitigación de riesgos: identifique los riesgos clave que podrían afectar su proyecto en particular y descubra una forma de mitigar esos riesgos. Por ejemplo, mi MVP Bob se va a casar y no trabajará durante un mes, ¿cómo lleno los zapatos de Bob? ¿Contrato a un contratista por un mes? ¿Cómo me aseguro de que la ausencia de Bob no retrase el proyecto?
1.4) Planificación y gestión de proyectos: para traducir la complejidad del proyecto en términos de horas hombre, realizar un seguimiento del progreso del proyecto y asegurarse de entregar un proyecto de buena calidad de manera oportuna. Por ejemplo, ¿cuántas horas hombre se requieren para esta tarea? ¿Cuántos ingenieros necesito? ¿Cómo hago un seguimiento del progreso?
1.5) Procesos de desarrollo de software: para diseñar e implementar procesos de mejores prácticas que regirán sus esfuerzos de desarrollo y garantizarán que entregue productos de buena calidad.
Una vez que tenga todo esto cubierto, salte al # 2 arriba: escriba el código.
Las academias de codificación son excelentes para el # 2 pero no tanto para el # 1. Le ayudarán a conseguir un trabajo enseñándole a utilizar las herramientas necesarias para crear software, no para diseñar uno.
Para ser un buen gerente de producto, necesitará un conocimiento profundo en administración de software (algunos temas anteriores). Para adquirir ese conocimiento, puedes:
1) Ascienda (Ingeniero de Software a Ingeniero de Software Senior a Ingeniero Principal a Gestión de Producto) trabajando en una empresa de software, aprendiendo habilidades importantes (Certificaciones | Project Management Institute) en cada etapa, lo que tomará entre 5 y 10 años.
2) Vaya a la escuela y obtenga un título en Ingeniería de Software (~ 5 años), desarrolle la experiencia que ya ha acumulado y conviértase en Gerente de Producto.