El renacimiento del hardware (octubre 2012, Paul Graham)

(Translation of the Paul Graham's Essay «The Hardware Renaissance»)

Octubre de 2012

Una de las ventajas de que Y Combinator centre el foco su foco en tendencias tempranas y de forma amplia es que podemos ver tendencias antes que la mayoría de la gente. Una de las más interesantes tendencias en la última hornada de startups era el enorme número de startups centradas en hardware. De las 84 empresas, 7 estaban creando hardware. Y en números totales, esas 7 lo han hecho mejor que las empresas que no están relacionadas con hardware.

Estas empresas se han encontrado con resistencia por parte de los inversores, por supuesto. Los inversores tienen una inclinación natural en contra del hardware. Pero la opinión de los inversores no es un buen indicador. Los mejores fundadores de startups son mejores que los inversores viendo el futuro, porque ellos son quienes lo crean.

No existe una sola causa que explique esta tendencia. El hardware suele funcionar bien en sitios de crowdfunding. La gran cantidad de tablets hace posible crear cosas nuevas que se controlen desde ellos e incluso es posible incorporarlos en tus productos. Los motores eléctricos han mejorado también mucho. La conectividad wireless ahora se considera un hecho. Ahora es más sencillo fabricar cosas físicamente. Arduinos, impresoras 3D, cutters laser, o el acceso más sencillo a las máquinas herramienta hace más sencilla la creación de prototipos. Los puntos de venta son un cuello de botella menor ahora que la gente se a acostumbrado a comprar online.

Una pregunta que puedo contestar acerca de todo esto es porque el hardware es ahora cool. La verdad es que siempre lo fue. Las cosas físicas son geniales. Simplemente no eran la mejor manera de crear un negocio rápido crecimiento como lo ha sido el software. Pero esta regla puede que no sea permanente. Ni siquiera es una regla muy antigua: data de los 1990s. Quizá la ventaja del software resulte ser temporal. Los hackers adoran crear hardware, y los clientes adoran comprarlo. Así que si es cada vez más fácil mandar hardware por mensajería y nos aproximamos a la sencillez de distribución del software, probablemente veremos más startups basadas en hardware.

No sería la primera vez que algo que parecía una mala idea resulta no serlo. Y no sería la primera vez que los inversores aprenden esta lección de los fundadores de startups.

Así que si quieres trabajar con hardware, no te dejes intimidar por la opinión de tus inversores. Y en particular, si tienes intenciones de entrar en el programa de Y Combinator con una idea basada en hardware, porque estamos especialmente interesados en startups de hardware.

Sabemos hay espacio para el  próximo  Steve Jobs. Y también estamos convencidos de hay espacio para el próximo <tu nombre aquí>.

Gracias a Sam Altman, Trevor Blackwell, David Cann, Sanjay Dastoor, Paul Gerhardt, Cameron Robertson, Harj Taggar, y Garry Tan por leer borradores de este ensayo.

A Hardware Renaissance while “Software Eats the World”?

Posted in ensayo, essay, paulgraham, traducción, translation, Uncategorized, ycombinator | Leave a comment

Como conseguir ideas para startups (Diciembre 2012, Paul Graham)

(Translation of Paul Graham's essay «How to get startup ideas»)

Noviembre 2012

La manera de tener ideas para startups es no tratar de tenerlas. Es buscar problemas, preferiblemente problemas que te afecten.

Las mejores ideas para startups tienden a tener tres cosas en común: hay algo que los fundadores quieren, que pueden construir y que un pequeño grupo de otras personas descubren que merece la pena llevar a cabo. Microsoft, Apple, Yahoo y Google comenzaron de esta manera.

Problemas

¿Por qué es tan importante trabajar en problemas que te afecten? Entre otras cosas porque así te aseguras de que el problema exista. Puede sonar obvio decir que solo deberías trabajar en problemas que existan. Y aún así que las startups trabajen en problemas inexistentes es de lejos su mayor error.

Yo mismo caí en esta trampa. En 1995 creé una empresa para poner las galerías de arte online. Pero las galerías de arte no quieren estar online. Así no es como funciona el negocio del arte ¿Por qué invertí 6 meses trabajando en una idea estúpida? Porque no presté atención a los usuarios. Creé un modelo del mundo en mi cabeza que no se correspondía con la realidad, y lo use como punto de partida. No me percaté de lo erróneo que era ese modelo del mundo hasta que traté convencer a mis usuarios para que me pagasen por usar nuestro sistema. Incluso entonces tardé una cantidad embarazosa de tiempo en reconocer que estaba equivocado. Estaba demasiado apegado a mi modelo del mundo, y había invertido demasiado en mi software ¡Mis usuarios tenían que querer mi software!

¿Por qué tanto fundadores crean cosas que nadie quiere? Porque comienzan buscando ideas para startups. Este modus operandi es doblemente peligroso: no solo genera muy pocas buenas ideas, genera malas ideas que suenan suficientemente bien como para hacerte trabajar en ellas.

En Y Combinator llamamos a estas ideas de startup «inventadas» o «sitcom». Imagina que uno de esos personajes que aparecen en las series de la televisión arranca una startup. Los guionistas tienen que inventarse alguna idea que justifique esa empresa. Pero descrubrir buenas ideas para un startups es complicado. No es algo que se te ocurra de buenas a primeras. Así que (a no ser que sean increíblemente afortunados) los guionistas se inventan una idea que pueda sonar posible, pero que realmente es muy mala.

Por ejemplo, una red social para propietarios de mascotas. No suena mal como idea. Millones de personas tienen mascotas. A menudo se preocupan mucho de ellas y gastan ingentes cantidades de dinero en su bienestar. Seguramente muchos de ellos comparten sus experiencias en algún sitio web. No todos ellos son visitantes regulares, pero si solo un 2% o 3% fuesen visitantes regulares, tendrías millones de usuarios. Podrías ofrecerles ofertas personalizadas e incluso cobrar por características premium. [1]

El peligro de una idea como esta es que cuando se la cuentas a tus amigos con mascotas, probablemente no te dirán «yo nunca usaría eso». Te dirán, «bueno, quizá lo me vería usándolo». Incluso cuando la startup arranque, a un montón de gente le sonará como una idea factible. Esa misma gente probablemente no querrá usar el sitio, o al menos por ahora, pero se imaginan que otras personas querrán usarlo. Ahora imagina este tiempo de reacción extendiéndose a toda la población y tendrás cero usuarios. [2]

El pozo

Cuando las startups arrancan, tienen por lo menos algunos usuarios que realmente necesitan lo que estén haciendo; no solo gente que puede imaginarse usándolo algún dia, sino gente que lo necesita urgentemente. Normalmente este grupo inicial de usuarios es pequeño por la simple razón de que si existiera un grupo mayor de personas desesperadas por lo que se puede construir con el esfuerzo que una startup puede poner hacer para sacar una primera versión del servicio o producto, entonces probablemente ya existiría. Así que debes tomar una decisión: o bien creas algo que un gran número de personas quieran un poco, o algo que un pequeño grupo de personas necesiten mucho. Escoge la segunda opción. No todas las ideas de este tipo son buenas ideas para una startups, pero todas las buenas ideas para startups son este tipo.

Imagina un gráfico donde el eje X representa todas las personas que podrían querer lo que estás creando y donde el eje Y representa cuanto desean tenerlo. Si inviertes la escala en el eje Y, podrás ver empresas como agujeros. Google es un inmenso cráter: cientos de millones de personas lo usan, y lo usan mucho. Una startup que arranca simplemente no puede esperar conseguir algo así. Así que tienes dos opciones acerca de la forma del agujero que quieres crear. O bien cavas un agujero que sea sea ancho pero poco profundo, o bien uno que se estrecho pero muy profundo, como un pozo.

Las ideas de startup «inventadas» son generalmente del primer tipo. Mucha gente está medianamente interesada en una red social para mascotas.

Sin embargo las buenas ideas para startups son del segundo tipo. Microsoft era así cuando crearon su Basic para Altair. Había solo unos pocos miles de usuarios de Altair, pero sin ese software tendrían que programa en lenguaje máquina. Treinta años despues Facebook tenía la misma forma. Su primer sitio web era exclusivo para estudiantes de Harvard, de los cuales solo había unos pocos miles, pero esos pocos miles de usuarios realmente querían usarlo.

Cuando tienes una idea para una startup, pregúntate a tí mismo: ¿quién quiere usar esto ahora mismo? ¿quién quiere esto tanto que estarían dispuestos a incluso usar una primera versión cutre creada por una startup de dos personas de las que nunca han oído hablar? Si no puedes contestar a esta pregunta, entonces tu idea es probablemente mala.[3]

El pozo no tiene que se estrecho necesariamente. Lo que necesitas es profundidad: el escaso ancho se debe a la optimización en profundidad (y velocidad). Pero casi siempre será estrecho. En la práctica la conexión entre profundidad y estrechez es tan fuerte que es un buen signo de que una idea puede tener una fuerte atracción sobre un grupo específico o un tipo de usuario.

Pero aunque que la demanda tenga forma de pozo, es casi una condición necesaria para que una idea sea buena para una startup, no es una condición suficiente. Si Mark Zuckerberg hubiese creado algo que solo tuviese sentido para los estudiantes de Harvard, no hubiese sido una buena idea para una startup. Facebook era una buena idea porque comenzó con un pequeño mercado pero tenía una ruta para escapar de él. Las universidades son muy similares, si construyes un Facebook que funciona en Harvard, funcionará también en otras universidades. Por lo que puedes expandirte rápidamente a través del resto de universidades. Y una vez que tengas a todos los estudiantes de las universidades, es fácil acceder al resto de personas que les conocen.

Algo similar pasó con Microsoft: Basic para Altair, Basic para otras máquinas, otros lenguajes diferentes a Basic; sistemas operativos; aplicaciones; salida a bolsa.

Self

¿Cómo puede saber si existe un camino que te saque de tu idea? ¿Cómo se puede discernir si tu idea es la semilla para una empresa gigante o simplemente un producto de nicho? La mayor parte de las veces no puedes saberlo. Los fundadores de Airbnb no se dieron cuenta al principio de como de grande era el mercado que estaban tanteando. Inicialmente tenían una idea muy pequeña. Iban a dejar que las personas que vivían en una ciudad alquilasen sus habitaciones libres durante las convenciones que aconteciesen allí. No eran capaces de ver como esa idea podía expandirse; fue la idea la que creció gradualmente. Todo lo que sabían era que estaban trabajando en algo importante. Y eso era también lo todo lo que sabían Bill Gates y Mark Zuckerberg en sus comienzos.

De vez en cuando se hace evidente desde el principio que existe una camino para salir del nicho inicial. Y en ocasiones puedo ver una ruta que no es inmediatamente obvia: esa es una de las especialidades de Y Combinator. Pero existen límites sobre como de bien podemos hacer esto, sin importar la experiencia que tengas. Lo más importante que has de recordar acerca de encontrar rutas fuera de los nichos iniciales es que es un meta-hecho que son difíciles de encontrar.

Así que, si no puedes predecir la ruta para escapar de una idea inicial, ¿cómo puedes siquiera escoger entre distintas ideas? La verdad es desalentadora e interesante a la vez: si eres el tipo adecuado de persona, tendrás el tipo correcto de corazonadas. Si estás en la punta de lanza de un campo que cambia rápidamente y tienes la corazonada de que merece la pena explorar alguna idea, es más probable que estés en lo cierto.

En Zen and the Art of Motorcycle Maintenance, Robert Pirsig dice:

¿Quieres saber como hacer el cuadro perfecto? Es sencillo. Hazte a tí mismo perfecto y entonces pinta naturalmente.

Siempre me ha fascinado este pasaje desde que lo leí por primera vez en el instituto. No tengo claro como de útil es este consejo en el arte de la pintura específicamente, pero parece encajar con lo que estoy explicando. La manera de tener buenas ideas para startups es convertirse en el tipo de persona que las suele tener.

Estar en la punta de lanza de un campo no significa que tengas que ser una de las personas que está ayudando a que avance. También puedes estar en la punta de lanza si eres un usuario. No fue tan importante para Facebook que Mark Zuckerberg fuese un programador como que fuera un usuario habitual de los ordenadores. Si preguntas a los que rondaban los 40 años en 2004 si les gustaría publicar de forma semi-abierta sus vidas en Internet, habrían quedado horrorizados por la pregunta. Pero Mark ya vivía online en aquella época: para él parecía el paso natural.

Paul Buchheit dice que la gente en la punta de lanza de un campo en proceso de rápida transformación «vivie en el futuro». Combina esto con lo que dice Pirsig and obtienes:

Vive en el futuro y entonces crea lo que falte.

Esta frase describe la forma en la que muchas, si no todas, las grandes startups arrancan. Ni Apple, ni Yahoo, ni Google, ni Facebook se esperaba que fuesen empresas al principio. Crecieron a partir de cosas que sus fundadores crearon porque veían que faltaban en el mundo.

Si echas un vistazo a la forma en la que los fundadores tienen sus ideas, es generalmente el resultado de algún estímulo externo junto a una mente preparada. Bill Gates y Paul Allen oyeron hablar del Altair y pensaron «apuesto a que podemos escribir un intérprete de Basic para él». Drew Houston se dió cuenta de que había perdido su pendrive y pensó «realmente necesito que mis ficheros estén online». Mucha gente escuchó hablar del Altair. Y mucha más ha perdido sus pendrives. La razón por la que estos estímulos hicieron a determinadas personas arrancar sus empresas fue que sus experiencias personales les prepararon para notar las oportunidades cuando se presentaron ante ellos.

El verbo que deberías estar usando con respecto a las ideas para startups no es «pensar», sino «darse cuenta». En Y Combinator llamamos a las ideas que crecen naturalmente a partir de las experiencias personales de los fundadores ideas para startups «orgánicas». Las startups más exitosas casi siempre comienzan de esta manera.

Probablemente no era esto lo que querías oir. Probablemente esperabas algún tipo de receta para encontrar ideas para crear startups, y en lugar de ello te estoy diciendo que la clave es tener una mente preparada en el momento adecuado. Pero por duro que sea, es la verdad. Y es en sí mismo una receta, solo que en lugar de necesitar una semana puede que necesites un año para dar con la idea.

Si no estás en la punta de la lanza de un campo en proceso de transformación, puedes unirte a uno. Por ejemplo, cualquier persona inteligente puede situarse en la punta de lanza de la programación (por ejemplo, construyendo aplicaciones móviles) en un año. Debido a que una startup exitosa puede consumir  al menos 3-5 años de tu vida, un año de preparación debería ser una inversión previa razonable. Especialmente si tambińe te encuentras buscando un cofundador. [4]

No tienes que aprender a programar para estar en la punta de lanza de un dominio que está en proceso de cambio. Otros dominios pueden cambiar rápido. Pero aunque aprender a hackear no sea necesario, al menos para el futuro a medio plazo parece suficiente. Como Marc Andreeseen dijo, el software se está comiendo el mundo, y esta tendencia todavía necesitará décadas para decaer.

Saber como hackear también significa que cuando tienes ideas, serás capaz de implementarlas. Esto no es absolutamente necesario (Jeff Bezos no lo hizo) pero es una ventaja. Y es una gran ventaja, cuando estás considerando una idea como por ejemplo poner el anuario («facebook») de la universidad online. En lugar de simplemente pensar «esta parece una idea interesante», saber hackear te permite pensar  «esta parece una idea interesante, voy a construir una versión inicial esta noche». Y es aún mejor cuando eres tanto el programador como el usuario objetivo, porque entonces el ciclo de generación de nuevas versiones del software y de pruebas con usuarios ocurrirá en tu cabeza.

Darse cuenta

Una vez que has vivido en el futuro en algún aspecto, la forma de darse cuenta de las ideas para startups es buscar las cosas que faltan. Si de verdad estás en la punta de lanza de un campo en proceso de rápida transformación, habrá cosas cuya ausencia será obvia. Así que si quieres ideas para startups, no actives solo el filtro «¿qué me falta?». Debes además desactivar cualquier otro filtro, en particular «¿podría ser esto una gran empresa?» Tendrás mucho tiempo para aplicar este segundo filtro. Pero si estás usándolo desde el principio,  no solo estarás filtrando buenas ideas, sino que además puede hacer que te centres en las malas.

La mayoría de las cosas que faltan tardarán en hacerse evidentes. Tienes que casi forzarte en ser capaz de ver estas ideas a tu alrededor.

Pero tu sabes que las ideas está ahí. Este no es uno de esos problemas donde no hay solución. Es increiblemente improbable que este sea el preciso momento de la historia en el que todo avance tecnológico haya llegado a su fin. Ten por seguro que la gente creará cosas en los próximos años que te harán preguntarte retrospectivamente «¿qué hacía yo con mi vida antes de la existencia de X?».

Y cuando se resuelven esos problemas, parecerán obvios en retrospectiva. Lo que tienes que hacer es desactivar los filtros que te impiden verlos. El más poderoso es simplemente dar por sentado que el mundo es como es. Incluso la persona más radical con la mente más abierta lo asume. Simplemente no serás capaz de llegar desde tu cama hasta la puerta de la casa si tienes que cuestionarte todo lo que ves y todo lo que haces.

Pero si estás buscando ideas para startups, tendrás que sacrificar parte de la eficiencia que nos otorga la habilidad de dar por sentado el status quo que nos rodea, y tendrás que comenzar a hacer preguntas. ¿Por qué la bandeja de entrada de mi correo electrónico está llena? ¿Por qué recibes mucho correo electrónico, o por qué te cuesta eliminarlo de la bandeja de entrada? ¿Por qué recibes tanto correo electrónico? ¿Qué problemas está la gente tratando de resolver al mandarte correo electrónico? ¿Existen mejores maneras de resolver esos problemas? ¿Y por qué te cuesta tanto tener una bandeja de entrada vacía? ¿Por qué mantienes los corres en ella después de haberlos leído? ¿Es la bandeja de entrada la forma óptima de recibir correo?

Debes prestar especial atención a las cosas que te fastidian. La ventaja de dar por sentado el status quo no es solo que hace tu vida más (localmente) eficiente, sino que además hace tu vida más tolerable. Si supieras de todos los avances de los que dispondremos en los próximos 50 años pero que aún no están disponibles, encontrarías tu vida presente insufrible y limitante, de la misma manera que alguien del presente encontraría la vida hace 50 años si pudiese viajar atrás en el tiempo. Cuando algo te molesta, puede a que se deba a que vives en el futuro.

Cuando encuentras el tipo de problema adecuado, deberías ser capaz de describirlo como obvio, al menos para ti. Cuando arrancamos Viaweb, todos las tiendas online se construían a mano, por diseñadores web creando páginas HTML una a una. Era obvio  para nosotros como programadores que esos sitios deberían ser generados con software. [5]

Esto significa, por extraño que parezca, que descubrir buenas ideas para startups es una cuestión de ver lo obvio. Lo que demuestra lo raro que este proceso: estás tratando de ver cosas que son obvias, y aún así no puedes verlas.

Como lo que debes tratar de hacer es relajar tu mente, puede ser una buena idea no hacer un ataque frontal a un problema (por ejemplo, sentarte y tratar de pensar ideas). El mejor plan puede ser simplemente dejar un proceso de pensamiento en el subconsciente, que busque cosas que falten. Trabaja en problema complicados, guiado solamente por la curiosidad, pero ten un segundo yo atento a lo que pase detrás tuya, tomando notas de cosas que falten y de anomalías. [6]

Date algo de tiempo. Tienes más control del que piensas sobre la velocidad a la que tu mente se prepara, pero tendrás menos control sobre los estímulos que pueden generar ideas. Si Bill Gates y Paul Allen se hubiesen limitado a buscar una idea para una startup en un mes, ¿qué hubiese pasado si ese mes hubiese acabado antes de que el Altair apareciese en escena? Probablemente se hubiesen puesto a trabajar en una idea menos prometedora. Dew Houston trabajó en una idea menos prometedora antes de comenzar con Dropbox: una startup que permitía los alumnos preparar sus exámenes de selectividad. Pero Dropbox era una idea mucho menor, tanto en términos absolutos como en cuanto a como encajaba con sus habilidades. [7]

Una buena forma de forzarte a date cuenta de las buenas ideas es trabajar en proyectos que consideras geniales. Si lo haces, tenderás naturalmente a crear cosas que faltan. No sería genial crear algo que ya existe.

Igual que tratar de pensar en ideas para startups tiende a producir malas ideas, trabajar en cosas que podrían ser consideradas «juguetes» a menudo produce buenas ideas. Cuando algo es descrito como un juguete, significa que tiene todo lo que una buena idea necesita a excepción de ser importante. Y guay, los usuarios lo aman y no importa. Pero si vives en el futuro y has creado algo guay que los usuarios aman es más importante de lo que la gente puede pensar desde fuera. Las microcomputadoras parecían juguetes cuando Apple y Microsoft comenzaron a trabajar en ellas. Soy lo suficientemente mayor para recordar esa era; el término que normalmente se empleaba para la gente que poseía una microcomputadora era «hobbista». BackRub parecía un proyecto científico sin expectativas. «The Facebook» era solo una manera de que unos estudiantes espiasen a otros.

En Y Combinator encontramos excitante cuando conocemos startups que trabajan en cosas que podemos imaginar serán consideradas en los foros de sabiondos como juguetes. Para nosotros es una evidencia positiva de que la idea es buena.

Si eres capaz de pensar más allá  (e indiscutiblemente deberías ser capaz de hacerlo), se puede transformar «vive en el futuro y crea lo que falte» en algo aún mejor:

Vive en el futuro y crea lo veas interesante en él.

Estudios

Esto es lo que aconsejo hacer a los estudiantes universitarios en lugar de aprender acerca del «emprendimiento». «Emprender» es algo que se aprende mejor mediante el ejercicio que mediante el estudio. Los ejemplos de los emprendedores más exitosos lo dejan claro. Lo que deberías estar haciendo mientras estás en la universidad es integrarte en el futuro. La universidad es una oportunidad incomparable para hacerlo. Es un desperdicio sacrificar la oportunidad de resolver lo más complicado de arrancar una startup (convertirte en el tipo de persona que tiene ideas orgánicas) a cambio de aprender la parte más sencilla. Especialmente cuando realmente no aprenderás sobre ello, no más de lo que aprendarás sobre el sexo si lo estudias en una clase. Todo con lo que te quedarás es con el nombre de las cosas.

Cuando distintos dominios colisionan es un momento especialmente fructífero como fuente de ideas. Si sabemos un montón de programación y comienzas a aprender sobre otro ámbito, probablemente encontrarás problemas que se podrán resolver con software. De hecho, es doblemente probable que encuentres buenos problemas en otros dominios: (a) los habitantes de ese dominio probablemente hayan resuelto el problema aún con software, y (b) debido a que vienes de un nuevo dominio con una ignorancia total, ni siquiera sabes cual es el status quo que se da por sentado.

Si eres un ingeniero informático que quiere arrancar una startup, en lugar de tomar clases en «emprendimiento» sería mejor que las tomases en, por ejemplo, genética. O mejor aún, ve a trabajar a una empresa de biotecnología. Los ingenieros informáticos puede encontrar trabajos de verano o becas con facilidad en empresas de hardware y software. Pero si quieres encontrar ideas para startups, deberías centrarte en encontrar algo en campos que no estén relacionados con el tuyo. [8]

De hecho no tienes que tomar ninguna clase extra, simplemente comienza a crear cosas. No es una coincidencia que tanto Microsoft como Facebook arrancasen en enero. En Harvard es (o era) el «Reading Period», cuando los estudiantes no tienes clases porque se supone que están preparándose para los exámenes finales. [9]

Pero no te lo tomes tan en serio como para pensar que estás creando cosas que se convertirán en startups. Ese sería un claro ejemplo de optimización prematura. Simplemente crea cosas. Preferiblemante cosas que otros estudiantes encuentren útiles. No son solo las clases las que hacen de la universidad un punto de encuentro tan bueno para introducirte en el futuro. También estarás rodeado de otras personas tratando de hacer lo mismo. Si trabajas con ellos en proyectos, no solo acabarás produciendo ideas orgánicas, sino ideas orgánicas con equipos de fundadores orgánicos. Y esta es, nos indican los hechos, la mejor combinación posible.

Aléjate de la investigación. Si un estudiante escribe algo que sus amigos comienzan a usar, es muy probable que sea una buena idea para una startup. Mientras que una tésis doctoral es extremadamente complicado que se convierta en una. Por alguna razón, cuanto más depende un proyecto de la investigación, menos probable es que acabe generando algo que se convierta en una startup. [10]  Creo que la razón es que el subconjunto de ideas que cuentan como investigación es tan limitado que es muy improbable que un proyecto satisfaga esa restricción satisfaga también las restricciones ortogonales en que consisten los problemas que los usuarios tratan de resolver. Mientras que cuando los estudiantes (o profesores) que construyen proyectos laterales, gravitan rápidamente hacia la solución de los problemas de los usuarios (puede que incluso con algo de energía esas ideas escapen de las restricciones que impone la investigación).

Competencia

Debido a que las buenas ideas deberían parecer obvias, cuando tienes una tenderás a sentir que has llegado tarde. No dejes que esto te desanime. Preocuparte de que has llegado tarde es uno de los sígnos de una buena idea. Diez minutos de búsqueda online probablemente te permitan comprobarlo. Incluso si encuentras a alguien trabajando en la misma idea, probablemente no hayas llegado tarde. Es excepcionalmente raro que las startups sean aniquiladas por sus competidores (tan raro que puedes descartar la posibilidad). Así que, a no ser que hayas descubierto que tu competidor impide a sus usuarios pasar a usar tu producto (por ejemplo, debido a la imposibilidad de exportar su información), deberías descartar preocuparte por él.

Si tienes dudas, pregunta a los usuarios. La pregunta sobre si has llegado tarde se puede transformar en una diferente: ¿la gente necesita urgentemente lo que planeas crear? Si haces algo que ningún competidor está haciendo y que un subconjunto de los usuarios necesita urgentemente, ya tienes una cabeza de playa para poder comenzar. [11]

La pregunta se convierte entonces en si tener una cabeza de playa es suficiente grande. O más lo que es importante, quien la compone: si tu cabeza de playa consiste en gente que hace algo que mucha más gente querrá hacer en el futuro, entonces debería bastar sin importar como de grande sea. Por ejemplo, si estás construyendo algo que se diferencia de tus competidores en el hecho de que funciona en teléfonos móviles, aunque solo en los más recientes, puede que sea un buena cabeza de playa.

Siempre decantate por crear cosas nuevas cuando te enfrentes a competidores. Los fundadores de startups primerizos suelen dar a sus competidores más crédito del que se merecen. Si triunfas o no dependerá más de quien eres que de quienes son tus competidores. Así que mejor tener una buena idea con competidores que una mala sin ellos.

No deberías de preocuparte de entrar en un «mercado abarrotado» si tienes una tesis acerca de algo que todos los demás no han considerado importante. De hecho ese es un prometedor punto de arranque. Google fue ese tipo de idea.  Aún así tu tesis tiene que ser más precisa que «vamos hacer que X deje de ser una porquería». Necesitas definirlo en base a algo que las empresas establecidas en ese mercado han pasado por alto. Aún mejor si resulta que lo que pretendes hacer es algo que ellos no tuvieron el coraje de hacer, y tu plan consiste en hacer lo que ellos deberían haber hecho de haberlo tenido. Google era este tipo de idea también. Los motores de búsqueda que le precedieron se alejaron de las implicaciones más radicales de lo que Google estaba haciendo. En particular que cuanto mejor hiciese Google su trabajo, más rápido pasaría la gente a usar Google.

Un mercado abarrotado es de hecho un buen signo, porque significa que existe una demanda que ninguna de las soluciones es suficientemente buena. Una startup no puede siquiera tener la esperanza de entrar en un mercado que es grande y en el que no haya competidores. Asi que cualquier startup que triunfe entrará en un mercado en el que existen competidores, pero escondiendo un arma secreta que atraerá a todos los usuarios (como Google), o entrará en un mercado que parecerá pequeño pero que con el paso del tiempo se hará gigantesco (como Microsoft). [12]

Filtros

Existen dos filtros más que deberías desactivar si quieres darte cuenta de ideas para startups: el filtro «no-sexy» y el filtro «demasiado-trabajo».

La mayoría de los programadores desearían poder arrancar una startup escribiendo código brillante  instalándolo en el servidor y tener usuarios pagándoles grandes cantidades de dinero. Prefieren no tener que bregar con problemas tediosos o tener que implicarse en los follones que implica el mundo real. Lo que es una inclinación razonable, porque ese tipo de cosas te hacen ir más lento. Pero esta inclinación está tan extendida que ha eliminado muchas ideas de startups perfectamente factibles de la mente de los fundadores de startups. Si te alejas unos cuantos bloques de las calles más transitadas descubrirás las  ideas que han sido descargadas por aburridas y problemáticas, esperando que alguien se atreva a implementarlas.

El filtro «lastre» es tan peligroso que escribí un ensayo completo acerca de la condición que induce, que llamé  schlep blindness. En él hablaba de Stripe como un ejemplo de una startup que se ha beneficiado de desactivar este filtro, y que es un ejemplo excelente de este filtro. Miles de programadores se encontraban en la posición de llevar a cabo la idea; miles de programadores sabían como de penoso sería procesar pagos antes de Stripe. Pero cuando buscaban ideas para startups no veían esta, porque inconscientemente rechazaban tener que tragar con pagos. Y tratar con pagos es un lastre para Stripe, pero no uno intolerable. De hecho esto le supuso una ventaja porque el miedo a tratar con pagos mantuvo a la mayoría de la gente alejada de la idea, Stripe tuvo entonces una andadura más sosegada que le permitió concentrarse en otras tareas dolorosas, como la adquisición de nuevos usuarios. No tuvieron que luchar demasiado para hacerse oír entre lo usuarios, porque estos estaban desesperados esperando que alguien creasen lo que necesitaban.

El filtro «no-sexy» es parecido al filtro «lastre», excepto que te impide trabajar en problemas que desprecias en lugar de en problemas a los que temes. Nosotros fuimos capaces de superar este filtro mientras trabajábamos en Viaweb. Existían detalles interesantes sobre la arquitectura de nuestro software, pero no estábamos interesados en el comercio electrónico per se. A pesar de lo cual podíamos ver que era un problema que necesitaba solución.

Apagar el filtro «lastre» es más importante que apagar el filtro «no-sexy», porque el filtro «lastre» es problema que sea solo una ilusión. Incluso si no lo fuese, es una de los peores formas de auto indulgencia. Crear una startup será un proceso muy laborioso sin importar que es lo que hagas. Incluso si el producto no incorpora muchos lastres, aún así tendrás muchos cuando tengas que tratar con los inversores, contratar o despedir gente,... Así que si tienes una idea que crees que será genial pero de la que te apartas por miedo a los lastres que implica, no te preocupes, cualquier ideal suficientemente buena tendrá unos cuantos.

El filtro «no-sexy», aunque todavía te puede llevar a error, no es tan inútil como el filtro «lastre». Si estás en la punta de lanza de un campo en rápida transformación, tus ideas acerca lo que es sexy estarán conectadas de alguna manera con lo que sea valioso en la práctica. Especialmente conforme ganes años y experiencia. Además, si encuentras que una idea es sexy, trabajaras en ella con mayor entusiasmo. [13]

Recetas

Aunque la mejor manera de descubrir ideas es convertirse en la clase de persona que las tiene y pasar entonces a crear cosas que te interesen, a veces no podrás permitirte ese lujo. A veces necesitas una idea en ese preciso momento. Por ejemplo, si estás trabajando en una startup y descubres que tu idea original era errónea.

En el resto de este ensayo hablaré de trucos para dar con ideas para startups cuando las necesites. Aunque la experiencia me ha demostrado que lo mejor es tener estrategias orgánicas, todavía puedes triunfar sin ellas. Solamente tienes que ser más disciplinado. Cuando usas el método orgánico, no te das cuenta de una idea a no ser que sea evidente que algo falta Pero cuando haces el esfuerzo consciente de pensar en ideas para startups, tienes que reemplazar esta restricción natural con auto disciplina. Verás un montón de ideas, la mayor parte de ellas malas, así que tendrás que ser capaz de filtrarlas.

Uno de los mayores errores de no usar el método orgánico es que usarás como ejemplo ese mismo método. Las ideas orgánicas se comportan como inspiraciones. Existen muchas historias de startups exitosas que comenzaron cuando uno de los fundadores tuvo lo que parecía una idea alocada pero «sabía» que era prometedora. Cuando te sientas así sobre una idea que tengas cuando busques activamente ideas para startups, probablemente estés equivocado.

Cuando busques ideas, hazlo en áreas donde tengas experiencia. Si eres un experto en bases de datos, no construyas una aplicación de chateo para adolescentes (a no ser que seas uno). Quizá sea una buena idea, pero no podrás confiar en tu juicio sobre ella, así que ignórala. Tienen que existir otras ideas que incluyan bases de datos, y cuya calidad puedas juzgar ¿Te resulta complicado dar con ideas que incluyan bases de datos? Se debe a que tu experiencia con ellas eleva tus estándares y sabes de lo que hablas. Tus ideas sobre aplicaciones para chat son igual de malas, pero estás dejando que el efecto Dunning-Kruger te ciegue.

Un buen truco es preguntarse a uno mismo si en tu antiguo trabajo te encontraste preguntándote a tí mismo «¿por qué nadie ha creado X? Si alguien hubiese creado X lo hubiésemos comprado en un segundo». Si puedes pensar en cualquiera de esos X de los que hablaba la gente, probablemente tienes una idea. Sabes que hay demanda, y la gente no dice ese tipo de cosas sobre soluciones imposibles de crear.

De forma más general, trata de preguntarte a ti mismo si hay algo inusual en ti que te hace que tus necesidades sean diferentes a las del resto de las personas. Probablemente no seas el único en esa situación. Es especialmente interesante si eres diferente en una manera que la gente comenzará a serlo por alguna razón.

Si estás cambiando de idea, algo que te hace inusual es que has trabajado en la anterior idea ¿Descubriste alguna necesidad especial mientras lo hiciste? Muchas startup renombradas comenzaron de esta manera. Hotmail comenzó como algo que sus fundadores crearon para poder hablar acerca de su anterior idea de startup mientras trabajaban en sus respectivos trabajos diarios. [15]

Una forma particularmente prometedora de ser inusual es ser joven. Algunas de las ideas nuevas más valiosas comenzaron entre gente que estaba en alrededor de la veintena. Y aunque los fundadores de startups jóvenes están en desventaja en muchos aspectos, son realmente los únicos que entienden a la gente de su generación. Habría sido increíblemente complicado para alguien que no estuviese en la universidad arrancar Facebook. Así que si eres un fundador joven (por debajo de 23 años), ¿existen cosas que a tu y tus amigos os gustaría hacer pero que la tecnología actual no os permite?

El siguiente gran invento para una necesidad no cubierta que tengas es una necesidad no cubierta de otra persona. Intenta hablar con otra gente de cosas que echan en falta en su mundo ¿Qué falta? ¿Qué les gustaría hacer que no son capaces? ¿Que es aburrido y trabajoso, particularmente en su trabajo? Deja que la conversación sea general; no trates de buscar ideas para startups. Deberías buscar una chispa que prenda en tu cerebro. Puede que descubras un problema que no han notado que tienen, porque tu si porque sabes como resolverlo.

Cuando encuentres necesidades desatendidas que no sean tuyas, puede que al principio te parezca borrosas y mal definidas. La persona que necesita algo puede que ni siquiera sepa exactamente lo que necesita. En ese caso, solo puedo recomendar que los fundadores actúen como consultores, que hagan lo que harían si hubiesen sido contratados para resolver ese problema para una sola persona. Los problemas que la mayoría de las personas tienen son tan similares que probablemente casi todo el código que escribas será reutilizable, y el que no lo sea será un pequeño precio a pagar a cambio de saber que acabarás llegando al fondo de un pozo. [16]

Una manera de asegurarse de que haces un buen trabajo resolviendo los problemas de otras personas es hacerlos tuyos. Cuando Rajat Suri de E la Carte decidió crear un software para restaurantes, consiguió un trabajo como camarero para aprender como funcionaban. Puede sonar algo extremista, pero las startups son extremas. Nos encantan los fundadores que hacen este tipo de cosas.

De hecho, una estrategia que recomiendo a la gente que necesita una nueva idea no es solamente desactivar sus filtros «lastre» y «no-sexy», sino buscar ideas que sean «no-sexy» e involucren «lastre». No trates de arrancar Twitter. Esas ideas son tan raras que no darás con ellas aunque las busques. Crea algo «no-sexy» por lo que la gente te pague.

Un buen truco es superar el lastre y en algunos cosas el filtro «no-sexy» es preguntarte que te gustaría que otra persona hubiese creado que te gustaría usar ¿Cuánto pagarías por ello ahora mismo?

Como las startups a menudo se dedican a recoger los restos de compañías e industrias quebradas, podría ser otro truco buscar las que estén muriendo, o merezcan estarlo, y tratar de imaginar que clase de empresa podría obtener beneficios con ello. Por ejemplo, el periodismo está en caída libre ahora mismo. Pero aún se puede hacer dinero con el periodismo ¿Qué clase de empresa podría hacer que la gente del futuro dijera «esta empresa consiguió reemplazar al periodismo tradiciona»?

Pero imagínate preguntando esto en el futuro, no ahora. Cuando una empresa o industria es reemplazada por otra, normalmente ocurre de forma inesperada, lateral. Así que no busques un X, busca algo sobre lo que, con el tiempo, la gente diga que al final reemplazó a X. Y se imaginativa sobre cómo ocurrirá. El periodismos tradicional, por ejemplo, es una manera de que los lectores obtengan información y maten el tiempo, una forma de que los escritores hagan dinero y obtengan atención, y un vehículo para distintos tipos de publicidad. Podría se reemplazado en cualquiera de estos ejes (y de hecho ha sido reemplazado en la mayoría).

Cuando las startups consumen a las empresas establecidas, normalmente empiezan sirviendo a un pequeño pero importante mercado que las grandes empresas ignoran. Es particularmente interesante cuando las grandes empresas tienen una extraña mezcla de desdén en su actitud, lo que les hace equivocarse fácilmente. Por ejemplo, después de que Steve Wozniak creara el ordenador que se convertiría en el Apple I, se sintió obligado a dar a su empleador, Hewlett-Packard, la opción de fabricarlo. Afortunadamente para él, rechazaron la oferta, y una de las razones por las que lo hicieron fue que usaba una televisión como monitor, lo que parecía intolerablemente déclassé para una empresa que hacía hardware de alta calidad como era HP en aquel tiempo. [17]

¿Están las grandes empresas ignorando a grupos de usuarios frikis pero sofisticados como los que existían en las comunidades de «hobbistas» de las primeras microcomputadoras?

De forma similar, como la mayoría de las startups exitosas suelen beneficiarse de una ola en la que están subidas sin saberlo, otro truco sería buscar olas y preguntarte como podrías beneficiarte de ellas. Los precios de la secuenciación de genes y de las impresoras 3D están experimentando caídas dignas de la ley de Moore. Imagina las cosas seremos capaces de hacer en los próximos años con este tipo de tecnologías ¿Qué considerábamos descartábamos como imposible en el pasado que será posible pronto?

Organico

El simple hecho de hablar de aprovechar olas deja claro que tales recetas son en realidad un plan B para encontrar ideas para startups. Buscar olas es en esencialmente una forma de simular el método orgánico. Si estás en la punta de lanza de algún campo en rápida transformación, no tienes que buscar olas: estás montando en una.

Encontrar ideas para una startup es una proceso sutil, por ello la mayoría de la gente falla miserablemente al intentarlo. No funciona sentarse y ponerse a pensar. Si lo haces, solo tendrás malas ideas que sonarán peligrosamente factibles. La mejor manera de dar con ideas es más indirecta: si tienes la experiencia adecuada, una buena idea para una startup simplemente te parecerá obvia. Pero incluso entonces, no será inmediato. Necesitas tiempo para encontrarte situaciones donde notarás que algo falta. Y a menudo esos vacíos no parecerán ideas para crear empresas, solo cosas que sería interesante construir. Por esa razón es bueno tener el tiempo y la inclinación natural por construir cosas simplemente porque son interesantes.

Vive en el futuro y crea cosas interesantes. Por extraño que parezca, esa es la auténtica receta.

Notas

[1] Esta forma de mala idea ha existido desde hace tanto como la web. Era común en los años 1990s, solo que entonces la gente decía que iba a crear un portal de X en lugar de una red social de X. Estructuralmente esta idea es una sopa de piedras:plantas un señal que diga «este es el sitio para la gente interesada en X», y toda esas personas aparecerán de la nada y te harán ganar dinero. Lo que atrae a los fundadores de startups hacia este tipo de ideas son esas estadísticas que hablan de los millones de personas que podrían estar interesadas en cada tipo de X. Pero lo que olvidan es que cada persona puede tener hasta 20 afinidades siguiendo este tipo de estadísticas, y nadie va a visitar 20 comunidades diferentes de forma regular.

[2] No estoy diciendo, accidentalmente, que sepa de forma segura que una red social para mascotas es una mala idea. Se que es una mala idea de la misma forma que se que el ADN generado aleatoriamente no producirá un organismo viable. El conjunto de todas las ideas para startups posibles es mucho mayor que el conjunto de las buenas ideas para starts, y muchas de las que son buenas ni siquiera suenan posibles. Así que si todo lo que sabes de una idea para una startup es que es «posible», casi seguro puede asumir que es una mala idea.

[3] De forma más precisa, la necesidad de los usuarios les debe proporcionar suficiente energía de activación como para comenzar a usar lo que vayas a crear, y esto puede variar un montón. Por ejemplo, la energía de activación para el software tradicional vendido de la forma tradicional es muy elevada, así que lo tienes que hacer mucho mejor que tus competidores para atraer usuarios. Mientras que la energía de activación requerida para cambiar a un nuevo motor de búsqueda es baja. Lo que explica que los motores de búsqueda sean mucho mejores que el software empresarial.

[4] Esto se hace más complicado conforme te haces mayor. Aunque el espacio de las ideas no tiene un máximo local peligroso, el espacio de las distintas carreras profesionales sí que lo tiene. Existen muros realmente altos entre las rutas que diferentes personas toman durante su vida, y cuanto mayor seas, más altos se vuelven los muros.

[5] También era obvio para nosotros que la web era un buen negocio. Pocos no-programadores se daban cuenta de esto en 1995, pero los programadores pudieron presencial en primera persona la explosión de negocio que supusieron los interfaces gráficos en los ordenadores de escritorio.

[6] Quizá sería una buena idea si tu segundo yo llevara un diario, y cada noche escribiese una corta lista de los vacíos y anomalías que ha notado durante el día. No me refiero a ideas para startups, simplemente vacíos y anomalías.

[7] Sam Altman apunta que darse tiempo para encontrar una idea no solo es una mejor estrategia en un sentido absoluto, sino que ademas es hago que hacen muy pocos fundadores.

Hay comparativamente menos competencia en la búsqueda por las mejores ideas, porque muy pocos fundadores estás dispuestos a destinar el tiempo necesario para darse cuenta de ellas. Mientras que existen una competición enorme por las ideas mediocres, porque cuando la gente crea ideas para startups, todos tienden a crear las mismas.

[8] Para las empresas de software y hardware, los trabajos de verano y las becas son una primera fase en su proceso de contratación. Pero si eres bueno te puedes saltar esta primera fase, si eres bueno no tendrás problema encontrando trabajo en estas empresas cuando acabes la carrera, sin importar si hiciste becas o no.

[9] La evidencia sugiere que si las universidades quieren que ayudar a sus estudiantes a crear startups, la mejor manera es dejarles hacerlo solos.

[10] Aquí hablo de startups de informática, en biotecnología las cosas son diferentes.

[11] Este es un caso de una regla más general: enfócate en los usuarios, no en los competidores. La información más importantes sobre tus competidores es la que sacas de tus usuarios de todas formas.

[12] En la práctica, la mayoría de las startup exitosas tienen elementos de ambos. Y puedes describir una estrategia en base a la otra solo con ajustar los límites de lo que llamas «el mercado». Pero es útil considerar ambas de forma separada.

[13] Me sentí tentado a no añadir este punto. Las startups son negocios, el objetivo de todo negocio es hacer dinero, y con esta restricción adicional, no puedes esperar emplear todo tu tiempo trabajando en las cosas que más te interesan.

[14] La necesidad tiene que ser grande. Retrospectivamente puedes describir cualquier idea inventada como algo que necesitas. Pero ¿de verdad necesitas ese sitio de recetas o el agregador de noticias locales tanto como Drew Houston necesitaba Dropbox? ¿O cómo Brian Chesky y Joe Gebbia necesitaban Airbnb?

Demasiado a menudo en Y Combinator nos encontramos preguntándole a los fundadores «¿Te ves usando esto si no lo hubieses creado tu?» y te sorprendería la cantidad de veces que la respuesta es no.

[15] Paul Buchheit añade que tratar de vender algo malo puede ser una fuente de ideas mejores.

«La mejor técnica que he visto para tratar con empresas de Y Combinator con malas ideas es decirles que vendan el producto tan pronto como puedan (antes de perder el tiempo construyéndolo). No solo aprenden que nadie quiere lo que están creando, a menudo vuelven con una idea más realista que ha descubierto en el proceso de vender la idea mala».

[16] Esta es la receta para producir el siguiente Facebook, si eres un estudiante universitario. Si tienes contactos con una de las hermandades femeninas más poderosas de tu campus, acércate a las «abejas reinas»  y ofréceles ser su consultor personal en informática y crear cualquier cosa que necesiten en sus vidas sociales pero que no existe. Cualquier cosa que construyas de esta manera será muy prometedora, porque ese tipo de usuarios son solo son los que demandan más, sino el punto perfecto de arranque de una idea.

Te advierto que no tengo ni idea de si esto funcionará

[17] Y la razón por la que Steve Wozniak usaba una televisión como monitor era para resolver sus propios problemas. Él, como la mayoría de sus amigos, no podía comprar un monitor de verdad.

Gracias a Sam Altman, Mike Arrington, Paul Buchheit, John Collison, Patrick Collison, Garry Tan, y Harj Taggar por leer borradores de este ensayo, y a Marc Andreessen, Joe Gebbia, Reid Hoffman, Shel Kaphan, Mike Moritz y Kevin Systrom por contestar mis preguntas sobre la historia de las startups.

Posted in ensayo, essay, paulgraham, traducción, translation, Uncategorized, ycombinator | Leave a comment

Ideas para startups terroríficamente ambiciosas (Marzo 2012, Paul Graham)

(Translation to Spanish of Paul Graham's essay «Frighteningly Ambitious Startup Ideas»)

Marzo 2012

Una de las cosas más sorprendentes que he notado trabajando en Y Combinator es como de aterradoras son las ideas de startups más ambiciosas. En este ensayo voy a demostrar este fenómeno describiendo algunas. Cualquiera de ellas puede hacerte billonario. Lo que debería llamar tu atención sobre las estas ideas, y aún así cuando te las describa notarás como serás tu mismo quien se asuste y decida que no es posible llevarlas a cabo.

No te preocupes, no es un signo de debilidad. Incluso podría decirse que es una demostración de tu cordura. Las mejores ideas para startups son aterradoras. Y no solo porque involucren una cantidad absurda de trabajo. Las ideas más grandes parecen atentar contra tu propia identidad: te hacen plantearte si tienes suficiente ambición para llevarlas a cabo.

Hay una escena en la película «Como ser John Malkovich» en la que el heroe empollón se encuentra con una mujer muy atractiva y sofisticada. Ella le dice:

Esta es la situación: si alguna vez me tienes, no tendrás ni idea de que hacer conmigo.

Y eso es lo que estas ideas nos dicen.

Este fenómeno es uno de los más importantes que debes comprender sobre las startups. [1] Esperas que las grandes ideas sean atractivas, pero en realidad tienen a provocarte repulsión. Y esto conlleva consecuencias. Significa que estas ideas son invisibles para la mayoría de la gente que trata de encontrar ideas para una startup, porque sus subconscientes las filtran automáticamente. Incluso la gente más ambiciosa probablemente se acercan a estas ideas lateralmente en lugar de frontalmente.

1. Un nuevo motor de búsqueda.

Las mejores ideas están en el lado correcto que marca la linea que demarca lo imposible. Ni siquiera se si esta es posible, pero hay signos de que podría serlo. Crear un nuevo motor de búsqueda significa competir directamente con Google, y recientemente he notado ciertas grietas en su fortaleza.

El momento en el que se me hizo evidente que Microsoft había perdido el norte fue cuando decidieron crear un motor de búsqueda. No fue un movimiento natural para Microsoft. Lo hicieron solamente por miedo a Google y Google estaba en el negocio de los motores de búsqueda. Pero esto significa que (a) Google se encontraba a partir de entonces en la agenda de Microsoft, y (b) que la agenda de Microsoft consistía en hacer cosas en las que no eran buenos.

Microsoft -> Google => Google -> Facebook.

Esto no significa que haya espacio para un nuevo motor de búsqueda, pero recientemente mientras usaba Google me he notado nostálgico, recordando los viejos tiempos cuando Google era Google. Google me mostraba las páginas con las respuestas adecuadas, rápidamente y sin distracciones. Ahora los resultados parecen inspirados por el principio de la Cienciología que dice que lo que es bueno es lo que es bueno para solamente tú. Y las páginas de Google no tienen ya ese aspecto austero y limpio que tenían antes. Las páginas antes parecía poco más que el resultado de la ejecución de un comando Unix. Ahora cuando pongo el cursor del ratón en cualquier sitio, cualquier cosa puede pasar.

La manera de ganar en este terreno consistiría en crear un motor de búsqueda que todos los hackers quieran usar. Un motor de búsqueda cuyos usuarios consistan en los 10.000 hackers más respetados y donde nadie pueda hacerte sombra a pesar de tu pequeño tamaño. Exactamente como pasaba con Google cuando no era más que un motor de búsqueda. Y por primera vez en casi una década la idea de cambiar Google por algo diferente se me antoja posible.

Como cualquiera capaz de arrancar esta empresa es uno de esos 10.000 hackers que he mencionado, la mejor manera de comenzar es sencilla: crea el motor de búsqueda que te gustaría usar a ti. Siéntete libre de hacerlo tan hacker como quieras. Hazlo realmente bueno indexando código fuente, por ejemplo ¿Te gustaría que las peticiones sean Turing-completas? Cualquier idea que consigua  que esos 10.000 hackers lo usen será buena ipso facto.

No te preocupes si algunas de estas decisiones pueden limitarte a largo plazo, porque como no consiguas ese grupo inicial de usuarios, ¡no habrá largo plazo! Si eres capaz de crear algo que tu y tus amigos preferís de verdad a Google, ya habrás hecho un 10% del camino hacia una salida a bolsa, igual que lo estuvo Faccebook cuando (aunque no se diesen cuenta) sus primeros usuarios eran estudiantes de Harvard.

2. Reemplaza al correo electrónico

El correo electrónico no fue diseñado para la forma en la que lo usamos hoy en día. El correo electrónico no es un protocolo de mensajería. Es una lista de cosas que hacer. O mejor dicho, tu bandeja de entrada es una listas de cosas a hacer, y el correo electrónico es la forma en la que esas tareas acaban allí. Pero claro, es una forma desastrosa de mantener una lista de tareas que hacer.

Estoy abierto a diferentes soluciones para este problema, pero sospecho que retocar la forma en la que funciona la bandeja de entrada no es suficiente, sino que es necesario reemplazar el correo electrónico por un nuevo protocolo de comunicación. Este nuevo protocolo debería ser diseñado pensando en las listas de tareas, no como un protocolo de mensajería, aunque se puede considerar un caso degenerado: que alguien te mande como tarea leer un texto.

Como protocolo de lista de tareas, el nuevo protocolo debería darte más poder sobre el receptor del que tenemos ahora con el correo electrónico. Quiero tener más restricciones sobre lo que otras personas pueden poner en mi lista de tareas. Y cuando alguien puede poner cosas en mi lista de tareas, quiero que sea capaz de decirme más sobre que quiere que haga ¿Quiere que haga algo más que simplemente leer un texto? ¿Cómo de importante es la tarea? (por supuesto debería existir algún mecanismo que impida a la gente decirme que todo es importante) ¿Cuándo debería llevar a cabo la tarea?

Esta es una de esas ideas que son como una fuerza irresistible a punto de impactar contra un objeto inmóvil. Por un lado los protocolos establecidos son imposibles de reemplazar. Por el otro, se me antoja imposible que la gente dentro de 100 años siga usando el mismo correo electrónico que tenemos ahora. Y si el correo electrónico tiene que ser reemplazado tarde o temprano por algo mejor, ¿por qué no ahora?

Si lo haces ahora, puede que evites el problema de la pescadilla que se muerde la cola que representan los nuevos protocolos, porque algunas de las personas más importantes en el mundo serán las primeras en querer pasarse a él. Ahora mismo están todas a merced del correo electrónico.

Lo que sea que construyas, debe ser rápido. GMail se ha vuelto dolorosamente lento [2], Si eres capaz de crear algo que no sea mejor que GMail, pero que sea rápido, esto ya te dará una ventaja que te permitirá arrebatarle usuarios a GMail.

GMail es lento porque Google no puede permitirse gastar demasiado en él. Pero la gente querrá pagar por algo mejor. No tengo problema en pagar 50 dólares al mes en algo así. Considerando cuanto tiempo pierdo con el correo electrónico, da casi miedo pensar cuánto estaría dispuesto a pagar por algo mejor. Casi sería capaz de pagar 1000 dólares al mes. Paso tantas horas al día leyendo y escribiendo emails, que sería incluso una forma barata de mejorar mi vida.

3. Replemplazar a las Universidades

Mucha gente está detrás de esta idea últimamente, y creo que que tienen razón. Soy reacio a pensar que una institución que ha estado con nosotros durante un milenio este acabada, solo porque haya cometido algunos errores en las últimas décadas, pero es cierto que en esas últimas décadas las universidades de Estados Unidos parecen haber decidido seguir la senda incorrecta. Se puede ofrecer educación mucho mejor a cambio de mucho menos dinero.

No creo que las  universidades vayan a desaparecer. No serán reemplazadas por completo. Simplemente perderán el monopolio de facto que una vez tuvieron. Existirán muchas formas diferentes y alternativas de aprender, y muchas de ellas serán bastante diferentes a las universidades. Y Combinator puede ser considerada una de esas alternativas.

Aprender se ha convertido en un problema tan grande que cambiar la forma en la que la gente lo hace generará una ola de efectos secundarios. Por ejemplo, el nombre de la universidad a la que has asistido es considerado por mucha gente (de forma correcta o no) como una credencial de tu capacidad. Si el proceso de aprender se fragmenta, el credencialismo puede desaparecer. Incluso puede ser necesario encontrar una alternativa a la vida social en los Campus (y por raro que parezca, incluso Y Combinator ha experimentado esto).

Se pueden reemplazar los institutos de secundaria también, pero entonces tendrás que superar muchos obstáculos burocráticos que frenarán a una startup. Las universidades parecen, desde mi punto de vista, el lugar por el que comenzar a cambiar la educación.

4. Internet Drama

A Hollywood le ha costado aceptar Internet. Fue un error, porque creo que está claro quien ha sido el ganador en la distribución de contenidos, y ha sido Internet, no la televisión por cable.

Una de las razones es que los clientes de televisión por cable, también denominadas televisiones, son horribles. Nuestra familia ni siquiera esperó al Apple TV. Odiamos nuestra última televisión tanto que hace unos meses la reemplazamos por un iMac empotrado en la pared. Si ignoramos la pequeña molestia que supone controlarlo con un ratón inalámbrico, la experiencia de uso es muchísimo mejor a la que supone controlar el interfaz de pesadilla que tenía nuestra antigua televisión.

Parte del tiempo que la gente dedica a ver una película o la televisión ha sido robado por otros entretenimientos como las redes sociales. Los videojuegos ha logrado captar un parte aún mayor de ese tiempo también, quizá porque cada vez son más parecidos a las películas. Pero aún así creo que seguirá existiendo una demanda residual de películas y series, donde te sientas pasivamente y ves como se presenta historia. Así que la pregunta es ¿cómo puedes distribuir peliculas y series usando Internet?  Cualquier que sea tu idea debe ser a una escala mayor que los pequeños videos de Youtube . Cuando la gente se sienta para ver un show, quieren saber lo que tendrán: o es un episodio de una serie con personajes familiares o una película de mayor duración cuya premisa básica saben con antelación

Hay dos maneras de organizar la distribución y cobro. O bien una empresa como Netflix o Apple será el app store para el entretenimiento, donde tendrás acceso a las audiencias a través suya. O bien los app stores actuales se mostrarán inadecuados para esta tarea (por estar saturados de otras cosas o porque ser demasiados inflexibles técnicamente) y otras empresas tendrá que ofrecer el sistema de pago y streaming a la carta a los productores de entretenimiento. Si los acontecimientos se desarrollan de esta última forma, existirá una demanda de empresas que ofrezcan ambas infraestructuras.

5. El próximo Steve Jobs

Hace poco hablaba con una persona que conoce Apple bien, y le preguntaba si la gente que ahora dirige la compañía será capaz de seguir creando nuevos productos de la misma forma que era capaz bajo la dirección de Steve Jobs. Su respuesta fue un simple "no". Ya me temía que esa sería la respuesta, así que continue preguntando para ver como la justificaba. Pero no lo hizo. No, no habrán nuevos productos fuera de los que ya estaban en preparación. Los ingresos de Apple seguirán creciendo durante bastante tiempo, pero como ha demostrado Microsoft, los ingresos son un indicador que te muestra la realidad con retraso en el negocio de la tecnología.

Así que, si Apple no va a crear el próximo iPad, ¿quién si no? Ninguno de sus actuales competidores. Ninguno de ellos está dirigido por un visionario, y la experiencia me demuestra que no es posible ir y simplemente contratar uno. Lo que la experiencia demuestra es que la manera de que un visionario acabe como CEO es si es uno de los fundadores de la empresa y consigue llegar hasta el puesto sin ser despedido. Así que la empresa que cree la próxima ola de innovación en hardware será probablemente una startup

Se que suena absurdamente ambicioso para una startup tratar de ser la próxima Apple. Pero no es más ambicioso de lo que lo fue para Apple convertirse en la algo tan grande como... Apple, y aún así lo hicieron. Además, una startup tratando de hacer esto tiene una ventaja que la Apple original no tenía: el ejemplo de Steve Jobs demuestra que es posible. Esto debería ayudar a todos lo que quieren ser sus sucesores de dos maneras. De forma directa, como a Roger Bannister (el primer hombre en correr una milla en menos de 4 minutos), que demostró que puedes hacerlo mucho mejor que la gente que lo ha intentado antes; o de forma indirecta como el emperador Cesar Augusto, que demostró que es posible introducir la idea en la mente de los usuarios de que una sola persona  es capaz de guiarles hacia su futuro.[3].

Ahora que Steve ya no está entre nosotros existe un vacío que todos podemos percibir. Si una nueva empresa puede liderar hacia un nuevo futuro de hardware, los usuarios le seguirán. El CEO de esa empresa, el "siguiente Steve Jobs", puede que no sea tan brillante como el original. Pero tampoco lo necesita, Solo lo tiene que hacer un trabajo mejor del que Samsung, HP y Nokia están haciendo ahora mismo, y eso parece bastante factible.

6. Devolvernos la ley de Moore

En los últimos 10 años nos han demostrado lo que la ley de Moore realmente dice. Hasta el año 2000 podías interpretarla como la promesa de que la velocidad de la frecuencia en las CPUs se duplicaría cada 18 meses. Pero lo que realmente dice es que la densidad de los circuitos se duplicará cada 18 meses. Antes recordar esta diferencia sonaba algo pedante. Pero ya no, Intel ya no nos puede dar CPUs más rápidas, solo más CPUs.

Esta "nueva" ley de Moore no es tan buena como la "anterior". La ley de Moore significaba que si tu software era lento, todo lo que tenía que hacer era esperar, y el inexorable progreso del hardware resolverá tu problema. Ahora si tu softwar es lento tienes que reescribirlo para conseguir que haga más cosas en paralelo, lo que representa un esfuerzo mucho mayor que simplemente esperar a la próxima generación de CPUs.

Sería genial si una startup pudiese devolvernos algo de lo que nos ofrecía la viaje ley de Moore, si consiguiese crear un software que hiciese que un gran número de CPUs se comportasen como una sola CPU más rápida. Hay muchas maneras de afrontar este problema. La más ambiciosa es intentar hacer esto de forma automática mediante un compilador que paralelice nuestro código. Hay un nombre para tal compilador, «el compilador suficientemente intelignete», y se usa como sinónimo de «imposible». Pero ¿es realmente imposible? ¿Es realmente posible la existencia de este compilador? Si de verdad crees que no es posible, deberías demostrarlo, porque sería un hallazgo interesante. Y si no es imposible crear tal compilador, sino que simplemente es muy complicado, quizá merezca la pena tratar de escribirlo. El resultado final sería tan valioso que merece la pena intentarlo aunque las expectativas sean bajas.

La razón de que sea tan valioso está en los servicios web, si puedes crear un software que permita a los programadores trabajar como lo hacían en el pasado, nada te impide ofrecerlo como un servicio web. Y esto te permitiría acceder a todos sus potenciales usuarios.

Imagina que existiera otro fabricante que crease procesadores y que fuese aún capaz de transformar la mayor densidad en los circuitos en mayor velocidad. Imagina que ya le hubiesen arrebatado a Intel la mayor parte de su negocio. Y como nadie puede ver sus procesadores directamente, empleando un compilador suficientemente inteligente podrías crear una entorno en el que sería imposible distinguirte a tí de ese fabricante, al menos en el mercado de servidores. Tu software empleando procesadores lentos sería tan valioso como sus nuevos y más veloces procesadores.

La forma menos ambiciosa de atacar este problema sería comenzar por el otro lado, y ofrecer a los programadores componentes paralelizados estilo Lego que les permitan construir programas, como hace Hadoop y MapReduce. En ese momento el programador aún tendría que hacer la mayor parte del trabajo de optimización.

Hay un intrigante término medio donde emplearías un arma semi-automática, existiendo un componente humano en el proceso. Creas algo que parece desde el punto de vista del usuario como un compilador suficientemente inteligente, pero lo que realmente tienes son personas, usando herramientas de optimización realmente avanzadas que encuentra y eliminan los cuellos de botella en los programas de tus usuarios. Estas personas podrían ser tus empleados o podrías crear un mercado donde la gente ofrezca sus servicios de optimización.

Un mercado de optimización podría ser una manera de generar el compilador suficientemente inteligente paso a paso, porque los participantes podrían comenzar a crear bots de optimización de forma casi inmediata para ahorrarse trabajo y ganar más dinero. Sería algo curioso si fueses capaz de llegar al punto donde todo el trabajo lo hiciesen bots, porque eso significaría que habrías dado con el compilador suficientemente inteligente, pero nadie dispondría de una copia completa del mismo.

Se que suena como una locura. De hecho, lo que me gusta de esta idea son todas las maneras diferentes en que está mal. La misma idea de centrarse en la optimización contraviene la tendencia general de desarrollo de software de las últimas décadas. Tratar de escribir el compilador suficientemente inteligente es por definición un error. E incluso si no lo fuese, los compiladores son la clase de cosas que se espera que surjan de proyectos de software libre y no de empresas. Por si fuera poco, si la idea funcionase, arrebataría a los programadores de la posibilidad de crear increíblemente complejas aplicaciones multihebra. El troll que tengo en mi interior ve tantos defectos que no sabe ni siquiera por donde empezar a criticar este proyecto. Y eso es exactamente lo que considero una buena idea para una startup.

7. Diagnóstico constante.

Espera, aquí viene otra idea que podría enfrentarse a aún más resistencia: diagnóstico médico automático.

Uno de mis trucos para generar ideas para startups es imaginar las diferentes maneras en que generaciones futuras nos encontrarán extraños. Y estoy bastante seguro de que a la gente en 50 o 100 años les parecerá una barbarie que tuviésemos que esperar hasta que existiesen síntomas para ser diagnosticados de enfermedades del corazón o cáncer.

Por ejemplo, en 2004 Bill Clinton notó que le faltaba el aliento. Los médicos descubrieron que un gran número de sus arterias estaban bloqueadas al 90% y 3 días después se sometió a una operación de cuádruple bypass. Parece razonable pensar que Bill Clinton dispone del mejor equipo médico imaginable. Y aún así tuvo que esperar hasta que sus arterias estuviesen bloqueadas al 90% para descubrir que lo estaban. Probablemente en el futuro estaremos al tanto de estos números así como conocemos nuestro peso a día de hoy. Lo mismo pienso sobre el cáncer. Parecerá absurdo a generaciones futuras que tuviésemos que esperar hasta tener síntomas para ser diagnosticados de cáncer. El cáncer probablemente aparezca en algún tipo de scanner en el futuro cuando todavía cuando todavía se encuentra en fase temprana.

(Por supuesto, lo que aparecerá entonces en la pantalla será algo diferente a lo que ahora consideramos cáncer. No me sorprendería que ahora mismo cada uno de nosotros tuviese decenas o incluso centenares de microcáncers en desarrollo, simplemente no suelen desarrollarse lo suficiente para ser malignos o afectar a nuestra salud).

Muchos de los obstáculos para este tipo de diagnóstico constante vendrán de que es un ataque directo a la profesión médica. La forma en la que la medicina siempre ha funcionado se basa en que los pacientes van a los médicos porque tienen un problema y necesitan una solución. Muchos doctores no parecen interesados en tácticas como las que emplean los abogados en sus «expediciones de pescas», donde vas buscando problemas sin saber muy bien si encontrarás alguno. Los médicos llaman a estos hallazgos inesperados «incidentolomas» y casi los consideran una molestia.

Por ejemplo, en cierta ocasión una amiga mío se realizó un scanner cerebral como parte de un estudio. Quedó horrorizada cuando los médicos que realizaban el estudio descubrieron lo que parecía un gran tumor. Después de realizar las pruebas pertinentes, resultó ser un quiste inofensivo. Pero el coste personal para ella fue de varios días de auténtico terror. Muchos médicos  se encuentran preocupados por lo que pasaría si muchos pacientes se sometiesen a estas pruebas a gran escala: los numerosos falsos positivos requerirían de pruebas más invasivas que solo demostrarían que no había nada. Pero mi punto de vista es que esto no es más que una consecuencia de nuestras limitaciones actuales. Si la gente fuese escaneada de forma constante y fuésemos mejores decidiendo cuales de las anomalías son realmente problemas, mi amiga habría podido saber acerca de ese quiste durante toda su vida y habría sabido que es inofensivo, igual que sabemos que nuestras marcas de nacimiento lo son.

Aún hay sitio para muchas más ideas para startups. Además de los obstáculos técnicos que todas las startups tienen que encarar, y de los obstáculos burocráticos que todas las startups médicas tienen que afrontar, estas ideas van contra miles de años de tradición médica. Pero tarde o temprano estas ideas se pondrán en práctica, y será tan maravilloso que la gente del futuro sentirán pena por nosotros así como nosotros sentimos pena por las generaciones que tenían que ser operadas sin anestesia o vivir sin antibióticos.

Tacticas

Permíteme concluir con algunos consejos tácticos. Si quieres atacar un problema tan grande como los que hemos discutido aquí, no lo hagas de forma directa. No digas, por ejemplo, que vas a reemplazar el correo electrónico. Si lo haces crearás demasiada expectación. Tus empleados e inversores estarán constantemente preguntando «¿lo hemos conseguido ya?» y tendrás un ejército de trolls esperando ver como caes. En su lugar, simplemente di que estás construyendo un software para hacer listas de tareas. Suena mucho más inofensivo. La gente se dará cuenta de que has reemplazado al correo electrónico cuando es fait accompli. [4]

La experiencia nos demuestra que la manera en la que las importantes parecen arrancar es con ideas decepcionantemente pequeñas ¿Quieres dominar el software de microcomputadoras? Comienza escribiendo un intérprete de Basic para una máquina que solo usan unas pocas miles de personas ¿Quieres crear el sitio web universal? Comienza construyendo un sitio web donde los estudiantes de Harvard se acechen entre ellos.

La experiencia demuestra que debes arrancar pequeño no solo por lo que otros piensen. Lo tienes que hacer por tu propio bien. Ni Bill Gates ni MArk Zuckerberg sabían de primeras como de grandes serían las empresas que estaban creando. Todo lo que sabían era que estaban trabajando en algo importante. Quizá sea una mala idea tener una gran ambición al principio, porque cuanto más grande sea tu ambición, más tardarás en llevarla a cabo, y cuanto más tengas que proyectar tu idea en el futuro, más probable es que estés equivocado.

Creo que la mejor manera de usar grandes ideas es no tratar predecir cuando serán efectivas y trazar un plan para llevarlas a cabo, como se suele decir que hacen los visionarios. Creo que harás mejor si haces como Colón y simplemente pones rumbo a occidente. No trates de crear el futuro como se construye un edificio, porque tus planos estarán irremediablemente mal. Comienza con algo que sabes que funciona y desde ese punto comienza a expandirte lateralmente.

La imagen popular del visionario es alguien con un visión clara dell futuro, pero la experiencia nos demuestra que es mejor tener una borrosa.

Notas

[1] Es también una de las cosas más importante que los VCs parecen no comprender sobre las startups. La mayoría esperan que los fundadores tengan una visión exacta de lo que quieren hacer, y les juzgan basándose en esto. Pocos se dan cuenta de que los mayores éxitos se han dado en startups donde casi no hay correlación entre el plan inicial y lo que que la startups se ha convertido al final.

2] Esta frase era originalmente «GMail es dolorosamente lento». Doy las gracias a Paul Buchheit por la corrección..

[3] Roger Bannister es famoso por ser la primera persona capaz de correr una milla en menos de 4 minutos. Pero este record mundial duró solo 46 días. Una vez que demostró que era posible, muchos otros le siguieron. Diez años después Jim Ryun corrió una milla con un tiempo de 3:59 cuando todavía era un junior en el instituto de secundaria.

[4] Si quieres ser el próximo Apple, quizá no deberías siquiera plantearte comenzar con la electrónica de consumo. Quizá al principio deberías crear algo que solo los hackers usen. O quizá deberías trabajar en algo que no parezca importante, como en auriculares o en routers. Solo necesitas una cabeza de puente que te permita entrar en el mercado y demostrar lo que vales.

 

Gracias a Sam Altman, Trevor Blackwell, Paul Buchheit, Patrick Collison, Aaron Iba, Jessica Livingston, Robert Morris, Harj Taggar y Garry Tan por leer borradores de este ensayo.

Posted in Uncategorized | Leave a comment

How to get the rows and columns of a square matrix when you have an array

Yesterday I was reading the book Beautiful Code when I found out a silly, and even evident, way for  finding out the number of columns/rows of an square matrix when represented in an array.

Just make the square root of the length of the array.

It is so simple that I cannot imagine why I never thought about this way before.

 

Posted in Uncategorized | Leave a comment

Manener un programa en tu mente (Agosto 2007, Paul Graham)

(Spanish translation of «Holding a program in one's head» of Paul Graham)

Agosto 2007

Un buen programador, que trabaja intensivamente en su propio código, puede mantener en su cabeza  todo un programa de la misma forma que un matemático puede mantener en la suya el problema en el que trabaja. Los matemáticos no encuentran soluciones trabajando sobre un papel, como se enseña a hacerlo a los niños en el colegio. Lo que hacen es tener todo el problema en su cabeza: tratan de comprender el espacio del problema lo suficientemente bien hasta el punto de ser capaces de recorrer todos sus detalles de las misma forma en la que tu puedes recorrer con la memoria todas las habitaciones de la casa donde te criaste. Cuando se programa de la forma correcta sucede lo mismo. Eres capaz de mantener todo el programa en tu cabeza, donde puedes manipularlo a tu antojo.

Esto es particularmente valioso cuando se comienza un proyecto, porque es entonces cuando es más importante ser capaz de cambiar lo que estás haciendo. No solo para resolver el problema de una forma diferente sino incluso para cambiar el propio problema que tratas de resolver.

Un programa no es más que tu comprensión del problema que estás explorando. Cuando todo el código de tu programa está en tu cabeza es cuando realmente comprendes el problema.

No es sencillo mantener un programa en tu mente. Si dejas un proyecto durante unos meses puede llevarte días comprenderlo de nuevo si quieres volver a trabajar en él. Incluso cuando estás trabajando de forma activa en el programa puedes necesitar media hora cargar en tu mente todo lo necesario para ponerte a trabajar en él cuando arranca cada jornada. Y eso en el mejor caso. Los programadores ordinarios trabajando en las condiciones de oficina típicas nunca llegan a entrar en este modo de trabajo. O, poniéndonos dramáticos, los programadores ordinarios trabajando en la oficina típica nunca comprenden realmente el problema que están tratando de resolver.

Incluso los mejores programadores no siempre tienen todo el programa en el que están trabajando cargado en su mente. Pero hay cosas que les pueden ayudar a hacerlo..

  1. Evitar distracciones.Las distracciones son malas para muchos tipos de trabajos, pero son especialmente nefastas en programación, porque los programadores tienden a operar en el límite de detalle que sus mentes pueden manejarEl peligro que representa una distracción no depende de lo larga que sea, sino de cuanto sea capaz de marear a tu mente. Un programador puede salir de la oficina e ir a por un sandwich sin perder el código que tiene en su mente. Pero otras distracciones pueden vaciar tu mente en 30 segundos.Por extraño que parezca, las distracciones planificadas pueden ser aún peores que las que te sorprenden. Si tienes una reunión en una hora es posible que ni te plantees comenzar a trabajar en serio en el programa.
  2. Trabajar durante periodos prolongados. Como comenzar a trabajar en un programa tiene un coste fijo, es más eficiente trabajar durante una serie de sesiones largas que que hacerlo en muchas sesiones cortas. Por supuesto siempre corres el riesgo de que comenzar a hacer cosas estúpidas debido al cansancio. Esto varía de unas personas a otras. He escuchado decir que hay gente que es capaz de hackear durante 36 horas seguidas. Pero lo máximo que y he sido capaz de trabajar en un mismo programa es entorno a 18 y trabajo mejor en sesiones de no más de 12 horas.El punto óptimo no está en el máximo periodo de tiempo que puedas aguantar trabajando. Existen ventajas y desventajas en romper un proyecto en distintas sesiones. En ocasiones, cuando vuelves a un problema después de haber descansado, tu mente subconsciente puede haber encontrado una respuesta a un problema sin que te des cuenta.
  3. Usa lenguajes sucintos. Lenguajes de programación más poderosos te permiten crear programas más cortos. Y los programadores parecen pensar sobre un programa empleando el lenguaje de programación que están usando para escribirlo. Cuanto más sucinto sea el lenguaje de programación, más corto será el programa, y más sencillo será cargarlo y mantenerlo en tu mente. Puedes magnificar este efecto si empleas un estilo de programación llamado «bottom-up», donde escribes los programas creando múltiples capas donde las de abajo actúan como lenguajes de programación para las que se encuentran encima de ellas. Si lo haces bien, solo tendrás que mantener en tu cabeza la capa superior del programa.
  4. Reescribe tu programa a menudo. Reescribir un programa a menudo nos lleva a un diseño más limpio. Pero incluso si no lo hace nos seguirá ofreciendo ventajas: tienes que comprender un programa completamente para poder reescribirlo, así que no hay mejor manera de cargar un programa en tu mente que reescribirlo.
  5. Escribe código re-legible. Todos los programadores saben que es bueno escribir código legible. Pero el lector más importante de tu código eres tu mismo. Especialmente al principio: un prototipo es una conversación contigo mismo. Y cuando escribes para tí mismo puede que tengas otras prioridades. Si escribes para otras personas no querrás hacer el código muy denso. Algunas partes de un programa son más fáciles de leer si haces todos los pasos evidentes, como en un libro de texto. Mientras que si escribes el código pensando en hacer sencillo cargarlo en tu mente, es posible que lo mejor sea hacerlo breve.
  6. Trabaja en equipos pequeños. Cuando manipulas el programa en tu mente, tu visión tiende a parar en el límite de tu propio código. No comprendes las partes creadas por otros tan bien como las tuyas, y lo que es más importante, no puedes tomarte libertades con ellas. Así que cuanto más pequeño el número de programadores, más sencillo será mutar un proyecto. Si solo hay un programador, como suele ocurrir al principio, podrás hacer rediseños generales sin problemas.
  7. Don't have multiple people editing the same piece of code. You never understand other people's code as well as your own. No matter how thoroughly you've read it, you've only read it, not written it. So if a piece of code is written by multiple authors, none of them understand it as well as a single author would.And of course you can't safely redesign something other people are working on. It's not just that you'd have to ask permission. You don't even let yourself think of such things. Redesigning code with several authors is like changing laws; redesigning code you alone control is like seeing the other interpretation of an ambiguous image.If you want to put several people to work on a project, divide it into components and give each to one person.
  8. Comienza con algo pequeño. Es más sencillo mantener un programa en tu cabeza cuanto más te familiarices con él. Puedes comenzar a tratar las distintas partes de un programa como cajas negras una vez que consideres que las has explorado completamente. Pero cuando comienzas a trabajar en un proyecto, estarás forzado a verlo todo. Si comienzas con un problema demasiado grande puede que nunca seas capaz de comprenderlo completamente. Así que si necesitas escribir un programa grande y complejo, la mejor manera de comenzar no será escribir una especificación del problema, sino escribir un prototipo que resuelva un subconjunto del problema. Cualesquiera que sean las ventajas que hacer una planificación previa, son rápidamente superadas por las ventajas de ser capaz de mantener el programa en tu mente.

Es sorprendente como de a menudo los programadores son capaces de seguir estos ocho puntos por accidente. Alguien tiene una idea para un nuevo proyecto, pero debido a que no ha sido autorizado oficialmente, comienza a trabajar en él en sus horas libres (que resultan ser más productivas debido a que no hay distracciones). Guiados por su entusiasmo por el nuevo proyecto, trabajan numerosas horas seguidas en él. Como inicialmente es solo un experimento, en lugar de emplear un lenguaje de «producción» suelen emplear un lenguaje de «scripting», que es de hecho más poderoso. Es normal que se reescriba el programa en numerosas ocasiones, lo que no sería justificable en un proyecto oficial, pero como se trata de un proyecto personal el programador nunca pretende que el código sea perfecto. Debido a que nadie va a leer el código a excepción de su creador, se omiten los comentarios excepto por una notas con recordatorios que solo entiende el autor. El programador trabajará con un pequeño equipo forzosamente, puesto que solo ha hablado del programa con unas cuantas personas o el proyecto es tan poco prometedor que nadie más está autorizado a trabajar en él. Incluso si existe un equipo, no será posible que distintas personas trabajen en el mismo código porque cambiará demasiado rápido para que sea posible. Por último, el proyecto arrancará pequeño porque la idea será pequeña al principio, el programador solo quiere probar algún hack curioso para resolver el problema.

Incluso más sorprendente es el número de proyectos autorizados oficialmente que consiguen equivocarse en los ocho puntos. Si observas la forma en al que el software se escribe en la mayoría de las organizaciones, es casi como si trataran de forma deliberada de hacer las cosas mal. Y en cierto sentido es lo que desean. Una de las cualidades que definen a las organizaciones desde que existen es la de tratar a los individuos como piezas intercambiables. Lo que no es una mala idea para la mayoría de las tareas paralelizables, como por ejemplo combatir en guerras. Durante la mayoría de la historia, un ejercito profesional bien abastecido podía contar con la victoria frete a un ejército de guerreros individuales, sin importar lo valerosos que estos fuesen. Pero tener ideas no es una tarea paralelizable. Y los programas no son más que ideas.

No solamente es cierto que las organizaciones aborrecen la idea de depender del genio de unos pocos individuos, es de hecho una tautología. Es parte de la definición de organización no depender de ellos. O al menos de nuestro actual concepto de organización.

Puede que podamos definir un nuevo tipo de organización que combine los esfuerces de unos cuantos individuos sin requerir que sean intercambiables. Se puede argumentar que un mercado es ese tipo de organización, aunque sería más preciso definir un mercado como un caso degenerado, puesto que es lo que ocurre cuando establecer una organización no es posible

Probablemente lo mejor que podamos hacer es emplear una especie de hack, como por ejemplo considerar que la partes de la organización relacionadas con programar trabajen de forma diferente al resto. Quizá la solución óptima sea que las grandes empresas ni siquiera traten de desarrollar ideas internamente, sino que directamente las compren. Sea cual sea la solución, el primer paso es reconocer que hay un problema. Hay una contradicción en la propia expresión «empresa de software». Las palabras apuntan en direcciones opuestas. Cualquier buen programador en una empresa grande se encontrará incómodo en ella, debido a que las organizaciones son diseñadas para prevenir los programadores anhelan.

Los programadores realmente buenos consiguen sacar trabajo adelante de todas formas. Pero a menudo requiere prácticamente rebelarse contra las organizaciones que les emplean. Quizá ayudaría si la gente comprendiese que la manera en la que los programadores se comportan es consecuencia de las demandas de su trabajo. Que trabajen durante largos periodos de tiempo ignorando todas las demás obligaciones no es consecuencia de que sean unos irresponsables, lanzándose a programa antes de escribir una especificación, y reescribir el código que ya funciona. Que trabajen solos o que gruñan a la gente que se pasa por su puerta para decir hola no se debe a que tengan personalidades asociales. Esta colección de hábitos tan molestos tiene una explicación: la capacidad de mantener en su mente un programa.

Comprender todo esto pueda ayudar o no a las grandes organizaciones, pero lo que esta claro es puede ayudar a sus mayores competidores: las startups. El punto débil de las grandes empresas es que no pueden permitir a los programadores individuales hacer lo que mejor saben hacer. Así que si eres una startup pequeña, debes aprovechar esta situación. Trabaja en la clase de problemas que solo pueden ser solucionados dentro de un única gran mente.

Gracias a Sam Altman, David Greenspan, Aaron Iba, Jessica Livingston, Robert Morris, Peter Norvig, Lisa Randall, Emmett Shear, Sergei Tsarev, and Stephen Wolfram por leer borradores de este ensayo.

Posted in Uncategorized | Leave a comment

Sanctum

Sanctum is a movie I really liked to watch. I love adventures, and if they are inspired y real life then I'm sold. This is the trailer:

Sanctum was inspired by a real history, 13 people got trapped in 1988 in one of the largest cavern systems in the world.   And I've the theory that the protagonist is clearly inspired by this man (really interesting talk anyway 😉 ):

 

It's not a easy movie to watch. It's realistict to the extreme and it's about surviving when there is no hope. People die in the movie in real situations. Even one of the specialists that appear in the movie died months later like one of the actors in the movie! To that level it's realistic.

From my point of view, James Cameron wanted to tribute to all the modern private explorers in this movie (he included). The protagonists are joking in one scene about how much more difficult is to be a underwater cave explorer compared to an astronaut, and after watching the movie you have to believe them. I cannot imagine an environment more dangerous in Earth than that.

A movie worth watching and an incredible adventure of survival and hope when everything else has failed.

Posted in Uncategorized | Leave a comment

“The unexamined life is not worth living for men”

http://circeinstitute.org/2012/07/on-being-human-the-unexamined-life/

Interesting reflection on virtue and our modern world. Thinking has always been a dangerous activity done by brave men and women and distractions by amusements based on cheap fiction and feelings (violence, sex, laughing) is the best way to permanently disconnect the brain.

 

Posted in Uncategorized | Leave a comment

Posted in Uncategorized | Leave a comment

I love gus gus

Posted in Uncategorized | Leave a comment

OpenCV tips and tricks

  • Install:
  • sudo apt-get install libavformat-dev libavcodec-dev libavfilter-dev libswscale-dev
  • Download an compile OpenCV, it's better and it takes only a few minutes to compile.
  • OpenCV changed the API, all these examples that import "highgui" and "cv2.cv" and so are wrong! Now you have to use:
import cv
  • Problem capturing keys? waitKey() doesn't return strings or chars! instead it returns a that number you need to mask with 255:
 my_key = chr(cv.waitKey(10) & 255)

http://stackoverflow.com/questions/9172170/python-opencv-cv-waitkey-spits-back-weird-output-on-ubuntu-modulo-256-maps-corre

  • Cannot capture from your camera?

http://stackoverflow.com/questions/4749498/cant-access-webcam-with-opencv

  • Install libv4l-dev before compiling in Ubuntu or your camera will not capture anything (empty window).
  • «if you only have one camera, or you don't care which camera is the correct one, then use "-1" as the index. Ie for your example capture = cv.CaptureFromCAM(-1).»

http://stackoverflow.com/questions/2601194/displaying-webcam-feed-using-opencv-and-python

  • Use cv.CV_FOURCC() for getting the code for video codecs (en c++ it's a macro).

http://stackoverflow.com/questions/5426637/writing-video-with-opencv-python-mac

  • Load the classifiers (for face detection for example) using
classifier = cv.Load("/full/path/to/opencv/share/classifier.xml")
Posted in Uncategorized | Leave a comment