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.
tools
methodology
Cassio
fuente
fuente
Respuestas:
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.
fuente
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:
Otros asuntos:
(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:
Un lápiz y una libreta todavía obtienen buenos resultados en mis diez mejores:
Hago muchos pequeños dibujos explicativos.
Como último recurso, siempre puedes preparar powerpoints para tu propio consumo :)
fuente
Programación alfabetizada.
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.
fuente
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.
fuente
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:
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.
fuente
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
fuente
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.
fuente