2009-03-19 8 views
8

He estado pensando en la historia de los Tres sistemas del hombre del libro The UNIX Philosophy. Para aquellos de ustedes que no están familiarizados, que es algo como esto:Los tres sistemas del hombre: ¿cómo se construye un tercer sistema?

  • el primer sistema de hombre es el que construye cuando su espalda está contra la pared . Es klugey, hackish y no se presta a las nuevas características .
  • El segundo sistema está diseñado por un equipo de de "expertos" que insisten en que están yendo a hacerlo correctamente esta vez . El sistema resultante es lento, hinchado, tarde para enviar y más de presupuesto.
  • El tercer sistema está construido por personas que se han quemado demasiadas veces por el segundo sistema. Es robusto, escalable y mantenible.

Obviamente, el objetivo del desarrollo de software es escribir The Third System. La premisa del autor es que no puede hacerlo sin antes escribir los otros dos sistemas. De eso obtenemos conceptos como "Plan para tirar uno" desde The Mythical Man-Month. En mi carrera limitada de ingeniería de software, he trabajado en un segundo sistema y dos primeros sistemas que se convirtieron en el sistema debido a la inercia. Parece que nunca hay suficiente tiempo o presupuesto para hacerlo bien, pero siempre hay mucho tiempo y dinero para hacerlo.

¿Alguien ha construido o mantenido aquí un tercer sistema? ¿Qué pasos tomaste para llegar allí? ¿Realmente puede "planear tirar uno" en la práctica?

Respuesta

1

Creo que la clave de esto es la diferencia entre tener el tiempo y el dinero, y la experiencia. Si construiste algo antes, lo quemaste, lo construiste de nuevo, te equivocaste y luego lo construyes nuevamente, y eres un desarrollador raro que simplemente sabe lo que funciona, entonces obtendrás el 'Tercer Sistema'.

Simplemente tener dinero, tiempo y un fracaso anterior no es una receta para el éxito.

+0

¿Tener dinero, tiempo y DOS fallas anteriores son una receta para el éxito? Parece que la idea es fallar dos veces de maneras diferentes pero interesantes, por lo que tienes un límite en cómo se ve The Right Way. –

+0

@Kristo: muy a menudo, un segundo sistema es el "tercer sistema". Depende de quién está diseñando. – Eddie

1

El único ejemplo de un tercer sistema que conozco es Linux iptables.

El sistema de filtrado de paquetes original de Linux era ipfwadm tomado de los BSD. Después de esto, se escribió ipchains, pero resultó no ser extensible de la manera que la comunidad deseaba.

Por lo tanto, las personas que escribieron ipchains escribieron iptables desde cero. Ha sobrevivido mucho tiempo.

(Técnicamente, iptables e ipchawadm e ipfwadm son las herramientas de espacio de usuario usadas para administrar el filtro de paquete de kernel. Para Third System, me refiero al filtro de paquete kernel así como a las herramientas de espacio de usuario)

1

Esta es una pregunta interesante, y realmente me hizo pensar dos veces acerca de mi respuesta original a esta pregunta. Estoy trabajando en lo que consideraría un 'Tercer sistema', que diseñé desde cero después de mantener e intentar extender el 'Segundo sistema' anterior. (No afirmo que mi 'Tercer sistema' sea perfecto, solo afirmo que me pasé todo el tiempo pensando en lo que hacía que los sistemas anteriores fueran deficientes, e hice grandes esfuerzos para evitar eso). ¿Pensarán los futuros ingenieros que he logrado el 'tercer sistema'? Espero que sí, pero apuesto a que se preguntarán por qué hice las cosas de cierta manera.Creo que está realmente en el ojo del espectador, si un sistema logra el "tercer sistema".

Creo que tener experiencia es el mejor paso para llegar a un 'tercer sistema'. En cuanto a si puedes planear tirar uno en la práctica, sí, puedes hacerlo mediante un buen prototipo ole. De acuerdo, no puedes prototipar todo, así que tal vez eso no califica completamente para "tirar uno", si estás hablando de una versión de un sistema completo, pero para los subsistemas, en mi opinión, el prototipado es obligatorio.

Edit: Creo que voy a recoger The UNIX Philosophy. Ojalá hubiera oído hablar de él antes :-).

+0

Mike Gancarz también escribió un libro sobre Linux con casi el mismo título. –

1

He creado un tercer sistema. No muchos te importan, pero definitivamente en un caso.

No diría que "arrojé" a los anteriores tanto como lanzaron y navegaron con proyectos anteriores.

Creo sistemas CMS para mi empresa y cada cliente necesita algo diferente. Por lo general, el primer producto es uno construido con mi espalda contra la pared. Limitaciones de tiempo, presupuesto, dorado tecnológico ... todos los problemas estándar de un proyecto malo con expectativas desajustadas.

La próxima iteración es una reutilización del código e ideas existentes con un "mejor intento" la próxima vez.

En mi caso, construí una biblioteca de generación de formularios. No limita mis diseñadores y ciertamente no limita mis programadores. Simplemente hace todo lo que necesito con un mínimo esfuerzo. Es el mejor trabajo que he hecho, pero tardé varios intentos (y varios años) en intentos de segundo sistema, cada uno con un objetivo diferente y generalmente poco pensado.

Con el último resultado, se sintió bien. Sabía que tenía un tercer sistema cuando me di cuenta de que el trabajo que había hecho había trascendido las necesidades del proyecto actual y podía aplicarse a todos los proyectos actualmente en el horizonte de forma fácil y eficiente al mismo tiempo que ahorraba incontables horas de programación real. y desarrollo.

Espero que ayude a algunos.

1

"¿Alguna vez alguien ha construido o mantenido un tercer sistema? ¿Qué pasos tomó para llegar allí? ¿Realmente puede" tirar uno "en la práctica?"

Me han traído varias veces para limpiar Second Systems ido mal.

Los pasos que tomé son francos: el sistema creado por expertos no funcionó. Ten en cuenta que estás llamando feo al bebé de alguien y no te gusta por hacer esto.

Y sí, nosotros son lanzando una vía. Estamos tirando el software ineficaz que está en su lugar. Tenga en cuenta que está diciendo que el software anterior es un costo, no una inversión. no te gusta por hacer esto

Me han traído otras veces para construir un sistema que funcione. Cada diseño pasa por las tres fases.

  1. No entiende el dominio del problema (o la tecnología). El primer sistema es una mezcla. Tiene problemas de dominio kluges y kluges técnicos. El primer sistema siempre tiene ambos.

    En algunos proyectos, la gerencia declara la victoria, la pone en producción y los usuarios la odian porque el dominio del problema tiene problemas. Los desarrolladores lo odian debido a los kluges técnicos.

  2. Comienza la "Fase II". En algunos casos, he continuado más allá de la fase inicial de klugy. Ahora, el verdadero trabajo comienza. Solucione el problema del dominio kluges: descubra las mentiras que le dijeron a los usuarios, encuentre los atajos de negocios y las estúpidas soluciones. Repare los kluges técnicos, de manera similar, requiere una repetición, que requiere pruebas unitarias para que pueda refactorizar.

    Tenga en cuenta que los kluges de dominio problemáticos son los más destructivos. Los usuarios dicen "es simplemente una 'copia' de los datos" cuando en realidad no es una copia sino una segunda referencia. Los usuarios dicen "solo dame un campo definido por el usuario" y luego conviértelo en una llave mágica que lo haga todo (mal)

    Es posible tirar las cosas del dominio problemático mal definidas (o poco entendidas). Los usuarios tardan un rato en comprender lo que están haciendo realmente. Presionan a favor de las definiciones de procesos de "estado del arte".

  3. Eventualmente, los usuarios se dan cuenta de que han definido mal su negocio o sus relaciones o sus procesos. Ahí es cuando el Tercer Sistema puede emerger. En un caso (hasta ahora), he continuado con este nivel de comprensión del dominio del problema. Estamos descartando un montón de "opinión experta" de dominio problemático y llegamos a una visión clara de lo que realmente sucede. Es más simple que el segundo sistema y no tiene la solución alternativa en el primer sistema.

Sí, tiramos dos modelos de negocios. Esto no parece costoso, solo es análisis y especificaciones. Pero, en realidad, los viejos PPT y planes y lo que no son ahora risibles porque están muy desactualizados y son miopes.

Sí, descartamos versiones de software anteriores. Sin embargo, estamos usando muchas herramientas de código abierto, por lo que no es muy doloroso dejar de usar un componente y comenzar a usar otro.

0

¿Realmente puede comprender o apreciar el tercer sistema sin haber experimentado los 2 primeros? y ¿hay realmente un tercer sistema (perfección) por ahí? Algunos pueden acercarse (no puedo nombrar ninguno ... incluso el iPod) pero tal vez eso sea algo bueno, ¿qué haría una persona una vez que alcanzara la perfección? ¿toma una cerveza?

Cuestiones relacionadas