Prácticamente la totalidad de los libros de Ingeniería del Software están dedicados a explicar como hay que organizar un proyecto en el que intervienen varias personas y puede durar varios meses. En cambio, sería también interesante saber cual es la mejor forma de organizar y trabajar en un proyecto individual. La realidad en nuestro país es que al final un solo programador se come todo el marrón de crear un programa durante varios meses y el jefe solo aparece para tocar las narices. He encontrado un excelente artículo donde un americano se ha dedicado a recopilar una serie de trucos durante los 3 años que lleva trabajando en un proyecto en solitario.
Los consejos que da también son perfectamente válidos para convertirse en buen programador, aquí van los puntos clave según él para desarrollar un buen proyecto:
Aspectos no técnicos
- Ponerse metas personales
- Leer, leer, leer -> No solo libros técnicos.
- Tomarse descansos -> No programar más de 24 horas seguidas 😉
- Las reuniones con el jefe no todas malas, solo la mayoría
- Trabajar dentro de unos horarios razonables -> No programar hasta las 6 de la mañana
- Ponerse unos objetivos razonables -> No querer hacer el programa perfecto la primera vez
- Somos arquitectos del software. Y no arregla ordenadores o programadores rasos. -> No te pases todo el día instalando el windows al jefe
Aspectos técnicos
- Planifica, luego programa
- Buscar las herramientas adecuadas para el proyecto
- Arreglar bugs rápidamente
- Conocer los puntos flojos de tu proyecto
- La documentación es tu amiga
- Cuidar la interfaz y usabilidad del programa
¿Qué consejos daríais vosotros desde vuestra propia experiencia como programadores solitarios 😉 ?
Conoce a gente que se involucre y así dejarás de estar solo 😀
No «literalmente» pero algo así (en una empresa esto no es posible). Siempre hay alguien, en la empresa o si trabajas en un rollito de Software Libre, al que puedes pedir de vez en cuando que te diga «como lo ve», y quizás ganes un beta-tester o, cuanto menos, un punto de vista alternativo.
Recuerdo que un compañero de trabajo se encargó de un módulo de administración para la web de un cliente… y hasta que no le dije «oyes, ¿y no se pueden modificar las provincias?» ¡ni se dio cuenta! Solo tenía altas y bajas 😀
Igual que el resto de consejos, yo también propondría una práctica del trabajo en grupo que viene muy bien en los desarrollos solitarios: ¡Organización! Y utilizar herramientas como cvs ¿quién no ha perdido horas buscando la última versión estable del código fuente después de emprender varias ramas de desarrollo que no han dado sus frutos?
Me he sentido identificado con algunos de esos puntos, creo que no tengo mucho que añadir … remarcaría cosas como diseñar antes de codificar, yo era el primer escéptico y me he convencido de su utilidad, aunque aún se me da muy mal, muchas veces necesito verme rodeado de las clases para ver realmente el problema de cómo estan organizadas. Y ¡documenta! otro tópico del que he cambiado de opinión… sin embargo aún contradigo algunos: Programa cuanto puedas estar concentrado y cuando estes concentrado … el tiempo es algo ageno. Y sigo creyendo que es necesario renunciar a la vida social.
Es curioso, pero a mi me ayuda poder conectarme a internet, si tengo un ordenador delante en el que estoy programando y no puedo evadirme aunque sean 5 minutos me agobio y no hago nada.
Toy de acuerdo con vuestros comentarios. Es fundamental planificar, diseñar, montar una buena estructura de directorios, montar un cvs para llevar el proyecto etc. y luego ponerse a programar.
No creo que haga falta renunciar a la vida sodial como dice Albin xD, muchas veces somos nosotros mismos que nos metemos tanto en lo que estamos haciendo que nos olvidamos de todo lo demás. Yo creo que eso no es bueno porque cuando nos relajamos nuestra mente subconsciente sigue trabajando y seguramente al volver a la faena estemos más inspirados.
Una conexión a Internet para preguntar a google, consultar Apis, foros etc. tampoco viene nada mal.
Estoy con Juanjo. La mayor ventaja del trabajo en equipo es obtener varios puntos de vista. Así que el que trabaja sólo debería tener en el messenger (o similar) varias personas para poder compartir impresiones (a no ser que lo que se esté programando sea única y exclusivamente para uso personal).
Esta claro que una conexión a I-net para buscar información es vital. Me he bajado cien veces la documentación de J2EE y aún así sigo acudiendo a java.sun.com/j2ee/1.4/docs/api … para verla :o) y últimamente uso mucho google para cosas como «TabControl C#» a fin de encontrar «código ejemplo» …
Sip, casi que terminas antes buscando en google que en el propio disco duro. No vale la pena tener guardadas las cosas en local, en internet están más accesibles y más seguras 🙂
Cierto, yo he terminado por no guardar programas de menos de 50 Mb en el disco duro. No merece la pena
De acuerdo con los puntos planteados, y agregaria, que es fundamental como en toda tarea creativa, tener amplitud de vision, para lo cual, a mi me ha dado buen resultado, interesarme por tematicas y actividades no directamente relacionadas a la programacion.
Supongo que ya es pedir mucho, pero «el jefe» (el jefe, o quienes están esperando el proyecto empaquetado y funcionando) no te meta más presión de la que necesitas. jeje
Una lectura muy interesante, yo todavía soy un ingenierio informático en potencia, pero por cuestiones de vicio he programado mucho yo solo (también y en menos medida en proyectos colaborativos), así que inevitablemente me siento identificado con cada aspecto técnico y no técnico. 🙂
un saludete.
Hola a todos los que disfrutais la programación, pienso que lo más importante es una actitud mental positiva, que te guste lo que haces, tomarte tiempo para planificar bien el algoritmo, trabajar en un ambiente que te haga sentir comodo, y no desesperarte porque tu programa tiene fallos, tomalo con calma y hallars la solucion, Saludos desde Colombia.
Hola Comparto los mismos puntos. No soy programador solamente hice un «cursito» de visual basic 6 hace varios años atrás, leí mucho en internet y aprendí bastante. Pero, como siempre el verdadero aprendizaje es el que uno hace a partir de lo que le enseñan.Y les hago una pregunta ¿Es posible descubrir errores del lenguaje? Cómo por ejemplo en una sentencia control if…then tener que evaluar mediante una desigualdad (ej: if not (a b) then..) porque si se compara mediante una igualdad(es decir: if a = b then..) es posible que el estúpido compilador de microsoft en vez de comparar asigne dentro de a, lo que contenga b.
Denle mucha importancia al control de errores y siempre busquen la perfección. Es mejor tener un solo programa bien hecho que cién sin terminar.