En los últimos años, de repente ha surgido en todo el mundo una moda de programar para todos. Hasta el presidente de Estados Unidos, Obama, está escribiendo JavaScript. Pero, como un humble developer (el llamado developer es una forma más moderna de decir «ingeniero de software») que se gana la vida escribiendo código (y navegando sin ton ni son por internet en horario laboral), quiero recordarles a quienes quieren aprender a programar algo importante: elijan con cuidado su primer lenguaje de programación.

En el círculo de los ingenieros de software (en China se les llama «programadores» o «granjeros de código»), el fenómeno de que los letrados se desprecian mutuamente es muy grave. En todos los ámbitos del diseño de programas existen intrincadas «cadenas de desprecio». Desde lenguajes de programación, editores, plataformas, hasta si la llave `{` se escribe en la misma línea que el `if` o en la siguiente, personas de distintos bandos están acostumbradas a despreciarse unas a otras. Y entre todas, «¿qué lenguaje de programación usas?» es una de las cadenas de desprecio más populares. Por eso, para los principiantes que recién entran en el campo de la programación, si no eligen bien el lenguaje, desde el principio pueden caer al fondo de la cadena de desprecio.

¿Qué tan intensa y cruel es la cadena de desprecio de los ingenieros de software?

63918611gw1enbo8tfia9j20jg0dw753

Lenguajes de programación

Los ingenieros que entienden la programación funcional desprecian a los ingenieros que siempre tienen los patrones de diseño en la boca. Los ingenieros que siempre tienen los patrones de diseño en la boca desprecian a los ingenieros que dicen «así no es OO». Los ingenieros que dicen «así no es OO» desprecian a los ingenieros que dicen «¿Eh? ¿Qué es eso de orientado a objetos? ¿No basta con poner el code repetido en una function?». Los ingenieros que dicen «¿Eh? ¿Qué es eso de orientado a objetos? ¿No basta con poner el code repetido en una function?» desprecian a los ingenieros que copian y pegan el mismo code por todas partes. Los ingenieros que copian y pegan el mismo code por todas partes desprecian a los PM.

Los ingenieros que escriben en lenguajes estáticos desprecian a los ingenieros que escriben en lenguajes dinámicos.

Los ingenieros que escriben en ensamblador desprecian a los ingenieros que escriben en C; los ingenieros de C desprecian a los ingenieros de C++; los ingenieros de C++ desprecian a los ingenieros de Java y C#; los ingenieros de Java y C# se desprecian mutuamente; los ingenieros de C# también desprecian a los ingenieros de Visual Basic y a los ingenieros que pronuncian C# como «C almohadilla»; los ingenieros que pronuncian C# como «C almohadilla» desprecian a los diseñadores que creen que HTML es un lenguaje de programación.

Los ingenieros que usan Python 3 desprecian a los que todavía usan Python 2. Los ingenieros que usan Python 2 desprecian a los que se topan con UnicodeEncodeError.

Los ingenieros que desarrollan en iOS desprecian a los que desarrollan en Android; los que desarrollan en Android desprecian a los que desarrollan en Windows Phone.

Los ingenieros con un año de experiencia en Swift desprecian a los ingenieros con cinco años de experiencia en Objective-C. Los ingenieros que escriben en Objective-C desprecian a los que usan PhoneGap para empaquetar una app nativa.

Los ingenieros que usan React.js desprecian a los que usan AngularJS; los que usan AngularJS desprecian a los que usan jQuery; los que usan jQuery desprecian a los que usan Vanilla JavaScript; los que usan Vanilla JavaScript desprecian a los usuarios de IE.

Los ingenieros que saben usar el debugger desprecian a los que usan assert; los que usan assert desprecian a los que solo saben usar print(); los que depuran con console.log() desprecian a los que depuran con alert().

Los ingenieros que escriben en Ruby on Rails desprecian a todos los ingenieros que usan otros lenguajes.

¿Qué? ¿Dices Ruby? ¡Ruby es solo un framework de Ruby on Rails, no es en absoluto un lenguaje de programación!

Todos los ingenieros desprecian a los ingenieros de PHP.

Herramientas

Los ingenieros que usan un text editor desprecian a los ingenieros que usan un IDE.

Los ingenieros que usan Vim desprecian a los que usan Emacs; los que usan Emacs desprecian a los que usan Vim; tanto los que usan Vim como los que usan Emacs desprecian a todos los ingenieros que usan otros editores; los que usan Atom, VSCode o Sublime Text desprecian a los que usan el Bloc de notas de Windows.

Los ingenieros que usan Android Studio o IntelliJ IDEA desprecian a los que usan Eclipse; los que usan Eclipse desprecian a los que usan NetBeans.

Los ingenieros que indentan el código con space desprecian a los que indentan con tab; los que indentan con tab desprecian a los que mezclan space y tab para indentar.

Los ingenieros que usan Git o Mercurial desprecian a los que usan Subversion; los que usan Subversion desprecian a los que usan Dropbox para el control de versiones; los que usan Dropbox para el control de versiones desprecian a los que no tienen ni idea de qué es el control de versiones.

Los ingenieros que conocen GitHub desprecian a los que no lo conocen; los que tienen un repo privado en GitHub desprecian a los que usan BitBucket para obtener un repo privado gratuito.

Los ingenieros que usan Zsh desprecian a los que usan Bash; los que usan Bash desprecian a los que usan Cygwin; los que usan Cygwin desprecian a los que usan el «símbolo del sistema»; los que usan el símbolo del sistema desprecian a los que usan interfaz GUI.

Los ingenieros que usan IRC desprecian a los que usan HipChat; los que usan HipChat desprecian a los diseñadores y PM que usan Slack.

Los ingenieros que escriben documentación en reStructuredText desprecian a los que la escriben en Markdown; los que usan Markdown desprecian a los que usan HTML; los que usan HTML desprecian a los que no escriben documentación; y los que usan LaTeX desprecian a todos los ingenieros.

Los ingenieros que usan Nginx desprecian a los que usan Apache; los que usan Apache desprecian a los que usan IIS.

Los ingenieros que usan Spark desprecian a los que usan Hadoop; los que usan Hadoop desprecian a los que usan Hadoop para procesar solo unos pocos GB de datos; los que usan Hadoop para procesar solo 1 GB de datos desprecian a los que usan NoSQL; los que usan NoSQL desprecian a los que usan bases de datos relacionales; los que usan bases de datos relacionales desprecian a los PM que usan Excel.

Los ingenieros que despliegan servidores con Docker desprecian a los que los despliegan con Ansible o Puppet; los que usan Ansible o Puppet desprecian a los que usan Fabric; los que usan Fabric desprecian a los ingenieros que hacen SSH manualmente.

Sistemas operativos

Los ingenieros que usan Mac OS X desprecian a los que usan Linux; los que usan Linux desprecian a los que usan Windows.

Los ingenieros que usan Debian menosprecian a los que usan Ubuntu; los que usan Ubuntu menosprecian a los que usan versiones de Ubuntu que no son LTS.

Hardware

Los ingenieros que usan MacBook Pro Retina desprecian a los que usan MacBook Air; los que usan MacBook Air desprecian a los que usan ThinkPad; y los que usan Raspberry Pi desprecian a los que usan MacBook Pro Retina.

Los ingenieros que usan teclado Dvorak desprecian a los que usan teclado de Mac; los que usan teclado de Mac desprecian a los que usan teclado QWERTY; los que usan teclado QWERTY desprecian a los ingenieros que no saben qué es un teclado QWERTY; los que no saben qué es un teclado QWERTY desprecian a los diseñadores que usan tableta gráfica.

Los ingenieros que se sientan en una silla Aeron desprecian a los que se sientan en una silla de oficina normal; los que se sientan en una silla de oficina normal desprecian a los PM que también se sientan en una silla de oficina normal; y los ingenieros que programan de pie desprecian a los que se sientan en una silla Aeron.

Entorno laboral

Los ingenieros de hardware desprecian a los ingenieros de software.

Los ingenieros que escriben el OS desprecian a los que desarrollan para web; los que desarrollan para web desprecian a los que desarrollan aplicaciones de escritorio.

Los ingenieros de backend desprecian a los ingenieros de frontend.

Los ingenieros y los diseñadores se desprecian mutuamente.

Los ingenieros que creen en el desarrollo guiado por pruebas (Test-Driven Development) desprecian a los que primero escriben el code y luego añaden los tests; los que primero escriben el code y luego añaden los tests desprecian a los que no escriben tests; los que no escriben tests desprecian a los PM que, una y otra vez, cambian los requisitos a su puto antojo.

Los ingenieros sin certificaciones desprecian a los que han obtenido un montón de certificaciones.

Los ingenieros que visten ropa casual para trabajar desprecian a los que visten traje; los que visten traje desprecian a los que visten la camiseta del departamento.

———

Si después de ver esta terrible cadena de desprecio, todavía no ha derribado tu deseo de aprender coding, entonces debo recordarte lo más importante: primero consigue una novia y luego aprende a programar; porque una vez que te conviertas en ingeniero de software, ya no podrás conseguir novia.

Fuente original: http://vinta.ws/blog/695