¿Las herramientas de diseño degradan la experiencia de programación? [cerrado]

10

He estado buscando últimamente, específicamente en algunas de las herramientas de MS que están disponibles, y estoy notando un gran enfoque en herramientas de diseño y asistentes. No solo para el desarrollo de UI sino para todo.

  • Entity Framework tiene el modelador
  • RIA Services tiene los asistentes de DomainService
  • El flujo de trabajo tiene todo el diseño del flujo de trabajo ... (No sé, realmente no lo he usado)

Hay más, pero creo que entiendes la idea. Hay muchas herramientas de diseño. Usando algunos de estos, encuentro que:

Complican las cosas más allá de los casos de uso prescritos.

(es decir, todos los videos de demostración técnica)

He estado evaluando algunas de estas tecnologías recientemente, y tratando de trabajar con ellas, termino diseccionando exactamente lo que los diseñadores, modeladores y magos están haciendo por mí ... de lo contrario, estoy perdido cuando realmente tengo que intentar hacer algo con lo que fue creado.

Esto termina siendo un caso en el que tengo que luchar contra la herramienta, o luchar contra su producción lo suficiente como para haber podido hacer todo yo mismo sin ella, y tener una comprensión mucho más fuerte de lo que está sucediendo. Esto me parece particularmente irritante con el diseñador de Silverlight y el asistente de servicio de dominio de servicios RIA.

Me pregunto "¿De qué sirve esta herramienta si tengo que averiguar su funcionamiento interno o reescribir la mitad de su salida para usarla?"

No son tan rápidos

El punto de venta de estas herramientas es aumentar la productividad y este punto puede cambiar con el tiempo usando la herramienta, y no necesariamente se aplica a los diseñadores de UI (aunque, en algunos casos, todavía lo hace -> Te estoy mirando diseñador Silverlight) . Me parece que puedo hackear un código mucho más rápido de lo que puedo arrastrar y soltar, cambiar el tamaño, mover, lo que sea en un diseñador.

La interfaz de usuario se interpone en el camino del modelo

Tal vez solo soy yo, pero cuando estoy usando algo que recuerda a una herramienta de diseño UML termino pasando más tiempo diseñando todo para que mis líneas no se crucen y para que pueda ver todo en la pantalla que modelar lo que Estoy tratando de lograr.

No son divertidos

La mitad de la razón por la que codifico para vivir es porque lo disfruto. Hacer clic en casillas de verificación y seleccionar cuadros combinados y luego arreglar todo lo que sale no es divertido.

No parezco estar solo

La comunidad parece no querer estas herramientas tampoco. El mejor ejemplo que se me ocurre en este momento es Entity Framework Code-First.

Entonces pregunto:

  1. ¿Las herramientas de diseño realmente mejoran la productividad?
  2. ¿Son asesinos divertidos?
  3. ¿Está 'la comunidad' realmente pidiendo más herramientas de diseño, o los vendedores simplemente piensan que somos?
Steven Evers
fuente

Respuestas:

7

Supongo que las buenas herramientas de diseño mejoran la productividad y no quitan la "diversión". Sin embargo, es solo una suposición porque aún no he encontrado una buena herramienta de diseño.

Personalmente no he pedido herramientas de diseño.

dietbuddha
fuente
2
+1 Definitivamente me gusta "aún no he encontrado una buena herramienta de diseño". aunque podría haber agregado "mejor que la materia gris entre mis globos oculares".
Ken Henderson
2
Los asistentes de +1 solo son útiles siempre que lo que hagas se ajuste al modelo que encarnan. Debido a que principalmente me pagan por hacer cosas raras, por lo general simplemente se interponen en el camino. La única herramienta de diseño como la que realmente me ha gustado fue (prepárese para un shock de este no fanático de Microsoft) la base de datos gráfica y el generador de consultas en MS Access. Funcionó bien porque las bases de datos relacionales y SQL son conceptualmente bastante simples y bien definidos, por lo que la herramienta de diseño podría manejar casi cualquier cosa que desee hacer.
Bob Murphy
Todo lo que construyas para ayudarte con una tarea es una "buena herramienta de diseño". Esto incluye su editor, su compilador, su depurador, sus bibliotecas personales, etc. El problema con la mayoría de los "programas de pago" es que tiene que ser lo suficientemente general para todos, por lo que generalmente no encaja bien con el problema. ¡Y nunca se molestan en hacer que se vea bien! Sigue la filosofía de Unix por favor. No quiero estar en el juego de herramientas de jardín amurallado de MS.
Spencer Rathbun
4
  1. Creo que probablemente depende. Si eres un desarrollador bastante inexperto, entonces usar las herramientas de diseño probablemente sea más productivo que escribirlo. Estoy bastante seguro de que fui más productivo en mis primeros días de VB6 usando el diseñador de lo que hubiera estado haciendo a mano. La otra cosa a considerar es cómo la tecnología (al menos cómo la presenta el IDE) se presta para la edición manual. VB6 y .NET WinForms ciertamente no (o más bien probablemente no desee editar a mano el archivo de código "generado" (o parte de). Con WPF y ASP.NET, creo que un desarrollador bastante inexperto comenzará con el diseñador, pero rápidamente se gradúa para editar el XAML / ASP directamente. Una vez que sabe lo que está haciendo, sin duda es más rápido editar el marcado directamente. Pensando en EF v1.0,

  2. Depende de si es divertido trabajar con el marcado. WPF y ASP (.NET) pueden ser divertidos. VB6 / WinForms: no, no quiero editar las secciones de código generadas más de lo necesario.

  3. No creo que la comunidad lo haga explícitamente. Aunque al aprender algo nuevo, el diseñador puede hacer que sea más fácil tragarse en pedazos de aprendizaje.

Ken Henderson
fuente
2

como siempre, depende

Cuando investigué por primera vez el uso de servicios web, Java tenía un tutorial de 50 páginas y .NET tenía un asistente. ¿Adivina cuál te acostumbraste?

Steven A. Lowe
fuente
1

Lo mismo aquí, sin herramienta de diseño.

Diseñé la base de datos ERD en papel y escribí un implementador que emite las declaraciones de "crear tabla", de esa manera puedo borrar y reconstruir a voluntad. También ayuda para el control de versiones de la base de datos.

Me parece que el papel 11x17 (A3) puede ser un gran lugar para diseñar sistemas muy complejos. Consigue un buen borrador y lápices (prefiero Staedtler ).

Christopher Mahan
fuente
1

Desde la perspectiva del vendedor, todas esas sofisticadas herramientas de diseño parecen cumplir un propósito similar a las licencias de estudiante con descuento / gratuitas. La idea es permitirle crear algo con un mínimo esfuerzo y costo. Una vez que haya invertido, están apostando a que aprenderá a expandir sus habilidades con sus herramientas en lugar de aprender las de otra persona.

Eso no quiere decir que las herramientas no tengan usos productivos legítimos. se debe ser valiosa para examinar el código generado y aprender de ella. Desafortunadamente, como señaló Ken Henderson, el código a menudo es ilegible y no es algo que desee usar como plantilla para trabajos futuros. Recuerdo varias secciones en Programación de servicios WCF , donde el autor explica cómo escribir código manualmente o cómo lo genera Visual Studio. Inevitablemente, la opción generada requiere una sección de seguimiento para la eliminación de código extraño.

ajk
fuente
0

¿Las herramientas de diseño realmente mejoran la productividad?

Pueden hacerlo siempre que su proyecto sea simple hacerlo y no demasiado complejo para ellos. Mi experiencia te golpea la pared tan pronto como intentas implementar / resolver un problema del mundo real.

¿Son asesinos divertidos?

WF (Workflow) y WPF fueron divertidos pero también asesinos cuando el VS 2008 se bloqueaba cada 30 minutos.

¿Está 'la comunidad' realmente pidiendo más herramientas de diseño, o los vendedores simplemente piensan que somos?

Muchas de las herramientas lanzadas por MS últimamente parecen ser intentos desesperados de mantener a los desarrolladores. La batalla ahora está sucediendo en el mercado de teléfonos inteligentes. ¿Quién ganará el corazón de los desarrolladores, MS, Google o Apple?

Amir Rezaei
fuente
0

Siempre ha sido así, incluso en el pasado solíamos distinguir entre desarrolladores que solo sabían hacer clic en los asistentes y desarrolladores que sabían qué código generaban los asistentes y podían modificarlo para los casos extremos.

Que tenga aún más herramientas, asistentes y diseñadores, todos haciendo cosas debajo de las cubiertas para evitar que se corte en pedazos afilados es un beneficio para los desarrolladores que no quieren saber o no tienen la amplitud de experiencia o habilidad para comprender el código generado. Me imagino que hay un punto óptimo entre lo que quieres que la computadora haga por ti y lo que debes hacer tú mismo, ya que la alternativa es programar lenguajes completamente basados ​​en arrastrar y soltar bloques en un formulario. (Solía ​​trabajar en un entorno específico de dominio, ¡no me gustaría usarlo!)

gbjbaanb
fuente