Programación Basada en Google (PBG)

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...

8 comentarios :: Programación Basada en Google (PBG)

  1. Muy buena la entrada.
    Y las soluciones que yo uso son
    1º Mira en varios sitios a ver si coinciden las respuestas. Y si son distintas ya te pones a analizar cual es la correcta.
    2º Encapsula ese trozo de código para que luego puedas modificarlo.

  2. Muy bueno Julio.

  3. Bué,
    La POE sólo la practican los novatos, los que controlan pero de verdad, son los que hacen Programación Basada en Foros. Esos no hace ni falta que busquen en Google, con poner en un foro "No se naaaa, dame arrrgo..." obtienen unas respuestas totalmente fiables y 100% de calidad que solucionan todos sus problemas teniendo en cuenta todos los factores.
    Si es que Internet es una maravilla.
    :) ;) XD

  4. Muy buena entrada.

    Donde trabajo intento imponer (no me gusta el término, pero es así) el uso de referencias oficiales. Llevo tiempo usando Hibernate, Spring, Seam, RichFaces... Un largo etcétera de librerías Open Source ejemplarmente documentadas. Y, cuando se queda corta, los "X in action" siempre rematan la jugada. La diferencia entre la gente que sigue esta recomendación y los que no es abismal. En un mes a los segundos no hace falta leer ni una línea de su código, se les puede delegar cualquier tarea y confiar en ellos al 100%. Los primeros, sin embargo, pueden estar años programando sin haber aprendido nada. Copiar, pegar y reemplazar (en el mejor de los casos) es todo su workflow.

  5. Genial. Me he reído por no llorar porque es cierto como la vida misma... Es curioso que lo que diga el papa, o el zp de turno, o un artículo científico sea entrecomillable y rebatible pero que si algo aparece en la wikipedia es palabra de dios...

    P.D: ¿Recordáis aquellas súplicas al jefe para que apruebe la compra de 4 libracos tipo biblia? ¿y la emoción de cuando llegaban? ¿y cuándo te los llevabas a casa???

  6. Vaya! muchas gracias a todos por vuestros comentarios. Me alegro mucho de que os gustara.

    @Nacho, muchas gracias también por la referencia y tus palabras. Me parece una gran idea lo de tener una serie de urls oficiales donde acudir primero a buscar ayuda. Yo cuando empezaba (y aun ahora a veces la uso) visitaba mucho Java Almanac, ahora en http://www.exampledepot.com/

  7. julio cesar vos no buscas en google??

  8. Muy buena entrada, si.
    habria que desahabilitar el copy paste y baja la resolucion de la pantalla para que se esforzaran en escribir codigo de mas calidad auqnue solo fuera por escribir menos y que el codigo que haya en pantalla sea inteligible

Publicar un comentario