En este momento estás viendo El valor de un buen programador en Bukkit

El valor de un buen programador en Bukkit

Sé que mucha de la gente que está leyendo este post se consideran programadores de “Bukkit” o “Spigot”. No estoy aquí para arruinar tu ilusión de ser un desarrollador de un juego de cubos que está muriendo, pero voy a intentar desmantelar por qué creo que esto no es una cosa que deseas ser de mayor o ganarte la vida de ella.

You can read this post in English by clicking here

¿Qué es Bukkit?

Contenidos de la página

Primero de todo, ser un desarrollador de Bukkit no significa nada cuando está escrito en tu CV (Curriculum Vitae). Los buscadores de desarrolladores no tienen ni idea de qué es Bukkit, y si lo buscan en Google, el primer resultado que probablemente encuentren es una página sucia e inactiva de XenForo con un logotipo de estilo “Minecraftiano”. Esta página no explica nada sobre qué es Bukkit (una simple palabra como “framework” debería de bastar), en qué lenguaje de programación está escrito, o el nivel de experiencia de programación que se requiere para utilizarlo. ¡Bukkit es simplemente una API!

Apariencia de la página de Bukkit
La apariencia (sucia) de la página de Bukkit

Asúmelo, Minecraft está muriendo

Minecraft está constantemente sacando actualizaciones cada año (cuando la mayoría de compañías grandes del sector de videojuegos sacan al menos 2 o 3 al año), pero la cantidad de nuevo contenido incluido en ellas está constantemente bajando, principalmente porque se están quedando sin ideas. Podrían escuchar a la comunidad (He visto muchas ideas muy chulas en Reddit), pero Mojang se está centrando en otras versiones del juego (principalmente las versiones de consolas y PE) y en su sistema de multijugador demasiado caro llamado Realms porque son más rentables.

Si no me crees (siempre existe “esa” persona), aquí tienes un gráfico oficial de Google Trends que muestra el interés de la palabra “Minecraft” durante los últimos cuatro años:

Gráfico de Google Trends mostrando la importancia de Minecraft

No tiene sentido seguir con esta discusión: Podría estar hablando horas y horas sobre el EULA y como ha matado el beneficio de los servidores, el proyecto de Bukkit siendo demandado mediante DMCA por uno de los creadores originales, la noticia de una API oficial de Mods hace casi tres años, el sistema de combate roto, cómo los servidores soportan cuatro versiones diferentes del juego (de las cuales una de ellas tiene casi 4 años ahora) para conseguir jugadores…

La manera tradicional

La mayoría de programadores de Bukkit empezaron a programar siguiendo a otros Youtubers o tutoriales no oficiales sobre como empezar. Casi todo el mundo que te encontrarás en Spigot (la comunidad de plugins más grande de Minecraft ahora mismo) te recomendará empezar aprendiendo Java primero. Pero YouTube es mucho más grande, y casi toda la gente sigue usando este método en 2016. Esta manera de aprender no funciona porque todos hemos visto casos de “programadores” que no seguían ninguna convención del lenguaje (hasta hay una recopilación chula de ellas) y al final, fallaban al intentar explicar fundamentos básicos del lenguaje como por ejemplo, por qué un plugin requiere extends JavaPlugin para funcionar.

Los programadores exitosos empezaron a programar con un lenguaje “primitivo” como C y las cosas hoy son mucho más simples con Python, Java, [insertar nombre del lenguaje aquí]… El tema es que estos lenguajes son tan fáciles de aprender y programar en ellos que la mayoría de las personas dan el paso y comienzan a programar con APIs (véase el caso de las frameworks de JavaScript) en vez de aprender como se guardan las variables en la RAM, operaciones de desplazamiento de bits…

Los programadores de Minecraft cobran demasiado poco

Los dueños de las networks se sorprenden si les dices que el presupuesto por un plugin complejo supera los 20€. Lo que necesitan de verdad es abrir los ojos y ver como hay pequeñas compañías que están dispuestas a pagar miles de euros por una web simple y eficaz que requiere el mismo esfuerzo si tienes la misma experiencia en ambos ámbitos de la programación.

Os lo voy a enseñar en un ejemplo en el que soy el protagonista: Trabajé durante un año en una network de Minecraft (algunos sabréis a cuál me refiero) que llegaba a manejar números con 4 cifras cada mes. No cobraba nada por trabajar allí (creo que los desarrolladores actuales tampoco) mientras que los Youtubers se beneficiaban de ese montón de dinero simplemente haciendo un vídeo de 3 minutos de duración. Sé que es difícil motivar a la gente a entrar a tu servidor sin esos Youtubers, pero cuando esos programadores de tu network cumplan 18 años, empezarán a buscar ofertas de trabajo más jugosas porque necesitan pagar los diferentes impuestos y dejarán a tu servidor con códigos y algoritmos que tú (y casi nadie) entiende causando un gasto sustancial de dinero al contratar a alguien que sabe lo que hace.

Algunos de vosotros me diréis que esto es un hobby, no un trabajo, pero estás invertiendo mucho tiempo (el único recurso en el Mundo que no obtendrás de vuelta) mientras trabajas para alguien que no has visto en la vida real gratuitamente. Puedes llamar a esto como tu quieras, pero hay un término real en el diccionario que no pondré aquí para no ofender a nadie.

Llegué a un punto donde programar se estaba volviendo aburrido porque no veía ningún beneficio al hacerlo, y todos necesitamos un incentivo y motivación, pero esa es una historia para otro día.

¡Un juego! 

Si te consideras un programador de Bukkit, por favor, intenta responder estas preguntas sin buscarlas en la Wikipedia:

  • ¿Cuál es la diferencia entre los conceptos de inheritancia extends e implements en Java?
  • ¿Por qué es el límite de un entero de 32 bits 2.147.483.647 y 9.223.372.036.854.775.807 el de un entero de 64 bits?
  • ¿Sabes lo que hacen los operadores ^, | (no dos de ellos, sólo uno) y &?
  • ¿Por qué Bukkit necesita saber dónde está tu clase principal de Java en un archivo plugin.yml?
  • Acabemos con una sencilla; ¿cuál es la diferencia entre un float y un double?

Bueno, si lo has hecho, ¡buen trabajo! Si no, sigues que seguir intentándolo e intentar aprender Java como un lenguaje y crear tus propias implementaciones desde zero en vez de usar una API que hace el trabajo sucio por ti. Sólo tienes que salir de este hábito horrendo antes de que se convierta en peor. Sé que te gusta programar y ver tus habilidades en tu juego favorito (llegará el momento en el que usarás conceptos avanzados de matemáticas para crear auras chulos de partículas en tus plugins), pero no puedes empezar a construir un castillo desde la torre.

¡Eso es todo amigos!

Sólo quería centrarme en Bukkit en este post porque es uno de los mayores problemas en la comunidad de desarrollo de Minecraft que sigo viendo incluso después de haberla dejado hace 6 meses; pero como necesitaba enseñaros ejemplos de la vida real de por qué esto no funciona, lo he comparado con otros errores de programación que todos hemos hecho en algún momento de nuestra vida geek. 

Esta sólo es mi opinión reunida de leer más de 50 peticiones de programación relacionada con Minecraft, miles de posts en Spigot pidiendo ayuda con Java (que no tenían nada que ver con Spigot) y como los Youtubers están ganando más por hacer un trabajo de un momento mientras que incontables horas de programación entre miles de líneas verdes de código son infravaloradas. No necesitas seguir estas reglas, pero se ha demostrado que a la larga dejarás de programar (por estar aburrido y sobre-estresado) si lo sigues haciendo a “tu manera”.

Si crees que algo de lo que he dicho es incorrecto, por favor, no dudes en contactar comingo! Estoy ansioso de tener una conversación agradable contigo 

Hugo 

Este post se publicó originalmente en hugmanrique.me (Está en Inglés)

Hugmanrique

Java, PHP, Node.JS and Python Developer. I'm always learning new things by myself.