Esta es una gran pregunta. Rascaré la superficie en esta respuesta.
Si no sabe qué producto está construyendo, por qué y para quién, ya está en problemas.
Primero, descubra quién es el público objetivo. Haga una investigación de mercado para comprender lo que se necesita. Eso incluye mirar el software de la competencia y qué características se utilizan. Tener un miembro del equipo de software a cargo de ser un representante del cliente. En otras palabras, aprenderán sobre clientes típicos y ayudarán a evaluar si el software está en camino de satisfacer las necesidades de los clientes.
- ¿Qué se entiende por documento de especificación funcional?
- ¿Qué tan lejos en la cadena de abstracción necesitas entender para ser un "gran" programador?
- ¿Qué se consideraría un buen porcentaje de capital para recibir como desarrollador de software de nivel medio en una empresa de aproximadamente diez personas?
- ¿Qué es mejor: ingeniería de software o ingeniería informática?
- ¿Cómo es trabajar en OPOWER?
A continuación, adopte un proceso de desarrollo adecuado para desarrollar software que no esté muy seguro de hacia dónde se dirige. Agile / Scrum es una buena opción para esto, siempre que tenga un buen proxy de cliente. Establezca sprints de un tamaño que tenga sentido (por ejemplo, 2–3 semanas). Cada sprint debe centrarse en una nueva característica o actividad. Obtenga un boceto / prototipo / implementación completa, luego haga una demostración al final del sprint para el defensor del cliente. En los momentos apropiados, deberían compartir con los clientes potenciales y ver qué piensan esos clientes.
El ciclo de retroalimentación entre diseñar características, implementarlas y obtener retroalimentación es CRÍTICO. Una buena agilidad cuenta con una retroalimentación rápida para guiar el diseño del software y flexibilidad para adaptar el software a lo que funciona y lo que no funciona.
En términos de cosas mecánicas, recomendaría:
- Creación de prototipos de nuevos conceptos en código desechable, separado de su base de código principal. Haga esto para funciones grandes que no desea implementar por completo. Puede ser tan simple como una baraja de cartas o un guión gráfico. Demostrar a las personas.
- Escriba pruebas de unidad e integración a medida que avanza. Mantenlos funcionales, mantenlos rápidos. Esto ayudará a garantizar que no rompa su código.
- Utilice un excelente control de fuente. Personalmente me gusta GIT, pero hay otras opciones. Regístrese con frecuencia en su sucursal privada mientras codifica, y actualice la línea principal con bits de código que funcionen.
- Utilice buenas herramientas y procesos de desarrollo. Tener compilaciones automáticas regulares. Tenga un IDE excelente y estándares de codificación que el IDE le ayuda a cumplir. Utilice el lenguaje más simple que funcione para su escenario, por ejemplo, Java en lugar de C ++, C ++ en lugar de C.
- Asegúrese de comprender el mercado y su cliente. Hacer investigación de usuarios. Evalúe sus características haciendo que las personas las usen.
Estas son buenas prácticas centrales de desarrollo, y sobre todos los consejos que puedo dar, ya que no se especifica el tipo de software que se está creando.