¿Cómo sabes cuándo dejar de agregar funciones?

16

Hace algún tiempo escribí un script de Python muy pequeño que revisaba periódicamente un feed xml para nuevas entradas, y alertó al usuario de nuevas entradas cuando estaba presente. Escribí esto para mí, por lo que era esencialmente un programa basado en la consola que cualquier persona cómoda con una interfaz de consola podría haber usado.

Después de un tiempo decidí que podría ser más útil para otras personas y comencé a ordenarlo, desinfectar entradas, eliminar errores. Se me ocurrió que, como había escrito el guión, sabía cómo usarlo de manera eficiente, precisa, etc. Es posible que otros no, así que comencé a agregar una GUI. Esto comenzó como un menú simple y luego se expandió a una GUI más completa con una interfaz y un menú de opciones. Luego agregué preferencias de usuario almacenadas y también almacenamiento para feeds xml previamente buscados para acelerar las búsquedas repetidas.

Agregué el registro para ayudar a depurar la aplicación en caso de que las cosas salgan mal, llevé la aplicación a la última base de código estable de Python disponible para mi plataforma elegida y mejoré las características de diálogo.

He corregido y comentado mi código claramente, y todavía tengo cosas que creo que se pueden hacer para mejorar la aplicación antes de ponerla a disposición de los probadores alfa. Está muy lejos de mi guión original de 20-30 líneas. Lo que anticipé me tomaría solo una o dos horas para pasar de la prueba de concepto a un programa de uso aceptable, ha tomado entre 10 y 20 veces más. (Todavía soy un novato, y las cosas me llevan mucho tiempo, pero aún así ...)

¿Cómo sabe cuándo dejar de agregar / ajustar / arreglar cosas y dejar que su bebé salga a la intemperie?

miedo
fuente

Respuestas:

8

Cuando llegas a la fecha límite.

Si no tienes fecha límite, este es tu problema ...

Así es como trabajo:

  1. Agrego nuevas características / errores en la cartera de pedidos de mi producto.
  2. Priorizo ​​toda la cartera de productos en valor comercial y estimado (el último es opcional en caso de proyecto personal).
  3. Me asigno tiempo de trabajo a mí mismo. La fecha de lanzamiento es el final de ese tiempo.
  4. Comienzo con el primero de la lista. Trabajo en una función a la vez. Para completarse, una función debe estar realmente completa, incluida la documentación (al final de una función, potencialmente puedo enviar el producto).
  5. Tomo el siguiente hasta que se consuma el tiempo asignado.
  6. Si el tiempo se consume cuando estoy construyendo una característica, la descarto temporalmente.
  7. Cuando se consume el tiempo asignado, tomo la última compilación y hago un lanzamiento con ella.
  8. Repito el proceso desde el punto 1.

fuente
Hmm, me gusta mucho el flujo de trabajo aquí. Este es un proyecto de pasatiempo, no estoy seguro de que intente monetizarlo, es más probable que se ofrezca de forma gratuita o de código abierto.
fearoffours
44
El valor no significa dinero en el flujo de trabajo de sugerencias anterior. Tú decides cuál es el valor.
OK, esto es asombroso. He estado aplicando esto desde que vi la publicación el día de hoy. Mi fecha límite es el miércoles a las 3 p.m., ¡y las cosas van bien! Me siento más seguro de hacia dónde van las cosas y en qué estoy trabajando. He priorizado (en los comentarios en la parte superior del guión) cosas que se deben hacer antes de este lanzamiento, y cosas que se pueden dejar hasta más tarde. Y estoy escribiendo la función en la que estoy trabajando actualmente para asegurarme de que sigo enfocado en una tarea a la vez. ¡Gracias!
fearoffours
3. I allocate work time to myself. The release date is the end of that time.@Pierre 303, ¿Cuándo dijiste que querías timedecir horas, es decir, construcciones nocturnas? o el tiempo como un sprint completo?
Kenan D
@LordCover: Por ejemplo, me asigno 3 semanas (5 días a la semana, 8 horas al día) para trabajar en el producto. Envío al final de las 3 semanas.
3

Haga un SRS y luego codifique según los requisitos. Cuando haya alcanzado todos los objetivos mencionados en el SRS, es hora de detener y probar su producto.

Chankey Pathak
fuente
Hm buen punto. No tengo nada escrito sobre su propósito en este momento.
fearoffours
Los SRS son buenos, pero para un equipo de hombres solteros en un proyecto personal es un poco exagerado. La documentación es buena, pero para este tipo de proyecto, no creo que se necesite todo un SRS por el momento.
Chris
@ Chris - Un SRS siempre es algo bueno. Lo que es un proyecto personal y se lanzó hoy de forma gratuita, sigue siendo una pieza de software gratuita y escrita por docenas de personas. Un gran ejemplo de por qué la documentación es importante en Facebook, fue bastante más fácil escribir la documentación en las primeras etapas y actualizar esa documentación, entonces sería escribirla hoy. Si no puede escribir su diseño, explique el diseño, la documentación de cómo funciona la función y cómo puede codificarla.
Ramhound
2

A corto plazo, cuando tiene algo que funciona de manera confiable y no se bloquea. Incluso si no hace todo lo que podría hacer si trabajó en él indefinidamente. El envío como dice el refrán es una característica . La confiabilidad y el conjunto de funciones restringidas le brindan la oportunidad de que la funcionalidad principal sea probada por personas reales en el mundo real, que encontrarán cosas en las que nunca pensó que rompen su código de maneras que nunca se le pasarían por la mente. Cuantas menos funciones tenga, en este punto, más fácil será solucionar esos problemas iniciales. Como la funcionalidad principal funciona de manera más confiable, puede comenzar a implementar otras cosas "agradables" con el conocimiento de que su código más importante y central aún funciona bien.

A largo plazo: cuando haya completado y documentado el sistema de complementos que permitirá a sus usuarios (y, por supuesto, a usted) implementar nuevas funciones de forma rápida y sencilla si las necesita. Esa debería ser la última característica que necesita agregar, después de eso, todos son complementos.

glenatron
fuente
1

Cuando esté seguro de la estabilidad de su software, vaya a una versión, aunque puede haber características pendientes. La estabilidad es más importante que las características. Obtenga los comentarios, incorpórelos a las funciones existentes y decida qué debe entregarse a continuación y cuándo.

Gopi
fuente
1

Siempre puedes cuidar un proyecto para siempre.

Una regla muy buena es que nunca debe agregar cosas que no están en un caso de uso aprobado. Esto asegura que no termines con muchas cosas que sería bueno tener, pero que nadie usa. La aprobación garantiza que otros que usted estén de acuerdo en que esto es necesario en su proyecto.


fuente
1

Depende de por qué está agregando funciones. ¿Los propietarios del proyecto lo piden? usuarios? QA? Programadores?

  • Agregue las funciones que tiene que.
  • Examina las características que son importantes.
  • Ignora las características que es bueno tener.

Concéntrese en el propósito del programa y enfóquelo. Las solicitudes de características que extienden su propósito deben ser cuestionadas a fondo antes de que se convierta en una navaja suiza.

Huperniketes
fuente
Me gusta la idea de mantener un producto enfocado. Estoy tratando de hacer eso, ¡y todavía encuentro formas de ocuparme!
fearoffours
2
@fearoffours, siempre puedes encontrar formas de mejorar tu propio trabajo. El punto es descubrir de los usuarios cómo hacer que funcione mejor para ellos. Resuelve obstáculos reales . Alise los puntos ásperos reales .
Huperniketes
buen consejo en ese comentario, (+1) ¡gracias!
fearoffours
0

Ya no dejo de agregar funciones. Solo trato de sacar la aplicación lo antes posible y escribir archivos txt si es necesario. Entonces puedo decidir cuándo parar y cuándo trabajar en algo diferente

También ayuda que me guste hacer el mínimo posible para hacer algo (sin recurrir a la piratería).


fuente
0

Te sugiero que la caja de tiempo. Date una semana. Cree una lista de trabajo para completar durante esa semana, y asegúrese de que si tiene una función que no puede completar, puede respaldarla.

Al final de la semana suéltalo. Libertad anticipada, la liberación a menudo.

mlk
fuente
¿Pero qué hacer cuando algunas características dependen unas de otras?
Kenan D
0

Cuando tenga algo confiable y útil, suelte. No tiene que dejar de agregar funciones, pero si alguien está usando lo que tiene, obtendrá una idea mucho mejor de las funciones que desea. Actualmente, estás adivinando.

David Thornley
fuente