Metodologías / herramientas para desarrollar por cuenta propia [cerrado]

10

Suponga que tiene que desarrollar un software de tamaño mediano +, completamente por su cuenta. Como si fuera un proyecto personal que quieres lograr.

¿Qué metodologías / herramientas utilizaría para definir qué debe desarrollarse, aprenderse y tener una idea global de qué es el sistema también en sus detalles?

Básicamente para mantenerse en el camino y no perderse en el camino.

Cassio
fuente
3
Lápiz, papel y mi cerebro. Tener una pizarra ayuda. En serio, gran parte de mi trabajo de diseño ocurre justo en el IDE. ¿Tiene una pregunta específica, basada en un problema que enfrenta actualmente? Nos ayudaría responder la pregunta si supiéramos específicamente qué problema está tratando de resolver.
Robert Harvey
@RobertHarvey jaja Es muy cierto. Especie de. Estoy desarrollando una idea que tenía, proyecto personal. Es solo que el software es más grande de lo que imaginé y hay cosas que todavía tendré que aprender cómo funciona y luego descubrir cómo desarrollar eso.
Cassio
1
@RobertHarvey Los principales problemas son probablemente la falta de lluvia de ideas sobre los detalles, el seguimiento de lo que debe hacerse y una visión del sistema en su conjunto.
Cassio
2
Estoy 99.9% seguro de que tenemos esto cubierto en otra pregunta o dos, pero no puedo encontrarlos en este momento.
Adam Lear
44
Siempre trato de perderme en el camino. Es un camino rápido hacia el aprendizaje.
Joel Etherton

Respuestas:

5

Por lo general, solo uso Mercurial, si quiero una función, simplemente la agrego y si ya no la quiero, simplemente la elimino. Además, trato de escribir bien mis comentarios de confirmación para no perderme.

eiefai
fuente
Sí, Mercurial es una de esas herramientas que parece que fueron hechas por Apple :) Simple pero poderoso, hermoso pero útil ...
Rook
4

Puede crecer fácilmente más allá del alcance de su atención. No el lapso , la amplitud .

Es difícil considerar demasiados elementos a la vez .

Y luego ... se convierte en una montaña rusa de regresión .
Todo lo que haces rompe cosas anteriores, y retroceder no ayuda.

Para evitar eso, debe probar agresivamente la regresión .
Automáticamente. (No puedes hacer eso de otra manera y mantenerte cuerdo)

Las pruebas agregarán una tensión difícil a sus energías.

Si el proyecto tiene que ver con la interfaz de usuario ... probablemente estés tostado:

  • Las pruebas de IU son difíciles .
  • Las pruebas automatizadas de IU son ... aún difíciles .

Idea de último minuto no probada para proyectos centrados en la interfaz de usuario
Inscriba a un pariente con tiempo libre y afición a hacer clic con el mouse como probador de interfaz de usuario.
Estoy pensando "adolescente" aquí.

Otros asuntos:

  • Tomará una eternidad .
  • Te enfrentarás al bloqueo del escritor .
    (En realidad no existe como condición, es una etiqueta errónea popular que las personas atribuyen a su falta de disciplina )

Si estás acostumbrado y amas algún tipo de control de versiones , úsalo.
Comenzar a aprender uno ahora te distraerá .

Graficar sus ideas, como ya se señaló, puede ayudar.

He usado Freemind , CMaps , XMind , yEd , graphviz y ... algo más.

XMind es lo menos inútil:

  • muy rápido para insertar los datos en
  • diseños automáticos
  • tratando estrictamente de hacer que te quedes en el tema
  • muy bueno para tomar notas durante una lección (I así que desearía tener que en la universidad )
  • aún es difícil de usar mientras te decides por algo que no has aclarado allí.

Un lápiz y una libreta todavía obtienen buenos resultados en mis diez mejores:

  • Me escanear muchas de mis notas
  • Hago muchos pequeños dibujos explicativos.

    • (Si piensa con imágenes, es posible que nunca encuentre una herramienta de lluvia de ideas satisfactoria)

Como último recurso, siempre puedes preparar powerpoints para tu propio consumo :)

ZJR
fuente
+1. Sin embargo, ¿tiene alguna sugerencia sobre la cuestión "decidirse sobre algo que no ha aclarado"?
Cassio
@Cassio I alternar entre xmind y pencil + sketchbook, hacer listas puntiagudas en libreoffice, escribir ejemplos y probar alguna implementación aproximada. Es un proceso bastante lento, pero debes desechar una línea de pensamiento improductiva para llegar a algo que se siente bien. (PD: el papel arrugado antes de
tirarlo
1
@ZJR De hecho. A veces tenía miedo de escribir cosas que no necesitaba y de perder el tiempo, pero ahora veo que así es como funciona el proceso. Inicialmente escribimos algunas cosas inútiles pero mejoramos con el tiempo. :) ¡Gracias!
Cassio
3

Programación alfabetizada.

El practicante de programación alfabetizada puede ser considerado como un ensayista, cuya principal preocupación es la exposición y la excelencia del estilo. Tal autor, con un tesauro en la mano, elige los nombres de las variables con cuidado y explica qué significa cada variable. Él o ella se esfuerza por un programa que sea comprensible porque sus conceptos se han introducido en un orden que es mejor para la comprensión humana, utilizando una mezcla de métodos formales e informales que se refuerzan mutuamente.

Si está escribiendo un documento (o libro o informe o documento) sobre su proyecto, entonces tiende a permanecer en la tarea.

Comience con un resumen de lo que está haciendo: descripción general del caso de uso, versión 1, versión 2, versión n. Escriba un resumen de los casos de uso. Priorizarlos. Ponlos en sprints y lanzamientos.

Cada versión tiene una vista de caso de uso, vista lógica, vista de procesamiento, vista de componentes, vista de implementación. Para el sprint, detalla los casos de uso. Publique el documento HTML para mostrar lo que va a hacer. Después de detallar los casos de uso para el sprint, escriba el modelo lógico. Escribe código para apoyar esto. Escriba la documentación de procesamiento. Escribe el código para apoyarlo. Crea módulos. Escriba la documentación de la vista de componentes. Escriba las pruebas y la documentación de respaldo. Publique los resultados del sprint como un documento HTML.

Repita para cada sprint. Revise y edite su documento de vez en cuando.

Hay muchísimas herramientas de programación alfabetizadas. Pueden ayudarlo a producir una fuente que cree la documentación y el código a partir de un solo texto.

Uso sphinx y PyLit pero eso es porque soy un programador de Python.

S.Lott
fuente
Es bueno sacar un periódico de la universidad y luego olvidarse de él, malo si planea lanzar o mantener el producto después. Todos en todas partes deberían usar doxygen , incluso en python. Pero eso es solo porque soy fan :)
ZJR
2

Si desea escribir sus ideas, puede utilizar una herramienta de mapeo mental como XMind o FreeMind . Ambas herramientas son gratuitas (para individuos para XMind), y son geniales al intercambiar ideas y organizar sus ideas. Lo que pasa con estas herramientas es que tienes menos posibilidades de olvidar algo.

Yo personalmente usé Freemind antes de comenzar mi último proyecto personal. No tenía una metodología particular per se . Simplemente expuse mis ideas durante sesiones de una hora una vez cada dos días. Creo que espaciar las sesiones de lluvia de ideas me ayudó a ver mejor qué estaba mal, qué no era esencial pero que podría ser útil en versiones posteriores, etc.

En mi primer compromiso de código también guardé el archivo de lluvia de ideas en el repositorio de código fuente (usé bitbucket ) y lo mantuve actualizado con mis nuevas ideas.

Jalayn
fuente
Muy bien. Ya estoy probando todo esto. ¡Gracias!
Cassio
2

Trátelo como un proyecto de software real (porque es uno). Solo hay algunas cosas que cambian porque el número de desarrolladores es uno. Aún necesitas control de fuente. Todavía necesita una forma de organizar las características para agregar errores y corregirlos. Todavía necesita una prueba automatizada para verificar que no cree regresiones en el código. También debe tener una forma automática de compilar el código (si es necesario), ejecutar las pruebas y ver los informes.

Estoy trabajando en un proyecto personal tal como lo describiste. Estoy usando Git, Redmine, JUnit y Jenkins para satisfacer todas las categorías que describí. Mi flujo de trabajo es:

  • Elige un boleto para trabajar
  • Ramifica la base del código
  • Desarrolle código y pruebas para la tarea (confirme cambios en la sucursal en buenos puntos de guardado)
  • Fusionar la rama de regreso al tronco
  • Verifique que la compilación fue exitosa, que las pruebas pasaron y que no hubo otros problemas
  • Repetir

Mantener todo administrado y organizado es tan importante como cuando hay muchos desarrolladores. Con muchos desarrolladores, necesita organizarse para que la información se difunda a todos. Cuando solo eres tú, ya tienes toda la información, pero recordar cada parte del sistema es difícil. Un sistema administrado lo hace más fácil para usted y puede concentrarse en la tarea en cuestión.

muestreador
fuente
2

Herramientas:

  • Sistema de versión de control (incluso si usted es el único desarrollador en su garaje o PC personal): GIT, Mercurial, Tourtoise

  • Editor con resaltado de código fuente, incluso si tiene un IDE (Scintilla, Vim, Notepad)

  • Pizarra, pizarra blanca del mundo real, algunas cosas simplemente no caben en su aplicación Designer Tools.

  • Herramienta de diseño: Rational Rose, Umbrello, (UML, ER,) Visio o "Pobres herramientas de diseño para desarrolladores" como Power Point, Corel Draw, Open Office Draw

  • Texto / Código fuente Herramienta de comparación de texto, por ejemplo, WinMerge

umlcat
fuente
¡Muy útil! Estoy poniendo todo esto en práctica. Gracias.
Cassio
1

Depende de cómo puede distinguir y manejar las diferentes tareas, ya que deberá observar cada paso del proceso de desarrollo.

Creo que las herramientas solo son útiles si ya sabes cómo usarlas y uno de los peores errores es aprender cómo funciona una herramienta en lugar de saber qué hacer con ella.

Primero, en mi opinión, debe escribir lo que espera que haga el software y especialmente lo que no hará. Ese es un punto crucial. El siguiente paso es dividir el sistema final en subsistemas inferiores, lo que facilita el proceso de construcción. Y por último, pero no menos importante, deberá elegir sus herramientas. Básicamente un buen IDE, un VCS y un modelador de datos. Puede agregar muchas otras herramientas para ayudar, pero tenga cuidado de no comenzar por el camino equivocado.

Bueno, el comienzo no parece tan atractivo, pero el proceso será divertido a lo largo del tiempo.

Lucas Maus
fuente
¡Si! Recuerde que el código es, si el proyecto está bien diseñado, una pequeña parte del todo.
Lucas Maus