Habilidades no disponibles actualmente en nuestro equipo

Tenemos un personal de TI de 5 personas:

  • 1 senior con conocimientos de C y PHP.
  • 1 senior con conocimientos de Java y base de datos.
  • 1 senior con habilidades de Flex y Actionscript. Obtuvo algunas habilidades de C# con .Net 2.5, ya que siguió un entrenamiento, pero en realidad nunca las usó, por lo que ya no vale mucho.
  • 1 pasante y otro entrante en los próximos días. Ambos partirán en septiembre.
  • 1 aprendiz, lo que significa que está a tiempo parcial en nuestra empresa y a tiempo parcial en su escuela de ingeniería, en un ciclo de 3 meses. Se fue la semana pasada y volverá en junio.

Todos los seniors trabajan en la empresa desde hace 4 años y están totalmente comprometidos.

Además de nuestra aplicación para compartir fotos en línea, tenemos una aplicación de escritorio de Windows que permite grabar DVD de video con las presentaciones de diapositivas realizadas con la aplicación en línea. Está escrito con Zinc, una alternativa a Adobe AIR, con algo de código Imapi y FFMpeg.

Actualmente, esta aplicación es un dolor para todo el equipo porque tiene errores debido a las limitaciones técnicas de Zinc. Así que queremos rehacerlo desde cero en C#, lo que nos permitirá obtener un software mucho mejor.

Y aquí viene el verdadero problema: no podemos darnos el lujo de contratar a otro ingeniero senior, y actualmente no tenemos las habilidades internas de C#.

Aquí hay algunas ideas de solución:

  • póngase en contacto con una empresa de consultoría de TI para alquilarnos expertos en C#. No me gusta mucho esta solución. Trabajé en el negocio de servicios de TI, y sé lo que valen algunos de sus supuestos expertos...
  • encontrar un desarrollador de C# independiente
  • contratar a un experto en C# por un contrato de corta duración
  • contratar una empresa de consultoría de TI para hacer el trabajo

Tengo que confesar que ninguno de estos realmente me hace feliz. ¿Qué piensas? ¿Alguna idea innovadora?

¿Realmente necesita hacerse en C#?
En realidad, debe hacerse en la plataforma .Net. Pero por lo que sé, hacer negocios serios con .Net significa C#. No puedo imaginar que esto se haga con VB, y es probable que los expertos en otros idiomas sean incluso más difíciles de encontrar que C#...
Interesante pregunta. ¿Se relaciona con la gestión de proyectos?
Esto debe cerrarse o trasladarse a Programmers SE. Esta no es una cuestión de gestión de proyectos.
¡Por supuesto, es una cuestión de gestión de proyectos! Un equipo que no tiene las habilidades para un proyecto y busca soluciones al problema, ¿qué más podría ser?
technical management@Traroth : parece que esto podría ser una software managementpregunta. Pero también puedo ver cómo podría ser una pregunta de PM y entiendo su punto.
¿Por qué TIENE que ser .NET? ¿No están disponibles sus alternativas en la plataforma JAVA? Esto tendría un par de ventajas, 1 - su desarrollador de Java podría hacerlo 2 - multiplataforma.
Offtopic: no hay una versión de .NET Framework 2.5 como menciona en la pregunta. Las versiones 1, 1.1, 2, 3, 3.5 y 4 se usan y están disponibles.
.NET 2.5... ¿acabas de decir .NET 2.5? Honesto error, estoy de acuerdo.

Respuestas (6)

Esto suena como una decisión clásica entre construir y comprar. Recomendaría reunir al equipo para redactar una especificación funcional de cómo debería ser su software, qué debería hacer, cómo se instalará y cómo se mantendrá. Incluya una declaración de "Desarrollo preferido en C# para flexibilidad futura. Se aceptan/no se aceptan propuestas para usar lenguajes alternativos" (su elección).

Luego envíe una RFP a las tiendas de desarrollo personalizado y descubra cuál podría ser el precio para simplemente "comprarlo". Después de tener ese precio , puede decidir entre construir o comprar. Si la construcción sigue siendo más barata, la especificación funcional probablemente seguirá siendo útil.

Además, asegúrese de comprar el código fuente y los derechos de autor. Los abogados son útiles para contratos como este.

¿Podría aprovechar las habilidades de Actionscript y Flex y hacerlo en AIR?

Como cuestión de gestión de proyectos, recomendaría contratar a un experto con un contrato a corto plazo. Le brinda control, flexibilidad, la oportunidad de volver a contratar en el futuro y la posible transferencia de conocimiento de tener a esa persona en la empresa (especialmente si las personas de su equipo pueden acompañarlos/acompañarlos).

Un par de tiros salvajes:

  1. ¿Estarán los pasantes en casa el tiempo suficiente para que, si consigues un mentor, recuperes tu valor?
    El mentor tendría que ser un experto en C#, por supuesto, tal vez un contratista independiente a tiempo parcial (dependiendo de la cantidad de tutoría que se requiera).

  2. ¿Los desarrolladores senior están comprometidos con las tareas correctas? ¿Le vendría bien a su C# senior un poco de tutoría para refrescar sus conocimientos y ayudar a unirse con los pasantes?

Edité la pregunta. El punto 2 es interesante, y vale la pena darle algunas reflexiones. El problema es que actualmente está sobrecargado y probablemente no pueda irse a un entrenamiento, por ejemplo. Pero si contratamos a un freelancer o algo así, probablemente podría adquirir las habilidades, creo.

Si necesita hacerse en .NET framework, puede alternar a otro lenguaje de programación.

Consulte la tabla de idiomas compatibles con .NET Framework .

De acuerdo con esta tabla, .NET es compatible con el lenguaje Java y tiene un experto en Java en su equipo.

No estoy seguro de si es factible programar Java en .NET framework. Tal vez debería preguntar esto en los programadores SE o en stackoverflow .

Si la decisión de cambiar el lenguaje de programación no es posible y necesitas solucionar la falta de habilidad de tu equipo, te recomendaría lo siguiente:

A corto plazo:

  • Contrate a un desarrollador de C# independiente para comenzar el trabajo. (Esto será importante si necesita esta aplicación de grabación de DVD rápidamente)
  • Asigna tiempo para reuniones con tu equipo y el freelancer, para que puedan dar seguimiento al desarrollo.

A largo plazo:

  • Asigne tiempo para que su superior desarrolle competencia en C#.
  • Proporcione capacitación en C# a su equipo. (Esto será importante para el mantenimiento de la aplicación una vez finalizada, mejor que pagar por el soporte)

Después de un tiempo, el senior podrá trabajar con el freelancer haciendo que la transición sea más fluida.

Bueno, pensé que mi respuesta ayudaría. Pero no puedo mejorar mi respuesta sin un comentario que explique por qué está siendo rechazado. ¿Qué hay que desalentar en mi respuesta? En Meta hay una pregunta en la que jmort253 indica que se debe colocar un comentario para ayudar al OP o al que responde a mejorar.
La pregunta no es sobre cuestiones técnicas, sino sobre la gestión de proyectos. Se han tomado decisiones y no estoy aquí para cuestionarlas, sino para encontrar una solución que las encamine.
@Traroth: Tienes razón. Pierdo el foco de la pregunta. No estaba claro para mí que alguna modificación técnica no es posible ya que dijiste "queremos rehacerlo desde cero en C #". Pensé que era una posible solución (o solución temporal) para cambiar el lenguaje de programación. Si este problema técnico no está en discusión, editaré mi respuesta para que se ajuste mejor a su pregunta.
@Traroth, parte de la gestión de proyectos es analizar todas las opciones, no se puede culpar a las personas por hurgar y presionar para obtener más información. Realmente no me gusta lidiar con preguntas del tipo "solo porque sí".

Encuentra un pasante de verano en una universidad

En lugar de contratar a un experto en C#, podría valer la pena buscar una alternativa de contratar a otro pasante o contratar a un estudiante a tiempo parcial. Si lo necesita para un proyecto temporal, creo que un estudiante motivado y hábil podría hacer un trabajo tan bueno como un profesional. También podría ofrecer un incentivo para contratarlo a tiempo completo después de completar los estudios. Los acuerdos contractuales pueden ser diferentes de un país a otro, pero debería ser más fácil rescindir el contrato de estudiante.

Hola, Elchin, sugeriría una edición que explique por qué esta es una buena solución y cómo podría resolver el problema. Parece obvio, pero expandir esto un poco lo convertiría en una respuesta más sólida que nos ayude a cumplir con las 6 pautas subjetivas de las buenas publicaciones . Además, trate de evitar formular su respuesta como una pregunta, ya que las respuestas tienen la intención de responder a la pregunta. ¡Espero que esto ayude!
@ jmort253, claro, ¡gracias por las sugerencias!
Buenas ediciones @Elchin. ¡Gracias por tu ayuda! :)

Lo que realmente hicimos: mi colega con capacitación previa en C# se está poniendo al día en sus habilidades de C# y comenzó a desarrollar la nueva versión del software.

Programamos el proyecto con el fin de reemplazar gradualmente los diferentes elementos escritos con Zinc por código C#. Primero, la parte para incrustar la interfaz de usuario de Flash, luego la parte que se usa para capturar imágenes de la presentación de diapositivas y, finalmente, la parte que pega las diferentes partes del sistema, incluido el codificador de video FFMpeg incorporado con un gran efecto de túnel.

De esa forma podemos mantener un software funcionando en todo momento, y al mismo tiempo mejorarlo gradualmente. Y mi colega tiene más tiempo para ponerse al día, sin involucrarse en un proyecto monolítico.

Actualmente, el proyecto va por buen camino y avanza a buen ritmo. Las primeras mejoras son realmente prometedoras.