¿Cómo organizarse en solitario para programar?

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 😉 ?

RadioBitácoras

RadioBitácoras es una radio dedicada al mundo de los blogs dirigida por el genial Jasp. En el proyecto están colaborando muchas personas: Jose Luis, Salvador de la Vega, Antonio Barranco etc. Todo ello se ha forjado en el canal #bitacoras del IRC-Hispano donde todas las noches hay un ambientazo impresionante.

Podéis escuchar la radio por las noches en http://www.radiobitacoras.com . Muchos ánimos a los organizadores y todo mi apoyo a esta iniciativa tan interesante y novedosa que le da una nueva dimensión a la blogosfera hispana.

Blogs & Beers, Alicante 2004.0

Mañana se celebra el primer Blogs & Beers Alicantino. Todo el que se anime está invitado. Al final hemos quedado a las 18:00h en el Mercado Central, para ir luego al Pub Mulligans. Si llegáis tarde pasaros directamente por el Mulligans.

Al final no me llevaré mi portátil nuevo porque hasta el Lunes no llega 🙁 . Más información en En el post oficial.

El nombre de tu blog en Japonés

Llevo pocos meses en la blogosfera pero me gustaría agradecer la ayuda y apoyo de ciertos bloggeros con un humilde ‘regalito’ . Gracias a todos. La idea consiste en escribir los nombres de vuestras bitácoras en Japonés.

Como podéis ver, en japonés se escribe todo junto, no hay espacios entre palabras. Ya hablamos en otra ocasión que en japonés hay 3 alfabetos: Hiragana (55 símbolos – Silabario estándar), Katakana (55 símbolos – Para palabras extranjeras) y Kanji (Más de 4000 símbolos – De origen chino). Para escribir los nombres de vuestras bitácoras, al considerarse como palabras extranjeras se escriben con el alfabeto Katakana.

Si alguien quiere el nombre de su blog más grande para un logo o algo que avise. También puede pedir su nombre en japo gente que no esté en la lista o alguien del que me haya olvidado.

Mi nueva máquina

El jueves tendré ordenador nuevo. Será mi primer portátil, que ilu ^_^ . Llevo bastante tiempo investigando lo que más me convenía, al final me he decidido por un Centrino 1.4 Ghz con todas las ventajas que ello conlleva. Generalmente los Centrinos pesan menos, son más finitos, consumen menos, hacen menos ruido, se calientan poco y llevan wifi integrado. Ya veremos si todo esto es verdad cuando tenga la máquina en mis manos.

En concreto me he comprado un Acer Travelmate 291Lmi con 512Mb de RAM, 40 Gigas de disco duro, Grabadora de DVD y pesa solo 2,8 Kg. Todo por 1300 euricos, el Centrino más barato que se puede encontrar ahora mismo.

El jueves os cuento más cosas sobre la máquina que viajará conmigo a Japón. Eso sí, me tendré que comprar un transformador porque en Japón el voltaje es de solo 110V

El test de Turing y los ordenadores Inteligentes

El test de Turing es una prueba que se propuso en los años 50 para comprobar si una máquina es inteligente o no.

El test consiste en poner a chatear a una persona con otra persona y con un ordenador; sin decirle a priori cual es la máquina y cual es la persona. Si chateando descubre quién es la persona, y quién es el ordenador se concluye que el ordenador No es inteligente. Pero si no somos capaces de determinar cual de los dos es una máquina, entonces el ordenador ha pasado el Test de Turing y se podría considerar como una aparato inteligente.

Después de 50 años ningun programa ha conseguido pasar el test realmente, aunque se han hecho muchos intentos. Pensad en lo sencillo que sería descubrir a la máquina con alguna pregunta medianamente complicada, podeís charlar con un ordenador en esta web en inglés para comprobarlo. Pero en los años 80 John Searle desarrolló un contraejemplo diciendo que aunque una máquina pasara el Test de Turing, ésta no sería inteligente:

Imagemos ahora, que un chino está chateando con nosotros por Internet. Utilizamos un diccionario de chino y diversos manuales para contestarle. De esta forma él pensará que nosotros sabemos chino cuando realmente no tenemos ni idea, simplemente seguimos unas reglas que vienen en los diccionarios y libros. ¿Quién sabe chino? ¿Nosotros, los manuales y el diccionario, el ordenador que usamos para chatear o todo el conjunto de elementos? Según Searle no sabemos chino, al igual que una máquina que pasara el Test de Turing no es sería inteligente ya que simplemente sigue unas reglas sin ser consciente de ellas.

A partir de el contraejemplo de Searle la Inteligencia Artificial vive una época de incertidumbre acerca de sus posibilidades a largo plazo. Las hipótesis de Searle nos sirven también para preguntarnos si un programa que juega al ajedrez sabe realmente jugar o simplemente sigue unas reglas predefinidas y poco inteligentes. Igual que el hombre que tiene el diccionario de chino no sabe chino y simplemente sigue unas reglas que le vienen indicadas.

La IA ha avanzado mucho en diferentes campos y somos capaces de resolver muchas tareas concretas: jugar al ajedrez, reconocer objetos, resolver problemas matemáticos, traducir textos etc. También somos capaces de crear programas que ‘aprendan’ a resolver ciertas tareas concretas, por ejemplo los filtros bayesianos que instalamos en los lectores de correo electrónico van aprendiendo a detectar los e-mails de spam. El problema es que no sabemos crear un sistema más general, un programa que juega al ajedrez no puede aprender por si solo a traducir textos, reconocer objetos o filtrar correos de spam.

Espero vuestros comentarios acerca de los fallos del contraejemplo de Searle (Hay uno muy evidente). También podéis comenzar a crear un programa que supere el Test de Turing o crear el programa definitivo que sea capaz de aprender cualquier cosa por si solo 😉


Nota: los ejemplos sobre el Test de Turing y el contraejemplo de Searle (Más conocido como la Sala china) han sido adaptados según mi visión a la época actual. Evidentemente en los años 50 no existía Internet y por lo tanto lo de chatear con otra persona no tiene sentido. Originalmente se explicaba todo en base a personas y ordenadores metidas en salas de forma que no se pudiera ver lo que hay dentro. El ‘Juez’ estaba fuera y debía determinar dentro de que sala estaba el ordenador y en cual estaba la persona. En el caso de Searle, una persona que no sabe chino que se mete en una sala con el diccionario de chino (De ahí el nombre de Sala china). El ‘Juez’ está fuera y debe determinar si la persona de dentro de la sala sabe chino.

Más información sobre el Test de Turing
Contraejemplo de Searle en Más que código