Reglas de las empresas de software.

Reglas de las empresas de software

La gente, en general, suele tener muchas ideas; lo difícil es llevarlas a cabo. Los proyectos de software tratan de mejorar la vida de la gente que los usa, y hoy día las reglas han cambiado mucho.

Si el código es bueno, la idea puede tener una posibilidad. Pero si el código es malo, no importa lo brillante que sea la idea o la estrategia: la startup no llegará muy lejos.

En los comienzos de la industria del software, la calidad del código no tenía la importancia que tiene hoy día, y así grandes empresas se crearon y crecieron alrededor de grandes ideas y pésimo código. Hoy día, los competidores, los clientes y el mercado se han vuelto muy exigentes, y solo triunfan las grandes ideas con un gran código detrás.

1. Debes tener código

Hace 20 años, las compañías tecnológicas se fundaban alrededor de una idea escrita en una servilleta. Hoy día necesitas un código fuente, un sistema probado y unos usuarios activos para que el mercado te escuche.

El software debe crearse mejor que antaño. Necesitas estar en constante evolución para poder responder a las demandas de los clientes. Definitivamente, las reglas del juego han cambiado.

2. Mejor tener un técnico entre los fundadores

Si quieres triunfar en el software, necesitas fundadores tekis, apasionados de la tecnología y de la vida. Si no tienes un fundador así, lo primero que tienes que hacer es buscar a uno. Un MBA no te va a dar lo que necesitas para triunfar en esta industria: se necesita algo más.

En los proyectos hace falta la impronta de un gran técnico, pero alguien que crea en el proyecto y lo sienta suyo. No es un empleado, es un creador: tiene que ser partícipe y sentir la idea, porque si no, no funcionará.

3. Programadores que amen el código

Los primeros sistemas con los que trabajamos en la industria del software tenían muchos bugs, eran inestables y resultaban duros de mantener y de evolucionar. Hoy día eso se acabó.

Hoy día se necesita a los mejores técnicos, los que saben lo que tienen que hacer y cumplen unas reglas básicas:

  1. Amar el código.
  2. Escribir de una forma rápida y elegante.
  3. Programar de forma sencilla y clara.
  4. Capacidad de abstracción.
  5. Buscar la calidad y la estabilidad.
  6. Programación práctica.

4. Equipos de desarrollo pequeños y sólidos

Un equipo de 3 o 4 excelentes programadores avanza más rápido en un sistema que un grupo numeroso. Un pequeño grupo de buenas estrellas que tenga el objetivo claro y ame el código llegará más lejos que un equipo de 20 programadores. Siempre estamos hablando de un solo sistema: lo mejor es tener un equipo pequeño de programadores por cada sistema.

El libro The Mythical Man-Month demuestra cómo escalan los proyectos al introducir más programadores. Está demostrado que el desarrollo de un sistema de software no es escalable: por meter más programadores no irás más rápido; todo lo contrario, aumentarás la ineficiencia del sistema.

La verdad es que los proyectos de software de éxito de hoy día son desarrollados por grupos de no más de 5 buenos programadores. Sin ir más lejos, los grupos de desarrollo de Google se forman con 5 ingenieros.

Menos es más si introducimos la variable de calidad y solidez en el desarrollo de software.

Mejor gastarse el presupuesto en 4 programadores buenos que en 10 normales. Contrata a los mejores programadores que encuentres, procura que sean felices y el código empezará a fluir. Los programadores son como los artistas.

5. La selección, lo más importante

La selección es una parte fundamental del proceso de RR. HH., y en el caso de los programadores es un punto esencial. Es mejor no coger a un programador que contratar a uno que no va a seguir dentro de un año o cuyo código no tiene la calidad que se pretende. Debes hacer muy bien la selección y plantear una serie de preguntas básicas.

A preguntar en la entrevista:

  1. Estructuras de datos y algoritmos.
  2. Con preguntas claras y concisas, averigua si tiene conocimiento del lenguaje (da igual cuál). Debe conocer bien el lenguaje con el que va a programar.
  3. Comprueba si sabe analizar.
  4. Comprueba si tiene capacidad de abstracción.
  5. Debe saber y conocer lo importante que es hacer test y buscar la estabilidad.
  6. Lo más importante: el candidato necesita demostrar que ama el código simple y elegante.

Pregunta siempre por ejemplos de código. Plantea algún tipo de test limitado en el tiempo para que resuelvan un problema o un algoritmo.

6. No necesitas managers, sino arquitectos

Para liderar este tipo de equipos no necesitas gestores, sino personas de perfil técnico que tengan una visión clara del objetivo final.

Los ingenieros que trabajan en una startup tienen que ser jóvenes (al menos de espíritu) y estar hambrientos de escribir código. Conozco a gente de 45 años hambrienta de escribir código y a gente de 32 que está cansada de picar. Lo más importante es que tengan hambre de código de calidad. La pasión es necesaria para conseguir programar lo que parece imposible.

Por tanto, para dirigir este tipo de grupos de trabajo, lo mejor son arquitectos y personas de perfil técnico que amen el código por encima del management.

7. Agile culture

Al principio debes redefinir el código para satisfacer los requerimientos empresariales y asegurarte de que el sistema se diseña e implementa correctamente.

Los valores de la Agile Culture son:

  1. Código limpio y elegante.
  2. Refactoring continuo.
  3. Foco en el equipo y control del ego personal.
  4. Lo más difícil: sentido común.

8. No reinventes

En internet hay miles de librerías que pueden ayudar a tu equipo. No reescribas código existente: es una pérdida de tiempo para ti y, probablemente, no lo harás mucho mejor.

A tu manera no es mejor, es perder el tiempo.

Basado en el artículo: http://blog.adaptiveblue.com/?p=765