La trampa mortal del crecimiento en la que todos hemos caído alguna vez

Todas las escaladas alcistas rebotan tarde o temprano contra un techo de cristal. Lo peligroso de este techo es que no puedes verlo mientras te acercas a él. Sólo te das cuenta de su existencia cuando te golpeas bien duro en la cabeza contra el mismo. ¿En qué consiste la trampa? Veamos como ejemplo el gráfico de cómo cayó en ella el Estado Español, pero es algo que le puede suceder a cualquiera y, de hecho, sucede con mucha frecuencia en las empresas.

Evolución de Ingresos y Gastos en España 2001-2013
Fuente: GURUSBLOG

El error es bien fácil de ver (a posteriori) y consiste en prolongar mentalmente de forma indefinida una línea diagonal ascendente.

La historia suele ser como sigue: una start up empieza a vender un producto con mucho esfuerzo a pequeños clientes innovadores. Un buen día por fin aparece un adoptador temprano de gran tamaño y con mucho poder de compra. Puede ser que compre directamente (B2B) o que aporte un canal del ventas muy potente (B2C) mediante un acuerdo de comercialización. De repente, los ingresos de la empresa empiezan a crecer vertiginosamente. Y, como provenía de una situación previa en la que la caja era muy escasa, el cash burning rate es bajo y se genera una liquidez sin precedentes en la historia de la compañía. En este punto el presidente se emociona y anuncia a bombo y platillo la inaguración de la etapa imperial de la empresa. Se sube el sueldo a los empleados, se alquilan flamantes oficinas, se amplía el equipo técnico para mejorar el servicio, todo el mundo recibe un carísimo portátil de última generación, se subcontrata a asesores de relaciones públicas, se recluta a un ejército de comerciales para replicar el caso de éxito y se sirve caviar Beluga triple cero con Dom Perignon en la fiesta de corporativa de Navidad. Pero el error no es tanto el despilfarro puntual como el incremento de gastos fijos ineludibles en el futuro.

El Estado construyó infraestructuras sin calcular bien que, además de pagar su coste de creación, debería asumir el coste perpétuo de mantenerlas. Y no hubiera sido tan malo si las infraestructuras se hubiesen construido con dinero en efectivo, pero, además, se construyeron con créditos a veces a 30 años (una cantidad de tiempo totalmente desproporcionada para un préstamo a una administración pública). Análogamente, la empresa puede acometer su etapa imperial con líneas de crédito o con capital riesgo (que es el dinero más caro que se puede pedir prestado). Las líneas de crédito estrangularán a la empresa en un plazo de 12 meses cuando llegue su vencimiento y no haya dinero para liquidarlas. Nunca hay que financiar el crecimiento con líneas de crédito. Y el capital riesgo endurecerá de forma insoportable las condiciones para los fundadores en el caso de que no se cumplan los objetivos de venta.

La regla del dedo gordo para evitar caer en esta trampa es que cuanto mejores sean los resultados financieros más hay que controlar la racionalidad del gasto y su potencial de generar un buen retorno de inversión. No hay que preocuparse en exceso por tener dinero ocioso. El dinero que permanece ahorrado a la espera de una buena oportunidad no está ocioso y el retorno de una buena oportunidad cogida justo a tiempo compensará con creces a quien supo esperar. Las oportunidades realmente buenas sólo se presentan una vez cada varios años, luego el dinero puede permanecer bastante tiempo parado, no pasa nada.

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Emprendizaje, Mercado y Oportunidades de Negocio, Modelos de Negocio | Deja un comentario

Cosas que debes saber antes de meterte en un juicio

En Estados Unidos los pleitos civiles entre empresas son muy comunes. Tanto que se puede escuchar a los emprendedores en el bar hablando del último litigio que han tenido ese mes. En España recibir una demanda se percibe como un problema. Y, por otro lado, las empresas no suelen andar demandando a otras por cualquier “quítame esas pajas” (como una patente o por el estilo…).

En la mayoría de los masters generalistas (que yo sepa) no enseñan a pleitear. Parece como que queda mal hablar de la guerra sucia corporativa y, sin embargo, ganar o perder un jucio puede suponer la diferencia entre la existencia, o no, de una empresa.

Como emprendedor, seguidamente comento lo básico que en mi experiencia debes saber sobre derecho civil, mercantil y penal.

Plazos

• La justicia es lenta. Si recibes una demanda no te asustes. Ser demandado es un suceso cuya primera vez causa ansiedad, pero pasarán al menos varios meses desde que recibas la notificación hasta que suceda algo más. Esto te da mucho tiempo para preparar tu defensa. Equivalentemente, si decides demandar a alguien no esperes ninguna resolución rápida. Prepárate para una carrera de fondo que posiblemente durará meses o años.

• Cuando recibes una demanda puede que te interese resolver la disputa rápidamente o puede que te interese demorar la resolución. Lo más rápido y práctico es que llegues a un acuerdo extrajudicial con la otra parte siempre que puedas. Para alargar el proceso lo más eficaz es estirar los plazos de las notificaciones. Hasta trece veces, si mal no recuerdo, tuvo que llamar el juez a declarar sobre Nueva Rumasa a José Mª Ruíz Mateos antes de enviar a la policía a buscarle a su casa.

• La justicia ordinaria cierra por vacaciones en agosto. Es un mes inhábil a prácticamente todos los efectos. Y cualquier proceso en curso se paralizará durante treinta días.

Estrategia

• Es más fácil defenderse que atacar. La justicia se basa en la presunción de inocencia. Para obtener una sentencia favorable debes demostrar que la otra parte es culpable. En ausencia de pruebas entonces es inocente. Esto da una fuerte ventaja táctica al demandado sobre el demandante.

• No te dejes amedrentar por los equipos de abogados de la parte contraria. Cuanto peor es la historia de terror que te cuentan que podría sucederte es que más asustados están ellos mismos de perder el caso.

• Mejor procede contra las empresas que contra la personas. En general, procede contra quien tenga dinero y le duela menos pagarlo. Cuanto más grande la empresa demandada mejor, porque más barato en términos relativos les resulta llegar a un acuerdo. Con una excepción a lo anterior, cuando el administrador de la parte contraria realmente ha cometido un delito, sobre lo cual pondré un ejemplo más adelante.

• Debes tener una estrategia. La mayoría de los abogados son como los contables o los asesores fiscales. Pueden ayudarte a rellenar correctamente la declaración pero no saben asesorarte sobre cual sería tu mejor estrategia financiera. Eso debes decidirlo tú. Análogamente, tú debes decidir cuándo te conviene demandar a una persona física o jurídica y porqué. Los abogados superestelares que obran milagros en las vistas orales son cosa de las películas. Una vista oral típica dura 10 minutos y lo único que hacen las partes es reafirmarse en lo que ya le han mandado por escrito previamente al juez.

• Para el mismo hecho en ocasiones puedes optar por interponer una demanda civil o una querella criminal. Si se trata de un delito de apropiación indebida en una empresa yo optaría directamente por la vía penal contra el responsable porque es más rápida, barata y se obtiene de rebote la sentencia civil. Por ejemplo, una empresa te encarga un trabajo a sabiendas de que no puede pagarlo (los ayuntamientos han estado haciendo esto mucho tiempo). Cuando vas a cobrar la factura se parten de la risa y te dicen que hay una demora mínima de un año. Puedes poner una demanda para intentar cobrar la factura la cual ganarás con facilidad (tras varios meses) pero no cobrarás porque el pagador no tiene dinero (a los ayuntamientos no se les puede embargar el flujo de caja). También puedes querellarte contra el administrador por estafa alegando que cuando te contrató sabía a ciencia cierta que no podría pagar. Esto es bastante más difícil de demostrar en un juicio que la factura, la diferencia es que con la sentencia ejecutiva de la factura al administrador no le pasa nada, mientras que con una sentencia penal se la juega a una condena a prisión. Otras veces se utiliza una querella como palanca, por ejemplo, en las demandas laborales es frecuente que un ex-empleado demande al jefe por acoso u otra causa criminal en paralelo a reclamar dinero a la empresa.

Fondo y Forma

• La forma importa. Al juez hay que explicarle tres cosas: a) lo que ha sucedido, b) porqué eso vulnera la ley y c) lo que se pide en compensación a la parte contraria. Una demanda bien redactada debe explicar de forma meridianamente clara esos tres puntos. Si no están cristalinamente explicados entonces el juez posiblemente no se complicará la vida intentando aclarar nada pues tiene que dictar unas mil (1.000) sentencias al año y no le da tiempo de andar investigando los casos uno por uno.

• La justicia opera con una lógica propia, que, en general, es diferente del sentido común. Sólo porque a ti algo te parezca de sentido común eso no implica que un juez te vaya a dar la razón. Por ejemplo, hace años oí a Ricardo Galli explicar que habían perdido una querella por daños mediante un ataque a uno de sus servidores porque el juez consideró que no se habían producido daños físicos en la máquina.

• Debes aprender tanto los fundamentos de derecho como la práctica procesal. Necesitarás al menos un abogado y un procurador. El abogado se encarga de redactar en el lenguaje jeroglífico de la justicia lo que quieres decir, el procurador es el que muevo los hilos en el juzgado. Infórmate. Conocer las triquiñuelas de la práctica procesal es tan útil, si no más que conocer los fundamentos de derecho en sí mismos.

• Para cobrar facturas lo mejor es que empieces poniendo un monitorio. Se trata de un procedimiento abreviado en el cual si la otra parte no se opone obtienes directamente una sentencia ejecutiva. Si la otra parte se opone entonces se inicia un procedimiento ordinario.

Costes

• La justicia civil y mercantil no es gratuita. Te costará entre un 5% y un 20% de la cantidad demandada. Incluso si ganas pero la otra parte es insolvente tendrás que pagar tú las tasas y costas. Y si pierdes es posible que tengas que hacer cargo de tus costas y las del contrario. Por ejemplo, si demandas a alguien reclamándole 500.000€ te puedes gastar unos 20.000€ en costas propias más otros 20.000€ que te reclame la parte contraria si pierdes. Los abogados viven de cobrar costas a sus clientes. Existe un conocido chiste que dice que una vez hacía un día tan frio en Nueva York que hasta los abogados llevaban sus manos en los bolsillos.

Responsabilidad de los administradores societarios

• En teoría las sociedades de responsabilidad limitada te protegen de pagar tú mismo por daños causados por la empresa. De unos años a esta parte los jueces han dictado sentencias que saltaban la limitación de responsabilidad y a los administradores les ha entrado la fiebre de hacerse seguros adicionales de responsabilidad civil. Mi opinión es que esto ha sido una campaña orquestada por las propias aseguradoras difundiendo casos en los que los administradores habían utilizado a las empresas como pantallas para sus propios fines ilegales y, por consiguiente, el juez determinó que la empresa y el administrador eran en la práctica, la misma persona y, por consiguiente, solidariamente responsables de los daños. Existen sólo dos situaciones en las cuales la limitación de responsabilidad puede dejar de aplicarse: el dolo y la culpa. Que quieren decir que si hiciste algo malo premeditadamente a sabiendas de que causaría daño u omitiste negligentemente las medidas necesarias para evitar el daño entonces eres responsable subsidiario de ellos.

• Las empresas son responsables en primer lugar ante sus clientes de los daños que pudieren ocasionarles. Si un empleado causa daños negligentemente o comete un delito entonces la empresa empleadora podrá proceder contra él pero el cliente podrá proceder contra la empresa empleadora, contra el empleado o contra los dos.

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Emprendizaje | Deja un comentario

Dragon Dreaming

Dragon DreamingCada país tiene su propia obsesión temática en la cinematografía. Para los americanos es el héroe salvador, para los ingleses es que todo el mundo ha sido destruido excepto ellos, a los franceses les van los dramas nihilistas y en España pues cualquier cosa que vaya de homosexuales, parias o de la guerra civil.

Análogamente las empresas tienen sus fijaciones temáticas y, como la vida consiste en el conjunto de historias que nos contamos a nosotros mismos, la empresa acaba siendo lo que las historias recurrentes de sus empleados hacen de ella.

Creo que en España existe un problema de autoestima social. Desde el fiasco de La Invencible en 1588 hemos ido de desastre en desastre, de un gobierno corrupto a otro y del cielo a los infiernos en el deporte hasta que al final la gente yo no cree que pueda mantener sus propios logros. Este problema de baja autoestima social se traslada a la dinámica de trabajo, no siempre con malos resultados, a fin de cuentas para algunos empresarios los empleados perfectos son aquellos que tienen alta la moral y baja la autoestima, porque trabajan mucho y creen que se merecen poco. Según los estudios, parece ser que las mujeres son un grupo especialmente vulnerable a los problemas de baja autoestima. Algunos afirman que es debido a que de pequeñas nos escuchan decir frases tipo “corres como una niña” o “pegas como una niña” y eso lo interiorizan sin darse cuenta hasta que creen que son inferiores a sus homólogos masculinos. Algunas mujeres son capaces de logros prodigiosos en el empeño de demostrar que no son tan inferiores como ellas mismas se sienten, aunque a un alto coste personal.

Pero la baja autoestima no es para nada un problema exclusivo de la mujer. Mucha gente sufre baja autoestima. Se puede comprobar que es así porque el trabajo que hacen es una mierda y nadie que se quisiese a sí mismo ni tan siquiera un poco haría algo tan malo.

Las tendencias de gestión de recursos humanos no ayudan mucho con respecto al problema de la autoestima porque actualmente están centradas en la gestión del talento.

Si se combina el problema de la autoestima con la mala opinión bastante extendida sobre el jefe Minglanillas, el cóctel está servido para que ni la mejor metodología de gestión de proyectos pueda arreglar el entuerto.

Y para colmar el vaso, Agile ha convertido a los programadores en máquinas de hacer sprints. Van de una semana para otra y de una quincena para otra haciendo lo que dice el backlog hasta que llega un momento en el que pierden el norte. En ese instante todo el mundo está haciendo o gestionando algo y nadie sabe realmente hacia dónde va el barco.

¿Qué se puede hacer pues al respecto?

La inspiración la obtuve de la una metodología denominada Dragon Dreaming que le escuché por primera vez a Ángel María. A continuación voy a hacer una adaptación bastante libre de la metodología original.

Dragon Dreaming se basa en tres principios:

1. Haz algo que te haga crecer como persona.
2. Haz algo que fortalezca la comunidad en la que vives.
3. Contribuye a la sostenibilidad de la Tierra.

Dragon Dreaming nació en la Fundación Gaia y tiene un sesgo medioambiental. A los programadores las empresas les suelen ofrecer a modo de “crecimiento personal” que podrán trabajar en proyectos greenfield (lo cual significa que podrán escribir su propio código en lugar de leer y mantener el código de otros) y que podrán trabajar con las últimas tecnologías. Supongo que es porque todavía hay muchos programadores lo bastante tontos como para creer que esas dos cosas tienen algo que ver con el crecimiento personal.

¿Qué es el crecimiento personal?

El crecimiento personal consiste en descubrir cosas acerca de ti mismo que no sabías. En EO lo explican de una forma muy gráfica con la Ventana de Johari. Según esta técnica, cada uno de nosotros posee cuatro facetas:

• Lo que sabemos de nosotros mismos y mostramos al mundo (zona abierta).
• Lo que sabemos de nosotros mismos pero no mostramos al mundo (zona oculta).
• Lo que lo demás ven en nosotros pero nosotros no vemos en nosotros mismos (zona ciega).
• Lo que los demás no saben y nosotros tampoco sabemos (zona desconocida).

El potencial humano se desarrolla entonces cuando, con la ayuda de otros, reducimos nuestra zona ciega y exploramos la zona desconocida.

¿Por qué hay que contribuir a la comunidad?

Básicamente por dos razones: 1ª) porque para sobrevivir en estos tiempos atribulados debemos formar comunidades resilientes, y 2ª) porque te leas el libro que te leas de cualquier religión o filosofía descubrirás que la fórmula para la felicidad a la que llegaron todos los eruditos uno tras otro a lo largo de milenios es que tienes que hacer siempre por otras personas más de lo que harías por ti mismo.

¿Cómo se puede aplicar esto a la empresa?

1. Permite y fomenta que cada empleado persiga un sueño.

2. Como corolario de lo anterior, deshazte de los empleados que han dejado de soñar, no hace falta que mantengas la misma plantilla anquilosada toda la vida.

3. Fomenta el conocimiento abierto. Premia a los que compartan y castiga a los gerentes que mercadeen con la información.

3. Ayuda a los empleados a que tengan un buen concepto de ellos mismos. Las personas que tienen alta autoestima no son envidiosas y no tienen miedo de lo que puedan hacer los demás.

5. Cuida tu vaca lechera. Demasiados presidentes viven en una torre de marfil, persiguiendo cometas, mientras su empresa es una vaca enferma. Como presidente, debes pensar en el largo plazo, pero si no sobrevives al presente hasta llegar al futuro de poco te van a servir todas tus ideas grandilocuentes.

6. Dá ejemplo desde la trinchera. Déjate de discursos estratégicos como si fueses un magistral ajedrecista y remángate. Mientras tu hablas de conquistar el Viejo Continente tu tropa está de barro hasta las rodillas respirando gas mostaza a diario.

7. Convierte a cada empleado en un vendedor convencido de vuestro producto y vuestra empresa. Las inside sales pueden ser la única cosa que te salve el cuello en un momento dado.

8. No mates a los mensajeros. Los cuervos pueden traer malas noticias, pero si no te enteras de ellas a tiempo será aún peor.

9. Celebra los éxitos. Los de la empresa y los de los empleados como personas. Haz que las personas aspiren a ser ellas las protagonistas de la próxima celebración.

10. Incorpora el aprendizaje a un ciclo de mejora continua. Convierte a cada empleado sobresaliente en un coach de los demás.

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Emprendizaje, Organizando la Comunidad. Modelos de Desarrollo | Deja un comentario

Microservicios

Una de las tendencias de diseño de las que se ha puesto de moda hablar recientemente son los microservicios. Para el que lo quiera entender de un plumazo, los microservicios son lo mismo que Service Oriented Architecture (SOA) pero cambiando los componentes Java Enterprise Edition (JEE) y los Enterprise Software Bus (ESB) por llamadas HTTP entre componentes escritos (posiblemente) en diferentes lenguajes y ejecutándose en diferentes máquinas.

Motivación para los microservicios

La motivación de negocio para los microservicios es que el patrón Modelo-Vista-Controlador (MVC) es insuficiente para dotar de las funcionalidades requeridas a una aplicación corporativa.

Ejemplos

Se puede desarrollar rápidamente una tienda online con tres capas: páginas web, back-end y base de datos, básicamente conectadas como una aplicación monolítica. Pero se necesitará, entre otras muchas cosas, comunicarse con los proveedores y transportistas. Una posibilidad es intercambiar ficheros de un lado para otro mediante FTP de toda la vida, lo cual sigue siendo muy válido para el intercambio de lotes, pero también habrá servicios de información y notificación en tiempo real que requerirán enlaces entre los servicios web de la tienda y los servicios web de los proveedores.

Otro ejemplo son las aplicaciones empresariales. Las empresas compran el ERP, el CRM y otros productos. Luego descubren que tienen que montar algún tipo de BPM porque los servicios que perciben los usuarios no se pueden prestar sólo con el software que maneja uno de los departamentos.

Arquitectura

Existe una teoría atribuida a Melvyn Conway en 1967 y ampliamente comprobada que afirma que el sistema que producirá una organización es isomorfo a la estructura de comunicación de las personas que lo desarrollaron. En las aplicaciones web y cliente servidor suele haber tres equipos: el de interfaz de usuario, el de middleware y el de bases de datos. Se dividen así por una cuestión de reparto de las competencias profesionales, pero desde el punto de vista del desarrollo de las funcionalidades que ve el usuario no existe ninguna razón por la cual haya que tener ingenieros de front, de back y y administradores de base de datos.

La arquitectura basada en microservicios propone que tanto el interfaz como las aplicaciones de usuario sean clientes de una colección de servicios que operan cada uno sobre un dominio.

Tomcat vs. Microservices

Un gateway para los microservicios es necesario porque una página puede necesitar decenas de ellos y sería ineficiente realizar una llamada HTTP a cada microservicio desde el navegador. Además, el gateway puede lanzar en paralelo las peticiones a cada microservicio en lugar de ejecutar una única subrutina para obtener todos los datos necesarios para pintar una página web. Netflix utiliza este tipo de arquitectura basándose en RxJava (la presentación de Ben Christensen Functional Reactive Programminging the Netflix API contiene más detalles sobre esto).

Escalabilidad

Lo microservicios proponen escalar las aplicaciones mediante una especie de sharding de código y datos. Como dividir una aplicación en servcios no es una tarea para nada trivial.

Arquitectura Monolítica vs. Microservicios

Limitaciones

Los microservicios también tienen sus desventajas, y crean un conjunto nuevo de problemas, empezando por el despliegue. Úna aplicación monolítica se instala con un programa especializado o se despliegua como un archivo WAR en un contenedor de servlets. Pero los microservicios pueden estar distribuidos en diferentes servidores y estar escritos en diferentes lenguajes. El uso de herramientas de generación de máquinas virtuales como Vagrant y de despliegue continuo como Jenkins es una necesidad imperiosa en las arquitecturas microservicios.

Los microservicios tampoco solucionan el problema del versionado. Lo que proponen es hacer resilientes los clientes a fallos en los microservicios proveedores, lo cual es más fácil de decir que de hacer.

Pero quizá el problema más grave es el mantenimiento de la consistencia de datos replicados entre los dominios de diferentes servicios. En la mayoría de las arquitecturas basadas en microservicios los datos son sólo eventualmente consistentes, lo que significa que es posible que dos clientes que se ejecutan en paralelo reciban resultados diferentes. El mayor error de diseño que yo he encontrado hasta ahora en las aplicaciones basadas en servicios es montar la replicación de forma explícita y carecer de un buen mecanismo de consolidación de datos. Conviene recordar que evitar la redundancia y la inconsistencia de datos fueron las dos razones principales para diseñar en un principio aplicaciones monolíticas transaccionales.

Migración

Pero ¿qué hacer si ya se tiene una aplicación monolítica que se está quedando pequeña y se desea incorporar microservicios? Bien, yo no recomendaría en absoluto tirar a la basura la aplicación monolítica sino crear “código pegamento” para hacer que los servicios utilicen funcionalidades del monolito.

Otra cuestión de debate es cuándo debería una arquitectura basada en microservicios incorporarse al desarrollo. Algunos argüyen que es mejor que una start-up empiece con una aplicación MVC monolítica convencional para lanzar el mínimo producto viable lo antes posible y no demorarse en la construcción de una arquitectura de servicios distribuidos al principio. Yo, personalmente, creo que es un error sacar a producción una aplicación cuya arquitectura se sabe desde el principio que es inadecuada a los objetivos de negocio de la empresa. Además una arquitectura basada en microservicios no es intrínsecamente más costosa de desarrollar que un monolito, sólo requiere un conjunto de competencias diferente que algunos desarrolladores no tienen.

Más información:
Migrating to Microservices (Adrian Cockcroft)

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Tecnologías Emergentes, Tecnologías Libres | 1 comentario

El secuestro de la atención

Algunos afirman que vivimos en una economía de la atención. Aquel que es capaz de atraer y mantener la atención de la población es quien hace prevalecer sus intereses. Por ello, cualquier medio para manipular la atención de la gente es, potencialmente, una arma económica y bélica.

Los medios de comunicación adquirieron ese nombre porque se suponía que eran tan solo una forma de transportar y difundir la información. Pero eso ya no es así. Ahora el medio es la conversación.

La polémica reciente empezó el 9 de julio cuando EPIC envió una queja formal a la FTC urgiéndola a investigar un presunto experimento social llevado a cabo por Facebook en 2012 sobre 689.003 usuarios de habla inglesa, que consistía en alterar los contenidos de sus feeds y medir sus respuestas emocionales a los cambios.

Según un investigador de Facebook, la misión del estudio era determinar si leer contenidos positivos de los amigos nos hace darnos cuenta de la miserable vida que llevamos y abandonar Facebook. También se pretendía averiguar si leer demasiados comentarios negativos inducía no visitar Facebook para evitar amargarse el día.

El caso a mi me parece relevante por tres motivos:

1º) Descubrimos que Facebook pretende vendernos el mantenimiento de un estado emocional. Hasta tal punto que no puedes criticar o ser criticado debido a la ausencia notoria de la opción “No me gusta”.

2º) El medio ya no es sólamente un instrumento de transporte, sino que modifica las conversaciones con una censura mucho más sutil e imperceptible que cualquier otra existente previamente, la información que recibimos está filtrada para hacernos sentir bien, y que sigamos leyéndola.

3º) Nos comunicamos con nuestros amigos a través de un medio que sabemos que está censurado. Publicamos lo agradable, lo políticamente correcto. Quizá porque creemos que todo el mundo hace eso y que les molestaría que nosotros fuésemos brutalmente sinceros. Pero podría ser que la sinceridad haya sido secuestrada por motivos de audiencia. Que todas esas actualizaciones de estado donde nuestros amigos confiesan que se sienten mal y necesitan ayuda o, contrariamente, que han obtenido un gran logro, hayan sido eliminadas de los feeds para que sigamos infoxicándonos con contenidos banales a modo de morfina emocional. Un caso particular que me intriga es qué hacen los filtros de Facebook con las actualizaciones de cónyuges y familiares de primer grado, porque, en base mis propios experimentos, estoy convencido de que hacen algo.

La práctica de adaptar los contenidos a la audiencia no es exclusiva de Facebook, desde luego. Los periódicos llevan haciéndolo desde que surgieron. El sesgo informativo que tienen muchos periódicos no se debe tanto a estar bajo el control de poderes políticos y económicos como a que su audiencia no puede soportar determinados mensajes. El periódico que no es prisionero de sus propietarios o anunciantes es prisionero de los prejuicios de su propia audiencia. Y lo mismo ocurre incluso en un blog. Algunos posts te hacen aumentar tu audiencia, otros te hacen perderla. Si quieres maximizar la audiencia debes autocensurar algunos mensajes en favor de otros que repites machaconamente.

Post relacionados:
Lo que se comparte es diferente de lo que se lee
Facebook quiere ayudar a los usuarios a “quitarse la máscara”
Leerse la política de privacidad antes de darse de alta

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Usos sociales de la tecnología | Deja un comentario

Saṃsāra corporativo y stress del emprendedor

SamsaraUna empresa está permanentemente expuesta a amenazas letales. Sin importar su tamaño ni sus años de vida cualquier compañía puede desaparecer en un soplo de tiempo. Este post trata sobre las fases de vida que atraviesa una empresa, los mayores peligros a los que se enfrenta en cada una de ellas y el stress que sufren los emprendedores y directivos en el empeño por reducir el riesgo y mantener el control.

Una de las verdades esenciales que un directivo competente debe conocer y aceptar es que nada está bajo control. Conozco muchos emprendedores que presumen de ser “freaks del control”. Se venden a si mismos como reductores de riesgo natos que trabajan tomando una situación de partida con grandes incertidumbres y convirtiéndola en otra situación controlada y predecible. Es cierto que los buenos emprendedores reducen la incertidumbre, pero la sensación de control es totalmente ilusoria. El único emprendedor que cree tenerlo todo bajo control es aquel quien es lo bastante inexperto como para no haberse dado nunca una buena ostia incluso con todos los elementos teóricamente a su favor. Los que presumen de tenerlo todo controlado es simplemente porque son unos megalómanos egocéntricos a quienes les gusta sentirse imprescindibles y ser el centro de atención.

Cuando Bill Gates cedió su puesto a Steve Balmer al frente de Microsoft declaró que había vivido todos y cada uno de sus años en Microsoft como si fueran a ser el último de la empresa, debido a las constantes amenazas. De OS/2 a DOS, de Lotus y WordPerfect a Excel y Word, de Netscape a Explorer, de Real Media a Windows Media, etc. El gran mérito de Gates (nunca replicado por su sucesor) fue derrotar uno tras otro a sus competidores en singulares batallas.

Steve Jobs perdió Apple tras haber llegado a la cima con el ella, la compañía probablemente hubiera quebrado de no haber sido rescatada por Microsoft. Luego Jobs fracasó con NeXT y sólo después de mucho cabildeo por los consejos de administración consigió recuperar el poder que le permitió relanzar Apple en base a los exitoso productos que todos conocemos: iPod, iPhone, iPad y Macbook.

El riesgo y el descontrol pueden presentarse por muchos frentes cada uno de los cuales es más o menos peligroso en función de la etapa en la que se encuentre la empresa.

Etapa 0: Mínimo Producto Viable (MPV)

El primer reto al que se enfrenta una start-up recien nacida es simplemente conseguir hacer algo (lo que sea). En esta fase la misión del cabecilla es conseguir que el grupo se centre en hacer algo además de simplemente discutir sobre lo que habría que hacer.

Etapa 1: Caja

Una vez que se ha identificado un mercado y creado un MPV para el mismo, lo siguiente que necesita una empresa es liquidez. La liquidez puede provenir de los clientes o de los inversores. Si es de los clientes muchísimo mejor. El foco del líder en esta etapa debe ser mantener un nivel de caja suficiente como para pagar a todos los miembros del grupo, pivotar en el desarrollo de funcionalidades e invertir en marketing y ventas. Durante esta etapa el líder debe estar enfocado en vender.

Etapa 2: Repetibilidad

Las empresas obtienen sus primeros clientes de dos formas, bien porque alguno de los fundadores tenía un contacto privilegiado, bien con mucho esfuerzo. El primer producto, asimismo, se completa gracias al esfuerzo heróico de uno o dos desarrolladores. Una vez que la empresa ha conseguido sus primero clientes empieza a estar lista para pasar del capital semilla a una serie A de inversión. En este punto la misión crítica consiste en coger los procedimientos artesanales que se utilizaron para ganar los primeros clientes y convertirlos en procesos sistemáticos y repetibles. Esto se aplica tanto a la venta como a la producción. Vender cliente a cliente es muy duro y costoso, ergo donde al principio había fuerza de ventas ahora debe haber canal de ventas. El canal requiere que se le dote de medios que la fuerza interna de venta podía obtener debido a su estrecho contacto con el equipo de producción. Y con respecto a la producción, el conocimiento que fluía boca a boca de un desarrollador a otro debe convertirse en manuales operativos y documentación técnica.

Etapa 3: Escalabilidad

Cuando una empresa dispone de mejores prácticas está lista para optar a una serie B. Esta es la fase en la que el inversor espera que si la compañía logró X con 20 empleados entonces logre al menos 100X con 2.000 empleados a base de aplicar sistemáticamente los procedimientos repetibles creados en la Etapa 2. Durante esta fase el foco del director general debe ser el reclutamiento. Es durante esta etapa cuando llegan los paracaidistas a la empresa y empieza a fraguarse la departamentitis. Cualquier nuevo empleado que no se adhiera estrictamente a la cultura corporativa debe ser inmediatamente purgado pues las empresas tienen a atraer clones de los trabajadores que ya están en plantilla y, por consiguiente, una persona tóxica contratará y adoctrinará a más personas tóxicas. Siempre hay que dedicar la mayor cantidad de tiempo posible a la gestión de recursos humanos en una empresa. Pero durante la fase de escalabilidad es más importante que nunca mantener un elevado ratio de aciertos en las contrataciones.

Etapa 4: Descentralización

Cuando la empresa crece lo suficiente deja de ser una única entidad y se convierte en un grupo de empresas, cada una con un director regional y su propia estructura interna. Durante esta etapa es clave mantener el control sobre los virreyes y definir una gestión financiera coherente entre la matriz y las filiales. En esta fase el consejero delegado debe estar centrado en cómo se invierte el dinero en cada filial y en qué resultados de explotación está generando cada inversión.

Etapa 5: Desacoplamiento

Si la empresa sigue creciendo llega un momento en el cual el núcleo central ya no puede gestionarse como una sola entidad sino que hay que empezar a dividirlo en partes interoperables. En este momento el rol del director general es inspirar a los directores ejecutivos y transmitirles la misión, visión y valores de la empresa. Y también vigilarles para que no se corrompan. El desacoplamiento también suele servir para que a los directores ejecutivos les resulte más difícil conspirar para dar un “golpe de estado”. Pero el efecto secundario inevitable de separarles es que la empresa se convierte en una departamentocracia. Los directivos están lo suficientemente divididos como para no poder organizar golpe de estado pero todavía forman un oligopolio de poder en el cual pueden hacer pactos para mantener su status quo en detrimento de los intereses generales de los stakeholders.

Etapa 6: Fortificación

Antes incluso de que se genere algún valor aparecen buitres que quieren apropiarse de dicho valor. Los buitres pueden tener importantes contactos políticos que manipulen las regulaciones de mercado para retrasar a la empresa y dar una oportunidad a un competidor. Puede que sean mucho más grandes que la start-up e intenten un aplastamiento por fuerza bruta. Puede que dominen un canal. O puede simplemente que empiecen a crecer los enanos en forma de copycats. Durante esta etapa lo esencial es el foco en las alianzas estratégicas para dominar los canales y crear un conjunto de incentivos coordinados a la compra. Un ejemplo es la venta de antivirus. Los antivirus se venden en dos canales B2B y B2C. En el canal B2C la clave consiste en distribuir versiones preinstaladas en los portátiles. Pero los fabricantes de portátiles le cobran al fabricante del antivirus por cada copia de evaluación preinstalada, y no poca cantidad. El contrato más barato con uno de los grandes fabricantes puede suponer decenas de millones de dólares para el fabricante del antivirus. Entonces la empresa del antivirus necesita por una parte inversión para poder asumir los costes de distribución y garantías por parte del fabricante de portátiles de que no preinstalará ningún otro antivirus competidor al menos durante cierto tiempo. Microsoft ha sobrevivido la última década gracias a su dominio del canal OEM. Si no preinstalaran Windows y Office en todos los portátiles ya habrían perdido su hegemonía en el mercado.

Etapa 7: Salida a Bolsa

He conocido personalmente a un puñado de personas que han sacado una empresa a bolsa. Todas ellas me han dicho que es una experiencia que preferirían no repetir. La salida a bolsa es un trabajo a tiempo completo durante meses para un presidente. En esta etapa todo es burocracia y papeleo legal hasta el infinito y más allá. El día que sale tú empresa (o lo que te quede de ella) a bolsa, deja de ser tuya, por cierto, y es prácticamente imposible que puedas volver a gobernarla nunca como antaño. No hay que sacar la empresa a bolsa hasta que no está bien fortificada, de lo contrario el presidente acaba trabajando sólo para mantener el precio de la acción. Algunas compañía salen a bolsa sólo porque están agotando todas sus otras fuentes posibles de financiación, esto normalmente termina en un desastre con acciones cotizando a 0€.

Etapa 8: Reconversión

Ningún producto sobrevive para siempre a las disrupciones que se producen en el mercado. El instante en el que una empresa conquista un mercado es cuando hay que empezar a reinvertar toda la compañía. En este punto la departamentocracia estará generando una fuerte resistencia al cambio. Entonces la misión del presidente es pensar en los grandes problemas que se pueden resolver a largo plazo, en vez de estar centrado en el corto plazo. Esto es más difícil de lo que parece porque una vez que la empresa ha salido a bolsa hay muchísimas personas preocupadas por el precio de las acciones que quieren que se tomen medidas para incrementar su valor a corto plazo. Pero se tardan 4 años en resolver un problema técnico de complejidad media y 20 años en resolver un problema complejo. Una vez que la empresa dispone de suficiente holgura de recursos el foco del presidente debe ser plantar semillas de innovación lejos de las garras de la departamentocracia y los accionistas.

Este largo periplo por las etapas de vida de una compañía lo he dado para poner de manifiesto otra de las verdades del emprendizaje: nunca disfrutarás de todas las etapas del camino. Es imposible que lo hagas porque cada etapa requiere un conjunto de competencias tan diferente a las otras que tendrías que ser una persona con trastorno de personalidad múltiple para sentirte cómodo en todas ellas.

El efecto psicológico sobre el emprendedor de los cambios de etapa

Hay tres opciones para cruzar cada etapa: 1ª) recorrer el Via Crucis camino del Calvario como Jesucristo, 2ª) dimitir del cargo de director general y cederle dicha responsabilidad a otro, y 3ª) buscar ayuda. En la vida es mucho más difícil saber cuando dejarlo estar que saber cuando empezar algo. Soltar las riendas nos cuesta mucho. Ninguno somos el directivo perfecto para todas las etapas, hasta Bill Gates soltó las riendas.

La sensación de estar permanentemente en el filo de la navaja produce stress incluso en las mentes más templadas. Aunque hayas tenido éxito en una etapa los retos que se plantean en la siguiente son completamente diferentes y obligan a la mente a operar de nuevo en terreno desventajoso.

Los mismos rasgos de personalidad que han ayudado al emprendedor a tener éxito pueden conducirle al desastre. Principalmente estos rasgos son:

Tendencias Paranoicas: Creo que todas las personas de éxito son al menos un poco paranoicas. El mundo empresarial es un lugar intrínsecamente peligroso donde los tiburones realmente acechan para comerse todos los beneficios que puedan. La paranoia con respecto a la competencia puede ser buena, pero fácilmente se traslada también hacia los empleados e incluso hacia la familia. Ciertamente hay empleados traidores más peligrosos desde dentro que cualquier competidor externo y no pocos cónyuges abandonan el barco cuando surgen complicaciones. Mas el trabajo en equipo requiere sinergias y confianza, las cuales son prácticamente imposibles de cristalizar si una mente excesivamente paranoica dirige todo el cotarro.

Tendencias Obsesivo-Compulsivas: La misma energía que lleva a los emprendedores a continuar donde otros abandonaron puede bloquearles en el camino al desastre. Se obsesionan con un problema negándose a ver que están haciendo los esfuerzos del modo equivocado. Para empeorar las cosas, la obsesión puede llevarles a comer mal, dormir poco y no hacer ejercicio, agravando

Tendencias Maníaco-Depresivas: No se puede cambiar el mundo sin una dosis contagiosa de optimismo e ilusión. Casi todos los emprendedores exitosos son, al menos, lo que el psicólogo John Gartner bautizó con el nombre de hipomanícos. El valle de esta montaña rusa son las etapas depresivas en las cuales el emprendedor puede negarse hasta a salir de casa o caer en el abandono y la desidia más absoluta ante la sensación de fracaso.

Tendencias Autistas: De las cuales la más común entre los emprendedores es el Asperger. Este síndrome les permite mantenerse emocionalmente distanciados de los empleados y utilizarlos como meros recursos humanos. La desconexión emocional es útil para tomar algunas decisiones difíciles pero también induce un profundo sentimiento de soledad en el sujeto.

Medidas para paliar el stress de los cambios de etapa

1. Pase lo que pase mantén las rutinas y la disciplina. Si no puedes soportar la idea de pensar en algo, entonces no pienses en ello, pero no te detengas, sigue adelante aunque no veas ninguna luz al final del tunel. Aunque vayas camino de quedarte irremediablemente sin caja, aunque tu cónyuge ya no te hable, aunque sientas vergüenza de ti mismo. No te pares. Deja de mirar a los objetivos como el burro que mira una zanahoria sin alcanzarla nunca y simplemente sigue caminando. Vete a hacer ejercicio aunque no sepas cómo vas a pagar el gimnasio. Vete de vacaciones con tu pareja aunque no sepas si a la vuelta tendreis casa. Vete a la oficina y sigue produciendo y vendiendo aunque no sepas si habrán cortado la luz cuando llegues por la mañana.

2. Limita tu exposición financiera. No intentes sacar a la empresa de un cenagal endeudándote tú en lugar de ella. Las sociedades de Responsabilidad Limitada tienen ese nombre por una buena razón, no te extralimites en tu responsabilidad. No avales a la empresa. Aléjate de los bancos y haz negocios siempre con el dinero de los demás, nunca con tu propio dinero.

3. No te obsesiones con las reuniones del consejo. Las reuniones del consejo de administración pueden ser una de las experiencias más frustrantes y aterradoras para un emprendedor. Prepáralas bien, mas recuerda que aún tienes una empresa que dirigir además de dar explicaciones a alguien que representa los intereses de un tercero que ni siquiera está en la reunión. A veces los inversores sólo pueden quejarse y amenazar. En estas situaciones, recuerda que con quien tiene la sartén por el mango no se negocia nada. Si la tienes tu, no pierdas el tiempo discutiendo. Si no la tienes, tampoco. Las ocasiones en las cuales realmente hay que negociar son muy raras.

4. No pierdas el contacto con las personas que te importan. De todas las cosas que puedes perder la que más lamentarás será haber perdido el amor de tus seres queridos. Del dinero y la gloria en el futuro ni te acordarás, porque el trabajo es como una pelota de goma, si se te cae al suelo rebota y la puedes recoger, pero las relaciones humanas son como una bola de cristal, si se te cae al suelo y la rompes lo vas a llevar muy crudo para recomponerla.

5. Créate una red de coaching. Rodéate de personas que te comprendan y puedan asesorarte. Yo encontré esa red en EO Network, otros contratan asesores y psicólogos, o son lo bastante afortunados como para tener amigos lo bastante sabios como para ayudarles. No te quedes sólo.

6. Trabaja sistemáticamente con los sentimientos que te bloquean. Estos son el miedo, la vergüenza, la culpa, la envidia y el apego. Tu mente tratará de rendirse cien veces antes de que realmente llegues a tu límite, no le permitas hacerlo.

7. No violes la ley. Pase lo que pase, no hagas nada ilegal. Alguna audacia estratégica o jugarreta sucia a la competencia es aceptable. Pero si le vendes tu alma al Diablo vendrá a cobrársela y, sea lo que sea que intentas evitar, a la postre será mucho peor cuando el peso de la ley te caiga encima.

Stress post-traumático

Como cualquier situación stressante, demasiadas etapas al frente de una empresa pueden dejar secuelas. La principal es el miedo a atravesar otra vez el desierto. Quien era un aguerrido conquistador se torna en un paralizado cobardica. Tras cada etapa hay que desacelerarse e iniciar un proceso de sanación, a menos que lo que se pretenda sea conquistar el mundo y a renglón seguido morir a los 33 como Alejandro Magno.

Conclusión

Tu sensación de ansiedad por el futuro incierto de tu empresa nunca desaparecerá. En el mismo momento en que te zafes de un peligro aparecerá otro aún mayor y seguirás sufriendo. Lo único que puedes hacer es mantener el foco en las actividades correctas en cada etapa, pero esto no te garantiza nada. Las empresas se crean para ganar dinero y, por consiguiente, a partir de determinado tamaño, no entienden nada sobre tus aspiraciones personales. Las cuales deberían ser únicamente ceñirte a tus principios, trabajar con ánimo y diligencia, actuar con sagacidad y confiar en dónde te llevará el destino.

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Emprendizaje | 2 comentarios

El mejor consejo laboral que recibirás actualmente

Se lo debo a mi hermano y puede resumirse de una forma muy sencilla: trabaja sólo para quien tenga dinero.

Intuitivamente, podría parecer que alguien que no sepa cómo va a pagar no contratará a otras personas para que hagan algún trabajo, pero de hecho no es así. Lo voy a empezar ilustrando con una historia.

En 1723, tras una bronca por publicar exitosas cartas al director con el pseudónimo de la viuda Silence Dogood en el periódico The New-England Courant propiedad de su hermano mayor, Benjamin Franklin se había mudado desde Boston a Filadelfia. El gobernador de Pensilvania, William Keith, quería convertir Filadelfia en un centro cultural, y por tal motivo le parecían insuficientes los dos periódicos locales que existían en la época. Habiendo oído sobre el talento de Franklin le llamó y le urgió a que montase su propia imprenta, prometiéndole toda la inversión que necesitase para ello. Las máquinas había que traerlas de Londres y por ello Keith le sugirió a Franklin que lo mejor sería que fuese él mismo a Gran Bretaña a supervisar la compra. El gobernador le dijo a Franklin que se comprase un billete trasatlántico (pagado de su propio bolsillo) y que una carta de crédito le estaría esperando en Londres. Cuando llegó, Franklin no pudo encontrar ninguna carta de crédito del gobernador. Después de muchos cabildeos consiguió dar con un comerciante que le abrió los ojos. El gobernador Keith era un notable fanfarrón a quien le gustaba impresionar a la gente con promesas que luego incumplía. Afortunadamente para Franklin por aquel entonces en Londres prosperaban múltiples editoriales, profesión que a Franklin se le daba especialmente bien, por lo que no tardó en encontrar un empleo con el cual, tras un año y medio ahorrando, consiguió comprar un billete para regresar a América.

La primera moraleja de la historia anterior es que si tienes talento no lo desperdicies trabajando para quien no sabe apreciarlo. Similarmente a cómo Benjamin Franklin tuvo que inventarse a la viuda Dogood porque su hermano no le permitía publicar con su propio nombre, yo he pasado muchos años prácticamente mendigando que me comprasen proyectos personas que ni los apreciaban ni podían pagarlos. En el mundo hay muchísimas empresas desesperadamente necesitadas de trabajadores cualificados, pero NO están cerca de tu casa. En retrospectiva, el error estratégico que más lamento como empresario (de los múltiples que he cometido) es vender en un mercado local ignorando la globalización. Una empresa ya no tiene clientes en España o en Francia o en Alemania o en EE.UU. Una empresa sólo tiene CLIENTES, a secas, sin importar su ubicación. Análogamente, el mercado de trabajo ya no es el portal de empleo de tu país, el trabajo perfecto para ti puede existir en cualquier otra parte.

Cómo reconocer a los empresarios suicidas

Si le hablas a alguien sobre cómo ganar cien euros normalmente ni te escucha. A la misma persona, si le le hablas de cómo ganar cien millones con frecuencia se le ponen los ojos como platos, aunque lo que le estés contando sea una supina estupidez. No pocos empresarios son ludópatas presas de este efecto psicológico de la lotería. Empiezan jugando de farol al poker y antes de darse cuenta tienen todo su dinero encima de la mesa con sólo una pareja de reinas en la manga. Entonces empiezan a pedir prestado para subir la apuesta, en la esperanza de que la otra parte se retire antes de que haya que mostrar las cartas. Nunca subestimes la capacidad de un loco ambicioso para acometer temeridades financieras inevitablemente suicidas.

Los empresarios embaucadores suelen ser muy visionarios y carismáticos, atraen a la gente con discursos grandilocuentes que, por desgracia, carecen de fundamento práctico sólido. No confíes en los discursos, fíjate en la cifras reales. Sobre todo fíjate en las cifras de ventas. Las ventas son la sangre de una empresa. Si tienes un órgano dañado pero recibes constantemente transfusiones entonces puedes vivir durante un tiempo, pero sin sangre todos los órganos dejan de funcionar muy rápidamente. Cualquier empresa que se financia con deuda en vez de con ventas es una bomba de relojería que no tardará en explotar.

Situaciones tipificables de elevado riesgo de impago

- Una empresa recibe una promesa de inversión, con la exectativa de recibir el dinero se pone a (sub)contratar gente. Posteriormente el inversor se echa para atrás y los empleados y proveedores no cobran. El acuerdo suele ser que el inversor indemniza sólo al empresario pero no se hace cargo de los trabajadores ni proveedores. En este caso el charlatán del discurso grandilocuente suele desaparecer con los bolsillos llenos dejando atrás a un montón de gente cabreada. Los inversores pueden incumplir sus promesas de inversión por varios motivos. En ocasiones las rondas están condicionadas a objetivos de ventas, si no hay suficientes ventas entonces no hay ronda de inversión. En otras ocasiones el inversor prometió un dinero que no tenía. Conozco un caso en el cual un inversor prometió 300.000€ porque esperaba ganar un jucio del cual cobraría un millón de indemnización, pero perdió el juicio y no sólo no cobró el millón sino que tuvo que hacer frente a las costas, dejó totalmente tirados a los emprendedores e incluso intentó cobrarles dividendos de una empresa en la que no había puesto ni un céntimo. En ocasiones es incluso el propio inversor quien trata de estrangular financieramente a la empresa invertida para luego comprarla a precio de saldo cuando esté a punto de quebrar por falta de liquidez pero manteniendo buenos activos.

- Una empresa sufre una brusca caída de ventas, la primera reacción ante una pérdida es la negación, como cuando hubo gente que negaba que hubiese muerto Elvis. En vez de reaccionar reduciendo costes rápidamente la empresa aumenta el gasto en un intento futil de recuperar las ventas. Tratan de añadir más funcionalidades al producto, invierten más en atención al cliente, o gastan más en marketing y publicidad. Si el origen de la caída es una disrupción o una crisis de mercado muy profunda entonces las ventas no se recuperan y la empresa es incapaz de pagar a los proveedores.

- Una empresa depende de una imperfección de mercado no sostenible. Esto fue lo que pasó en España con la energía solar. La rentabilidad de los huertos solares dependía de una ley que garantizaba un precio de compra de la energía por encima del precio de mercado. Pero una ley es la garantía más frágil que se puede tener, pues puede cambiar caprichosamente de un día para otro.

- Un directivo tiene una idea feliz, entonces movido por su ambición se pone a desarrollarla en plan intraemprendedor sin contar con el patrocinio adecuado de la alta dirección, o contando con el patrocinio del mismísimo presidente, a este le echan o muere y como consecuencia todos sus proyectos apadrinados son cancelados.

- Un listo decide montar un negocio con la intención de pagar costes sólo si tiene éxito. En este caso la intención desde el principio es trasladar el riesgo a los proveedores.

- Un intermediario decide apropiarse paulativamente de todo el valor que genera el proyecto. En economía gana dinero quien controla el recurso escaso. Lo más frecuente (aunque no siempre) es que el recurso escaso sean los clientes. El intermediario normalmente no añade mucho valor, simplemente está apalancado en determinados contactos o en una marca de presunto prestigio. Aunque inicialmente las condiciones sean buenas para todas las partes, cliente, intermediario y proveedor, el intermediario tiene tendencia a intentar cobrar cada vez más al cliente y pagar cada vez menos al proveedor. Además, en cuanto pueda, el intermediario cambiará de proveedor y no solo eso, encima le dejará al proveedor anterior el pufo más grande que pueda para así aumentar su margen comercial.

Qué hacer para garantizar en lo posible el cobro

La regla más importante es no incurrir en costes fijos para un proyecto de dudoso cobro, y actualmente TODOS los proyectos son de dudoso cobro. Aunque el contrato con el cliente, empleador o intermediario parezca garantizado, los “contratos marco” en general sólo comprometen al proveedor y son papel mojado a la hora de ofrecer ninguna garantía. Los costes fijos deben aumentar sólo en la medida en la que exista una alta probabilidad de cobrar facturas, nunca antes.

El proyecto debe ser para un cliente que: a) tenga un adecuado nivel de caja antes de empezar el proyecto y b) el mantenimiento del nivel de caja esté respaldado por ventas reales.

Es importante firmar los contratos y facturar desde el inicio. Supongamos que un proyecto dura un año y que los pagos son a 60 días. En tal caso hay que tener el contrato firmado antes empezar y facturar desde el primer mes. Nunca hay que esperar al final del contrato para facturarlo todo de golpe, o cobrar un porcentaje anticipado y el resto al final, hay que facturar los proyectos siempre mes a mes. La última factura nunca se cobra, y si resulta que es la más cuantiosa de todas menos todavía.

En algunas ocasiones es posible hacer un seguro de caución. Esto tiene un coste, y además para los proyectos de desarrollo de software puede ser complicado especificar las condiciones bajo las cuales la aseguradora pagará lo que el cliente no pueda pagar. Los seguros nunca cubren cubren el 100% de un proyecto, a lo sumo suelen cubrir el 80%.

Pide pagarés. Hace una década las empresas emitian muchos pagarés. Luego cambiaron a pagar por transferencia con la excusa de que les causaba menos trabajo burocrático y costes bancarios, pero también porque el pagaré tiene una fecha de vencimiento y la transferencia pueden emitirla (o no) cuando quieran.

Olvídate de las garantías legales, en España en la práctica no existen. Es necesario tener los contratos y la documentación en orden, pero un juicio mercantil puede demorarse en España dos años. Además, diga lo que diga cualquier sentencia judicial, es imposible cobrar a un insolvente porque después de obtener una sentencia favorable hay que poder ejecutarla.

Conclusión

Antes de aceptar un proyecto o un empleo debes evaluar el riesgo del cliente o empleador. Este riesgo depende principalmente del nivel de caja actual del pagador y de la probabilidad de que genere ventas para mantenerlo. No confies tu suerte a ningun factor que no sea un flujo de capital tangible y que puedas verificar.

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Mercado y Oportunidades de Negocio | 8 comentarios

Introducción a Domain Driven Design (DDD)

Hace poco andaba de visita en el centro de formación de la comunidad Skills Matter. En la pared había pegados varios carteles con el reclamo “Fast path to DDD”. La verdad es que me sorprende que no lo bautizaran D³, pero, al tema: DDD es el acrónimo de Domain Driven Design, una metodología relativamente nueva para el diseño de sistemas de información. Como en otros posts sobre programación, voy a intentar mantenerme alejado de los detalles técnicos. Ni siquiera voy explicar ordenadamente lo que es DDD, voy a compartir parte de mi experiencia que se intersecta con DDD en algunos puntos. A quien le interese una explicación formal el libro más popular es el de Eric Evans.

A mi juicio, la idea más útil de DDD es que es una mala idea construir un modelo de datos único que almacene todos los datos de la empresa. Se supone que la duplicidad de datos es mala. Entonces, tener el dato en un único sitio una sola vez será bueno ¿no? Pues resulta ser que no.

Empecemos razonando por analogía. Cuando se diseña una base de datos, al principio, se normaliza todo el modelo. Normalizar, para que nos entendamos fácilmente, consiste en que en lugar de repetir la provincia “Madrid” 500.000 veces a los largo y ancho de toda la base de datos, le asignamos un código, digamos 28, y creamos una tabla llamada “provincias” que asocia cada código numérico con una provincia. Cuando ya lo tenemos todo normalizado nos damos cuenta de que para imprimir cualquier dirección hay que leer al menos de dos tablas, la tabla “direcciones”, que sólo contiene el código de provincia (28) y la tabla “provincias” que asocia el código con el nombre de la provincia. Entonces pensamos que podría ser una buena idea desnormalizar el modelo y guardar el nombre de la provincia directamente en la tabla de direcciones (a fin de cuentas los nombres de las provincias no cambian tan frecuentemente) eso ocupará más espacio a cambio de reducir el número de lecturas necesarias para cada operación.

Para ver cómo se traslada el equivalente a la desnormalización en DDD pondré un ejemplo con CRM, no porque DDD sea específico de CRM para nada, sino solo porque es lo que mejor conozco. Todas las empresas quieren tener la información de un cliente en un único sitio. Se supone que el sistema debe servir para que la empresa mantenga una conversación consistente, fluida y constante con el cliente independientemente de los canales e interlocutores. Por ello tener la información del cliente dispersa en cincuenta sitios parece, a priori, algo muy poco deseable. Por consiguiente, a alguien se le ocurre diseñar un repositorio centralizado con toda la información de todos los clientes, y como consecuencia de esa decisión es prácticamente seguro que el CRM de la empresa fracasará. La razón es que un cliente tiene demasiadas facetas diferentes como para que se pueda incluir toda su información de forma práctica en un único modelo. Antes de haber comprado nada los clientes son prospectos. Puede haber muchísimos más prospectos que clientes en una base de datos, quizá un ratio de 100 a 1. El diseño ingenuo del sistema es poner un campo “tipo de cliente” que indica en la tabla si el registro es prospecto o es cliente, aunque también podría ser ex-cliente, o incluso haber fallecido. Esto obliga a los usuarios a filtrar todas sus consultas por tipo de cliente. En los informes pueden salir cosas muy raras. En un acercamiento DDD habría dos Contextos Acotados, el contexto de prospección comercial y el contexto de gestión de clientes reales con un procedimiento de conversión del prospecto en cliente. Esto permitirá a los comerciales introducir tanta información sobre los prospectos como necesiten sin perturbar al personal administrativo con detalles irrelevantes para la operativa diaria con gente que ya está comprando cosas regularmente. Cuando el diseño de un sistema falla en mantener la separación entre los Contextos Acotados se convierte en lo que Foote y Yoder describieron en 1999 como un Big Ball of Mud.

Los contextos acotados no tienen porqué modelizar sólo área funcionales, sino que pueden estar creados por razones puramente técnicas. El mejor ejemplo de ello son los datawarehouse donde se almacena la misma información que el contexto transaccional pero con una disposición de datos que es mucho mejor para elaborar informes.

Otra propuesta de DDD es entablar conversaciones con los usuarios para definir un Lenguaje Ubícuo. En el ejemplo anterior el usuario puede decir: “quiero convertir a un prospecto en cliente cuando se cierre una venta”. Esa petición así planteada es tan vaga que el programador no puede hacer nada práctico con ella. Pero es el punto de partida para definir con precisión lo que es un prospecto, lo que es un cliente y cuándo y cómo se convierte uno en el otro. DDD pone mucho énfasis en que los programadores aprendan e implementen el Lenguaje Ubícuo con las definiciones y terminología exactamante como las usa el cliente. Cada Contexto Acotado puede tener su propio Lenguaje Ubícuo, o, dicho de otra forma, la misma cosa (o muy parecida) se puede llamar de manera diferente en un contexto que en otro.

Los procesos cuyo flujo de trabajo requiera más de un contexto acotado deben implementarse como Servicios. Un peligro del patrón de diseño Modelo-Vista-Controlador (MVC) es que en sí mismo es insuficiente para dotar a un sistema grande de la arquitectura apropiada. El motivo es que aunque un controlador puede utilizar varios modelos con frecuencia existen procesos comunes a varios controladores. En nuestro ejemplo de CRM, puede que la conversión de prospecto en cliente la haga un usuario desde una aplicación web, pero también podría ser que la conversión se efectuase automáticamente tras recibir una señal de una web externa. Por consiguiente la conversión de prospecto en cliente debe ser un servicio invocable desde cualquier parte y no sólo desde la capa del controlador de la aplicación web. Los servicios, además sirven para colocar en ellos las Reglas Anticorrupción. El servicio garantiza la coherencia de datos y también desacopla el interfaz de alto nivel del SQL o de los mapeadores objeto-relacional (ORM).

Un servicio esencial cuando se tienen contextos acotados es el de comprobación de consistencia y consolidación de datos. No importa lo fiable que parezca el mecanismo de sincronización entre contexto, en algún momento siempre se produce un desajuste entre ellos, y, sin un servicio para restaurar la consistencia de datos la operación diaria del sistema se convierte en un verdadero infierno.

Si es posible mantener todos los contextos dentro de la misma base de datos a mi me gusta mantener la sincronización con disparadores (triggers) y procedimientos almacenados en el SGBDR. Antes se escribía mucho PL/SQL. Los programadores más jovenes tienen tendencia a escribir menos, porque es menos sexy que los modernos lenguajes de programación y el código no es portable entre distintas bases de datos, pero para mover datos de una tabla a otra lo más eficiente sigue siendo el código que se ejecuta 100% dentro del SGBDR sin generar tráfico de red.

No me voy a extender más sobre DDD, espero haber dado las pinceladas necesarias para ilustrar sin llegar a aburrir. El lector interesado puede empezar a encontrar recursos en DDD Community.

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Organizando la Comunidad. Modelos de Desarrollo | 1 comentario

Porqué el talento no importa en las empresas

Llevo ya cierto tiempo insertado cerca de la City londinense. Existe entre Liverpool St. y Tottenham Court Rd. una auténtica guerra por el talento, similar a las que se libran desde hace ya bastante tiempo en el Área de la Bahía. La creación de empleo en los sectores de software y finanzas está funcionando realmente bien en un pais que, por lo demás, tiene zonas que francamente laguidecen por falta de competitividad. La idea ha sido crear un cluster en pleno centro de Londres a la cual se sientan atraídos los mejores licenciados e ingenieros para reclutarlos como empleados estelares. Sin embargo, creo que muchas empresas se equivocan (parcialmente) en su estrategia de recursos humanos basada en la captación de talento y en este post voy a explicar porqué.

¿Cuántos superdotados hay realmente en el mundo?

La hipótesis de partida es que una persona sobresaliente no es sólo un poco mejor que la media, sino que es de cinco a hasta diez veces más productiva y, además, su producción es de mejor calidad y más innovadora que el resto. Aquí nos llevamos la primera en la frente: si un programador medio gana 200 al dia entonces uno excepcional debería ganar 1.000 ¿no? Pero casi ninguna empresa tiene, en principio, presupuesto para semejante nivel salarial. Y, aunque lo tuviera, generaría unas diferencias retributivas muy conflictivas en la plantilla, creando una élite bienpensante-bienpagada versus la masa proletaria de programadores buenos pero no excepcionales.

En segundo lugar, en cualquier mercado no sólo hay que evaluar cuántos clientes potenciales hay, sino cuántos competidores están entrando. Si todas las empresas compiten por atraer a los mismos ingenieros en el mismo lugar y al mismo tiempo, eso es fantástico para los trabajadores, pero no me queda claro que sea tan bueno para las empresas debido a lo difícil que se vuelve evitar que los mejores empleados se marchen a la competencia.

En tercer lugar, en una empresa no todo el mundo puede ser el capitán delantero-centro del equipo. Ya he escrito anteriormente acerca del problema con los superhéroes. Antes al contrario el mérito de un líder se mide por su capacidad para crear una gran empresa con gente mediocre, no por su capacidad en reclutar a gente brillante para que ellos solos levanten la empresa.

¿Es cualquier empresa el sitio idóneo para un superdotado?

Posiblemente, a estas alturas ya habré escandalizado a alguien, pero permítaseme poner tan solo un ejemplo. Napoléon Bonaparte, a mi juicio el más brillante militar de la historia, no tenía combatientes de calidad. Sus soldados eran tropa de leva inexperta como el tamborilero André Estienne. Napoléon se dio cuenta de que maniobrando contra los austríacos y prusianos en campo abierto perdería las batallas. De modo que inventó tácticas militares ingeniosas para vencer empleando unidades que no sabían muy bien lo que tenían que hacer. Con lo que sí era implacable Napoléon era con la habilidad de sus generales, a quienes exigía casi una suerte milagrosa en la consecución de objetivos. Esta historia me conduce a la siguiente conclusión: en una start up el talento de sus fundadores es clave, una empresa con cuatro trabajadores y apenas el mínimo de caja para subsistir no puede permitirse el lujo de tener a una persona ociosa; soldados sin general han ganado muchas batallas y generales sin soldados ninguna, pero, a medida que la empresa crece, el talento individual del personal operativo se vuelve menos relevante, y crece la importancia de que los mandos sepan explotar adecuadamente los recursos de que disponen, independientemente de la calidad de los mismos.

No pretendo sugerir que las competencias profesionales son totalmente irrelevantes. La inteligencia es la cosa mejor repartida en este planeta, todo el mundo cree tener, al parecer, la suficiente, pero algunas personas simplemente no son lo bastante inteligentes, o no están dispuestas a trabajar lo bastante duro, como para ser aptas para determinados empleos. Además, si una empresa contrata a alguien senior es razonable esperar que no necesite ninguna formación previa. Ya escribí en 2013 sobre cómo hacer entrevistas para seleccionar a los mejores candidatos. Mi argumento es que se otorga habitualmente demasiado peso a cuántos años de experiencia con qué tecnologías tiene el candidato, cuando en realidad esa es solo una de las múltiples variables que determinan cómo de importante será la contribución a la empresa.

Me gustaría adicionalmente comentar que soy abiertamente contrario a la corriente principal de la Inteligencia Emocional aplicada a las empresas debido a que, mal interpretada, ha propiciado la aparición de tribus de mandos intermedios expertos en permanecer en su sitio y mantener la boca cerrada asintiendo a todo lo que diga el jefe como medio para sobrevivir a cualquier tempestad, en una actitud que dista mucho de la del empleado perfecto.

Mi postura respecto de la Inteligencia Emocional es que hay que evitar a las personas que tienen tendencia a sentir complacencia, conservadurismo, dependencia, impaciencia o delirios de grandiosidad. Pero no necesariamente a aquellos que generan cierto grado de conflictos y tensión creativa porque pueden ser, precisamente, los únicos visionarios conscientes de la necesidad de acometer urgentemente cambios.

Entonces, si no es el talento ¿qué es lo que hay que buscar principalmente en un empleado o socio? La respuesta es que hay que buscar personas que sientan una genuina pasión por lo que hacen y cuya satisfacción personal provenga del logro privado antes que del reconocimiento público del mismo. Personas que deseen fervorosamente seguir practicando y experimentando para hacer cosas que nunca haya hecho nadie antes.

También es esencial buscar personas que tengan un mínimo de valores. Ya que cuando la cosa se pone fea (y puede llegar a ponerse muy fea) los valores morales son lo que determina la supervivencia (o no) de la empresa. Por desgracia, me parece que actualmente un programador puede ser un violador de menores y pasar perfectamente sin ningún problema cualquier entrevista de selección.

Los que trabajan por un aumento de sueldo o un ascenso no pertenecen a las categorías anteriores, por cierto. Como tampoco forman parte de ella las manzanas podridas, sobre las cuales voy a hacer una breve catalogación.

¿Cómo corrompe una manzana podrida todo el cesto?

El envidioso: El primer tipo de manzana podrida es el envidioso. Dice Osho que comparar es enfermedad, y el envidioso se pasa todo el tiempo comparándose. No todos los envidiosos son criticones, algunos parecen amables y aduladores, y sabotean el trabajo de los demás por razones que parecen perfectamente justificadas. Los envidiosos adolecen de profundas inseguridades personales. En la mayoría de las ocasiones lo más prudente es evitar su envidia no hablándoles ni mostrándoles nada que puedan desear.

El conformista: Es una persona que aparentemente da la bienvenida a la innovación pero que realmente está alineada con con un grupo de afines quienes prefieren que no cambie nada para que no se altere el status quo ni se produzca ninguna situación stressante.

El intolerante: Son aquellos que se aferran rígidamente a un procedimiento o una normativa y es imposible razonar con ellos la necesidad de hacer ningún cambio.

El vago: Al vago se le reconoce porque siempre quiere trabajar en equipo, así tiene cerca a algún pringado que le haga un trabajo cuyo mérito pueda atribuirse. El vago no solo es vago él mismo, sino que intenta que los demás tampoco hagan demasiadas cosas para no parecer lento, y siempre está buscando algún atajo chapucero para cumplir con la tarea que le hayan asignado. Lo mejor para defenderse de los vagos es ocultarles información, ya que tienen tendencia a robar cualquier idea que se les comenta.

El egoista: Prácticamente todas las personas se mueven en mayor o menor grado por el interés. Es difícil que los adultos acepten una una invitación a una fiesta, excepto si se enteran de que asistirá la selección olímpica de gimnasia en cuyo caso suele haber muchos interesados en socializarse. Lo que diferencia al egoista es que sólo está centrado en él mismo y no le importa lo que le pase a nadie más. Todos acaban siendo personas bastante amargadas y, como en los casos anteriores, lo mejor suele ser simplemente mantenerse a distancia de ellos.

El neurótico: La neurosis es algo muy amplio que se puede manifestar de muchas maneras. Están los que un dia te adoran y al siguiente te odian, porque tienen problemas de juicio. Los que se lo toman todo como algo personal. Los que sufren ataques emergentes de ira. O los que parecen dispuestos a ayudar incondicionalmente un dia y al siguiente te dejan tirado de la forma más traicionera e inesperada. En general son personas que tienen problemas para controlar sus emociones.

La militante: La militante es un tipo de manzana podrida predominate (aunque no exclusiva) en género femenino (de ahí el artículo femenino que le he puesto). Se trata de un tipo de persona que vive para hacer una demostración. Es algo así como si el grandullón de la empresa se dedicase a exhibir sus grandes bíceps todas las mañanas en la oficina. La militante aparentemente está orientada al logro pero en realidad su objetivo es obtener reconocimiento externo por lo que hace. A corto y medio plazo, la militante puede aportar mucho a una empresa, puesto que para conseguir el reconocimiento que busca también necesita obtener resultados reales. Pero a largo plazo tienden a ser inestables y a quebrarse, y, como no sienten verdadera pasión por su trabajo, sino que solo lo hacen por el reconocimiento, rara vez llegan realmente a alcanzar el nivel de máxima excelencia.

El pasivo-agresivo: Se trata de un tipo de persona que teme el enfrentamiento directo, mas en el fondo arde en deseos de darle una buena lección a los demás. El pasivo-agresivo siempre ataca con métodos indirectos, frecuentemente muy sutiles y peligrosos ya que de frente parece amigable y colaborador. Para detectarlos lo mejor es indagar en su pasado y nunca hay que entrar en sus dramas ni batallas ya que son expertos en manejar la dinámica y al final siempre se sale perdiendo contra ellos.

He dejado fuera intencionadamente al “trepa” porque considero que “trepa” es un calificativo genérico que se da a personas que se comportan con alguna podredumbre de las anteriores.

Conclusiones

Por diseño, las empresas no son sitios óptimos para los superdotados. Además, constituyen un recurso demasiado escaso por el que se compite ferozmente. La política de RR.HH. basada en “aquí sólo contratamos a los mejores” es ingenua, porque se trata de una “mejor práctica” y cualquier “mejor práctica” es equivalente a una “práctica común” que poco diferencia a una compañía de su competencia. Es mejor elegir a personas que tienen una pasión por desarrollar antes que aquellas que parecen una vedette cargada de medallas. Y es crucial fijarse en las zonas ciegas y ocultas. Aquellas que la persona no ve de si misma, y las otras que sí conoce pero que esconde al mundo. Inversamente a las cualidades de las “manzanas podridas”, hay que seleccionar personas que sean desinteresadas, trabajadoras, equilibradas, tolerantes e inconformistas. El mérito gerencial consiste en utilizar el ingenio para superar a la competencia empleado menos recursos y/o de menor calidad. Ser el mejor jefe no consiste en contratar únicamente superestrellas a golpe de talonario para demostrar lo bueno que se es delegándoles todo lo que haya que hacer.

Post relacionado: Los cinco atributos que Google evalúa en los candidatos a un trabajo (Bianka Hajdu)

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Organizando la Comunidad. Modelos de Desarrollo, Tecnología y Empleo | 6 comentarios

Tendencias en programación funcional

Tras décadas de uso comparativamente minoritario respecto de los lenguajes imperativos, de un tiempo a esta parte el estilo de programación funcional está ganando popularidad entre los programadores profesionales. A diferencia de en ocasiones anteriores, cuando se crearon lenguajes específicamente funcionales, esta vez la tendencia es a introducir la programación funcional en lenguajes tradicionalmente imperativos para facilitar la transición. Voy a intentar escribir un post lo menos técnico posible, aún así es un post sobre programación para cuyos interesados no técnicos debo pedir un poco de paciencia y curiosidad en su lectura. Los más conocedores de la materia pueden saltarse la introducción ¿Qué es la programación funcional? y pasar directamente a la parte de Nuevos usos y lenguajes.

¿Qué es la programación funcional?

La primera referencia importante al paradigma funcional se encuentra en la presentación que John Backus (la B en la Backus-Naur-Form y creador de Fortran) dio al recibir el premio Turing en 1977 titulada Can programming be liberated from the von Neumann style? brilantemente comentada por Dijkstra en A review of the 1977 Turing Award Lecture. Ambos artículos son largos y técnicos pero están redactados de manera se pueden entender bastante bien incluso sin ser programador y, en todo caso, deberían ser de lectura obligatoria para cualquier persona que aspire a tener formación académica en programación.

El primer ejemplo de Backus para explicar lo que es la programación funcional se encuentra en su especificación del producto escalar de dos vectores a y b de dimensión d.

c = 0
for i = 1 to d
    c = c + ai × bi

Las críticas de Backus a la forma anterior de calcular un producto escalar son:

1. En vez de lo que se quiere hacer, el algoritmo explica cómo hacerlo, ergo para entenderlo es necesario “ejecutarlo”.
2. Se trata de un bucle diseñado para una máquina de von Neumann que lee y escribe una palabra en cada ciclo entre la CPU y la memoria, creando un cuello de botella en dicho canal de comunicación.
3. Los lenguajes imperativos carecen de propiedades útiles para trabajar matemáticamente con ellos.
4. Existe una separación entre las sentencias del lenguaje (en azul) y lo que serían las librerías externas, creando dos mundos separados, el del nucleo del lenguaje por un lado y el de las funciones definidas por el programador por otro.

La especificación alternativa del mismo algoritmo que Backus propone para solucionar los problemas anteriores es:

def InnerProduct ≡ (Insert +) ∘ (ApplyToAll ×) ∘ Transpose

Si no has entendido nada de la línea anterior no te preocupes, ese es el primer problema de la programación funcional: que al tratarse de un intento de reducir la programación a matemáticas o estás previamente familiarizado con las matemáticas o es imposible enterarse de nada leyendo el código (el PDF con la charla de Backus enlazado más arriba explica esta definición de InnerProduct con detalle).

En un lenguaje moderno como Scala escribiríamos:

def InnerProduct(a:List[Double], b:List[Double]) = a zip b map Function.tupled(_ * _) sum

Lo cual es un poco más intuitvo que la notación original de Backus pero aún lejos del bucle iterativo explícito.

La objeción principal de Dijkstra a la propuesta de Backus es que, aunque se especifique el algoritmo funcionalmente, después de todo sigue corriendo en una máquina de von Neumann con lo cual en algún momento habrá que convertir las funciones en bucles cambiando el problema original simplemente por otro de escribir compiladores especializados en optimizar la ejecución de especificaciones funcionales. Este argumento es cierto sólo en parte. Si bien la implementación de lenguajes funcionales tiene que resolver algunos problemas en su adaptación al hardware de un computador por otra parte abre posibilidades de optimización basadas en programación concurrente y la evaluación perezosa de funciones. En el ejemplo anterior, no se puede paralelizar directamente el bucle imperativo porque cada paso depende del resultado del anterior, pero sí es posible pensar con facilidad en la manera de ejecutar en paralelo las funciones que multipican cada par de elementos del vector. Hoy en día se considera que una de las características esenciales para que un lenguaje sea fácilmente paralelizable es que los objetos que maneja sean inmutables, es decir, que el estado o valor del objeto no pueda ser modificado una vez establecido. Esto es debido a que si el estado de un objeto puede cambiar en cualquier momento entonces el compilador no puede hacer optimizaciones basadas en la certeza de que un objeto no va a cambiar inadvertidamente.

Para no perderse demasiado en detalles técnicos, lo esencial que distingue la programación funcional de la imperativa y la orientada a objeto es que en programación funcional las funciones pueden pasarse como parámetros a otras funciones. Además de valores (u objetos) las funciones pueden devolver otras funciones como resultado.

Mi opinión personal es que dotar a la programación de sólidos fundamentos matemáticos es bueno, pero no se puede reducir la programación a matemáticas. Prácticamente todos los ejemplos de progrmación funcional que se pueden encontrar versan sobre cálculos del estilo de determinar si un número es primo o hallar su factorial. Pero los programas reales presentan muchísimos más desafíos diferentes. Es como la relación entre la física cuántica teoríca y los aceleradores de hadrones. Es necesario empezar con algún modelo para las partículas, pero para verificar el modelo y elevarlo al grado de teoría se necesita construir un acelerador, y para construir el acelerador es preciso conocer muchísmas cosas que no tienen nada que ver con física de partículas tales como la forma práctica de mover ese electroimán de 5.000Kg desde aquí hasta hallá, cómo aislar los ordenadores de los campos magnéticos producidos por el imán, de dónde sacar la electricidad para hacerlo funcionar, etc. Al final se acaba volviendo al dilema que planteaba Backus: o bien usas un lenguaje mastodónticamente grande en su definición o bien empiezas con un lenguaje funcional muy pequeño y le añades un montón de librerías de servicio. A la postre la complejidad neta es la misma.

El primer lenguaje ampliamente utilizado para programación funcional fue Lisp, en las universidades frecuentemente se usa Haskell para enseñar programación funcional y comercialmente se utilizan técnicas de programación funcional en muchos lenguajes que pasaré a comentar a continuación.

Nuevos usos y lenguajes

Un buen sitio para empezar a experimentar técnicas de programación funcional es JavaScript o Python. Ambos son lenguajes interpretados multiparadigma con tipado dinámico que permiten pasar funciones como parámetro y ámbos son relativamente fáciles de aprender (al menos lo básico).

Probablemente el mayor empujón reciente a la programación funcional se lo ha dado Scala. La repercusión de Scala en la comunidad Java ha sido tan grande que la mayor novedad en Java 8 son características de programación funcional que siguen en todo lo posible la forma de hacer las cosas en Scala. Desde mi punto de vista, lo más potente ahora mismo para programación funcional es Scala por cuatro motivos:

1. Scala corre sobre la máquina virtual de Java (JVM). Es compilado, no interpretado. Puede reutilizar todas las librerías Java pre-existentes y sólo con un poquito más de dificultad, también se puede llamar a código Scala desde Java. Existe también una implementación de Python para JVM (Jython) pero el entorno natural de Python no es ese y personalmente no conozco a nadie que use Jython en producción.

2. Además de la programación funcional, Scala incluye una forma de herencia múltiple similar a la de C++

3. La librería Akka para programación concurrente con actores soporta muy bien Scala y es muy potente. Existen librerías para programación concurrente en Python, pero, que yo sepa, en muchos casos todavía hay que manejar los hilos a mano y hay que irse a Erlang para encontrar un modelo de computación distribuida que sea tan seguro de utilizar como Akka.

4. Los programas Scala son más cortos, elegantes y fácilmente mantenibles que sus homólogos Java. En muchos aspectos Scala se parece a Python aunque incluye una mayor cantidad de funcionalidades de serie.

Las principales pegas que yo le encuentro a Scala son que existen demasiadas formas diferentes de escribir lo mismo y que el sistema de tipos y herencia es posiblemente demasiado académico y complejo. Se nota que su creador Martin Odersky quería crear un lenguaje sintácticamente diferente de Java pero que fuese fácil de adoptar por los programadores Java. Y por ello existen dos estilos de Scala: “Scala Puro” y “Scala Java” y leyendo ambos dialectos a duras penas nadie diría que son el mismo lenguaje de programación. Por otra parte, la posibilidad de sobreescribir y sobrecargar los operadores, como se hacía en C++, y lindeces como los implicits, las curried functions o las monads permiten escribir programas que son completamente indescifrables a simple vista.

En un intento de dotar a Scala de una mayor versatilidad han aparecido frameworks de propósito específico, el más notable de todos Scala Play, que es a Scala lo mismo que Django es a Python y que a mi no me gusta exactamente por la misma razón: porque proporcionan una forma rápida de hacer aplicaciones web de una determinada manera (que no está mal) pero esa no es mi manera.

En competencia con Scala se encuentra Clojure, un dialecto de Lisp creado por Google. A mi Clojure me sabe demasiado a Lisp, y nunca me he apañado bien con los infinitos paréntesis anidados de Lisp. Las ventajas de Clojure son que algunos aspectos de programación concurrente están muy elegantemente resueltos y que puede correr tanto sobre JVM como sobre CLR o JS. Es decir, en principio se puede escribir un programa en Clojure y ejecutarlo sobre Java, sobre Microsoft .NET o sobre un navegador con JavaScript.

Para las aplicaciones de programación concurrente distribuida es posible plantearse el uso de Erlang. Erlang necesita su propia máquina virtual (BEAM) y sus propias librerías (OTP).

Se puede también hacer programación funcional en Ruby. Los métodos no se pueden pasar como parámetro en Ruby, pero existe otro elemento del lenguaje, el block, que es un trozo arbitrario de código que se puede pasar de un lado a otro.

Es posible encontrar, por supuesto, otros lenguajes como Scheme, OCaml o F# que no voy a tratar aqui.

En conclusión, la meta es crear programas más cortos, fáciles de entender y eficientes sobre hardware multinúcleo. Pero la programación funcional no hace magia. Es posible escribir código funcional dificilísimo de entender y que se ejecuta con una lentitud y consumo de recursos apabullante. Paralelizar todo no es siempre la solución ideal, de hecho, los artículos más recientes sobre escalabilidad insisten una y otra vez en que es mejor intentar reducir el número de hilos al mínimo para evitar el cambio de contexto que invalida los cache y, por consiguiente, genera el cuello de botella de Backus entre el procesador y la memoria.

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Publicado en Tecnologías Emergentes, Tecnologías Libres | 2 comentarios