Aprende a entender mejor a tus amigos «empollones» y colegas programadores.
La mayoría de la gente que no se dedica a la programación informática tiende a considerarla aburrida y analítica. Pero si tú también eres programador, sabrás que la programación es un proceso muy creativo, parecido a la pintura. Al igual que los artistas, los buenos programadores se centran en crear grandes cosas, y las posibilidades de lo que puedes hacer son prácticamente ilimitadas.
Y esto no es todo.
Y éste no es el único concepto erróneo que los no programadores tienen de los programadores. Sí, puede que los programadores vistan de forma poco elegante o actúen con torpeza en situaciones sociales, pero esto se debe principalmente a que son personas inteligentes a las que les importan un bledo las convenciones sociales. Es este espíritu rebelde lo que les hace tan buenos programando, un estado de ánimo que podría ayudar a cualquiera a tener ideas innovadoras.
En este resumen, descubrirás:
- qué son los lenguajes de programación y por qué hay tantos,
- por qué los motivos de los piratas informáticos desconcertaron inicialmente a la Oficina Federal de Investigación, y
- por qué quizá ha llegado el momento de que tú también aprendas a programar, si quieres hacerte obscenamente rico.
- Por qué los piratas informáticos son tan ricos.
La moral es tan efímera como la moda; y los empollones son impopulares porque desconocen ambas cosas.
¿Qué crees que tienen en común la moda y la moral? A primera vista, no mucho. Pero en realidad ambos fenómenos se limitan a una época y un lugar determinados.
Obviamente, el sentido de la moda está ligado a una época concreta: echa un vistazo a las fotos de los años 90 y verás lo lejos que han llegado los gustos desde entonces. Y si miras imágenes de lugares extranjeros como Japón, por ejemplo, incluso hoy en día puedes asombrarte de lo que está de moda allí también.
Puede sorprender entonces darse cuenta de que la moral es igual de temporal y dependiente del lugar. Estas modas morales afectan a todo un espectro de cuestiones morales, como la forma en que debes tratar a otras personas y los valores que más aprecias.
Un ejemplo extremo: la brújula moral de muchos alemanes durante la II Guerra Mundial era muy diferente de los valores de los ciudadanos de la Alemania moderna de hoy.
La moda, por tanto, afecta tanto a la forma de vestir como a los valores morales.
Así pues, tanto las modas de la ropa como las modas morales cambian constantemente. ¿Puedes pensar en algún subgrupo de la sociedad que sea ajeno a estos cambios?
Por supuesto: Los nerds, o personas inteligentes que no son socialmente inteligentes y, por tanto, no intentan encajar con sus compañeros. Los empollones emplean su tiempo y energía en ser más inteligentes sin molestarse en adherirse a las convenciones de la moda, porque estar a la moda no es un objetivo. Esto puede ser más evidente si alguien que conoces lleva una cazadora vaquera de neón todos los días durante cinco años, pero también se aplica a las modas morales.
El resultado es que los empollones utilizan su tiempo y energía para ser más inteligentes sin molestarse en seguir las convenciones de la moda.
El resultado es que los empollones no suelen ser muy populares entre sus compañeros, sobre todo en el instituto. Para ser elegido rey o reina del baile de graduación, un estudiante suele tener que estar en sintonía con las modas morales y de vestimenta del momento.
Pero, afortunadamente, después de la graduación, los nerds no suelen ser muy populares entre sus compañeros.
Pero, afortunadamente, después del instituto -en el mundo real-, donde estar a la moda ya no importa mucho, a los empollones parece que les va bien.
Los hackers informáticos son como los artistas, en el sentido de que ambos grupos quieren hacer cosas buenas.
Si piensas en la palabra hacker, ¿qué te viene a la mente? La mayoría de la gente probablemente se imagina a una persona fría y calculadora que entra ilegalmente en ordenadores mediante un trabajo tedioso y analítico.
Piensa ahora en un artista, como un pintor. Probablemente habrás evocado la imagen de un genio inspirado que vierte su alma sobre un lienzo.
Aclaremos algunos conceptos erróneos. En primer lugar, en el mundo informático, el término hacker se refiere a un programador excepcional que puede hacer casi cualquier cosa, no necesariamente a un delincuente. Además, el hacking requiere una mente muy creativa, más parecida a la de un pintor que, por ejemplo, a la de un matemático.
De hecho, tanto los hackers como los pintores se parecen en el sentido de que ambos resuelven problemas creando conceptos en lugar de ponerlos en práctica.
Por ejemplo, al autor le enseñaron originalmente que debía trabajar el código informático en papel hasta que estuviera perfecto, y sólo entonces, transferir el código a un ordenador. Pero descubrió que un enfoque artístico funcionaba mucho mejor: simplemente empezaba a escribir el código y resolvía los problemas a medida que se presentaban, del mismo modo que un pintor podría empezar a esbozar algo y trabajar a partir de ahí, en lugar de planificar perfectamente su trabajo de antemano.
Otra similitud es que tanto los hackers como los pintores producen obras que tienen un valor abstracto, difícil de medir mediante métricas como las pruebas o la atención de los medios de comunicación. La única medida del valor de ese «trabajo» es lo bien que le gusta a la gente. En el caso del software, esto depende de lo bien que le guste al usuario satisfaciendo sus necesidades, y en el caso del arte, de lo bien que le guste al público.
El autor comprendió estas similitudes cuando estudió arte tras licenciarse en informática. Descubrió que ambos campos tienen más similitudes que diferencias, porque ambos persiguen el mismo objetivo fundamental: hacer cosas buenas.
Los hackers necesitan ser rebeldes para ser buenos en lo que hacen.
«Para hacer un buen trabajo, necesitas un cerebro que pueda ir a cualquier parte»
Puede que pienses que el éxito de la programación informática requiere que te adhieras rígidamente a las normas y convenciones. Después de todo, no hacerlo daría lugar a un montón de errores, ¿verdad?
De hecho, convertirse en hacker a menudo significa infringir algunas normas. Como en cualquier otra profesión, sólo puedes aprender a piratear observando el trabajo de los que te precedieron. Y si quieres echar un vistazo realmente de cerca, es muy posible que tú mismo tengas que infringir algunas leyes, ya que es posible que el trabajo que te interesa esté protegido por derechos de propiedad intelectual.
Los hackers tienen la costumbre de piratear.
Los hackers tienen una especie de intelectualidad curiosidad por las tecnologías actuales, como el software de vanguardia, y sin embargo, para estudiarlo, puede que tengan que entrar en el ordenador de otra persona. Estas actividades suelen ser ilegales. Por ello, los hackers son considerados delincuentes, aunque lo más probable es que cometan un delito por curiosidad, más que para robar algo.
Originalmente, cuando el allanamiento de ordenadores se clasificó por primera vez como delito, la Oficina Federal de Investigación (FBI) tuvo dificultades en sus casos, ya que a menudo el motivo principal de un hacker era la simple curiosidad intelectual. En lo que respecta a los motivos delictivos, esto era -para el FBI- totalmente inaudito.
Puede que ahora estés pensando que los hackers deberían limitarse a cumplir la ley, pero en realidad es su naturaleza rebelde lo que les hace tan buenos en lo que hacen.
¿Por qué?
¿Por qué?
Porque ser rebelde significa cuestionar la autoridad, ya sea el gobierno o los expertos en tu campo. Y cuestionar las ideas establecidas es la única manera de llegar a ideas innovadoras, un requisito previo para programar bien.
La mayoría de los hackers son empollones en el sentido de que son personas inteligentes a las que realmente no les importan las convenciones sociales, por lo que son especialmente hábiles a la hora de cuestionarlo todo -y luego mejorarlo.
En el siguiente resumen, descubrirás cómo los empollones utilizan su genio rebelde para ganar mucho dinero.
Lanzar una Startup puede ser una forma rápida de hacerse rico, y no hay nada malo en ello.
Mucha gente sueña con crear algún día una empresa en torno a una gran idea que hayan tenido. Pero si eres un buen programador, deberías lanzarte y fundar tu propia empresa.
¿Por qué?
¿Por qué?
Porque crear una Startup es una de las formas más rápidas de hacerse rico.
Cuando trabajas para una gran empresa, tu salario no aumentará sustancialmente por mucho que trabajes. En cambio, si fundas una Startup, tendrás que trabajar muy duro, pero al menos cada hora de trabajo que dediques hará que sea más probable que tu empresa tenga éxito y obtengas un gran sueldo.
Esto es lo que le ocurrió al autor. Él y los dos cofundadores de su Startup trabajaron muchas horas en su aplicación de compras en línea llamada Viaweb, y finalmente la vendieron por millones.
Algunos pueden protestar que éste es el objetivo equivocado, y que toda la dinámica de concentrar la riqueza en manos de los ricos es un error. Pero en realidad, concentrar la riqueza no sólo es justo, sino que es bueno para todos.
¿Por qué?
Porque riqueza no es lo mismo que dinero. La riqueza constituye las cosas que la gente quiere, mientras que el dinero es sólo el medio de intercambio que la gente intercambia por riqueza.
Teniendo en cuenta esta distinción, es obvio que la riqueza puede ser creada por cualquiera, sin disminuir la riqueza de los demás. Por ejemplo, si posees un coche clásico y lo reformas en tu tiempo libre, estás creando nueva riqueza sin privar a nadie más de ella. Esto significa que la riqueza no está limitada, por lo que los ricos no la están «acaparando».
Además, ¿no es posible que las personas más ricas, como los directores ejecutivos, los deportistas profesionales, etc., hayan trabajado realmente más duro y de forma más productiva que los demás, por lo que merecen su riqueza?
Por ejemplo, si tienes que trabajar diez veces más en tu Startup que el empleado medio de una empresa, ¿no es justo que ganes diez veces más? Sobre todo cuando, al hacerlo, crearás un producto del que todo el mundo podrá disfrutar y beneficiarse.
La opinión del usuario final es la prueba definitiva del éxito de tu producto y de tu empresa.
Como hemos dicho antes, al igual que los pintores tienen que complacer a un público, los hackers necesitan complacer a un usuario. Esto significa que cuando fundes una empresa y empiezas a diseñar tu producto, el usuario final tiene que ocupar un lugar central en tu mente.
En primer lugar, debes crear y lanzar un prototipo de tu producto lo antes posible para recoger opiniones de usuarios reales. Esta estrategia se denomina Peor es Mejor, porque el lanzamiento temprano de un prototipo, incluso bastante simplificado, te proporciona una valiosa información que te permite corregir errores y mejorar el producto para que se adapte mejor a las necesidades de tus usuarios.
Un ejemplo de la eficacia de este enfoque procede de una fuente sorprendente: la famosa escritora Jane Austen. Antes de finalizar sus libros, solía leerlos en voz alta a su familia, que luego le hacía sugerencias sobre lo que les gustaría oír en el libro. Ellos fueron los primeros usuarios de su «prototipo»
.
Si tienes éxito y consigues hacer un producto que se ajuste a las necesidades e intereses de los usuarios, probablemente querrán comprarlo. De lo contrario, no lo harán, por muchas otras características sofisticadas que tenga.
Por ejemplo, si diseñaras una silla, ¿crees que alguien la compraría si tuviera un aspecto estupendo pero fuera terriblemente incómoda? Probablemente no.
Para ganar usuarios, tienes que satisfacer sus necesidades, y cuantos más usuarios tengas, más éxito tendrá tu empresa. Esto también es un círculo virtuoso: los usuarios generan ingresos, que luego puedes reinvertir para mejorar aún más tu producto y conseguir aún más usuarios.
Es más, si alguien se plantea adquirir tu empresa, la valorará en función del número de usuarios que tengas. Una aplicación que tenga 100.000 usuarios tendrá más compradores potenciales que una aplicación con sólo 300 usuarios.
Los lenguajes de programación difieren según su finalidad, y se mejoran continuamente.
«Si todos usáramos el mismo lenguaje, probablemente sería el equivocado»
«C++, Python, Java…». Seguro que alguna vez has oído a programadores enumerar todos los lenguajes en los que pueden codificar. Se refieren a los lenguajes de programación con los que pueden dar órdenes a los ordenadores.
Pero en realidad los ordenadores no entienden estos lenguajes. Sólo comprenden el lenguaje de máquina, es decir, las combinaciones específicas de unos y ceros que indican al ordenador qué funciones debe realizar. Esto significa que los programadores también necesitan un compilador para traducir el lenguaje de programación a lenguaje de máquina.
Esto suena razonable.
Esto suena razonable, pero podría suscitar la siguiente pregunta: ¿por qué necesitamos tantos lenguajes de programación diferentes?
¿Por qué necesitamos tantos lenguajes de programación diferentes?
La razón es simplemente que los distintos lenguajes de programación son buenos para distintos tipos de tareas. Al igual que ocurre con las lenguas habladas, puede ser más fácil expresar ciertas cosas en un lenguaje que en otro.
Por ejemplo, si quieres decirle a tu ordenador que añada la variable Y a la variable X, puedes hacerlo en dos líneas de código en el lenguaje Lisp, mientras que necesitarías cuatro líneas en el lenguaje Perl.
A veces los conceptos necesarios para tu programa ni siquiera existen en el lenguaje que has elegido, por lo que tienes que cambiar o encontrar una solución en el primer lenguaje.
Por ejemplo, si le dijeras a tu ordenador que añada una variable Y a una variable X, podrías hacerlo en dos líneas de código en el lenguaje Lisp, mientras que necesitarías cuatro líneas en el lenguaje Perl.
Por ejemplo, si intentaras añadir Y a X en el lenguaje Python, tendrías problemas porque no reconoce completamente las variables de este tipo. Así que tendrías que encontrar una solución, que en este caso significaría escribir seis líneas de código.
Por eso existen tantos lenguajes. Pero el campo dista mucho de estar estancado: los lenguajes existentes evolucionan constantemente y se desarrollan otros nuevos. Esto se debe a que los lenguajes son desarrollados por programadores que los adaptan según sus propias preferencias y necesidades.
Hasta los años 80 esto no era posible, ya que los lenguajes de programación sólo los desarrollaban las instituciones y las grandes empresas. Hoy en día, cualquiera puede permitirse la tecnología necesaria para adaptar y desarrollar los lenguajes de programación actuales, o incluso idear otros nuevos.
Un buen lenguaje de programación se diseña con gusto y según las necesidades de un hacker.
Si tuvieras que mirar 1.000 cuadros y dividir los buenos de los malos, obviamente harías ese juicio basándote en tu propio gusto. Lo mismo ocurre con los hackers que deciden entre lenguajes de programación buenos y malos. Aprecian el buen gusto en los lenguajes de programación que utilizan, y a medida que avanzan como programadores, su propio gusto también cambia y se desarrolla.
Por ejemplo, si has diseñado tu propio lenguaje de programación y, años después, publicas una nueva versión, seguramente será mejor que la anterior. Esto se debe a que no tenías las habilidades para hacer que la versión original fuera tan buena como la actualizada, y a que tu gusto también ha mejorado por el camino.
Entonces, ¿qué es un buen lenguaje de programación? Uno que satisfaga las necesidades de un hacker.
Por ejemplo, si un lenguaje es demasiado complicado o limitante, los hackers simplemente utilizarán otro. Sin embargo, si un lenguaje satisface las necesidades de los hackers, se hará popular, lo que significa que lo adoptarán y lo seguirán desarrollando para perfeccionarlo. Así que los buenos lenguajes mejorarán inevitablemente con el tiempo, a medida que los hackers trabajen voluntariamente en encontrar y corregir errores en él.
Un buen ejemplo de esta dinámica son los lenguajes de código abierto, como Perl y Python, que fueron diseñados por particulares, pero luego se hicieron públicos para que todo el mundo pudiera cambiarlos y mejorarlos.
Las empresas prefieren los lenguajes de programación populares, pero a veces los oscuros pueden darles ventaja.
Si no eres programador y quieres montar un negocio que requiera programación, probablemente no tengas ni idea de qué lenguaje de programación debería utilizar tu empresa. Así que, ¿cómo deben elegir los no programadores, como los gerentes de empresa y los jefes de proyecto, el lenguaje en el que deben programar sus programadores?
En general, las empresas prefieren utilizar lenguajes populares y extendidos.
Esto se debe a que un programa escrito en un lenguaje de uso común probablemente será compatible con muchos otros programas escritos en ese mismo lenguaje.
Otro motivo es que a las empresas les resulta más fácil encontrar y contratar programadores que codifiquen en lenguajes populares. Esto a veces puede ser crucial: si has contratado a alguien para escribir un programa en un lenguaje poco común como Lisp y de repente deja su trabajo, tendrás un verdadero problema. Lo más probable es que no puedas encontrar un sustituto y tengas que tirar todo el proyecto a la basura.
Dado que las empresas tienen más demanda de programadores con conocimientos de lenguajes populares, también significa que siempre habrá más hackers que los utilicen que los que sean oscuros.
Por otra parte, las empresas tienen más demanda de programadores con conocimientos de lenguajes populares.
A pesar de estos argumentos a favor de los lenguajes populares, también hay ciertas desventajas.
Dado que ciertos lenguajes de programación están optimizados para determinadas tareas, obligar a los programadores a utilizar un lenguaje popular para todo significa que posiblemente no estés obteniendo el mejor rendimiento de tu producto.
Lo más probable es que tus competidores tengan este mismo problema. Así que si cambiaras a un lenguaje más óptimo, podrías obtener una ventaja significativa. Es más, tus competidores ya no podrían analizar tu posición basándose en la suya, ya que vuestros productos se basarían en plataformas técnicas completamente diferentes.
Esto es lo que hizo el autor cuando creó Viaweb con el poco conocido lenguaje Lisp, dándole una ventaja técnica y dejando a sus competidores preguntándose qué estaba haciendo exactamente.
Realmente podrías dejar de recibir correos basura si quisieras.
Ya se ha mencionado antes que un buen hacker puede hacer prácticamente cualquier cosa. Un ejemplo divertido es abordar un problema con el que probablemente estés muy familiarizado: el spam, el flujo aparentemente imparable de anuncios no solicitados que bombardean tu bandeja de entrada.
Así que si eres un buen hacker, puedes hacer lo que quieras.
Entonces, si eres un hacker harto del spam, ¿cómo te enfrentarías a él? Probablemente se te ocurrirían varios métodos diferentes.
En primer lugar, podrías abordar el problema examinando las propiedades individuales de los correos electrónicos de spam. Por ejemplo, muchos correos basura empiezan con algo como «Querido amigo», por lo que podrías escribir un código que pusiera automáticamente en la carpeta de correo basura todos los mensajes que empezaran con esta frase.
En segundo lugar, podrías emplear el filtrado estadístico, mediante el cual se analizaría cada palabra de un correo electrónico entrante y el ordenador calcularía la probabilidad de que el mensaje sea spam. A continuación, el ordenador colocaría a los posibles infractores en tu carpeta de spam.
Pero quizá la mejor opción sería personalizar este enfoque estadístico, salvando determinados mensajes de la carpeta de spam aunque las estadísticas indicaran que podrían ser spam. Por ejemplo, el autor decretó que cualquier mensaje con la palabra «Lisp» no era spam, ya que la palabra se incluía en muchos correos legítimos sobre el lenguaje de programación. También decidió que los mensajes de las direcciones con las que había mantenido correspondencia eran seguros.
Pero si eres un buen hacker, también tendrás en cuenta las consecuencias de tus actos. En este caso, al detener el spam te arriesgas a perder también algunos correos importantes, porque los filtros de spam nunca son cien por cien precisos y pueden interceptar fácilmente también el correo legítimo. Así que probablemente tendrás que rebuscar en tu carpeta de spam de vez en cuando para comprobar si hay mensajes legítimos, pero después siempre podrás mejorar tu filtro de spam para no volver a cometer el mismo error.
Así que, aunque el spam puede ser muy peligroso, también puede serlo el correo no deseado.
Así que, aunque el spam puede ser extremadamente irritante, intentar filtrar todo el spam también puede acarrear sus propios problemas.
Conclusiones
El mensaje clave de este libro:
Contrariamente a lo que la mayoría de la gente piensa, informática programación es trabajo artístico, y una programación rebelde natural puede resultar en la creación de inspiración, innovadoras cosas. Por fundar una Startup una gran idea, un ordenador programador puede hacer una desgracia.
Consejos Accionables:
Si eres un programador con una empresa idea, ¡Ve por ella!
Si eres un empresario con una empresa.
Muy pocas personas pueden hacerse ricas trabajando como programadores para grandes empresas, ya que el éxito de una empresa tiene poco o ningún impacto en los salarios. Así que si quieres hacerte rico y tienes una buena idea de negocio, ve a por ello: ¡funda tu propia Startup! Sí, tendrás que trabajar mucho más que en un trabajo normal de 9 a 5, pero al menos podrás tomar tus propias decisiones sobre qué hacer, crear nuevos productos interesantes que beneficien a tus usuarios y, al final del día, cada hora que dediques aumentará la posibilidad de que vendas tu empresa por una fortuna.