sábado, 25 de agosto de 2007

Cinco signos de un programador mediocre

Visto en el blog Ogeid

Leyendolo bien, no tiene mucha diferencia con ser docente, ¿no?

A continuación van otros cinco signos que a mi entender delatan a un programador mediocre. Están en tercera persona, ya que imagino que ninguno de ellos lee este blog :)

1. Está convencido de que su herramienta o lenguaje preferido es mejor que otros.

He oído a muchos fanáticos de Python/Java/[insertar cualquier otro lenguaje popular] hablar en forma despectiva de otros lenguajes de uso masivo. Profundizando en la discusión, casi siempre ocurre que la persona se basa en supuestos sobre los otros lenguajes que o bien nunca fueron ciertos, o que han dejado de serlo hace mucho tiempo. Por ejemplo “Java es lento” o “Python no tiene buen soporte para aplicaciones web”. La realidad es que casi todos los lenguajes masivos son apropiados para una gran cantidad de desarrollos, y siempre existen algunos problemas para los cuales una plataforma puede ser más conveniente que otra. Eso no quiere decir que uno tenga que aprenderse todos los lenguajes, pero sí estar con los ojos abiertos a las alternativas posibles para solucionar un problema.

2. No dedica tiempo a continuar aprendiendo.

En esta profesión, nada se mantiene constante. Por ejemplo, una nueva versión de un lenguaje incorpora como nativas ciertas funcionalidades que antes uno debía desarrollar por su cuenta. Surgen herramientas nuevas que le ahorran mucho trabajo a quien las sabe usar. Y aunque todo fuera estático, uno siempre sabe menos de lo que cree y todos los días se puede aprender algo de otro. He conocido “programadores expertos” en lenguaje C que no conocen detalles relativamente básicos del lenguaje que están explicados con lujo de detalles en el libro de Kernighan y Ritchie.

3. Piensa en la implementación antes de analizar bien el problema.

El objetivo de un desarrollador de software es solucionar un problema. Un vicio de muchos programadores, que en realidad es parte de la naturaleza humana, es querer utilizar inmediatamente la experiencia adquirida y lanzarse a implementar una solución. En el terreno del software esto es peligroso. Antes de zambullirse a escribir código es necesario detenerse a pensar en las posibles evoluciones del sistema. Por ejemplo, qué funcionalidades nuevas querrá el usuario, qué requerimientos tienen más probabilidad de cambiar con el tiempo, qué ocurrirá si el número de usuarios crece muy rapidamente, etc. Por supuesto está el otro extremo (la famosa parálisis por análisis), pero por lo general eso se termina a la fuerza cuando el manager o el cliente exige algo para la semana que viene.

4. Le resulta difícil explicar sus ideas a otros.

Esto es una extensión del punto 4 de Ricardo, acerca del código ilegible. Un buen programador no sólo debe escribir código mantenible sino que además debe ser capaz de comunicar sus ideas en forma oral y escrita. El desarrollo de un sistema lo suficientemente complejo requiere la colaboración de gente con distintos niveles de conocimientos técnicos. Obviamente no es lo mismo explicar un bug de software a un colega que lograr que un cliente entienda que ese bug tiene repercusiones importantes y es necesario resolverlo antes que, por ejemplo, dedicarse a mejoras estéticas. Es cierto que la programación a veces atrae a personas con dificultades de comunicación que pueden llegar a hacer excelentes desarrollos de pequeña escala a nivel personal. A nivel profesional, el desarrollo de la capacidad de comunicación es tan importante como el aprendizaje continuo en lo técnico.

5. Le cuesta decir “no sé”.

Me ha tocado participar en proyectos en los que alguien llevó a cabo lo que llamamos “trabajo negativo”. Es decir, hubo que deshacer el desastre implementado por alguien y rehacerlo correctamente. Si el perpetrador original hubiera admitido que la tarea estaba por encima de sus capacidades, se habría ahorrado mucho tiempo. Esto en realidad vale para casi cualquier profesión (quizás no para un político), pero admitir la ignorancia propia es un signo de madurez y confianza en uno mismo. Un buen programador tiene presente que siempre es mucho mas lo que ignora que lo que sabe, y en particular no tiene deseos de reinventar la rueda. A veces se nos aparecen problemas que nunca hemos resuelto antes, y es probable que alguien dentro de la organización (o si no, en cualquier foro de discusión específico) lo haya enfrentado antes y pueda ayudarnos.

martes, 21 de agosto de 2007

OLPC: One Laptop Per Child



Hace poco un amigo recibio una OLPC prestada, para desarrollar aplicaciones sobre esa plataforma. La estuve mirando un rato y la verdad es que me intereso mucho y queria compartirlo con ustedes.



El proyecto fue inicidado por Nicholas Negroponte , autor de "Being Digital (traducido como 'ser digital')" (algunos capítulos acá) un libro que salio hace un tiempo y que fue muy utilizado en el ambito educativo y que les recomiendo. Por otro lado, este proyecto esta teniendo un impacto enorme, y empresas como intel ya se estan uniendo a Negroponte.

Describiendo el equipo:



A simple vista el equipo parece de juguete, sinceramente, pero a medida que uno se va familiarizando su usabilidad se deja ver.








La pantalla es pivotante en 360 grados, por lo que se puede rotar estando apoyada e incluso usar con la pantalla sobre el teclado.






Esta equipada con Wifi, tiene dos antenitas sobre los laterales y tienen la capacidad (o estan en vias de...) reconocer cuando otras OLPC estan cerca, mostrando un mapa de donde esta cada una.

Tambien tienen un monton de aplicaciones pedagogicas, webcam incorporada, touchpad, etc (pueden leer mas sobre las especificaciones tecnicas acá)

Espero haberles despertado curiosidad, y como regalito, les dejo una última pregunta y una imagen:





Qué sistema operativo usan?



:D Aunque los de la ventanita se mueren de ganas de que corra otro...

salu2!

gutes

jueves, 16 de agosto de 2007

Progreso del Software y las aplicaciones

Extrapolemos a los próximos 10 años...

martes, 14 de agosto de 2007

Google Code for Educators

Visto en el blog Ojo Buscador. Parece interesante.


Google ha creado un website que provee materiales y enseñanzas a los Educadores de CS que la consultan para mejorar sus cursos con algunas de las más recientes tecnologías y paradigmas. Debido al tiempo dedicado a la investigación y a la enseñanza, los educadores de CS tienen poco tiempo para ponerse al día, así que desde Google esperan que este nuevo sitio sea de ayuda para ellos.


En la página hay una sección de tutoriales que pueden servir para enseñar a algún alumno los conceptos básicos de una tecnología o para el mismo profesor, si este necesita darle un repaso. En el área Sample Course Content, el educador encontrará materiales como diapositivas de conferencia, lecturas, juegos y proyectos que se puede descargar para usar en su propio curso. Todos estos materiales son distribuidos bajo una licencia de Creative Commons, por lo que el usuario es libre de usar y modificarlos según los términos de la licencia. Este área incluye el contenido de curso desarrollado por la Facultad CS de varias universidades e ingenieros de Google.



Además, también existe un área de vídeo, en que se pueden encontrar conferencias grabadas en vídeo de Google Vídeo sobre las áreas de tecnología. Estos vídeos pueden ayudar a estudiantes y facultades a enterarse directamente de algunas corrientes pioneras en la alta tecnología. El CS Curriculum Search ayudará al educador a encontrar los materiales que han sido publicados en la web departamentos de CS de facultades en el mundo entero. Además, se puede refinar la búsqueda para mostrar solamente conferencias, asignaciones o materiales de referencia para unos cursos determinados.

domingo, 12 de agosto de 2007

Tutorial para Del.icio.us y social bookmarking

Encontrado en el blog Para que sepan del colega Gustavo Cucuzza, un tutorial de esta sencilla herramienta de social bookmarking. Agregamos a continuación un video de la serir "In Plain English, subtitulado al castellano, que explica dicho concepto



Digg, Reddit, Netscape, Furl, y del.icio.us. son herramientas de bookmarking social. Para explicar qué es este concepto, y cual es la idea de compartir noticias y enlaces, este video puede ayudar.

miércoles, 8 de agosto de 2007

Censura en el pais Rojo

(conste que lo escribo yo!)

No es una noticia, pero me parece mas que interesante.

En china, pais conocido por sus practicas dictatoriales y por su acelerado crecimiento economico, tambien esta situado entre los paises con mas crecimiento tecnologico. Acompañando a esto, desde el año 1998, se crearon proyectos como el "Golden Shield Project" o "proyecto escudo de oro", el cual esta destinado a "proteger" al pueblo chino de contenidos no apropiados...

La realidad muestra que el gobierno realmente redirige el trafico a complejos sistemas que se encargan de filtrar el contenido. Por ejemplo: un ciudadano chino podria estar leyendo este mismo blog que estamos leyendo ahora, pero seguro que no esta viendo esta noticia (y solo esta noticia... si es posible) porque seria perjudicial para el :S

Les dejo un link para que se adentren en este tema si les interesa (ademas del articulo en wikipedia que figura con el titulo):

EFF - Electronic Frontier Foundation
Es Una fundacion dedicada a proteger la libertad de expresion, privacidad, derechos de autoria y otros. Posee un rol muy importante en el espectro de la libertad en la web.

Disfruten!

Gutes

viernes, 3 de agosto de 2007

Gutes es famoso

A Dynamic Technique for Enhancing the Security and Privacy of Web ApplicationsEzequiel D. Gutesman, Researcher at Corelabs, a division of Core Security TechnologiesAriel Waissbein, Researcher, Core Security Technologies
Web applications are often preferred targets in today’s threat landscape. Many widely deployed applications were developed in haste and are often ridden with SQL injection, file inclusion and cross-site scripting bugs, creating weak links in any Internet-exposed environment.
In this presentation, CoreLabs researchers Ezequiel Gutesman and Ariel Waissbein will address this issue by introducing a new application protection technology that efficiently identifies and blocks several attack vectors “on the fly.” The protection technique is based on very granular run-time taint analysis of an application’s data and does not require access or changes to the application’s source code.
Applications written in the most common web scripting languages, including PHP, ASP, Python, Perl and Java, can be protected using this technology to prevent database injection, shell injection, cross-site scripting and directory-transversal attacks. A fully functional implementation of the protection technique for PHP will be described in detail.
Ezequiel Gutesman is a researcher at Corelabs, the research unit at Core Security Technologies and Computer Science student at University of Buenos Aires. The research I do is actually focused on web application security, this includes dynamic protection and static analysis.

http://www.blackhat.com/html/bh-usa-07/bh-usa-07-speakers.html