Desarrollar productos software: ¿por qué hacemos lo que hacemos?

Hace un tiempo, en clase de inglés, tuve la oportunidad de ver una charla que Simon Sinek dio en el TED allá por 2009: “Cómo los grandes líderes inspiran la acción”. Dejando a un lado el título, ya que hoy no vamos a hablar exactamente de liderazgo, ni de inspiración, ni de acción, gracias a esta charla comprendí la evolución que profesionales y empresas que nos dedicamos a desarrollar software sufrimos (y en ocasiones algunos, en un alarde de masoquismo, hasta disfrutamos), en nuestro camino de mejora constante, tanto personal, como de lo que ofrecemos a los demás.

La evolución

Como ingeniería, el desarrollo de software es una disciplina reciente, y por tanto no sólo las herramientas y las tecnologías, sino también sus procesos han sufrido (y siguen sufriendo) una evolución realmente rápida e imparable. Para los que nos dedicamos a este negocio, esto se traduce en mucha adaptación, mucho aprendizaje, y mucha necesidad de previsión, de adelantarse a lo que la tecnología nos va a ofrecer a la vez que a las necesidades de nuestros clientes.

Si hablamos de cómo evolucionan las empresas en cuanto a su mera adaptación a esta reciente ingeniería, existen modelos de referencia como CMMI o Spice que nos indican el nivel de madurez de una organización que se dedica al desarrollo de software, lo cual además determinará la calidad del software que desarrolla. Pero tampoco nos estamos centrando en esto.

Para mí, la auténtica evolución se da cuando las empresas empiezan siendo el penúltimo eslabón de la subcontratación (eso que en el argot denominamos “cárnicas”, sin ninguna piedad), luego pasan a desarrollar proyectos llave en mano para los clientes que han ido adquiriendo, y finalmente, aprovechando toda la experiencia adquirida, son capaces de desarrollar productos, soluciones para las necesidades de ese mercado que han empezado a conocer en las fases anteriores.

Las preguntas que nos hacemos en el camino

Si has tenido la oportunidad ya de ver ya la charla de Simon Sinek con la que abrí el artículo, habrás visto que Sinek marca la evolución de las empresas en base a tres preguntas: qué hacemos, cómo lo hacemos, y finalmente por qué lo hacemos.

Vemos cómo la evolución que describí antes responde a estas tres preguntas, y como aquellos a los que nos gusta desarrollar productos sabemos por qué hacemos las cosas como las hacemos: por qué empezamos un proyecto, por qué centramos nuestro esfuerzo en una nueva funcionalidad, por qué continuamos sacando nuevas versiones que en ocasiones son un producto nuevo, y, ya que todo ciclo de vida tiene un fin, por qué debemos dejar ir a nuestro producto.

El reto de los desarrolladores

El ciclo de vida de un producto software es diferente al de un proyecto llave en mano:

La duración global del proyecto no está definida, y tampoco lo están más que un puñado de requisitos.

Y, sin embargo, se nos requerirá que el time-to-market sea el menor posible, pero con el mayor número posible de funcionalidades.

La aproximación al producto será gradual, y muy posiblemente el resultado final no tendrá nada que ver con la concepción inicial.

El mercado y la competencia nos empujan continuamente a conseguir nuevas funcionalidades, sin que las existentes se vean afectadas.

Las necesidades comerciales pueden hacer que el producto tenga que ser dividido en distintos módulos, o que tengamos que producir distintas versiones con distintos alcances.

Algunos clientes querrán personalizaciones de nuestro producto, o funcionalidades sólo para ellos.

El mercado puede ser global, y por tanto se requerirá la internacionalización (i18n) de nuestro producto.

Frente a la fase de concepción, siempre excitante, la fase de evolución y mantenimiento puede ser especialmente absorbente y poco novedosa, lo cual debe ser una situación a evitar.

Para ayudarnos en todos estos retos tenemos una serie de conceptos, herramientas y metodologías (que no son necesariamente exclusivos del desarrollo de productos), como son:

Seguiré desarrollando estos y otros conceptos relacionados en siguientes entradas de este blog.

El reto global

Pero este salto no es sólo un reto para los desarrolladores, el reto es global para toda la empresa:

  • No vale con conocer a nuestros clientes, tenemos que conocer un mercado entero de clientes potenciales.
  • Tenemos que hablar su idioma, y posiblemente incorporar en la ecuación a personas (o incluso a alguno de nuestros clientes) que conozcan dicho mercado, para encaminar nuestros productos.
  • Es difícil saber cuánto se va a gastar, igual que es difícil saber cuánto beneficio se va a obtener. Habrá que asumir riesgos financieros, pero estos riesgos deben ser limitados.
  • El tiempo cobra una dimensión diferente: si bien podemos no estar sujetos a hitos marcados por clientes externos, tenemos que vencer la tentación de dejarnos ir. Además es importante estar preparados para ofrecer nuevas funcionalidades o solucionar problemas detectados en tiempos récord.
  • Además, es necesario conocer otros productos de la competencia y buscar un hecho diferencial, una aproximación diferente, novedosa, algo que atraiga al mercado. O buscar nuestro nicho de mercado.
  • La forma de llegar al cliente puede ser diferente: podemos ofrecer un producto que se saca de una caja y se instala en casa del cliente, podemos ofrecer un producto que complementa otro producto, podemos ofrecer personalizaciones, podemos ofrecer el servicio en lugar del producto. Podemos incluso regalar nuestro producto o el servicio asociado, y buscar formas alternativas de monetización.
  • También la estrategia comercial debe ser diferente, sea cual sea el formato elegido.
  • Es necesario cuidar la imagen de la marca y del producto, estar atentos a los posibles problemas y responder ante ellos.
  • Precisamente por esto, la calidad de los desarrollos cobra una importancia aún mayor, si cabe.
  • El conocimiento del producto, del mercado, de ese “porqué”, está principalmente en las personas que forman la empresa, y es más que importante mantenerlo.
  • El cambio, la adaptación, incluso el riesgo, deben formar parte de la cultura de la empresa, junto con otros valores como la innovación, la superación o la excelencia.

¿Por qué desarrollamos productos software?

Sólo sabiendo por qué hacemos lo que hacemos podemos afrontar este reto a nivel de compañía. No se trata de qué hacemos: eso está claro, desarrollamos software, y hacer lo que nos encarga un cliente, por supuesto, también. No se trata de cómo lo hacemos: el reto tecnológico está bien, pero no es suficiente. Se trata del porqué: lo hacemos porque sabemos lo que nuestros clientes necesitan, y se lo ofrecemos; lo hacemos porque creemos en lo que hacemos, y lo creemos porque permanentemente estamos buscando la mejor solución.

Juan Perea

Hijo primero y padre después, estudiante primero y profesor después, freelance primero y empleado después. Siempre aprendiendo, siempre aplicando lo aprendido. Siempre pensando en la siguiente línea de código, en la siguiente funcionalidad, en el siguiente reto. Y siempre aprovecharé la tribuna para reivindicar la Programación como Arte, como Artesanía, con mayúsculas, ya que así la vivo.