Mi jefe tiene un mal caso de "No inventado aquí" [cerrado]


66

Mi departamento se especializa en convertir datos de clientes en nuestro esquema de base de datos para que puedan usar nuestro software.

En este momento, tenemos aplicaciones de C # que toman un IDataReader(99% del tiempo que es un SqlDataReader), realizan un poco de limpieza y mapeo, lo insertan en un DataRowobjeto y luego usan a SqlBulkCopypara insertarlo en nuestra base de datos.

A veces (especialmente cuando la base de datos de origen contiene imágenes como varbinaryobjetos), este proceso realmente puede empantanarse con una transferencia SQL desde el servidor a la aplicación para luego girar a la derecha y volver al servidor.

Siento que si reescribimos algunas de las conversiones como paquetes SSIS , podría acelerar mucho las cosas. Sin embargo, el mayor obstáculo con el que me encuentro es cuando mi jefe, al estilo de No inventado aquí , retrocede y dice: "¿Qué pasa si Microsoft deja de admitir SSIS? Tendremos todo este código obsoleto y estaremos jodidos".

Esta no es la primera vez que toco un "¿Qué pasa si eliminan esa característica ...?" respuesta de mi jefe No tengo tiempo para escribir la conversión a la antigua usanza, autodidacta SSIS, y también escribir la nueva forma de demostrar / probar los beneficios (Ninguno de nosotros ha utilizado SSIS, por lo que habría un período en el que tiene que aprender a usarlo).

¿Que debería hacer en esta situación? ¿Dejar de impulsar la nueva tecnología? ¿Esperar hasta que salga del departamento (soy la segunda persona más mayor en el departamento después de él, pero podrían pasar años antes de que renuncie / se retire)? ¿Encuentra una nueva forma de hacer que deje de tener miedo a las herramientas de terceros?


3
Puede encontrar útil la discusión de c2 sobre NotInventedHere .

15
Mi primera pregunta desde una perspectiva empresarial es: Is it broken?- Esta es una pregunta booleana. "Podría mejorarse". es equivalente a "No".
Joel Etherton el

39
No estoy seguro si esto es NIH. Me parece que su jefe tiene una preocupación válida, teniendo en cuenta cómo Microsoft obtuvo el historial de dejar caer el soporte para la tecnología con la que los desarrolladores estaban construyendo un software serio ...
Mason Wheeler

1
@JoelEtherton No del todo. El rendimiento no es booleano y puede afectar a los usuarios finales dependiendo de dónde esté la desaceleración. Esta es (en parte) una pregunta de rendimiento.
Izkata

9
@MasonWheeler si piensas de esa manera, todo debería escribirse en C o ensamblado. Quiero decir, ¿qué pasa si Microsoft deja de admitir ASP.Net?
Earlz

Respuestas:


110

Tomaré una decisión sobre esto desde el punto de vista administrativo, pero tenga en cuenta que soy consciente de que no tengo todos los detalles. Resumiré lo que veo:

  1. Desarrollador de nivel medio, lo llamaremos "Scott", recomienda una reescritura de código heredado en SSIS para mejorar el rendimiento del proceso importante ProcessA.
  2. ProcessA se está comportando actualmente en un estado funcional sin problemas importantes conocidos.
  3. ProcessA está escrito con herramientas patentadas que utilizan conocimientos comunes o potencialmente tribales para mantener.
  4. La recomendación de reescribir requerirá nuevas herramientas para soportar.
  5. El personal actual no tiene experiencia / conocimiento documentado con las nuevas herramientas.
  6. Las nuevas herramientas son reemplazos relativamente recientes de herramientas más antiguas, y el soporte para estas herramientas puede cambiar razonablemente dentro de 4 trimestres comerciales.

Desde esta perspectiva, todo lo que veo es un gran desembolso de dinero por parte de la compañía para mejorar un proceso que no se rompe . Desde un punto de vista técnico, puedo ver la apelación, pero cuando se llega al final, simplemente no tiene sentido comercial hacer este cambio. Si tenía personal disponible con experiencia documentada con SSIS y puntos de referencia para mostrar una mejora masiva en este proceso (tenga en cuenta que la mejora masiva DEBE equivaler a $$$), el resultado podría ser un poco diferente. Sin embargo, tal como está ahora, tendría que estar de acuerdo con la gerencia (en algún lugar acaba de morir un árbol).

Si desea fomentar la adopción de SSIS y potencialmente liderar este refactor, necesita obtener esta experiencia y capacitación con proyectos más pequeños y menos importantes. Proporcione puntos de referencia y soporte para SSIS, y asegúrese de que toda la infraestructura y soporte estén en su lugar antes de que la administración considere siquiera realizar el cambio. Una vez que tenga la herramienta en uso en otro lugar, las personas del equipo con experiencia en su uso, y un factor de "comodidad" empresarial que el soporte no cambiará y desarraiga todo, será más probable que influya en alguien a su punto de vista. Sin eso, estás ladrando el árbol equivocado con ese argumento.

Por estúpido que parezca, a veces la "mejor" forma no es la mejor.

Editar: en respuesta a algunas actualizaciones de la pregunta, publicaré una ligera modificación en mi respuesta.

Si el proceso está experimentando dificultades de algún tipo, reescribirlo seguirá siendo una empresa costosa. Es posible que desee considerar cuál sería el costo de ajustar el código existente en contra de reescribir el paquete. Considere los impactos no solo en el software sino también en cualquier proceso de interfaz humana. Al intentar conseguir que la gerencia acepte una reescritura, siempre se reducirá al dinero. A menos que pueda demostrar que la angustia actual está costando dinero ahora o que se volverá grande en conjunto, la administración aún no verá el beneficio. Este costo puede no ser necesariamente de naturaleza financiera. Si la desaceleración compromete un sistema que causa tiempo de inactividad, introduce vectores de intrusión o algún otro síntoma "difícil de cuantificar", es posible que deba encontrar una manera de traducir ese problema en un equivalente de riesgo monetario. Un vector de intrusión, por ejemplo, puede conducir a una intrusión que podría resultar en datos perdidos, robados o corruptos. La compañía podría perder reputación o puede fallar una auditoría de seguridad necesaria. La clave es lograr que el gerente en cuestión reconozca los beneficios cuantificables del cambio.


Un problema que veo con este argumento es que la felicidad de los desarrolladores está en juego. Esto nunca se tiene en cuenta en estas decisiones comerciales. Parece que siempre le cuesta al negocio al final perder desarrolladores experimentados.
Joe Phillips

@ JoePhillips: No diría que no se tiene en cuenta, pero creo que es más una consideración agregada. En el nivel más simple, el negocio debe ganar, pero si los malos patrones y prácticas continúan con el tiempo, los servicios o productos sufren directamente por las prácticas o por el tedio de los desarrolladores. Lo archivaría bajo el descargo de responsabilidad "No tengo todos los detalles" en mi publicación. Esta pregunta podría ser una indicación de un problema mayor, pero eso sería muy difícil de determinar con los detalles que figuran en la pregunta.
Joel Etherton el

Felicitaciones, buena respuesta y edición sólida. @JoePhillips desafortunadamente, los desarrolladores generalmente reciben la peor parte de las decisiones fiscales de la administración. Pensé en una característica realmente agradable para un proyecto; Incluso recibí comentarios de los clientes de que lo querían, pero no garantizaba suficientes ingresos, por lo que la idea fue descartada. Y así es como la galleta se desmorona o se quema. Entonces puedo ver ambos lados aquí.
Greg

55
Dado que esta respuesta es aceptada, es un punto discutible, pero siento que esto pierde el espíritu de la pregunta, completamente. El tercer párrafo de la pregunta implica que el proceso actual está roto. Por supuesto, si solo ve la definición limitada de "siempre que funcione", entonces no está rota. Pero esa es una definición inútil. Un proceso también se interrumpe cuando hay una forma obvia de mejorarlo drásticamente. Desde una perspectiva comercial, esto significa que podría ser mucho más barato, más confiable, etc. Su respuesta es, en última instancia, ludita, reacia al riesgo y contra cualquier tipo de mejora.
Konrad Rudolph

@KonradRudolph: No sé cuándo se agregó ese párrafo, pero eso no estaba allí cuando publiqué mi respuesta. No había nada en la pregunta original que sugiriera que el proceso estaba experimentando algún deterioro. Leer los primeros comentarios puede ver que esto fue casi un consenso entre las personas que respondieron a la pregunta.
Joel Etherton el

37

Romper cosas es una habilidad

He trabajado en demasiados lugares que adoptaron el argumento de "si no está roto" hasta el punto de que no logran innovar, y cuando finalmente se ven obligados a innovar, reaccionan en exceso cambiando todo . Simplemente porque carecen de la experiencia de romper cosas .

Se necesita madurez, habilidad y experiencia para romper cosas.

Los equipos de desarrollo que siempre juegan a lo seguro son los más fáciles de superar para un competidor. Solo los equipos que han fallado, cometido errores y cosas rotas pueden realizar evaluaciones de riesgo honestas.

Manteniendo el status quo

Si bien es cierto, el sistema actual cumple con los requisitos comerciales actuales. Eso no es cierto para los futuros cambios imprevistos de esos requisitos. Como dice el viejo proverbio "la fortuna prefiere lo preparado".

Esta pregunta no tiene nada que ver con SQL o el rendimiento. Se trata de hacer la pregunta "¿hay una mejor manera?" y no tener miedo de probar una alternativa.

Su jefe sufre un caso de Keeping The Status Quo .

Los mayas

Nada funciona realmente a la perfección.

Los mayas seguían cultivando sus alimentos en la ladera de las montañas. Hasta que todos los nutrientes fueron eliminados, y no tuvieron forma de alimentar a su gente. Siguieron haciendo las cosas de la misma manera hasta que fue demasiado tarde.

Suponiendo que tendrá tiempo para solucionar un problema cuando el problema se presente es un error.

ingrese la descripción de la imagen aquí

¿Qué hacer?

Su jefe sufre de un caso de condicionamiento. Las personas que aceptan el statu quo a menudo lo hacen porque carecen de la capacidad de tomar decisiones difíciles. Cuando se enfrentan a un desafío, tenderán a elegir la opción más cercana a la que conocen.

El miedo por él es una gran motivación. El miedo a lo desconocido o las condiciones cambiantes sacude su perspectiva de cuál es el status quo. Él tenderá a tratar de devolver las condiciones a la normalidad lo más rápido posible.

Necesita presentar ideas de una manera no conflictiva. Intenta encontrar un terreno común entre lo que te gustaría hacer con lo que ya es el status quo. Presente argumentos que reduzcan su miedo al cambio y ofrezca garantías de que desea completar una tarea que no causará un cambio significativo.

Tomar pasos de bebé

Sería mejor ofrecer cambios que muevan el proyecto en la dirección que desee, pero a través de pequeños proyectos incrementales. En lugar de eso, golpea a tu jefe con la gran pregunta sobre cómo apoyar SSIS. Ofrezca crear una capa de separación en el código que le permita agregar métodos "alternativos" para procesar tablas con archivos adjuntos grandes. Luego puede avanzar para recomendar SSIS con todos los requisitos previos que ya se han agregado al proyecto. Esto reduce el riesgo que su jefe imagina al aceptar el cambio.

Toma tiempo

Mi experiencia ha sido que quienes toman riesgos mantienen un proyecto en movimiento, y los encargados del status quo son como una pared de ladrillos. La persistencia es su única opción para romper sus barreras. Espere seguir escuchando No a sus consultas.

Cuando llega el momento de innovar. Su jefe recurrirá a usted rápidamente, porque demuestra valentía ante el cambio. Algo que buscará una persona de status quo, y será recompensado por sus esfuerzos. Incluso si ninguna de sus consultas anteriores ha sido aceptada. Rápidamente se convertirá en un activo insustituible en una empresa que se enfrenta a un cambio que abarca el no cambio.


22

Siento que si reescribimos algunas de las conversiones como paquetes SSIS, podría acelerar mucho las cosas. Sin embargo, el mayor obstáculo con el que me encuentro es cuando mi jefe, al estilo de No inventado aquí, retrocede y dice: "¿Qué pasa si Microsoft deja de admitir SSIS? Tendremos todo este código obsoleto y estaremos jodidos".

En mi opinión, el escepticismo sobre SSIS es válido.

  • Los desarrolladores experimentados odian las cajas negras, y hay mucha magia que ocurre dentro de un paquete SSIS.
  • El soporte de control de código fuente para los paquetes SSIS es muy deficiente. Diferenciar y fusionar archivos SSIS dtsx puede ser una pesadilla si sus paquetes dtsx no son lo suficientemente modulares.
    • Por el contrario, las aplicaciones de consola C # son muy transparentes. Siempre puedes seguir el código para descubrir qué está pasando mal.

Además, considere que su jefe está en apuros si algo sale mal.

  • Por lo tanto, tiene derecho a tener la opinión principal / única sobre el asunto.

No tengo tiempo para escribir la conversión a la antigua usanza, autodidacta SSIS, y también escribir la nueva forma de demostrar / probar los beneficios (Ninguno de nosotros ha utilizado SSIS, por lo que habría un período en el que tiene que aprender a usarlo).

¿Que debería hacer en esta situación? ¿Dejar de impulsar la nueva tecnología? ¿Esperar hasta que salga del departamento (soy la segunda persona más mayor en el departamento después de él, pero podrían pasar años antes de que renuncie / se retire)? ¿Encuentra una nueva forma de hacer que deje de tener miedo a las herramientas de terceros?

Le recomiendo que aprenda SSIS lo suficientemente bien como para que pueda demostrar sus beneficios.

Y si, después de su autoestudio, encuentra que SSIS ofrece ventajas significativas sobre el enfoque más "tradicional", y aún no puede convencer a su jefe de cambiar de rumbo, le recomiendo que encuentre un trabajo diferente en el que pueda usa SSIS.


44
Además de no ser compatible con el control de fuente, SSIS todavía no tiene funciones definidas por el usuario , a pesar de ser, con mucho, la característica más solicitada en Microsoft Connect durante muchos años. Debido a esto, las soluciones SSIS tienden a ser descuidadas y tienen código copiado por todas partes. Lo más probable es que la implementación de cualquier lógica no trivial de C # en SSIS haga que el código sea mucho menos limpio y mucho más difícil de mantener.
BlueRaja - Danny Pflughoeft

11

La respuesta que casi siempre recibes de la mayoría de los tipos de gerentes es algo como:

"No vale la pena, funciona ahora y costará tiempo cambiar".

Y en general, esto es válido. Sin embargo, este no es siempre un argumento válido, porque el problema central que rodea el síndrome "No inventado aquí" no es si las cosas funcionan o no, sino que la tecnología se está reescribiendo sin sentido , desperdiciando horas de la empresa y restando valor sustancial del producto que se entrega.

Debe determinar si no se ha inventado aquí antes de decidir qué hacer. La tecnología interna puede haber sido escrita por alguna razón .

Señales de que la tecnología se reescribe por una razón:

  • La tecnología que está vendiendo también es el producto . Si usted es un proveedor de bases de datos, usar el código MySQL, sin importar cuánto tiempo ahorre, es una idea peligrosa por muchas razones.
  • La tecnología interna está bien mantenida y resuelve eficazmente las deficiencias de la solución estándar, al tiempo que proporciona una funcionalidad base comparable.
  • La tecnología mejora la productividad de todo el equipo de desarrollo, y los nuevos desarrolladores se venden fácilmente por qué está en uso.
  • Hay otros ejemplos en los que la compañía ha adoptado con éxito otras tecnologías externas .
  • Su negocio se vería afectado de manera inmediata y grave si la solución OTS fuera descontinuada o rota.
  • El negocio es tan grande que tiene los recursos para escribir herramientas de alta calidad a bajo costo (por ejemplo, Google puede escribir una base de datos que cueste menos de una licencia MS SQL de $ 1000 / asiento)

En otras palabras, el equipo comprende los inconvenientes de volver a resolver problemas ya resueltos, pero juiciosamente hizo excepciones donde tenía sentido desde una perspectiva comercial.

Señales de "No inventado aquí":

  • Parece que todo es interno , y hay excusas para todo: "uh, fue demasiado lento", "uh, es Microsoft, odiamos a Microsoft", "uh, parece muy difícil de usar", etc.
  • Para los casos en los que se está utilizando tecnología externa, escuchas "sí, apesta y planeamos escribir el nuestro eventualmente ".
  • Los propietarios de esos componentes no tienen otros trabajos en los que sean capaces de trabajar.
  • Verá que la mayoría de los nuevos desarrolladores llegan con un conjunto de habilidades ampliamente aceptado, pero les lleva un tiempo considerable avanzar a las herramientas internas.
  • Después de un análisis cuidadoso, se hace evidente que cambiar de la solución OTS a una solución OTS personalizada u otra en el "¡y si se descontinúa!" escenario tendría un impacto comercial mínimo . Por ejemplo, si String.Join()se eliminaran de .NET Framework, la reimplementación a un StringJoin()método personalizado sería trivial.

En otras palabras, NIH es el patrón de no ser objetivo y realista en los casos en que se utiliza tecnología externa en lugar del propio código.

Cuando la tecnología se reescribe por una razón, sus superiores deben elogiar y apreciar sus inquietudes. Debería haber sido una decisión cuidadosa cuando se implementó la tecnología, y revisar la decisión ocasionalmente es bueno para el negocio. Las cosas cambian con el tiempo y es posible que tenga un punto válido. Si puede proporcionar números sobre el tiempo perdido en el pasado, los costos proyectados para cambiar y otra información, podría (en teoría) presentar un caso para el cambio.

Ten en cuenta que, dada tu experiencia, es posible que no estén de acuerdo con tus números, pero de todos modos, al menos deberían escucharte. Puede tomar tiempo ganar respeto.

Si la conversación no puede ser mencionada, incluso si eres cortés, podría ser "No inventado aquí". En cuyo caso, lo más probable es que sea un problema político o de personalidad que probablemente no pueda solucionar fácilmente. Trabajar en un entorno que está fuertemente empantanado por la reinvención constante es tóxico para los desarrolladores y el negocio. Correr.

(Nota al margen: en la mayoría de las empresas, siempre hay un elemento de NIH, pero está en un nivel tolerable, y siempre que revisen regularmente su código y prácticas. A largo plazo, todos somos culpables de ello en cierta medida, pero nunca se convierte en un problema).


4

Bueno, todo se trata del análisis de costo / beneficio.

¿Qué gana reescribiéndolo en SSIS? ¿Velocidad? ¿Importa? Si se trata de un proceso que se ejecuta en una GUI y le hace perder el tiempo a todos, entonces sí, probablemente sea una buena idea acelerarlo, porque el dinero gastado en cambiarlo será recuperado por un cliente más feliz o un empleado interno que haga su trabajo en lugar de esperando el software Pero si es un lote nocturno que comienza a las 12 a.m. y terminará a la 1 a.m. en lugar de a las 6 a.m. ... no tiene mucho sentido. Sí, es 6 veces más rápido, pero nadie sentirá la diferencia.

Y tu jefe tiene un buen punto. Microsoft tiende a abandonar algunas de sus tecnologías. VB6, Linq-to-SQL, ASP classic, COM + ... Esto es un riesgo con cualquier software de código abierto (y software de código abierto que sería demasiado grande para que su organización lo mantenga en caso de falta de actualización). Si es fundamental para su aplicación, debe tener un control estricto sobre ella.

El software se trata de agregar valor al cliente, y la mejora técnica que no produce muchos beneficios al tiempo que introduce riesgos no cumple realmente ese papel.


2
¿Cómo se "abandonó" VB6? Fue compatible durante 10 años, varios de los cuales la ruta de actualización al siguiente idioma estaba disponible. ¿El abandono de Windows 3.1 también?
Chris Pitman

1
@ChrisPitman: se podría señalar que las aplicaciones VB6 aún funcionan en Windows 8. Ahora, si estamos hablando de una aplicación VB6 en Windows 8 de 64 bits que intenta acceder a una base de datos, puede tener problemas por otras razones.
Ramhound

1
Bueno, en comparación, en 2010 trabajé en una aplicación de Windows C ++ que comenzó a principios de los 90 en la estación de trabajo Unix. En algún momento estaba abriendo el archivo con comentarios que datan de 1993 y el último compromiso en 2001. Todavía se ejecuta hoy y es muy popular en su nicho. Seguro que actualizaron parte de él a medida que pasaban las versiones de Windows, pero eso es de esperar. Lo que nunca sucedió es darse cuenta de repente de que la línea de código millones tenían iban a ser todo actualizado a un nuevo lenguaje similar pero no exactamente lo mismo. Nunca tuvieron que hacer una gran reescritura de todo.
Laurent Bourgault-Roy

3

Desarrolle un POC (Prueba de concepto) y luego demuéstrelo a su superior. El POC debería ayudarlo a determinar cualquier beneficio real con la tecnología que está proponiendo. Luego, usted y su superior pueden hablar sobre la tecnología y desarrollar ventajas y desventajas para implementarla.

Probablemente tendrá que pasar un tiempo extra fuera del tiempo de trabajo normal para desarrollar el POC.

Como nota al margen desde el punto de vista de SSIS, lo he usado y he desarrollado paquetes de SSIS. De hecho, reemplazamos un proceso de carga patentado usando paquetes SSIS. Solo hicimos esto porque los clientes reales se quejaron de los tiempos de carga. Los tiempos de carga disminuyeron significativamente con SSIS y todos se sintieron más felices.

SSIS es básicamente un flujo de trabajo de arrastrar y soltar con muy poca programación involucrada. Lleva algún tiempo aprender cómo funciona el recuadro negro, por lo que deberá tenerlo en cuenta si su equipo comienza a usarlo.


1
Debería obtener el permiso de su jefe para hacer un POC, y parece que no lo conseguiría. Si lo hace sin permiso, se arriesga a tratar de explicar cómo pasó su tiempo si no se acepta el POC.
Reactgular

@Matthew - Buen punto, tal vez un truco de fin de semana si está dispuesto a hacerlo sin aprobación.
Jon Raynor

1

Buenas respuestas Si no está roto, no lo arregles. Solo agregaría

  • Si bien las preocupaciones sobre el rendimiento podrían ser ciertas, esa palabra "podría" es una señal de alerta. Primero haría un diagnóstico de rendimiento, para tener una prueba de cuál era el problema de rendimiento, antes de comprometer recursos para abordarlo.

  • Cuando se considera la última "solución" de Microsoft, uno debe considerar que mucha gente se ha quemado por lo que una vez MS promocionó pero luego desaprobó y luego dejó de admitir. Si desea que el software se ejecute durante 10 o 20 años sin recodificación importante, debe tener mucho cuidado con eso. Nuestra compañía ha sido gravemente herida de esa manera.


1

La rotación de personal será una consideración para su jefe. SSIS está entrando en la arena de DBA en comparación con un programador que tiene ese conjunto de habilidades. Si su aplicación no usa SSIS más allá de la conversión inicial, no estoy seguro de que tenga sentido aprenderla y poner a los nuevos programadores de C # a la velocidad porque, como su equipo, la mayoría no tiene experiencia con ella.


1

Podría señalarle a su jefe que SSIS es, de hecho, una capa de tecnología más antigua que .NET Framework, si vuelve a sus raíces como el "Marco de transformación de datos" de SQL 7.0.

Donde su jefe podría tener un punto es en el hecho de que SSIS es solo una parte de las versiones Standard y Enterprise de Microsoft Sql Server; ese es un cambio bastante grande para que sus clientes aprovechen, cuando su aplicación, en un escenario de pequeña empresa, puede estar perfectamente bien con Sql Express (o MySQL, para el caso, que funciona con ADO.NET pero no puede usar la integración SSIS).

Ahora, déjame ser perfectamente claro; En mi opinión, NIH casi nunca es algo bueno para una empresa de desarrollo de software. Te bloquea de muchas herramientas y servicios muy potentes. También es hipócrita en su cara; ¿su empresa escribió Visual Studio? ¿Qué tal el .NET Framework? ¿Servidor SQL? Windows? No. Usted construye su software sobre las herramientas y plataformas que ya tiene (y sus clientes también). Por lo tanto, si ve una herramienta que está ganando aceptación general, y que podría ser útil para realizar su negocio principal, la adopta y aprende a vivir con el riesgo de tener que mantener su implementación para mantenerse al día con las últimas novedades. versiones de esas herramientas, o incluso reemplazarlas. Apuesto a que su jefe primero desarrolló el software para ejecutarse en Windows 95/98 o por ahí (si no muchoantes de eso, como 3.0 / 3.1). Si es así, ha visto media docena de versiones de sistemas operativos de estaciones de trabajo de Windows ir y venir, y tuvo que actualizar su software para que se ejecute en las plataformas más nuevas, y se enfrenta a otra con XP oficialmente EOLed. Si bien puede quejarse, ese es simplemente el costo de hacer negocios.

Sin embargo, una actitud de los NIH no se deriva necesariamente de una negativa a aceptar una, o incluso una serie, de tecnologías que pueden considerarse útiles. Esos rechazos podrían basarse en análisis de costo-beneficio perfectamente válidos. Trabajo para una empresa de videovigilancia y monitoreo de alarmas, y tomamos decisiones para respaldar o no respaldar varias nuevas tecnologías o productos a diario. Por lo general, la decisión de aceptar una nueva tecnología, y el dolor de combinarla con nuestro montón de software de visualización de alarmas y visor compatible, se basa principalmente en lo que vale para nuestros clientes. Recientemente terminé un gran proyecto de integración con un nuevo tipo de DVR, simplemente porque uno de nuestros mayores clientes existentes dijo que estaban actualizando a ese DVR desde otro producto DVR de gran renombre pero tecnológicamente rezagado, y lo harían con o sin nuestra ayuda. Por otro lado, rechazamos regularmente nuevos fabricantes, incluso los principales nombres familiares, simplemente porque nuestros clientes no lo usan y no vemos ningún valor en comenzar a ofrecerlo, incluso si nos pierde algunos clientes potenciales que lo tienen y no lo hacen ' No quiero pagar por nuestra versión de lo mismo.


0

No tengo tiempo para escribir la conversión a la antigua usanza, autodidacta SSIS, y también escribir la nueva forma de demostrar / probar los beneficios (Ninguno de nosotros ha utilizado SSIS, por lo que habría un período en el que tiene que aprender a usarlo).

Ese es el tipo de problema, ¿no? Estás pidiendo a otras personas que arriesguen su productividad con tu idea, y no estás dispuesto a arriesgarte para demostrarles que vale la pena. El liderazgo técnico requiere arriesgar su reputación o su tiempo libre para demostrar que vale la pena tener sus ideas.


-1

Intenta ver las cosas desde la perspectiva de tu jefe. Parece que la funcionalidad que está tratando de reemplazar es esencial para lo que hace su software (vea su comentario "atornillado"). Un buen gerente sabe que usted externaliza su negocio principal bajo su propio riesgo. Está justamente preocupado por apostar a la granja por alguna pieza de tecnología que podría desaparecer en el futuro. Cuando las funciones principales están involucradas, no inventado aquí es realmente algo bueno.

Si la velocidad es una característica, tendrá que encontrar otra forma de acelerar las cosas. De lo contrario, si la velocidad es más importante para usted que para sus clientes, le digo que lo deje y se olvide.


3
Estoy en desacuerdo. Si los NIH fueran algo bueno para el resultado final de cualquier empresa de desarrollo de software, esta pregunta ni siquiera tendría la etiqueta .net porque nadie estaría dispuesto a "subcontratar" su control de los recursos de la computadora y quedar atrapado en una caja de arena. Si eso es realmente una preocupación legítima para el jefe del OP, el OP estaría programando en C ++ contra los MFC y el tiempo de ejecución nativo de Win32. Un estado de cosas válido, sin duda, pero la voluntad del jefe de aceptar nuevas tecnologías es desmentida por su aceptación innata de otra tecnología relativamente nueva (.NET es más reciente que SSIS por un poco)
KeithS

-1

Si bien hay mérito para "no arreglar lo que no está roto", no estoy de acuerdo con la respuesta aceptada.

La respuesta aceptada proviene de la perspectiva de que el problema no está roto. Desde la perspectiva de la gerencia de nivel medio, esto es cierto. Si se hiciera un análisis de costos sobre el tiempo empleado por los desarrolladores para crear y mantener una solución ETL en C # en comparación con la compra de una solución lista para usar, mostraría que la solución C # tarda de 3 a 4 veces más en crearse y mantener y costar hasta 10 veces más (busqué la referencia en los números, pero no pude encontrarla).

A menos que sea la competencia central de la compañía, hay muy pocas razones para escribir y mantener las transformaciones de datos en C #. La solución local será lenta, habrá errores (es decir, datos corruptos), habrá casos extremos, habrá poca reutilización entre las clases de ETL y será frágil. Honestamente, ¿qué desarrollador quiere pasar sus días escribiendo y manteniendo ETL en C #? Lo he hecho. Es un montón de basura. Está tan lejos del trabajo creativo como uno puede llegar.

Use una herramienta como Informatica, una empresa cuyo negocio es ETL. Han estado trabajando en este problema por más de 15 años. Lo tienen resuelto. Sus herramientas son arrastrar y soltar, la reutilización está integrada, al igual que el rendimiento. La mayoría de las personas (es decir, los desarrolladores tampoco) pueden crear ETL con las herramientas de Informatica. No estoy tratando de vender Informatica, use ninguna herramienta. Simplemente no reinventes la rueda.

A la larga, la compra de una herramienta, como Informatica o el uso de SSIS, le ahorrará potencialmente a la compañía millones a largo plazo. Y lo mejor de todo es que no tendrá que mantener el ETL ni ser responsable de él cuando se rompa.


-3

He intentado SSIS para hacer tareas simples antes.

Puede ser muy molesto, ya que incluso las tareas simples dan lugar a diagramas de complejidad de nivel bajo a medio (no, no hay otra forma de "codificarlo" excepto los diagramas). Y los problemas de control de la fuente señalados por la respuesta de Jim no lo sabía.

Problema secundario: por lo tanto, para acelerar, sugiero reducir el tamaño de las transacciones para los lotes de imágenes. Digamos, cada 800 en lugar de 5000 rocords. Puede reducir el tamaño de la E / S necesaria para admitir esa transacción.


1
Enviar 800 en lugar de 5000 empeoraría las cosas; todavía tiene que enviar exactamente la misma cantidad de datos reales, pero ahora tiene MÁS llamadas de red, lo que significa más encabezados de paquetes, etc.
Andy

La E / S normalmente cuesta mucho más que la red. Incluso usando una copia masiva, hay cosas que se registran. Una gran cantidad de E / S al mismo tiempo hará que la CPU tenga poco uso y bloqueará el servidor hasta que se complete la E / S. Por supuesto, esto depende de cuán poderoso es el subsistema de E / S de esos servidores de bases de datos.
Fabricio Araujo

Haz tus propias pruebas; verá que el procesamiento por lotes es más rápido que enviar cada estado de cuenta por separado.
Andy

Lo hice en el pasado, y a veces tuve que reducir el tamaño de los lotes para ser más rápido. Es una cosa de sintonía.
Fabricio Araujo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.