jueves, 31 de enero de 2013

Hacerse programador en diez años (espero que pueda trabajar en ello antes!)


Esto decía Peter Norvig en un artículo (creo, no sé si forma parte de un libro). Esto es un extracto para acordarme de lo que hay que hacer:


"Aquí está mi receta para el éxito en programación:

  • Interésate en la programación, y haz programación porque es divertida. Asegúrate que se mantiene tan divertida que estarás en disposición de invertir diez años.
  • Habla con otros programadores. Lee otros programas. Esto es más importante que cualquier libro o curso.
  • Programa. El mejor tipo de aprendizaje es aprender haciendo (learning by doing) . Para decirlo más técnicamente, "El máximo nivel de desempeño de los individuos en un dominio dado, no se logra automáticamente como función de experiencia extendida, sino que el nivel de desempeño puede incrementarse incluso en individuos altamente experimentados como resultado de esfuerzos deliberados por mejorar." (p. 366) y "el aprendizaje más efectivo requiere una tarea bien definida con un apropiado nivel de dificultad acorde con el individuo, retroalimentación informativa, y oportunidades de repetición y corrección de errores." (p. 20-21) El libro Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life es una interesante referencia sobre este punto de vista.
  • Si quieres, dedica cuatro o cinco años en una universidad (o más en una escuela de graduados). Esto te dará acceso a algunos posiciones que requieren credenciales, y te dará un entendimiento más profundo del campo, pero si no disfrutas la escuela, puedes (con algo de dedicación) obtener una experiencia similar trabajando. Como sea, la lectura de libros por sí sola no será suficiente. "La educación en computación no puede hacer a nadie un expero programador más que el estudio de pinceles y pigmentos puede hacer a alguien un pintor experto" dice Eric Raymond, autor de The New Hacker's Dictionary. Unos de los mejores programadores que yo haya contratado alguna vez tenía sólamente un grado de bachiller (High School); pero ha producido una gran cantidad de excelentes programas , tiene su propio grupo de noticias (news group) , y sin duda es mucho más rico de lo que yo llegue a ser.
  • Trabaja en proyectos con otros programadores. Sé el mejor programador en algunos proyectos; sé el peor en otros. Cuando eres el mejor, tienes que poner a prueba tus habilidades para liderar un proyecto y para inspirar a otros con tu visión. Cuando eres el peor, aprendes lo que los maestros hacen, y aprendes lo que a ellos no les gusta hacer (pues te ponen a hacerlo por ellos).
  • Trabaja en proyectos después que otros programadores. Proponte entender un programa escrito por otra persona. Mira cuánto toma entenderlo y hazle correcciones cuando los programadores originales no están allí. Piensa en cómo diseñar tus programas para facilitarles el trabajo a aquellos que le harán mantenimiento después de tí.
  • Aprende por lo menos una media docena de lenguajes de programación. Incluye uno con soporte para abstracciones de clases (como Java o C++), uno que dé soporte a la abstracción functional (como Lisp o ML), uno que dé soporte a la abstracción sintáctica (como Lisp), uno que dé soporte a especificationes declarativas (como Prolog o plantillas C++), uno que dé soporte a corutinas (como Icon o Scheme), y uno que dé soporte al paralelismo (como Sisal).

  • Recuerda que hay "computadoras" en la "ciencia de la computación". Conoce cuánto le toma a tu computadora ejecutar una instrucción, alcanzar una palabra de la memoria (con y sin cache), leer palabras consecutivas de disco, y ubicar una nueva localización en disco. (Respuestas aquí.)
  • Involúcrate en un plan de estandarización de algún lenguaje. Podría ser en el mismo comité ANSI C++, o podría ser simplemente decidir si tu estilo de codificación tendrá niveles de identación de 2 ó 4 espacios. Como sea, averigua lo que les gusta a otras personas en un lenguaje, cómo lo perciben, y quizá incluso un poco de por qué lo perciben como lo hacen.
  • Ten el buen juicio para lanzar el plan de estandarización del lenguaje tan pronto como sea posible.
Con todo lo anterior en mente, es cuestionable qué tan lejos puedes llegar sólo leyendo libros. Mi experiencia personal me resultó mucho más útil y confiable que las miles de páginas escritas por los expertos. Fred Brooks, en su ensayo No Silver Bullets, identificó un plan de tres partes para encontrar grandes diseñadores de programas:
  1. Sistemáticamente identificar a los diseñadores líderes lo más pronto posible.
  2. Asignar un tutor de carrera para que sea responsable del desarrollo del prospecto y mantenga cuidadosamente un registro de seguimiento.
  3. Ofrecer oportunidades a los diseñadores en crecimiento para que interactúen y se motiven mutuamente.
Esto asume que algunas personas ya tienen las cualidades necesarias para ser grandes diseñadores; la tarea es persuadirlos apropiadamente. Así que adelante, compra ese libro de Java; probablemente obtendrás algo de él. Pero no cambiará tu vida o tus reales habilidades como programador en 24 horas, días o incluso meses."

Ahora en inglés: History of Internet

Tenía un video muy interesante en inglés con Vint Cerf siendo entrevistado por la BBC pero, como no tengo tanto conocimiento de ese hermoso idioma, voy a incluir otro menos bueno pero igualmente informativo donde nos explica lo mismo o casi que en ése que me ofrecía la Universidad Politécnica de Valencia, a través del curso iDesWeb. Este, aunque también habla en inglés, es más fácil de seguir. Trata sobre la forma de enviar los datos por la Red. El amigo Cerf, con otros (ver imagen superior) llevó a cabo algunas modificaciones para que la Red pudiera ser más efectiva, lo que le ha valido el sobrenombre de "uno de los padres de Internet". Actualmente es el vicepresidente y Evangelista jefe de Internet para Google, Es un cargo con sorna que quiere decir que se ocupa de difundir la palabra de Internet. Lo de Google es sin sorna ninguna. Es uno de los jefes, y me cae bien, qué cosa más rara. Bueno, aquí el video que, por cierto, está extraido de "Así empezó esa cosa que llamamos Internet", dentro de la etiqueta "Historia de la Red":



Temario del curso

Para tener a mano el temario, por si acabo haciendo que esta página me sirva realmente para estudiar o para tenerlo todo junto, aquí voy a poner el enlace: por aquí

miércoles, 30 de enero de 2013

Línea de tiempo- Cronología de Internet

Otro archivo importante a mi modo de ver. Dentro del estudio de este proceso histórico, sencillo aunque espero que claro, hay que estar atento al desarrollo temporal. Las cosas llevan su ritmo y se suceden de una forma concreta que difícilmente hubiera podido ser de otra manera para obtener el resultado conseguido. Me estoy liando...ver cronología
Por cierto, está en inglés...

El verdadero origen de Internet

Este es un enlace a un artículo que me han recomendado leer en iDesWeb para que me vaya empapando de qué es cada cosa. Es bueno saber el por qué, cuándo y cómo de las cosas y también, como aquí vemos, quién es quién.
Si tienes tiempo de ver dónde llega la estupidez humana, más abajo, en los comentarios, puedes sorprenderte de lo tontos y lerdos que podemos llegar a ser. Alguno incluso tocan con la insania mental. Increíble ...leer más (que hace falta; vaya cultura!)

Empezando...

Bien, ya estamos. Me han recomendado en el curso de Iniciación al Desarrollo Web abrir un blog y escribir en él lo que voy aprendiendo. Así, cuando haya terminado, podré ver bien claramente todo lo que he aprendido y cómo he llegado hasta allí. No podía ser más adecuado el utilizar un medio electrónico como un blog que para un curso de cosas relacionadas con la Web, la World Wide Web, ¡empecemos a hablar con propiedad! (es broma!). Bueno, no creo que sea necesario escribir nada más. Sólo estoy empezando y además mañana tengo médico por la mañana. Ya debería estar en la cama...
¿La imagen dices? Para dar un poco de color, si no vaya Rollo dese...saludines...