Programación Basada en Google (PBG)

8 comentarios
La Programación Basada en Google (PBG) es un paradigma de programación que hace furor entre los programadores junior... y no tan junior. También se conoce por Programación Orientada a Ejemplos (POE). Es aplicable a cualquier lenguaje de programación popular, e incluso a HTML y CSS.

Los principios en los que se basa son los siguientes:
  • Leer manuales, libros o javadoc es un coñazo mortal.
  • Lo que no está en Internet, no existe o no se puede hacer.
  • Todo el mundo que escribe en Internet controla mazo.

El único requisito es una conexión a Internet y capacidad para pulsar Ctrl-C y Ctrl-V.

El modus operandi consiste en que ante cualquier problema que surja programando, se debe acudir a Google (fuente de infinita sabiduría) y realizar una búsqueda (1). Posteriormente, se selecciona uno de los recursos encontrados (2). Se hace un copypaste del código encontrado al proyecto, más los mínimos refactorings necesarios para que compile (3). Si no funciona, repetir (2) y (3). Si sigue sin funcionar, volver a (1). Si sigue sin funcionar, llamar a un compañero y suplicar ayuda.

Ahora en serio

Esta situación es el día a día en muchos equipos de desarrollo software. Y funciona. La cantidad y calidad de información que se puede encontrar con Google es muy grande. Así que funciona muy bien. Nos hace más productivos. Sobretodo si el compañero que da soporte y hace las ayudas, tiene pericia.

Ésto por supuesto viene de perlas para sacar a juniors y becarios de las trincheras a primera línea de fuego. Pero tiene un doble filo, bastante largo, en forma de 2 negativos efectos sencundarios. Uno, el programador no gana, o gana muy poco, conocimiento base. Y dos, esa ganancia en productividad no siempre es real.

Conocimiento base

En Internet se puede aprender mucho sobre muchas cosas. Pero normalmente vas picoteando cosas muy determinadas de una materia. Si tienes un importante conocimiento base en esa materia, lo que vas picoteando va sumándose a tu conocimiento base de forma natural y duradera. Sin él, la mayoría de las veces sólo vas sobreviviendo.

En mi opinión, la mejor forma de adquirir un saber real en algo es aprender y dominar sus bases. Y para ello nada mejor que un buen libro que te guíe desde el principio. Nunca serás capaz de diseñar un sistema OO de tamaño medio o grande, si no tienes una buena base en POO. Nunca serás un experto en Hibernate sin una buena base en SQL. Nunca crearás soluciones eficientes si no dominas las estructuras de datos. Nunca serás un gran programador Java si no conoces las principales clases de los paquetes básicos de Java. Etc, etc.

Falsa sensación de productividad

Google es tu amigo. Con su ayuda todos hemos salido de más de un apuro en tiempo record. Pero si hemos tenido que buscar algo es porque no lo sabemos y, por tanto, existe el riesgo de que no sepamos discernir si lo que hemos encontrado soluciona realmente nuestro problema y no sólo aparentemente.

Un error de este tipo sólo se descubre en fases muy tardías del proyecto, donde el coste de arreglarlo se multiplica. Me vienen a la cabeza mapeos de Hibernate que aparentemente funcionaban pero que en realidad generaban un excesivo número de consultas, una linkedlist recorrida con get en lugar de un iterator que provocaba tiempos exponenciales de ejecución, algoritmos defectuosos de formateos de fecha o números decimales en base a substring, conexiones a base de datos sin liberar,...

Este post no es ningún alegato en contra de buscar información en Internet, sólo prentende llamar la atención sobre un hábito que está sustituyendo a la lectura de libros, cuando en realidad deberian ser complementarias.
Otro efecto secundario es, ante esta sensación de productividad o rendimiento, lo rápido que crece el ego y la vanidad de cada uno. Pero ya sí que tiene dificil remedio...