Tengo una pregunta que ha sido planteada por mi último trabajo (más bien pasante).
Solo para poner las cosas en contexto: tengo 21 años y he terminado mi segundo año de universidad antes de eso, tengo alrededor de 2 años de experiencia haciendo trabajos de administración / control de calidad de sys y básicamente puedo decir que he visto cuán diferente Sectores de TI operados. Avancemos a los tiempos actuales y aquí estoy yo obteniendo un puesto de interno en una de las principales instituciones de investigación del Reino Unido.
Lo que tengo que hacer es crear algunas herramientas internas utilizando una combinación de tecnologías, principalmente AWS / Java / Bash, para obtener la imagen. Todo está bien, estoy haciendo mi trabajo PERO no estoy contento. ¿Por qué es eso? Porque se espera que trabaje en un asunto ad-hoc. Eso es crear cosas rápidamente, sin perder tiempo diseñando. Mi gerente dijo explícitamente que se esperaba que se "apresurara" a través de los problemas a medida que surgieran, y nosotros esencialmente. Como consecuencia, resultó que las cosas tenían que volverse a hacer y rediseñar, y todavía no son perfectas. En lo que respecta a las pruebas, manténgalo al mínimo, siempre que parezca que funciona, entonces está bien.
¿Tengo la culpa de estar en desacuerdo con esta forma de conducir el trabajo? ¿Es incorrecto querer pensar sobre el sistema como un todo, luego enfocarse en diferentes componentes y ver cómo podrían interactuar, para concentrarse en diferentes "puntos clave" que podrían resultar problemáticos en el futuro? ¿Es un delito querer hacer un buen trabajo y no un "trabajo rápido"? ¿Es un error o una actitud equivocada querer investigar las estructuras de datos aplicables a un problema para poder elegir lo mejor en función de un conjunto de problemas en particular? Según tengo entendido, el bit de "Ingeniería" en "Ingeniería de software" tiene que ver exactamente con esto: investigue su dominio del problema y encuentre una solución informada y luego refine según sea necesario.
Estuve en una entrevista en una oficina de Arm en el Reino Unido y me mostraron su sala SCRUM y parecía que tenían una idea bastante buena de cómo administrar su proyecto: tenían una cartera de pedidos, tenían métricas de cuánto tiempo cada uno el problema puede tardar en resolverse, lo habitual para SCRUM, completamente diferente de la forma en que se ejecutan las cosas "aquí"
¿He construido una idea equivocada sobre la industria del software en general? Me gustaría escuchar tu opinión sobre eso. Quiero decir que "ingresé" al desarrollo de software simplemente porque quiero crear cosas, simple y llanamente, pero quiero crear cosas de calidad. Quiero ver mi software utilizado en varios escenarios, quiero verlo a prueba de balas, ¿no es esa la fuerza impulsora para todos los ingenieros de software? Creo que todos pueden ser programadores / programadores simplemente aprendiendo la sintaxis, pero para mí donde comienza la verdadera diversión es cuando realmente tienes que idear un diseño que sea factible en el mundo real.
Solía hacer mis tareas universitarias con solo mirarlas y comenzar a codificar directamente y fácilmente podía obtener calificaciones superiores al 75% y nunca aprecié realmente el módulo del "ciclo de vida del desarrollo de software". Pero ahora, cuando vi en el mundo real lo malo que es trabajar sin ningún proceso formal y la frustración inherente a una situación en la que no sabes si los requisitos van a cambiar mañana (oh, dije que no ¿Tiene un análisis de requisitos claramente definido?)
Realmente me gusta creer que acabo de conseguir un puesto en el que algunas personas solo necesitaban un código mono para hacer su trabajo sucio y este no es el caso de cómo funciona el mundo del software en general.
because I'm expected to work in an ad-hoc matter. That is create things quickly, without spending time on designing
- Bienvenido a The Real World ™, donde hay plazos y se espera que las empresas produzcan resultados.