2008-10-20 27 views
7

Lo que provoca mi pregunta es this post from Jeff Atwood, y this post de Dare Obasanjo. Me parece que podría haber al menos algunas áreas donde la funcionalidad de un tercero es una mejor idea que el código personalizado.¿Qué funcionalidad debería ser siempre de terceros?

Por ejemplo, ¿el registro siempre debe ser de terceros? ¿Qué tal el cifrado? O buscar?

Espero los comentarios de todos sobre esto.

Editar: Esta pregunta asume que el registro, el cifrado y/o la búsqueda no son su actividad principal.

Respuesta

3

Depende. ¿Existe una biblioteca de terceros disponible que se adapte a sus necesidades y, lo que es más importante, el idioma y/o la API con la que trabaja? Entonces ve por eso.

Si usted tiene razones para hacer su propia versión, asegúrese de que no es sólo "no inventado aquí". Además, si no ha tenido una visión profunda de los cinco principales productos del mercado para lo que necesita, no ha hecho su trabajo lo suficiente. Hay buenas posibilidades de que encuentre lo que está buscando, e incluso si no puede usarlo, aún aprenderá algo incluso de las descripciones de la biblioteca. Como mínimo, aprenderá qué características necesitará y cuáles no. Si también obtiene el código fuente de una de las bibliotecas, esta debería ser su opción preferida sobre una biblioteca competidora sin código fuente pero posiblemente con más funciones.

3

Estoy completamente de acuerdo con que la encriptación solo debe ser realizada por expertos siempre que sea posible. También debe ser de código abierto y ha sido objeto de una buena revisión por pares.

+0

Desafortunadamente, el gobierno de EE. UU. Ha establecido un proceso que desalienta la criptografía de código abierto. La certificación de un módulo criptográfico bajo FIPS 140 es muy costosa y no se presta a un patrocinador descentralizado. Sin embargo, NSA ha hecho algunas cosas buenas con código abierto. – erickson

2

El área donde he usado consistentemente controles de terceros fue la creación de gráficos. Es un problema bastante común tener que trazar un lote de datos y los controles de terceros son maduros y confiables.

4

Mi regla de oro es utilizar (o al menos considerar) a terceros para cualquier cosa que esté fuera del propósito principal de su negocio.

La encriptación siempre ha sido el ejemplo prototípico de esto. Pero se extiende a otras áreas también.

Escribir el código de registro para la resolución de problemas durante el desarrollo es completamente diferente que escribir el código de registro utilizado para supervisar los sistemas de producción.

Todo se trata de elegir qué áreas de desarrollo añaden valor a su proyecto. El uso de elementos de terceros elimina el riesgo de que ese componente esté incompleto/con errores/etc. pero viene con el riesgo de que no sea tan flexible como lo que necesita.

Otro ejemplo sería el desarrollo de un foro web completo para un sitio web, cuando se puede comprar una solución mucho más barata.

15

El cifrado debe ser de terceros la mayoría de las veces, ... a menos que esté en el negocio de vender sistemas de cifrado.

¿Qué es más o menos el Sr. Atwood su punto como lo entendía, sus busines centrales no deben ser tercero, por lo que probablemente no es nada que se deben siempre ser tercero ...

2

supongo que la la respuesta depende del uso. Si está desarrollando con fines de lucro, es probable que compre componentes si el costo de usar el componente frente al costo de desarrollarlo resulta en más ganancias. Este es particularmente el caso de los componentes grandes cuando no cuenta con la experiencia interna para producirlos.

Un par de buenos ejemplos que he utilizado son los controles Infragistics y gráficos Dundas. Aunque podríamos haber creado estos en la empresa, los costos en términos de tiempo y oportunidades perdidas serían enormes en comparación con la compra de un par de licencias.

Por supuesto, a veces hacemos este tipo de cosas sin siquiera considerarlo como una compra de componentes. Incrementando un poco la imaginación, podrías incluir .NET Framework, SQL Server, Windows API, etc.

0

No olvide que el tiempo es un gran problema para escribir todas las cosas de su mano, no es que no pueda hacer eso, pero el problema proviene de sus clientes o la empresa siempre quieren encontrar la forma más rápida de construir su sistema. Pero si tiene un proyecto sin fines de lucro, puede intentar construir cosas usted mismo. Por ejemplo, puede usar JQuery o Dojo como su kit de herramientas Ajax si está escribiendo aplicaciones web y desea establecer algunas funciones de AJAX, llevará tiempo crear esas cosas con su mano :)

Pero también debe tener cuidado cuando usa bibliotecas de terceros, debe confiar en ellas porque pueden contener código malicioso, o están mal escritas y pueden causarle dolor de cabeza.

0

su propia función de cifrado? Ni siquiera lo pienses, pero creo que probablemente quisiste decir algún tipo de envoltorio para las funciones existentes.

3ª ventajas de componentes partido: una gran cantidad de funcionalidad
probó completamente (con suerte!)
no toma tiempo para desarrollar lo que puede ser más barato (pero ..)

Desventajas
¿Es realmente lo suficientemente flexible como para ese próximo requisito de cliente incómodo
La distribución puede ser costosa
Lo ata a una compañía de terceros que puede ser un dolor cuando hacen una nueva versión para corregir errores
No aprende t o hacer la tarea usted mismo

Tanto si utiliza un componente de tercer partido va a depender de su aplicación y los requisitos. Algo como la creación de gráficas tardará años en hacerse realidad, por lo que sería un buen componente de terceros para usar.

1

no hay una respuesta definitiva a esta pregunta porque al igual que cualquier otra cosa en el desarrollo de software que depende de la situación. Yo diría que si los siguientes 3 elementos son verdaderas que no se debe pensar en hacer usted mismo ...

  1. Si no es central para su negocio o experiencia.
  2. Si alguien más lo ha escrito para usted y está siendo utilizado en comunidades extensas.
  3. Si satisface sus necesidades y requerimientos o se puede extender para satisfacer sus necesidades con bastante facilidad.
4

"¿Qué funcionalidad debería ser siempre de terceros?"

Ninguno. siempre hay una excepción o caso especial para anular el uso atroz de "siempre" cuando se trata de una decisión esencialmente de ingeniería.

Además, la decisión de ir a un tercero casi nunca debería tomarse en función de una "funcionalidad" dada."No hay tal cosa como una biblioteca tan perfecta que nunca se necesita ir a otro lugar para ese tipo de funcionalidad.

ir tercero es una decisión que debe ser tomada en base a

  • costo de ir tercero partido vs costo de hacerlo en la casa
  • Tiempo de desarrollo requerido contra fechas límite (es decir, podría ser más económico, pero su línea de tiempo de desarrollo podría no permitirlo)
  • Facilidad de integración, depuración, mantenimiento, rutas de actualización - puede ser que puedas desarrollar algo que "hará el trabajo, pero apenas" inho utilizar vs no mucho más dinero para algo que va a cuidar de que en los próximos años
  • Facilidad/costo de la prueba y demostrar - los paquetes de seguridad son muy difíciles de probar así

Sin embargo. Hay algunas cosas en las que es realmente difícil creer que ir a la casa es mejor. Por ejemplo, usted puede escribir una competencia para OpenGL y DirectX, y en ciertas aplicaciones (informática científica, etc.) hay buenas razones para considerar tal ruta. Pero, en general, no soñarías con eso. Aunque es "gratis", sigue siendo una dependencia de terceros, y podrías terminar en los deslizamientos debido a un error que solo afecta la forma en que usas estos lenguajes gráficos.

En otras palabras, existen cosas increíblemente complejas o difíciles de probar/probar que casi siempre deberían ir a un tercero. La seguridad es otra. No escriba su propio algoritmo hash a menos que esté 1) loco y 2) tenga al menos 3 razones comerciales excelentes para hacerlo.

Pero "¿Qué funcionalidad debería ser siempre de terceros?" Ninguna. Siempre hay una excepción.

-Adam

0

Todo lo que está fuera de su negocio principal es un buen candidato para soluciones de terceros. Desea dedicar su tiempo de desarrollo a crear esa funcionalidad básica que es única (ish) y no puede comprarse ni utilizarse de manera rentable.

Por ejemplo, veamos el control web gridview. ¿Puedes desarrollar y extender un gridview tú mismo? Claro que puedes, pero desarrollar, codificar y probar tu vista de cuadrícula tomará X cantidad de tiempo y recursos, que puedes traducir en dólares. Ahora tiene en cuenta los costos recurrentes de soporte, mantenimiento y corrección de errores.

Ahora usemos la cantidad arbitraria que recuerdo haber leído en alguna revista sobre el desarrollador promedio de los Estados Unidos que gana $ 40 por hora, incluidos sus beneficios. Hay suites de control web completas disponibles para alrededor de aproximadamente $ 800 por licencia de desarrollador. Si su desarrollador gasta más de un total de 25 horas en este control, podría haber comprado una suite completa y haber pasado 5 horas integrando y probando.

Ahora bien, con suerte no me confundí demasiado, pero la esencia general es que si puedes comprarlo probablemente ahorrará tiempo y dinero, y en su lugar se enfocará en cosas que no puedes olvidar, Usualmente son sus fabricantes de dinero.

2

Si puede comprarlo más barato de lo que puede construirlo, y la funcionalidad comprada cumple con los requisitos de su negocio, entonces cómprelo.

0

Yo diría que para escribir el código de la placa de la caldera, o el código redundante que es copiar y pegar casi siempre, debe hacerse a través de una biblioteca.Para mí, el código de validación casi siempre me hace cometer errores estúpidos, porque es aburrido. Spring.NET es increíble para esto. Estoy muy contento de que mi jefe me haya animado a probarlo.

1

Esta pregunta es la inversa de la pregunta: ¿qué software debe crear?

Lo que obviamente es tonto.

Para ambos no hay una respuesta, depende de las necesidades de su negocio. ¿Necesita construir un mejor motor de búsqueda para Internet? Casi seguro que no. Pero si eres Google a finales de los 90, lo haces. La tercera parte contra la primera es solo una cuestión de la oficina en la que trabaja, cada tercero es un primer partido para sí mismo.

  • Si todo lo que necesita es suficiente: use algo de la estantería.

O bien, creará algo de menor calidad o perderá dinero y esfuerzo en algo que no importa mucho, o ambos.

  • Si es la base de su negocio: compruébelo usted mismo.

Si puedes construir algo mejor, y puedes construir un negocio con eso mejor, ¡entonces hazlo!

0

Parece que tiene todas las respuestas que necesita, pero me gustaría dar mi opinión aquí junto con la de los demás. los clientes le pagan para crear aplicaciones que trabajen específicamente para ellos, y esa es la razón por la cual van a usted; algo que necesitan no se encuentra en ningún otro producto en el mercado. por lo tanto, su enfoque debe estar en desarrollar esa parte específica que necesitan.

indudablemente su aplicación necesitará hacer otras cosas también. tal vez necesite conectarse a una base de datos o encriptar ciertas líneas. aquí es donde las bibliotecas de terceros entran en juego. no quiere perder el tiempo escribiendo un nuevo controlador para una base de datos, o un nuevo esquema de cifrado que podría tener agujeros que no tiene tiempo para probar. desea utilizar los que ya existen, y se han probado y optimizado de manera exhaustiva.

recuerde, cuanto más rápido termine, menos tendrán que pagar. esto los hace felices y quiere volver a usted. esto también significa que gana más porque aunque paguen menos, puede trabajar en más proyectos, lo que significa más dinero.

En conclusión, debe confiar en las bibliotecas de terceros en varios módulos.

Cuestiones relacionadas