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. 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 como de brillante sea la idea o la estrategia, porque 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 hecho muy exigentes, y sólo triunfan grandes ideas con un gran código detrás.

1-Debes de 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 de ser creado 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 se necesita la impronta de un gran técnico, pero alguien que se crea y sienta el proyecto suyo. No es un empleado, es un creador tiene que ser partícipe y que sentir la idea, sino 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, duros de mantener y evolucionar. Hoy día eso se acabó.

Hoy día se necesitan a los mejores técnicos que sepan lo que tienen que hacer y deben de cumplir reglas básicas:

  1. Amar el código.
  2. Escribir de una forma rápida y elegante.
  3. Programar Sencillo y claro.
  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 avanzan más rápido en un sistema que un grupo numeroso. Un pequeño grupo de buenas estrellas que tengan el objetivo claro y amen el código llegarán más lejos de un equipo de 20 programadores. Siempre estamos hablando de un sólo sistema. Lo mejor es tener un equipo pequeño de programadores por cada sistema.

El libro mythical man-month book demuestra como se escalan los proyectos introduciendo más programadores a un proyecto, está demostrado que un sistema de software de desarrollo no es escalable, por introducir más programadores no irás más rápido, todo lo contrario se aumenta la ineficiencia en el sistema.

La verdad 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 son formados por 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 la una parte fundamental de el proceso de RRHH, en el caso de los programadores es un punto esencial. Es mejor no coger un programador que contratar a uno que no va a estar dentro de un año o que la calidad de su código no es la que se pretende. Debes realizar muy bien la selección y hacer una serie de preguntas básicas.

A preguntar en la entrevista:

  1. Estructuras de datos y algoritmos.
  2. Trata con preguntas claras y concisas de saber si tiene conocimiento en el lenguaje, da igual cúal. 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 de saber y conocer lo importante de hacer test y buscar la estabilidad.
  6. Lo más importante el candidato necesita demostrar que ama el código simple y elegante.

Siempre pregunta por ejemplos de código. Haz algún tipo de test limitado en tiempo para que resuelvan algún tipo de problema o 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 gente con 45 años hambrienta de escribir código y gente con 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 ha este tipo de grupos de trabajo lo mejor son arquitectos y personas de perfíl técnico que amen el código por encima del management.

7- Agile culture.

Al principio debes de redefinir el código para satisfacer los requerimientos empresariales y estar seguro de que el sistema es diseñado e implementado correctamente.

Los valores de la Agile Culture son:

  1. Código Limpio y elegante.
  2. Refactoring continuo.
  3. Foco en el equipo y controlar el 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 perdida de tiempo para ti y posiblemente no lo harás mucho mejor.
A tu manera no es mejor, es perder el tiempo.

public

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

11 comentarios sobre “Reglas de las empresas de software.

  1. Me ha encantado tu artículo Alfonso.
    A pesar de no trabajar en una empresa de software ni entender nada de programación, este artículo “Reglas de las empresas de software” creo que es aplicable a más ámbitos que el software y me siento muy identificada con él.
    Estoy cansada de ser la “técnico” que haces referencia en tu artículo; todos tenemos ideas pero lo difícil es implantarlas, a mi me ha tocado la parte dura “implantar”. Es muy cierto que para comenzar un proyecto se necesitan personas con ganas e ilusión pero me gustaría añadir una segunda visión; la del jefe que tiene que saber cuidar esa ilusión y transmitir confianza en el proyecto además valorar el trabajo que realiza su equipo.
    Este último año y medio he estado realizando un proyecto, he comenzado con mucha ilusión y ganas pero poco a poco esto se ha ido deteriorando debido a la sensación de inseguridad que transmite mi jefe, al principio me creí la “Gran idea” y yo decidí aportar el “gran código que va detrás” pero ahora he perdido toda la confianza en esta idea y tengo la sensación de haber trabajo muy duro para nada, me he dado cuenta de que mi jefe tiene muy poca idea de lo que estamos haciendo; él se cree que leyendo tres libros sobre un tema ya es un experto. Esa ilusión que yo tenía se ha transformado en desesperación por acabar con esto y empezar un proyecto distinto con un equipo distinto.
    Por esto me gustaría que quedase constancia de que la confianza en el equipo es fundamental y que los jefes deben mimar mucho esa ilusión con la que trabajan las personas, como muy bien dices “sólo triunfan grandes ideas con un gran código detrás” y para conseguir esto se necesita un gran equipo.

  2. Hola,

    Evidentemente es un buen post. Lo que no veo claro es la extrapolación de algunos puntos a la tecnología de Velneo.

    Los puntos 4 y 5 . Es evidente la falta de programadores de la herramienta y los problemas de las empresas de desarrollo para encontrar gente. 4 Programadores experimentados en Velneo en la misma empresa … me parece que hay una o dos que los tengan. Hago hincapié en el punto 5.2: Para Java y .NET das una patada y salen cien mil … con Velneo pasa al revés, das cien mil patadas y sale uno. Con lo cual la parte de RRHH es MUY MUY complicada.

    Punto 6: Esos miles de librerias no suelen valer para Velneo ya que, como apunté antes, esas librerías están orientadas a Java y .NET donde la integración es sencilla. En Velneo, para empezar no hay librerías y para seguir, sólo valen las hechas en C++. Con lo cual de esos miles de librerías se reducen en un altísimo porcentaje para su utilización.

    El post es excelente para empresas como Velneo … pero no para las empresas que desarrollan con Velneo, por lo que antes comento.

    Esto es un post de opinión, porque me interesa y lo hago como crítica constructiva y sabeis que no es por “fastidiar”.

    Un fuerte abrazo.

  3. ¿¡LA IGNORANCIA ES LA MADRE DEL ATREVIMIENTO!?
    En cualquier actividad empresarial que su estrategia y futuro está basado en la investigación y desarrollo, necesita analizar y sintetizar la información….crear teorías.
    Las teorías facilitan la trasmisión de las ideas complejas y fijan objetivos, pero no pueden marcar los caminos, son ideas a experimentar por los diferentes departamentos de la empresa.
    ¡CAMINANTE NO HAY CAMINO, SE HACE CAMINO AL ANDAR!…..bueno, siempre es bueno contar con un plano del tesoro, aunque algunas veces no sea todo lo bueno que esperamos. Después,…hay que esperar que el paso del tiempo confirme nuestras expectativas. Si es así, BENEFICIOS,RECONOCIMIENTOS Y EXITOS; la teoría se confirma y pasa a formar parte del conocimiento general.

  4. VPR, totalmente de acuerdo contigo lo que importa es la confianza en el equipo. Es algo básico y que es necesario. Como comento en el artículo la buena gestión del equipo marcará que el proyecto salga adelante o no.

    Amigo Cabella, te daré mi visión del asunto.
    Lo que se necesitan son “BUENOS PROGRAMADORES”, da igual en que lenguaje sean, el que es bueno lo es. En Velneo lo que se necesitan es buenos programadores-Analistas para sacarle todo partido a la herramienta. Mi experiencia ha sido que la persona que es buena en un lenguaje suele serlo en lo que le pongas delante. En Velneo yo he seguido siempre dos caminos:

    1) Contratar buenos programadores con experiencia y resultados demostrados en otros lenguajes.
    2) Gente joven con capacidad y ganas de convertirse en un BUEN PROGRAMADOR.

    Al final lo importante es la persona no el lenguaje.

    Sobre el punto 6, me costa que mucha gente que tiene las Plantillas de Velneo no les saca el rendimiento que pudiera. ¿las has utilizado? ¿has reutilizado código de las mismas?. A veces nos ponemos a desarrollar algo de 0 cuando algo parecido está desarrollado, desde un formulario a un proceso. Está claro que ese objeto no está como nos gustaría pero esta hecho. Gracias por tu opinión, esta es mi visión del asunto.

    Como bien dices Portiella y estoy de acuerdo, unas cosas son las teorias y otra la práctica es complicado muchas veces llevar a cabo lo que piensas.

    SACY, el atrevimiento de los ignorantes hace que los sueños se conviertan en realidad. 100% de acuerdo contigo que al final el CAMINO SE HACE AL ANDAR.

    gracias a todos un saludete.

  5. Hola de nuevo,

    Lo primero GRACIAS alfonsogu por tu visión, ya que es lo que buscaba con mi post, puesto que la considero muy valiosa.

    Sobre las plantillas … POR SUPUESTO QUE LAS USO!!! las considero una fuente de conocimiento de la plataforma de un gran valor(y en muchas ocasiones me han ayudado muchisimo). Mi comentario se refería a la respuesta que me das:”Está claro que ese objeto no está como nos gustaría pero esta hecho. “.

    Me parece no haber entendido bien el comentario sobre la “ignorancia”. No he hablado de teorías ni he intentado rebatir ninguna. Estoy deacuerdo al 100% con lo expuesto. Simplemente me considero una persona PRACTICA como Miguel Pérez Oliver indica en este estupendo Post: http://blog.velneo.com/web/p.pro?vdis=4&p=23992 y por ello he querido (y sigo queriendo) llevar dicha teoría a la práctica con la mayor eficiencia posible. Simplemente he expuesto una realidad, ante una teoría. Ojalá fuera un ignorante y estuviera equivocado … y si lo estoy, por favor abridme los ojos y rebatidme con hechos mis exposiciones (como ha hecho alfonsogu).

    En cuanto a lo de “BUENOS PROGRAMADORES”, eso … creo que no sólo es una línea a seguir no sólo con Velneo sino en cualquier otro leguaje. Y 100% de acuerdo.

    Mi objetivo es compartir y aprender … de ahí que escriba y dé mi opinión aquí.

  6. Gracias amigo Cabella, lo del post de la ignoracia, yo lo tome como una frase echa. Yo la utilizo muchas veces, yo me considero un gran ignorante, y cada día que pasa más ignorante me considero porque veo más lo que me falta por aprender.

    Creo que muchas cosas que he logrado en los proyectos en los que estuve es por la ignorancia de no saber lo “peligros” y eso hace que saques las cosas para adelante siempre.

    Por eso comento:
    “El atrevimiento de los ignorantes hace que los sueños se conviertan en realidad”.

    Sólo los que se arriesgan, corren riesgos (los sepan o no) sacan cosas adelante.

    te lo dice un gran ignorante. El que se crea que sabe algo está equivocado.

    Gracias por tu participación Carlos. Espero haber aclarado el punto.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s