2008-12-22 19 views
11

NB - Esta pregunta no es una puñalada en RoR o al sistema de plugins de Redmine"¡Lo estás haciendo mal!" sintiendo


He estado trabajando en un plugin personalizado para Redmine, una plataforma de gestión de proyecto construido con Ruby on Rails (RoR) . Ahora no soy realmente un RoR o para el caso, un tipo Ruby. Logré escribir el plugin y todo funciona, a pesar de ser un desastre entre bastidores. ¡"Lo estás haciendo mal !!" El sentimiento viene del hecho de que sé que RoR es un marco muy apreciado, por lo que debe haber maneras simples, mejores y elegantes, de [inserte las mejores prácticas aquí], de hacer lo que hice. No me preocupa demasiado hacer que este código sea lo más perfecto posible, por la única razón de que esto solo se usa internamente, y realmente, a las personas solo les importa que "funcione" (yo soy el único que mirará el código).

¡Qué palabras de sabiduría se pueden transmitir para suprimir el "¡Lo estás haciendo mal!" ¿sensación? Estoy bastante seguro de que si este sentimiento está presente, entonces probablemente sea cierto que la tarea en cuestión se está haciendo mal.

Respuesta

66

¿Cuál es el problema? El sentimiento "¡Lo estás haciendo mal!" Es la esencia de nuestra existencia.

+6

mejor. responder. nunca. –

+2

De hecho. Un programador que nunca siente ese picor necesita encontrar otra línea de trabajo. O al menos mantenerse fuera de mis equipos. –

+14

Solo puedo estar de acuerdo. Permítanme citar a Scott (http: // simpable.com/code/sick /): "Si como desarrollador puede ver el código que escribió hace 6 meses y no tiene náuseas, es hora de empacarlo e ir a hacer otra cosa". – Cohen

4

RoR, como muchos otros marcos, hacen que sea muy fácil hacer las cosas que anticipan, y es bastante difícil hacer cosas que no anticiparon. Esto es cierto para casi todos los marcos que no son marcos personalizados que diseñó específicamente para su proyecto. El hecho de que tengas que hacer un montón de cosas desordenadas detrás de la escena para hacer algo no me sorprende en absoluto. Entonces, si estás haciendo algo que no se anticipó, entonces es perfectamente natural sentir que lo estás haciendo mal, porque desde el punto de vista de los diseñadores de frameworks, no deberías estar haciendo eso en absoluto.

+0

Teniendo en cuenta que quiso decir que su falta de familiaridad con RoR era más el problema con el plugin "You're doing it wrong" -ness y code-mess ... -1 por falta de lectura. –

10

¡No suprima la sensación! Eso esto es incorrecto sentimiento es la clave de la innovación. Simplemente pregúntese "si esto está mal, entonces, ¿qué sería mejor?"

8

No lo piense como "¡Lo estás haciendo mal!" Piense en ello como "¿Cuál es una mejor manera de hacer esto?" En el mejor de los casos, terminas haciéndolo de manera más eficiente, en el peor de los casos, descubres algo que puede ser útil en tu próximo proyecto.

6

Nunca he terminado un código con el que estoy 100% contento. Pero entonces, no creo que exista un único código (no trivial) en el mundo que no pueda mejorarse.

Son los desarrolladores quienes siempre piensan que han entregado un gran código del que me preocupo.

4

En muchos casos, RoR emplea 'vinagre sintáctico' precisamente para darle la sensación de que hay una mejor manera. Probablemente deberías mirar otros plugins para tener una idea de las convenciones utilizadas. En general, si sigues la convención con RoR, se siente bien.

+1

+1 para la frase vinagre sintáctico. –

29

Hace un tiempo leí un consejo que me ayuda en tales situaciones. Puede ser paralizante intentar hacer algo de la manera "correcta" cuando no sabes nada al respecto.

Así que si tengo que construir, por ejemplo, una aplicación de gestión de clientes-, mi primer paso podría ser:

Construir una realmente horribleaplicación de gestión de clientes.

Es difícil construir uno bueno, pero es fácil construir uno malo que haga una cosa o dos. Y si bien es difícil saber cuándo algo es lo suficientemente bueno, es bastante fácil saber cuándo algo es malo.

Una vez que tengo el malo delante de mí, puedo ver claramente lo que necesita mejorar. Y es fácil cambiarlo, porque el malo hace algo; entonces, usando el principio TDD, lo mejoro y lo mantengo funcionando. Finalmente, la aplicación de mierda evoluciona en una buena.

Muchas de las aplicaciones en las que he trabajado que terminaron en mal estado comenzaron intentando no ser ... y por lo tanto eran demasiado complicadas y difíciles de cambiar, depurar y mejorar.

+1

Agradable. No sabía que mi forma de desarrollo es apreciada :) – VVS

+0

Un sincero +1 aquí. No creo que sea posible construir una versión decente de nada hasta que ya hayas creado una versión "mala". (¡Y eso no se limita a la creación de software!) – reuben

5

Dicen que los escritores deben escribir algo todos los días, ya sea bueno o no.

Marc Raibert's advice es si no puede escribir algo bueno, escribir algo malo, y luego pulir el diablo.

Mi experiencia de programación es cuando he hecho algo varias veces, finalmente comienzo a ser bueno en eso.

Así que no esperes la perfección.

2

Si mira hacia atrás en cualquier parte del código que escriba hoy dentro de unos años, es probable que se sorprenda de lo malo que es. Dicho de otra manera, puede mostrar cuánto ha progresado con el tiempo. La sensación que estás recibiendo forma parte del aprendizaje continuo. Comience haciendo las cosas bien y haciéndolo estable. La elegancia viene con el tiempo y los cambios de moda en el estilo de programación de computadoras son los mismos que con todo lo demás.

+0

Bien dicho, definitivamente me quedo atascado en la rutina "debe ser más elegante en la primera iteración". Nada es más un control de la realidad que mirar guiones medio iniciados que tengo. –

1

La primera vez que trabaja con un lenguaje, framework, etc., va a hacer algo "incorrecto". A medida que desarrolle otras aplicaciones o realice mejoras en los ajustes & de su aplicación original, sabrá qué debe solucionarse o qué podría hacer mejor.

En cada proyecto, casi siempre siento que he hecho algo de manera subóptima, o no perfectamente, pero cuando se trata de eso, el código funciona, permite a las personas hacer lo que necesitan, y está en una camino, un exito ¡Así que sigue escribiendo y sigue aprendiendo!

3

Específicamente con Redmine, el sistema de complementos todavía es nuevo y estamos tratando de encontrar las mejores prácticas. Dado que Redmine (y Ruby on Rails) son de Código Abierto, sugiero que expongas tus sentimientos a los foros del proyecto y veas qué piensa la gente. Otros pueden estar de acuerdo contigo y pueden ayudar a mejorar los sistemas.

Nota: Soy uno de los principales desarrolladores de Redmine, ayudé a construir el sistema de complementos de Redmine, y tengo alrededor de una docena de complementos de Redmine lanzados. E incluso siento que las cosas van hacia atrás de vez en cuando.

2

"¿Cuál es el problema? El sentimiento de" ¡Lo estás haciendo mal! "Es la esencia de nuestra existencia".

Tal vez en realidad no relacionado, pero:

"Un programador es alguien que se gana la vida de la solución de los problemas que fueron causadas por las soluciones antes de que él inventó"

+0

s/programador/político / – slacker

Cuestiones relacionadas