Desarrollo de software en México (Parte 3)

En entradas anteriores he descrito algunas de las problemáticas que como programadores enfrentamos día con día. Aunque el tono de estas opiniones pudiera parecer pesimista y desalentador, la idea es exhortar a todos aquellos que comparten este punto de vista para comenzar a buscar una solución ingeniosa a esta problemática. En esta entrada voy a concluir este tema dejando también mi punto de vista sobre cómo creo que se puede enfrentar la situación.

Administración de proyectos

Como mencioné en la entrada anterior, otro de los grandes problemas que se enfrenta en la industria de desarrollo de software es, precisamente, la administración de proyectos. Hace muchos años, cuando surgió la rama de “ingeniería de software” se trató de reducir el desarrollo de software a una línea de producción en una fábrica de software. Se desarrollaron metodologías que permitieran que el trabajo de un desarrollador de software se convirtiera en una parte intercambiable de la línea de producción (commodity). Estas metodologías tienen el gran defecto de generar también un poco de burocracia, la cual, ayudada por las deficiencias en la implementación de la metodología, incrementa exponencialmente los costos del desarrollo y reduce la calidad del software producido.

Seguramente a muchos les sonará a un cuento de hace muchos años cuando las metodologías ágiles no existían. Pues aunque es verdad que desde hace algunos años la industria ha preferido voltear hacia las metodologías ágiles por los buenos resultados que han demostrado, hablamos de un país diferente al nuestro. El desarrollo de software en México se mueve lento, las metodologías que se tratan de seguir son CMM, RUP, y Moprosoft. Y digo intencionalmente que “se trata de seguir” porque la mayoría de los proyectos se hacen primero y se documentan después, tratando solo de cubrir el rastro para hacer parecer que sí se siguió una metodología. A estas alturas conozco empresas suficientemente grandes que ni siquiera tienen el mínimo control de sus archivos fuentes al no contar con un repositorio de software.

El legado que nos dejan las antiguas metodologías que se tratan de implementar en México es, además de la burocracia, las figuras que las que representan: los Administradores de Proyecto (Project Manager o PM). La gran mayoría no tiene los conocimientos técnicos suficientes como para poder tomar decisiones adecuadas sobre cómo resolver una necesidad de software y mucho menos con respecto al tiempo requerido de desarrollo. La formación de muchos de ellos no incluye, generalmente, los conocimientos básicos de programación, por lo que se generan complicaciones graves en los tiempos de entrega de los proyectos que son solventadas por las horas interminables de trabajo de los programadores.

El cliente siempre tiene la razón

El problema de los tiempos de entrega radica mucho en la posición que toman los administradores de proyecto, cuyo trabajo se reduce a simples agentes de ventas. Tratan de vender al cliente la idea de que todo se encuentra bajo control y empiezan a generar grandes expectativas sobre el proyecto. Se trata de abstraer a los clientes de los pormenores tecnológicos, pues estos se pueden utilizar más adelante para negociar la entrega o justificar retrasos. La idea de la negociación con el cliente denota la intención del administrador de proyecto, quien, tratará de convencer al cliente de que lo que se está desarrollando es lo que necesita o que, simplemente, tratará de cumplir “caprichos” de los clientes para quedar bien con ellos. De esta manera se tiene prácticamente garantizada la recepción de un pago. Mientras se tenga vendida la idea y el dinero en el bolsillo, el sistema a desarrollar pasa a segundo término.

La meta monetaria desvía el curso original del desarrollo de software pues, en vez de mantener informados a los clientes sobre cuestiones tecnológicas que podrían ser útiles para cubrir sus necesidades de software, u orientar a los clientes para definir un mejor producto, se trata solamente de que el cliente pague sin importar si lo que está obteniendo sea algo que realmente necesitaba o si pudo haber ahorrado dinero y obtenido una mejor solución. Cuando los clientes se dan cuenta de que lo que tienen no es lo que necesitan comienza la pesadilla del mantenimiento de sistemas. Si se dan cuenta a tiempo se puede negociar un arreglo de última hora. En caso contrario habrá que hacer un gasto para la contratación de desarrolladores que se darán a la tarea de explorar código espagueti de alguien más.

El problema de este tipo de desarrollo es que difícilmente se piensa en el crecimiento del sistema y la facilidad de hacer cambios. Es regla general que los sistemas deben evolucionar para adaptarse a los cambios en el modelo y estrategias de negocio de los clientes. Aunado a esto, una mala definición de prioridades y requisitos pueden acelerar la necesidad de realizar cambios importantes en la aplicación. Por esta razón se invierte más dinero del necesario en el mantenimiento de las aplicaciones legadas.

Conclusiones

He tratado de describir el panorama general que se vive en la industria del desarrollo de software en nuestro país. Algunos de los problemas descritos tienen su raíz en la situación laboral general que vivimos en México, otros son causados aparentemente por las consultorías y el modelo de “negocio” que han desarrollado. Me parece que el problema más grave y el que podemos solucionar de manera más inmediata es el de nosotros mismos: los programadores. Sin quererlo o saberlo hemos fomentado el que existan muchas de los problemáticas que nos aquejan. Los horarios de trabajo extenuantes sin remuneración adicional, el pago por honorarios y esquemas fuera de la ley, los altos márgenes de ganancia de las consultorías y los pocos beneficios que dan a los programadores son ejemplo de prácticas que hemos permitido al aceptar trabajos que imponen estas condiciones.

Algunos me dirán que hay que aceptar las condiciones impuestas por falta de oportunidades laborales (que es el caso de la gran mayoría de profesiones en México), pero lo cierto es que hay una gran demanda de programadores y va en aumento. Ahora, para poder ponernos en la posición de exigir una mejora en estas condiciones también hay que combatir el gran problema que hay con nosotros mismos como programadores: hay muchos programadores malos. La barrera del idioma, el sentirse en una posición regularmente cómoda o simplemente la falta de entusiasmo evitan que muchos programadores busquen una mejora continua o que se mantengan atentos a los cambios tecnológicos que pueden ayudarnos a tener una mejor perspectiva de las soluciones que como programadores podemos brindar.

La propuesta es finalmente, buscar el implantar una verdadera industria del software en nuestro país, comenzando con la mejora continua de la materia prima del desarrollo de software: los programadores. Compartir información, aprender, enseñar, explotar los medios que nos brindan las nuevas tecnologías para formar a mejores programadores, quienes, eventualmente, se agruparán en empresas que comiencen a eliminar a esos intermediarios: las consultorías.

Ya existen en México varias comunidades de programadores, aunque desde mi punto de vista falta mucho aún para que puedan madurar. Por el momento hay que enfocarnos en hacerlo a un nivel personal y que fue una de las ideas que originaron este blog. Invitar a los programadores a hacer de la programación no solo un trabajo o un pasatiempo, hacerlo un estilo de vida, el estilo Hackerdou.

17 comentarios en “Desarrollo de software en México (Parte 3)

  1. TOTAL Y ABSOLUTAMENTE DE ACUERDO.

    Acabas de resumir el panorama general de las “consultorias” que básicamente son padrotes de los programadores, lo más triste es que siguen apareciendo empresas así con esquemas de pago truculentos, nula calidad en el desarrollo por terminar rápido y sus horas extra gratuitas.

    He pasado por varias y todas tienen los mismos problemas que mencionas y cuando hablo con colegas que están en otras consultoras tienen exactamente los mismos problemas o hasta peores – a un conocido lo tenían amenazado con cobrarle los días de retraso -.

    El problema es que muchas veces, y en especial cuando empezamos a trabajar permitimos estos tratos, al menos yo lo permití ya después agarre la onda y ahorita ni por equivocación regalo un minuto más de mi tiempo lo cual me ha llevado a tener fuertes discusiones con mis jefes en turno.

    Y si, nosotros debemos de cambiar y hacer las cosas lo mejor posible y NO dejarnos “infectar” por el mal ambiente laboral y hacer las cosas al “ahí se va”.

    Esto va pal feis 😛

    Me gusta

  2. Me parece excelente el artículo, y muy acertado en su contexto general, me parece importante que exista diversidad de criterios sobre el tema laboral, pero es indudable que a todos los latinos nos es de alguna manera desfavorable económicamente o deficiente en su entorno laboral con respecto a países que han desarrollado su industria del software de manera más sana, si que la frase anterior signifique que esos otros no tengan problema, la diferencia es que se piensa en función de un ganar ganar de todos. La felicidad de individuo al hacer un trabajo lo hace más productivo, su gusto por hacer una labor determinada, en la mayoría de los casos, define la calidad, el ímpetu y la agilidad de ejecución.
    Podríamos conversar de muchos factores que aquí intervienen, pero más allá de eso, me gustaría contactarte para llevar a cavo algunas ideas que nos pudieran ayudar a todos en este como en otros temas que nos aquejan, saludos y gracias por tus palabras.

    Me gusta

    • Gracias, próximamente publicaré algunas de las ideas que queremos llevar a cabo para tratar de cumplir el objetivo de mejorar el desarrollo de software en nuestro país. Por supuesto que todas las ideas son bienvenidas, te contactaré por correo electrónico próximamente.

      Me gusta

  3. Hola,

    Leí con bastante interés tu serie de artículos (¿que cómo me enteré? Porque atinadamente lo repetiste en Barrapunto 🙂 ), y me gustó –en primer término– tu estilo sencillo de escribir. Lo que me desmotivó un poco y terminó llevándome a sólo “ojear” la última parte es… Que está visto desde un punto de vista absolutamente subjetivo, personal, sin rigor. Vamos, no puedo ser tan arrogante como para decirte qué debe haber en tu sitio, faltaba más… Pero me parece que, habiendo investigaciones publicadas al respecto que indican más allá de cómo tú y tus conocidos sienten al mercado, lo mantuviste como algo muy personal.

    La revista mexicana Software Gurú realiza de tiempo en tiempo (¿bianual? No estoy seguro, aunque encontré la Encuesta de salarios 2010 publicada en noviembre de 2010, número 30 de SG) una encuesta de salarios. No estoy seguro si estén recibiendo aún participaciones, dado que está a punto de publicarse en este mes, pero acá está la página para participar en la encuesta de salarios 2012. Ahí puedes ver también los resultados que han registrado casi mil personas.

    No me voy sobre los resultados de la encuesta de este año, que no sé si se presenten completos y no han sido analizados por, a fin de cuentas, quien planteó la encuesta, pero para el 2010 la realidad era muy distinta de lo que mencionas: 68% de los desarrolladores estaban contratados en nómina; 44.2% estaban contratados internamente (en departamentos de sistemas) contra un 30% contratados a través de un proveedor de servicios (outsourcing, pues). Los rangos salariales no son tan dispares de lo que tú dices, pero sí bastante más dispersos — La categoría moda (con 16.7%) estaba en 11,000 a 15,000 pesos, seguida por la de 16,000 a 20,000 (15.5%), pero la curva es bastante plana: Se mantiene arriba del 10% en todos los escalones desde el nivel de 7,000 a 10,000 y hasta de 31,000 a 40,000 pesos.

    No voy a desglosar en este comentario todos los aspectos, pero hay correlaciones muy interesantes en lo que publica SG. Respecto a los lenguajes, sin embargo (y centrados en el 2010), sí hay una gran disonancia respecto a lo que mencionas: Si bien es cierto que programar en PHP no es negocio (le “gana” sólo Delphi en menor remuneración promedio), los lenguajes “empresariales” (Java, C++, .Net) ocupan la parte central de la distribución — Y por encima de ellos tienes a Ruby y a Cobol (probablemente por ser lenguajes menos populares; habrá que ver cómo se ajustó Ruby al día de hoy… Cobol se mantendrá probablemente muy bien pagado por más doloroso que sea por su amplísima base instalada).

    Te invito a asomarte e integrarte a este tipo de ejercicios — Y a complementar tus escritos con ellos. Y nuevamente te felicito; no conocía este espacio, pero el estilo de escritura se ve amable y agradable a la lectura, y eso es algo que poca gente logra.

    (Me tomo la libertad de poner este comentario tanto acá como en la nota que refiere para acá en Barrapunto)

    Me gusta

    • Gracias por tu respuesta y por compartir tu punto de vista.
      Lo escrito no se basa en cómo yo y mis conocidos sentimos el mercado, sino en el cómo lo vemos. Es una opinión personal y subjetiva, es cierto, basada en lo que a lo largo de varios años he detectado como patrones constantes en la “industria del desarrollo” y que he concensado con muchas otras personas que están inmersas en este rubro.
      Agradezco la referencia que haces de la encuesta que realiza SG. Sin embargo, tampoco creo que esta encuesta pueda ser muy objetiva, pues se reduce únicamente a personas que en primer lugar conocen la revista y en segundo lugar se registran en su sitio. Por las condiciones anteriores, las cerca de mil personas que participan en la encuensta no pueden representar una verdadera muestra aleatoria. Creo que hace falta realizar un verdadero trabajo de investigación al respecto para ser rigurosos en cuanto a números se refiere.
      Finalmente te invito a que nos compartas tu punto de vista sobre el tema, por lo que te pregunto ¿cómo ves tu a la industria de software en México?

      Me gusta

  4. Muy bien, pero creo que te enfocaste a tus experiencias personales y subjetivas.

    Definitivamente necesitas investigar sobre el fenomeno que se esta dando en Guadalajara. Las grandes del sector (Oracle, IBM, HP, Intel) se establecieron ahi y estan contratando a cientos y cientos de developers, bien pagados y remunerados.

    Necesitas estudiar eso, y no limitarte a tu experiencia. Busca gente que trabaje en Guadalajara porque es otro entorno completamente distinto.

    Me gusta

    • Gracias por tu comentario.
      Conozco un poco el fenómeno que hay en Guadalajara y de algunos “startups” también en Monterrey. Sin embargo, creo que aún es pequeño en comparación con la situación general que hay en el País. La subjetividad deriva de que es una opinión y habrá quienes estén a favor y quienes estén en contra, pero el espacio está para conocer los diferentes puntos de vista. Ojalá nos pudieras compartir tu experiencia y el cómo ves las cosas.

      Me gusta

    • Hola . Solo para mencionar que pese a que critican tu “visión subjetiva”, eso es lo interesante de tus artículos: que desde tu propia visión plasmas la realidad y lo llevas a la objetividad. Sin duda generalizar es malo, pero describiste una realidad que abarca a buena parte de los programadores (estoy hablando de ciudades como Mty, Saltillo y el DF, y hablando del universo de personas que conozco, extendiendo estos a servicios que se ofrecen a nivel internacional).
      A lo que me refiero es que a que si plasmas una gran parte de la realidad, que otras personas conozcan otra realidad, o que a nivel personal tengan otra visión no significa que tu visión no sea una visión general.
      De hecho aunque mi visión sería también subjetiva: diría que me leíste la mente y plasmaste mi realidad, la de mis compañeros de empresa, y la de muchas empresas que compiten con la nuestra en una realidad parecida, a si como la visión que tienen muchos de nuestros clientes (empresas como TELCEL, Movistar, Iusacell, etc).
      Me parece que tu análisis es bastante objetivo y muestra una imagen clara de la situación general del país.
      Y aun suponiendo que estas hablando del peor escenario (lo cual no es así), es triste pensar que se te llame subjetivo, en un intento de tener una visión ilusa y positivista. Es decir aun cuando estos problemas fueran mas pequeños de lo que dices, existen, y el negarlos diciendo “en otros lados es mejor” es solo la triste excusa de la mediocridad.
      Por ello te encomio sinceramente, gracias por la exactitud y el fino análisis que hiciste.

      Me gusta

      • Gracias por tu comentario. Estoy de acuerdo contigo en que, aunque fuera un problema pequeño o aislado no es excusa para que exista. Por eso hay que buscar la forma de mejorar esta situación.

        Me gusta

  5. Que tal man!!

    Claro, te puedo dar mi opinion y contar lo que yo he visto y gente que trabaja en varios lugares me ha dicho. Sin embargo por razones obvias no lo puedo ventilar. Si gustas contactame por email al gmail o por IM y te cuento lo que he visto, bueno y malo.

    bsdero at liamg dot com

    Me gusta

  6. Ah no se llama Hidelbrando esa consultoria ni Alia ni softek ajajajaa , el problema viene desde la escuelas donde no hay profesores buenos son flojos y mediocres, y ese es el resultado de formarse empiricamente al iniciar a laborar en tus primeros años.

    Medio Empiezas a aprender algo medio real ya que estas graduado.

    Somos un pais de tercer mundo por que somos mediocres y no hacemos nada por solucionarlo.

    Me gusta

    • No quise mencionar nombres, pero, cualquier parecido con las empresas que mencionas es mera coincidencia.
      Es cierto que hay un problema importante con la educación. Desde la educación básica y la educación recibida por la televisión hasta la educación superior en algunos casos.
      En particular, a mí me parece que recibí una formación excelente en la Facultad de Ciencias y creo que el problema del bajo desempeño es más de los alumnos que de los profesores en esta institución.
      Si bien nunca me enseñaron cómo programar en X o Y lenguaje con Z tecnología, recibí las bases para la programación y análisis de algoritmos, así como el aprendizaje autodidacta, que es muy importante en un mundo tecnológico en el que el surgen tantas tecnologías en tampoco tiempo que no pueden enseñarse sistemáticamente.

      Me gusta

  7. Excelente post, la verdad estoy de acuerdo “subjetivamente” contigo, jejeje, las empresas consultoras son el padrote de los programadores, sin embargo, aprendes a valorar tu tiempo ya que te vas dando cuenta que lo que tu haces muchas empresas lo requieren y si tienes una buena estructura y hábitos de programación tu trabajo sera valorado por buenas empresas que sepan pagarte lo que realmente mereces pagar. Pero eso lo logras con el paso del tiempo, debes de pasar por un periodo de aprendizaje y lo logras con la practica en el mercado laboral.

    Cada quien tiene sus puntos de vista dependiendo de como le va en la feria, yo estoy de acuerdo contigo. Empece ganando muy poco, sin embargo ahora se cuanto puede llegar a valer lo que he aprendido.

    Te mando un saludo, estaré atento a futuros post.

    Me gusta

  8. He visto a mentes brillantes del desarrollo de software perderse ante una consultoría. Esos programadores apasionados que se vencen ante la falta de calidad, la presión con las fechas, las aplicaciones que nunca se llevan a productivo.

    Yo comulgo con agile porque tratan al programador, tester o lo que sea como persona. No son una parte de un proceso y mucho menos unas horas por facturar.

    Sin embargo, me he encontrado que es mucho más difícil vivir con un “agile mindset”. Como bien dices en tu comentario en la escuela nos enseñan ciertas estructuras, cierto modo de pensar y actuar. Despertar cuesta trabajo, sobre todo porque involucra esfuerzo y salirnos de nuestra “zona de confort”

    Excelente serie de posts. Felicidades.

    Me gusta

  9. Estoy de acuerdo contigo amigo. No entiendo como pueden existir “Analistas de Sistemas” sin saber programar y se enorgullecer de decir ” ya no programo”. He conocido al igual como tu muchos programadores los cuales no tienen interés de programar bien , los cuales no les gusta analizar su codigo a ver si lo pueden refactorizar no usan buenas prácticas. Encontré incluso compañeros que les conversé para que cambien pedazos de codigo ya que eran repetitivos y se negaron y la tipica frase: “PERO YA FUNCINA PARA QUE LO VAMOS A CAMBIAR?”.

    Así como he conocido muy buenos programadores que les gusta hacer bien su trabajo y aman lo que hacen.

    Esperemos que la industria cambie tanto en mexico como en perú que esta siguiendo los mismos pasos.

    Me gusta

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