¿Es común trabajar como desarrollador sin tener la posibilidad de saber cosas vitales en el proyecto? [cerrado]

Un poco de historia:

Soy uno de los dos desarrolladores de software de mi empresa y actualmente estamos trabajando con C++ en máquinas integradas. Mi compañero de trabajo trabaja con C desde hace mucho tiempo y ahora mi jefe quería mejorar el desarrollo usando C++. Después de una pasantía dedicada a hacer aplicaciones web, mi jefe me pidió que trabajara con estas máquinas sin saber nada de la máquina en sí.

Cuando asumí que mi jefe sabía que solo había hecho cosas en C ++ en la escuela y que no había hecho nada más personalmente, pero que quería saber más sobre cómo desarrollar software en máquinas integradas.

La fuente de mis problemas:

Entonces, como dije, comencé de nuevo como una rosa desarrollando software para máquinas que nunca antes había visto. Estos tienen un programa muy complejo construido de una manera muy compleja que a veces carece de las capacidades de programación orientada a objetos y C++ (dado que todo estaba construido en C antes (lo cual no sé y mi jefe lo sabía)) y estoy teniendo muchas dificultades. entender cómo funciona, por qué algo se construyó de cierta manera, qué tipo de idea hay detrás de algo, etc. etc. etc.

No puedo preguntarle al Senior ya que hizo cosas en C y no está programando esta nueva máquina (o de todos modos lo está haciendo con C y no quiere aprender C++) y de todos modos está demasiado ocupado.

Sin embargo, a pesar de todos estos problemas, logré controlar la situación y al menos comencé a saber cómo hacer algunas pequeñas cosas, y para mi jefe todo iba bien... hasta ahora.

El problema real :

Ahora, después de un mes, debido a dificultades de la empresa, me piden que use las funciones del Arquitecto y no las que estaba haciendo por mi cuenta. Él es el hombre detrás de escena que escribió todo el sistema operativo de la máquina y no puedo contactarlo desde que dejó la empresa y puede ayudarme justo cuando lo llaman para "consultoría".

El problema es... que no puedo saber qué hace y se comporta una función, porque el comportamiento de la función está cerrado en archivos *.a. Cuando pregunté a través de uno de los raros correos que pude enviar, la respuesta fue "el nombre de la función y los parámetros deberían aclarar las cosas, de todos modos tienes mucha documentación".

En realidad... a esta documentación le falta información (está como un 30% completa para hacerse una idea). Y de todos modos, explica en general lo que hace una función, suponiendo que sé cómo funciona el sistema operativo, cuál es el propósito de cierta idea u otras cosas aleatorias que no podía ni imaginar.

Tengo muchos problemas en mente, cuál es dejar esta empresa y buscar desarrollo web (que realmente me llamó la atención), pero antes de acostumbrarme a ideas extrañas, solo quiero preguntar:

¿Es común trabajar como desarrollador sin tener la posibilidad de saber cosas vitales en el proyecto?

En realidad estoy entendiendo un poco aquí y allá. Pero realmente me piden que resuelva un rompecabezas gigante sin saber cómo se verá la figura final. Como este es mi primer trabajo, no sé realmente qué hacer, tal vez esto es común en las empresas y solo me estoy desanimando.

Preferimos preguntas con respuestas prácticas aquí, entonces, ¿qué está tratando de lograr? Si una persona al azar en Internet dice sí o no a esto, dudo que eso te resuelva algo.
Realmente no sé si es común haber escondido tal cantidad de cosas. Y no puedo preguntar mejor. ¿Cómo hubieras preguntado..? He hecho mi mejor esfuerzo para pedir pero no tengo mucho tiempo aquí en el trabajo y me siento muy estresado, lo siento...
"Estos tienen un programa muy complejo creado de una manera muy compleja que a veces carece de las capacidades de programación orientada a objetos y C++ (dado que todo se creó en C antes ": este tipo de pregunta de situación técnica puede ser más adecuada para los programadores Stackexchange. Y usted puede Quiero ver cómo se realiza la programación integrada en C++ (y C) en general.
Sí, no estaba seguro de qué Stackexchange tenía que elegir, pero esto está más relacionado con el lugar de trabajo que con problemas muy técnicos y, de todos modos, pensé que hay muchos programadores en esta comunidad debido a StackOverflow, lo siento si es el lugar equivocado para hacer una pregunta como esta.
@MarkWuji Qué sitio depende de cuál sea su pregunta. Si desea saber cómo programar cuando no tiene una imagen completa del sistema, probablemente eso pertenezca a Programadores. Si desea saber cómo plantear el problema a su gerente, es más apropiado aquí. El problema es que no especificas lo que quieres hacer aquí. "¿Es común?" es una simple pregunta de sí/no donde la respuesta dependerá de la industria, el sector y la preferencia personal.
Bueno, obtuve la respuesta que necesitaba de todos modos, así que gracias; pero no siempre tengo tiempo para aclarar todo, ya sabes, pasé casi 1 hora para hacer la pregunta de manera adecuada y, de todos modos, tus comentarios no agregan ninguna crítica constructiva como "la próxima vez escribe un '¿qué debería ¿sí?' pregunta ^^ ", si queremos ser tan precisos. Además, el inglés no es mi primer idioma y no lo uso todos los días.
Tengo la sensación de que el verdadero problema es tu jefe, que a) no tiene ni idea; o b) usarlo como experimento, ya que aparentemente conoce C++/OOP. Ahora quizás haya descubierto que no funciona bien para el entorno integrado. La solución es explicárselo al jefe, si es posible.

Respuestas (3)

Es completamente normal que se le pida a un desarrollador que haga milagros en este tipo de situaciones, en una mala compañía .

He trabajado en cooperativas donde el propietario de la empresa esperaba que superara a Bill Gates y revolucionara su negocio. Hice lo mejor que pude, pero seamos honestos, no resultó exactamente como ellos esperaban.

El problema es que muchos gerentes no entienden el desarrollo de software .

No entienden cuán diferente puede ser un idioma de otro. No entienden que ciertas áreas de desarrollo no están muy relacionadas con otras (desarrollo web versus programación de máquinas, por ejemplo). No entienden el cronograma para entregar un paquete de software complejo, las implicaciones de cambiar el alcance del proyecto, incluso de una manera aparentemente pequeña, etc.

Estos son problemas con los que te vas a encontrar constantemente en el transcurso de tu carrera. Deberá aprender a comunicar sus inquietudes, estimar los plazos de entrega (tómese el tiempo que cree que tomará y multiplíquelo por 3 es una buena regla) y también aprenda cuándo es el momento de GTFO.

Esta empresa suena caótica y mal organizada. Además, la persona a cargo claramente no tiene idea de qué diablos le está pidiendo y le brinda poco o ningún apoyo.

En este punto, puede hablar más, expresar sus preocupaciones y explicar cuál es su propio plan y cronograma para cumplir con sus demandas.

Por ejemplo, puede solicitar unos días para simplemente experimentar con la biblioteca y ampliar sus conocimientos. Es posible que no les guste, pero debe explicarles que, sin una mayor comprensión, es probable que no tenga éxito en sus tareas.

También me gustaría abordar el comentario que le has hecho a Kilisi:

no tengo intención de estudiar c++ en casa o algo así

Como desarrollador, tendrás que mejorar constantemente tus conocimientos a lo largo de tu carrera. Sólo un desarrollador muy pobre se estanca.

No estoy diciendo que debas sacrificar tu vida personal, sin embargo, si se requiere un poco de esfuerzo adicional para tener éxito a largo plazo, entonces no seas tan negativo acerca de dedicar unas horas de tu propio tiempo a aprender. una nueva tecnología

En última instancia, si lo que quiere hacer es desarrollo web, entonces debe buscar un nuevo trabajo.

En cuanto al comentario que solo quería explicar, no es que realmente no quiera estudiar en casa, ¡en realidad lo hago, por supuesto! Pero no quiero hacerlo porque me piden lo imposible en mi empresa (porque me apetece llevarme un trabajo a casa). ¡Por lo demás, entendiste el punto!
@MarkWuji: hay tantos aspectos diferentes del desarrollo. Si no desea concentrarse en el desarrollo de máquinas, debe buscar un nuevo trabajo antes de ser "vinculado" como desarrollador de C++. Busque un trabajo en desarrollo web mientras su experiencia en el campo sea aún bastante reciente/relevante. Uno o dos años después, puede ser muy difícil conseguir un trabajo de desarrollador web si todo lo que ha estado haciendo mientras tanto es C++. Tuve dificultades para hacer la transición después de 3 años de desarrollo de back-end porque las empresas no confiaban en que estaba al día con las últimas tecnologías.

No es común asignar a alguien nuevo en la industria tales tareas a menos que se considere capaz. Parece que te han tirado al fondo (lo cual es bastante común).

Tienes que hablar con tu jefe al respecto. Específicamente, necesita construir su base de conocimiento con el producto solo para comenzar. Puede avanzar después de esa conversación.

En la primera entrevista el vicepresidente y el presidente me dijeron que me iban a hacer unas pruebas para hacer un primer acercamiento al programa. Esto nunca sucedió; lo que pasa es que mi jefe me dice que haga las cosas poco a poco. Pero ahora decidió que "es suficiente y puedo empezar a hacer algo serio", pero no tengo intención de estudiar C++ en casa o algo así. ¡Así que siento que estoy atrapado en algo más grande que yo!

Aparte de las otras respuestas. Se espera que los desarrolladores usen repositorios para almacenar su código. Incluso si dejan la empresa, deben dejar la fuente a la empresa que ha pagado por su trabajo. Creo que recuperar el código fuente será útil no solo para usted sino también para la empresa que puede perder este conocimiento si se olvida. Es posible que necesiten cambiar una función en un archivo .a y nadie podrá cambiarlo.

Supongo que este código era de su propia empresa. Hay algunos casos puntuales en los que el código fuente no está disponible. Eso podría incluir:

  1. Un acuerdo de confidencialidad u otras razones contractuales
  2. Preocupaciones de seguridad o seguridad nacional. Especialmente si trabaja para empresas militares o de seguridad.
  3. Empleados que destruyen todos los rastros o su código. (no solo poco profesional sino también criminal).
  4. Freelance se niega a liberar el código cuando no se les paga.
  5. A veces, los gerentes pueden estar preocupados de que codifique contra la implementación en lugar de la interfaz. Si la implementación de la función cambia, dejará de funcionar.

Cuando se codifica contra el código de otras compañías, esta situación es bastante común e inevitablemente dificulta las cosas. Un buen código generalmente no necesita demasiada explicación, pero un buen código no es la norma y el código fuente es útil para depurar cuando no sabe qué sucede. Buena suerte.

El Arquitecto formaba parte de la empresa hasta hace poco tiempo como empresa externa. Así que me estás diciendo que es común; bueno, está bien :) pero también es más difícil, ¡especialmente en mi posición!
Pero según tengo entendido subcontrataron al arquitecto, no a la obra. Eso generalmente significa que su código debe estar disponible para su empresa, aunque depende de la política de la empresa, el contrato y las leyes nacionales. Vale la pena comprobar que este código no se pierda. Si encuentra un error en sus funciones, ¿cómo espera solucionarlo?
Puedo agregar que en realidad tiene algunos errores. Pero gracias por el consejo, le preguntaré a mi gerente.