Trabajo en la corporación ABC y este es mi primer trabajo. En los últimos dos años, he rediseñado por completo el sistema DevOps de la corporación ABC utilizando el lenguaje de programación X en el que soy experto. El sistema anterior era "espagueti", lo que le costó a la empresa horas en esfuerzos de depuración, etc. El nuevo sistema sigue los estándares ISO/IEC 9126 y ha acelerado los esfuerzos de desarrollo de la empresa.
Debido a esto, la compañía me ha considerado el "mejor desarrollador de X" (lo que encuentro gracioso... porque todo lo que hago es literalmente escribir el código más simple posible mientras mantengo la consistencia. También tengo un poco de debilidad por la unidad. pruebas y documentación) y me han pedido que me haga cargo de un proyecto de alto riesgo.
El proyecto de alto riesgo (llamémoslo System X ) está escrito en el lenguaje de programación X y es... malo. El proyecto consta de una sola clase de Dios que consta de más de 60 funciones miembro. Para colmo, cada función miembro realiza llamadas a otras funciones miembro y algunas funciones tienen más de 100 líneas de largo.
Se pone peor. System X sincroniza eventos entre sistemas escritos en el lenguaje de programación Y, en el que no soy experto. Llamemos a este Sistema Y. El Sistema Y es mucho más complejo que el Sistema X , completamente indocumentado, y nadie tiene tiempo para "enseñarme" cómo funciona.
Un error en el par System X/Y podría costarle significativamente a la corporación ABC en forma de litigio.
El problema
La corporación ABC está molesta porque tardo mucho en solucionar los problemas de los clientes. La corporación ABC asume que "mágicamente" sé todo sobre el Sistema X/Y porque soy competente en el lenguaje de programación X, mientras descuido el hecho de que el Sistema X está mal escrito y el hecho de que nunca he recibido capacitación con respecto a cómo funciona el Sistema Y. obras.
Entré esperando lidiar con el código heredado... Creo que esta es una expectativa justa... lo que no esperaba es esperar que se solucionen los problemas con el sistema X heredado, que controla el sistema Y no documentado, lo que puede costar el compañía severamente si tuviera que cometer un error, todo con un entrenamiento extremadamente mínimo.
Estoy empezando a quemarme mucho por esto...
Ya le comuniqué esto a mi gerente y él más o menos tiene una actitud de "no tengo tiempo... lo siento". ¿Cómo puedo comunicarle a mi gerente que esto es realmente muy serio?
También estoy seriamente preocupado por las perspectivas de mi carrera a largo plazo si cometiera un error grave tan temprano en mi carrera.
Desafortunadamente, es un caso de "¡Bienvenido a la industria del software!"
Como me dijo un profesor en la universidad: "Si los ingenieros construyeran edificios como los programadores construyen software, la civilización se derrumbaría el martes..."
Hay 100 de tales preguntas en este sitio, a lo largo de las líneas...
"Soy un nuevo programador con mi primer trabajo. Estoy conmocionado y asombrado por la mala calidad de la ingeniería/gestión/bases de código de software. ¿Qué hacer?"
Nunca, nunca, nunca te quejes, preguntes, te quejes, te quejes, preguntes, preguntes o agites. No diga nada más que "SÍ, SEÑORA" (o señor) y luego ->
Arreglar todo. ¡Repárelo según los estándares ISO/IEC 9126!
Hacer grandes cantidades de dinero.
Gane drásticamente más dinero cada año.
Gracias a Dios que hay tan pocos programadores competentes, y de ahí los puntos 3 y 4.
--
Notas al pie:
Usted menciona extensamente "lo importante" que es el software. (En su situación particular, se vincula o lo que sea y hay dinero involucrado). Bostezo. Todo el software es increíblemente crítico. Espere hasta que esté escribiendo software para volar aviones . ¡Agárralo y acéptalo como la norma! Esta es tu vida. Cada día tendrá exactamente esa cantidad de presión. Cada día. ¡Disfrutar!
Mencionas "agotamiento". ¿Podría ser que esté trabajando más de 40.00 horas a la semana? Si es así, DETENGA ESO. ¡DETENLO AHORA!
Usted menciona "expectativas de tiempo poco realistas". (A) cada cosa, alguna vez, en el universo, que cualquier programador haya hecho, ha tomado más tiempo de lo esperado . (B) cada vez que un programador ha hecho algo, todos los involucrados se han quejado de que ha tomado demasiado tiempo. Es como decir "wow, hoy salió el sol". Ignórelo por completo, haga su trabajo y, cuando se le solicite un tiempo estimado, simplemente dé su mejor estimación.
SystemX es una sola clase de Dios de más de 60 funciones miembro. Cada función miembro realiza llamadas a otras funciones miembro. Algunos tienen más de 100 líneas
Extremadamente simple, solo envíe esto en un correo electrónico
"Hola Steve. Revisé System-X. Es una clase de Dios con 63 funciones de miembro [SER ESPECÍFICO], 138.2 loc promedio. Me tomará 2 días reescribir cada uno correctamente".
Es fácil.
Nota: no te quejes de que "no sabes" el idioma Y. Tienes que saber todos los idiomas. O aprenderlos en el acto. Son solo algoritmos y estructuras de datos: los idiomas son menos que nada. ¡Vea los puntos 3 y 4!
Debido a esto, la compañía me ha considerado el "mejor desarrollador de X" (lo que encuentro gracioso... porque todo lo que hago es literalmente escribir el código más simple posible mientras mantengo la consistencia. También tengo un poco de debilidad por la unidad. pruebas y documentación) y me han pedido que me haga cargo de un proyecto de alto riesgo.
Mantener las cosas tan simples como pueden ser, consistentes y en buen estado de funcionamiento: ¿por qué cree que eso es evidencia en contra de que sea bueno en esto?
El proyecto de alto riesgo (llamémoslo System X) está escrito en el lenguaje de programación X y es... malo. El proyecto consta de una sola clase de Dios que consta de más de 60 funciones miembro. Para colmo, cada función miembro realiza llamadas a otras funciones miembro y algunas funciones tienen más de 100 líneas de largo.
Está bien, pero tu jefe probablemente no entienda nada de eso. ¿Qué significa para un gerente tratar de dirigir una empresa?
Su trabajo no es solo explicar la tecnología. Dado que usted es el único en este proyecto, su trabajo también es traducirlo a cosas con las que la gerencia pueda trabajar.
Se pone peor. System X sincroniza eventos entre sistemas escritos en el lenguaje de programación Y, en el que no soy experto. Llamemos a este Sistema Y. El Sistema Y es mucho más complejo que el Sistema X, completamente indocumentado, y nadie tiene tiempo para "enseñarme" cómo funciona.
Como esto. No sabes cómo funciona el Sistema Y. Tu jefe quiere que lo arregles. Entonces, necesita instrucción en el Sistema Y. Ahora, nadie en su empresa tiene tiempo o entiende Y. Pero su jefe quiere que funcione.
Así que aquí es donde hablas con los gerentes sobre las cosas que los gerentes entienden. "Jefe, si quiere que esto funcione, necesito la capacitación Z, y debe autorizar a la empresa para que pague por ella. Aquí hay un enlace al sitio web de una empresa que realiza estas capacitaciones".
Debe comunicar la gravedad de esto a su gerente.
Reserve una reunión con su gerente, que sea de una hora de duración. Asegúrate de que entienda que lo que quieres decir es importante.
Antes de la reunión, revise el código que está manteniendo y haga una lista de todos los problemas estructurales y de codificación. Se específico. Cree un documento que contenga esta lista y, para cada uno, escriba por qué este problema está ralentizando la corrección de errores.
Por ejemplo:
"La clase HumungousController es una 'clase de Dios', lo que significa que toca todas las partes del sistema. Es probable que cualquier cambio en él rompa algo más. Esto significa que cualquier cambio que haga debe probarse exhaustivamente y, por lo general, muchos otros problemas se solucionan antes". se puede enviar a los clientes.
Además de esto, presente una propuesta de refactorización/rediseño que le gustaría hacer para mitigar el problema. Conviértalo en algo que pueda hacer en pasos.
En su reunión, guíe a su gerente a través del documento. Asegúrate de que salga con este mensaje:
La estructura existente del código es un impedimento para corregir mi error. Si lo dejamos así, corregiré los errores a la velocidad que lo hago ahora, que es muy lenta. Alternativamente, la empresa puede hacer los cambios que recomiendo, lo que significa que eventualmente podremos solucionar los problemas mucho más rápido y responder mejor a los clientes. Como tercera opción, podemos reescribir el sistema desde cero, haciéndolo más mantenible y, finalmente, reemplazar el sistema antiguo por el nuevo.
Es elección de su gerente cuál de ellos elige. Pero usted le habrá dado la información que necesita para hacer su elección, y el hecho de que haya dado información detallada y precisa sobre las opciones le sentará bien a usted, sea cual sea su elección.
La corporación ABC está molesta porque tardo mucho en solucionar los problemas de los clientes.
Simplemente van a tener que vivir con eso. Toma tanto tiempo como sea necesario, especialmente si necesita probar todo a fondo antes de llamarlo "hecho".
¿Cómo puedo comunicarle a mi gerente que esto es realmente muy serio?
Su gerente no lo considera lo suficientemente serio como para hacer algo al respecto. Trabaja con eso.
También estoy seriamente preocupado por las perspectivas de mi carrera a largo plazo si cometiera un error grave tan temprano en mi carrera.
No serás tú quien sea demandado si todo sale mal. Es problema de la empresa. Ocúpese de sus asuntos lo mejor que pueda. El peor de los casos es que tenga que pasar a otro empleador.
Conocer el idioma le da una ventaja para comprender el próximo producto con el que trabaja que está escrito en ese idioma.
Con esto en mente, no te convierte en un experto en el próximo producto. Aún tendrá que leer el producto (y comprenderlo) para convertirse en un experto en él.
Si sus gerentes tienen dificultades para entender esto, dígales que saber (su idioma) no les da ninguna idea de los libros que aún no han leído. Pero, después de leer los libros, pueden comenzar a imaginar cómo se podrían reescribir mejor los libros.
setenta y ocho
DrMrstheMonarch
DJClayworth
CalamardoXO
time to learn X + time to actually do project + error margin because estimating is harder when you don't even know the language
. Puede que les guste o no escuchar esto, pero te están pagando para que lo digas .