Archive for the ‘Informática e Internet’ Category

h1

Los comentarios más chuscos encontrados en el código fuente

23 mayo, 2013

Wizdoc [Icon By Buuf]  Tips & Tricks.

Los programas deben escribirse para que la gente los lea, y sólo incidentalmente para que las máquinas los ejecuten.

Hal Abelson (n. 1947), profesor y codirector estadounidense del Instituto Tecnológico de Massachusetts (MIT), cofundador de Creative Commons.

Hace algún tiempo, en el sitio técnico Stack Overflow apareció un hilo de discusión que decía: ¿Cuál es el mejor comentario en el código fuente que has encontrado? Aunque sale por completo de los temas que normalmente tratan en dicho sitio, la pregunta tuvo una respuesta de tal magnitud, que uno de los administradores tuvo que bloquear el hilo para evitar que éste dejara a sus servidores fuera de combate. Honestamente, en la actualidad se le conserva más por el enorme tráfico que origina, que por las “razones históricas” que justifican su permanencia entre preguntas más valiosas, aunque menos populares. Sin embargo, recomiendo mucho leer este hilo de discusión, porque nos permite entrar en la psique de aquellos valerosos programadores que cayeron en el cumplimiento del deber:

// if i ever see this again i’m going to start bringing guns to work

Traducción: Si veo esto de nuevo voy a empezar a traer armas al trabajo.

/**
For the brave souls who get this far: You are the chosen ones,
the valiant knights of programming who toil away, without rest,
fixing our most awful code. To you, true saviors, kings of men,
I say this: never gonna give you up, never gonna let you down,
never gonna run around and desert you. Never gonna make you cry,
never gonna say goodbye. Never gonna tell a lie and hurt you.
*/

Traducción: Para las almas valientes que han llegado hasta aquí: Ustedes son los elegidos, los caballeros valerosos de la programación que trabajan duro, sin descanso, corrigiendo nuestro terrible código. A ustedes, verdaderos salvadores, reyes de los hombres, les digo esto: (letra de la canción Never Gonna Give You Up de Rick Astley; efectivamente aplicándole al lector un Rickroll).

// I dedicate all this code, all my work, to my wife, Darlene, who will
// have to support me and our three children and the dog once it gets
// released into the public.

Traducción: Dedico todo este código, todo mi trabajo, a mi esposa Darlene, quien tendrá que mantenernos a mí, a nuestros tres hijos y al perro una vez que esto sea liberado al público.

try {
  …
} catch (Exception e) {
  //silent as a ninja
}

Traducción: Silencioso como un ninja.

// Dear maintainer:
//
// Once you are done trying to ‘optimize’ this routine,
// and have realized what a terrible mistake that was,
// please increment the following counter as a warning
// to the next guy:
//
// total_hours_wasted_here = 16

Traducción: Querido encargado (de mantenimiento): Cuando hayas terminado de intentar “optimizar” esta rutina y te hayas dado cuenta del terrible error que esto significa, por favor incrementa el siguiente contador como aviso al tipo que venga después de ti: total_horas_desperdiciadas = 16

// I will give you two of my seventy-two virgins if you can fix this.

Traducción: Te daré dos de mis setenta y dos vírgenes si logras arreglar esto.

//Dear future me. Please forgive me.
//I can’t even begin to express how sorry I am.

Traducción: Querido yo del futuro. Por favor perdóname. Ni siquiera puedo empezar a expresar cuánto lo siento.

// If you’re reading this, that means you have been put in charge of my previous project.
// I am so, so sorry for you. God speed.

Traducción: Si estás leyendo esto, significa que te han puesto a cargo de mi anterior proyecto. Lo siento mucho por ti. Buena suerte.

/**
* If you don’t understand this code, you should be flipping burgers instead.
*/

Traducción: Si no entiendes este código, deberías estar volteando hamburguesas en su lugar.

try {
  …
}
catch (SQLException ex) {
  // Basically, without saying too much, you’re screwed. Royally and totally.
}
catch(Exception ex)
{
  //If you thought you were screwed before, boy have I news for you!!!
}

Traducción 1: Básicamente, sin decir mucho, estas jodido. Real y totalmente.

Traducción 2: Si antes pensabas que estabas jodido, oh muchacho, tengo noticias para ti!!!

Dependiendo de la situación en la que nos encontremos, estas joyas de comicidad ingenieril pueden hacernos recordar esos duros momentos en que la noche era larga y el café, barato.

h1

Cambio de hábito

18 abril, 2013

Wizdoc [Icon By Buuf]  Tips & Tricks.

Durante los últimos 33 años, me he visto en el espejo cada mañana y me he preguntado: “¿Si hoy fuera el último día de mi vida, ¿querría hacer lo que voy a hacer hoy?” Y cada vez que la respuesta ha sido “No” por demasiados días consecutivos, sé que necesito cambiar algo.

Steve Jobs (1955 – 2011), empresario e inventor estadounidense, cofundador, presidente y director ejecutivo de Apple, Inc.

Estas últimas semanas han estado bastante complicadas, ya que decidí cambiar de empresa. En la anterior estaba muy a gusto, pero los proyectos, clientes y línea de trabajo se habían vuelto rutinarios pues el desarrollo de software – que es la actividad que más me llama la atención – había disminuido al mínimo mientras cada vez más de mi tiempo lo dedicaba al soporte de nuestras aplicaciones desktop y soluciones de hardware.

Ahora bien, gracias a mis conocimientos en Scrum adquiridos a lo largo de estos últimos años, aunados a una certificación como Certified Scrum Professional que obtuve este pasado 2012, pude saltar con relativa facilidad. Y digo relativa, porque la empresa donde ahora me encuentro hace unos filtros bárbaros, con background checks que incluyen una fuerte entrega de documentos oficiales así como entrevistas remotas, en inglés y a deshoras – como a las 9:30 PM, por dar un ejemplo.

Ahora formo parte de un equipo de cuatro células de desarrollo con un promedio de 9 personas cada una… y puedo confirmar que el trabajo es una verdadera joda. Más porque estaba acostumbrado a proyectos con duración y staffing pequeños – 2 a 4 personas por 3 a 6 semanas – cuando en este momento, estamos llevando a cabo seis proyectos de 6 a 8 meses de duración entre 40 personas. En este momento le estoy entrando al quite operativo, recibiendo requerimientos mientras vamos definiendo las prácticas de Scrum que estaremos implementando con los equipos – como planning poker o el formato de las historias de usuario. Ya que soy “el nuevo”, me estoy apoyando mucho en los ScrumMasters veteranos pero aun así, los días se me van como agua entre juntas, definiciones y visitas customer-face.

En fin, uno de los retos principales de este proyecto tiene que ver con que el cliente ha adoptado un Scrum personalizado, o ScrumBut. Por ejemplo, para un proyecto están requiriendo en la iteración cero, entregar un plan de trabajo para revisar fechas de liberación con el usuario de negocio; en otro equipo, no se realizan demos de la funcionalidad terminada en el sprint transcurrido porque “no hay quien los revise”. En ambos casos, estamos contradiciendo el espíritu de Scrum con customizaciones que al final, pueden llevar a resultados nefastos.

Dilbert: ScrumBut


[Jefe Pelopunta]: Vamos a intentar algo llamado programación ágil. Eso significa que ya no haremos planeación ni documentación. Sólo empiecen a codificar.
[Wally]: Me alegro que tenga un nombre.
[Jefe Pelopunta]: ESE fue su entrenamiento.


(Fuente: domin8k.com)

Sin embargo, con todo y estos temas de índole más humana que técnica, creo que vamos por buen camino. Durante las próximas semanas estaremos levantando estos múltiples proyectos, que tienen una gran variedad tecnológica: algunos son aplicaciones de escritorio en .Net; otros son aplicaciones web en Java y otros más tienen que ver con implementaciones SOA para nuestro cliente. En fin, estos días serán pesados pero muy entretenidos, pues como alguna vez me dijo un ex-jefe: si no existieran problemas, nosotros no seríamos necesarios.

h1

Sueldos IT en México 2013: Veteranos al poder

20 febrero, 2013

Wizdoc [Icon By Buuf]  Tips & Tricks.

(Última actualización: 22/03/2015)

En este momento ya contamos con la última versión de este estudio, con cifras actualizadas para el año 2015 que incluyen entre otras cosas, desglose por entidad federativa, género, tipo de empresa contratante y nivel de inglés así como un comparativo contra el sueldo del estudio anterior (2013).

El problema con los programadores es que nunca se sabe lo que están haciendo hasta que es demasiado tarde.

Seymour Cray (1925 – 1996), ingeniero eléctrico y arquitecto de hardware estadounidense, considerado el padre de las supercomputadoras.

Desde hace ya algunos años he publicado posts relacionados a los sueldos del personal IT en México, apoyándome en los resultados de la encuesta de salarios y factores de la revista Software Guru, complementados con información de sitios como Payscale u OCCMundial. En términos generales, este 2013 no se ven demasiados cambios con respecto al reportaje anterior, sin embargo el detalle de sueldos sí presenta algunas sorpresas:

El promedio

El sueldo promedio del personal IT en México es de aproximadamente MXN 25,049 brutos (anualizado: USD 23,799 con un tipo de cambio de 12.63 pesos por dólar al 19.02.2013). Esto significa que durante los últimos dos años, el sueldo se ha mantenido a la par de la inflación y ha conservado prácticamente la misma paridad con respecto al dólar: el sueldo “dolarizado” en 2011 era de USD 23,736, por lo que ha tenido un incremento neto de 63 dólares. Aunque parece estancado en términos del billete verde, de acuerdo a la paridad de poder adquisitivo o PPP, el sueldo promedio de un sistemólogo en México equivale a ganar USD 35,975 en los Estados Unidos; aunque seguimos ganando menos de lo que ganaría un estadounidense (USD 90,279 con todo y prestaciones), de nueva cuenta los sueldos siguen convergiendo poco a poco, ya que la proporción es de 2.51 mientras hace dos años era de 2.97 (USD 70,536 vs. USD 23,736 en 2011). De seguir esta tendencia, en diez años o menos los sueldos de ambas naciones tendrán diferencias mínimas; idea que no es del todo descabellada, sobre todo para empresas que exportan servicios de consultoría hacia el exterior.

Por otro lado, vale la pena recordar que este promedio varía considerablemente. De hecho, de acuerdo a nuestra locación geográfica éste puede variar en más del 30%:

Estado Salario Promedio Mensual (MXN) Salario Promedio Anualizado (USD)
Querétaro $ 32,668.61 $ 34,383.71
Nuevo León $ 30,634.32 $ 32,242.62
Distrito Federal $ 29,025.53 $ 30,549.37
Jalisco $ 24,963.37 $ 26,273.95
Estado de México $ 24,461.17 $ 25,745.38
Promedio Nacional $ 25,049.00 $ 23,799.00
Aguascalientes $ 22,486.96 $ 23,667.53
Guanajuato $ 19,040.36 $ 20,039.98
Puebla $ 18,470.67 $ 19,440.38
Veracruz $ 14,190.00 $ 14,934.98

Sueldo bruto promedio por entidad federativa. Mensual en pesos Mexicanos, anual en dólares Americanos (Tipo de cambio al 19.02.2013)

Me parece interesante cómo han evolucionado de forma independiente lo sueldos por cada estado de la república: Querétaro se está posicionando como una Meca en el desarrollo de software, con una variación de poco más del 30% por encima del promedio nacional y un crecimiento bianual de casi el 33%. Esto no es de sorprenderse ya que dicho estado se ha esforzado en diversificar su economía: por poner un ejemplo, con la excepción de Baja California (estado tradicionalmente maquilador), Querétaro es la entidad con más empresas relacionadas a la industria aeroespacial (32) en el país.

Por otro lado, Veracruz es el mayor perdedor en esta edición, con un magro crecimiento de 3.75% anual que ni siquiera sobrepasa la inflación de estos dos años. Creo que mucho tiene que ver nuestra guerra contra las drogas, que ha hecho de éste uno de los estados más inseguros debido al conflicto; más cuando resulta que el personal IT – especialmente aquellos relacionados con las telecomunicaciones – son el objeto de secuestro por parte de los grupos criminales para crear sus propias redes de comunicaciones.

Sueldos por función

Los sueldos por función reflejan las actividades, que de acuerdo a la encuesta original, se traslapan con bastante regularidad:

pic: Mexico IT salaries by function


Sueldos por función de acuerdo a actividades desempeñadas. Cifras en pesos Mexicanos, sueldo bruto mensual.

• De nueva cuenta, el diseño gráfico resulta ser el peor pagado con un sueldo extraordinariamente bajo con respecto al promedio general.

• También me llama la atención lo bajo que es el sueldo de un DBA “genérico”; sin embargo no nos desanimemos pues cuando existe una especialización en una base de datos y/o existen certificaciones de por medio (como veremos más adelante), el panorama cambia radicalmente.

• De acuerdo a la Organización para la Cooperación y el Desarrollo Económico (OCDE), un profesor sin maestría o doctorado con 15 años de experiencia gana aproximadamente USD 25,905 anuales (con PPP incluido) en México. Esto en pesos equivale a MXN 18,037 mensuales. Así que hace mucho más sentido dedicarse a dar cursos de capacitación IT que ser maestro en nuestro pobremente pagado sistema educativo.

• El grueso de las actividades IT que va desde el análisis de datos hasta pruebas y Quality Assurance no varía demasiado (MXN 5,288 mensuales); la arquitectura de soluciones y gestión de proyectos siguen siendo las actividades operativas mejor pagadas con MXN 28,183.30 y MXN 32,018.29, respectivamente.

• Aunque en la edición pasada los habían eliminado, en esta versión volvemos a ver puestos que en realidad no nos dicen mucho del panorama IT, como ventas y dirección. Esto porque he notado que estos puestos se mueven más por conceptos ajenos a IT como ventas o desarrollo de negocios, por lo que hay gente en estas posiciones que llegan al extremo de no tener ni idea de lo que significa IT.

• Finalmente, de nueva cuenta los ingenieros de preventa barren con los sueldos. Sin embargo, creo que esto se debe a que en muchos casos, operan con una cuota y por lo mismo, en caso de “llegar al número” tienen bonos adicionales que se ven reflejados en el sueldo mostrado.

Sueldos por género, experiencia y nivel de Inglés

Es sorprendente ver cómo nuestro nivel de Inglés o género influyen en nuestro sueldo. No tanto la experiencia, pues a mayor exposición ante diferentes tecnologías, proyectos o lenguajes, más experto se vuelve uno y por consiguiente, el sueldo se ve incrementado:

pic: Mexico IT salaries by English level, gender and experience


Sueldos por género, experiencia y nivel de Inglés. Cifras en pesos Mexicanos, sueldo bruto mensual.

• Uno de los grandes indicadores de que seguimos siendo un país en desarrollo es la inequidad de género. De acuerdo a las estadísticas, una mujer gana en promedio 30% menos de lo que hace un hombre con los mismos conocimientos y experiencia profesional. Sin embargo, esto también se debe a que esta industria ha sido tradicionalmente dominada por varones: de acuerdo a la misma OCDE, la proporción de hombres y mujeres dedicados a las matemáticas y ciencias de la computación en nuestro país es de 62% y 38% respectivamente.

• Asimismo, los años de experiencia dictan mucho qué tanto podremos percibir. Los dos extremos me llaman mucho la atención: un veterano con más de 20 años en la industria estará siempre por encima de los MXN 41,000, lo que significa que mientras encuentre trabajo, éste será muy bien recompensado. Por el contrario, me resulta doloroso ver cómo sin importar si terminó la carrera universitaria, un “becario” con menos de un año de experiencia puede ganar casi lo mismo que un “maestro albañil” que no ha terminado siquiera la escuela secundaria: MXN 11,299.38 vs MXN 10,000. Para aquellos que se encuentran en este predicamento, les doy la siguiente recomendación: certificaciones, certificaciones, certificaciones.

Sueldos por conocimientos, habilidades, tecnologías y certificaciones

A principios del 2013, éstos eran los sueldos promedio en México de acuerdo al nivel de conocimientos, tecnologías y certificaciones:

pic: Mexico IT salaries by knowledge, skill, tech, certifications (1)pic: Mexico IT salaries by knowledge, skill, tech, certifications (2)


Sueldos por conocimientos, habilidades, tecnologías y certificaciones. Cifras en pesos Mexicanos, sueldo bruto mensual. Leyenda: (P) Plataforma, (L) Lenguaje, (DB) Base de Datos, (C) Certificación/Conocimiento.

• En esta versión del estudio, Adobe AIR va de último, sin embargo es lógico ya que es prácticamente una paquetería al estilo Adobe Flash o Adobe Flex: usada generalmente por diseñadores web.

• PHP como lenguaje, MySQL como base de datos y Android como plataforma son los peores pagados en la industria; una certificación en Linux sigue siendo poco deseable debido al poco retorno de inversión (apenas 151 pesos por encima del promedio de un IT “genérico”).

• Java ha visto una pequeña mejora con respecto a años anteriores, ya que vuelve a estar por encima de Visual Basic, .Net y C#. Cuando hay certificaciones de por medio, ambas plataformas (Oracle J2EE y Microsoft .Net) permiten obtener prácticamente el mismo ingreso.

• Los sistemas legados siguen siendo los mejor pagados: Mainframe, Cobol, Informix y DB2 aseguran un sueldo por encima de los MXN 30,000 mensuales.

• Certificaciones muy recomendables incluyen la de SQA/ISTQB, UML, ScrumMaster e ITIL, ya que además de lo relativamente económicas de adquirir (no cuestan arriba de USD 300 o MXN 3,800 y los cursos de certificación no están por encima de los USD 1,200 o MXN 15,000), no requieren demasiado tiempo o esfuerzo para obtenerlas. Esto las hace muy atractivas ya que poseen un alto retorno de inversión.

• Por otro lado, las certificaciones “top” incluyen la de Project Manager certificado por el PMI o la de Enterprise Architect certificado ya sea por el Software Engineering Institute (SEI) o la IT Architect Association (IASA). Dichas certificaciones pueden ser relativamente baratas (USD 600 o MXN 7,600) pero en algunos casos requieren de 3 a 6 meses de estudio constante para pasar el examen, así como un número de horas comprobables realizando el rol a certificar. Dicho sea de paso, certificaciones no incluidas en el estudio como PMI-ACP (Agile Certified Practitioner) o CSP (Certified Scrum Professional) son equivalentes a la de PMP, pero para metodologías ágiles: de hecho, cuestan lo mismo y el tiempo requerido para estudiar y pasar el examen es muy parecido.

• Finalmente… ¿Websphere en MXN 57,000? ¡Pero si eso es un sueldo de director de operaciones! De hecho, un puesto similar en los Estados Unidos (Websphere Administrator) se paga en casi el mismo monto que la media de un ingeniero de software estándar (USD 91,450 vs. USD 91,271). Así que o tienen contratado a un gringo que está sesgando la curva, o alguien está presumiendo una certificación que del otro lado ya es considerada más bien “del montón”.

h1

Desempeño de C++ vs. Java: todo reside en la calidad del compilador (y del programador también)

13 diciembre, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

Hay sólo dos tipos de lenguajes de programación: aquellos de los que la gente siempre se queja… y aquellos que nadie usa.

Bjarne Stroustrup (n. 1950), científico de la computación y catedrático Danés. creador del lenguaje de programación C++.

Para este año fiscal (FY-2013) nos han encargado construir una aplicación de rastreo, monitoreo y seguridad logística, muy parecida a otra que hemos traído desde Estados Unidos a México desde hace tiempo. La gran diferencia radica en que mientras la anterior estaba adaptada a un sólo tipo de dispositivo de rastreo o AVL, la nueva aplicación tiene como finalidad convertirse en nuestra “plataforma universal”, en la que consolidemos todas nuestras soluciones, incluyendo rastreo satelital.

Ahora bien, dentro de nuestras primeras definiciones de arquitectura tecnológica, nos hemos dado cuenta que requeriremos un gran poder de cómputo, ya que estaremos atacando dos grandes procesos: el primero consiste en leer y decodificar los mensajes enviados por 30,000 AVLs; el segundo se trata de procesar los eventos geoespaciales que resultan de éstos mensajes – tal como calcular la proximidad a un “punto de interés” o el evento de entrada y salida desde una geocerca. Hemos notado que una buena opción consiste en implementar una granja de procesadores digitales de señales (DSPs), que llevarían a cabo estas tareas de procesamiento. Sin embargo, en un momento dado los integrantes del equipo caímos en la disyuntiva: ¿Qué lenguaje será usado para desarrollar esta infraestructura: Java o C++? Aunque C++ parece la decisión lógica, es importante definir el lenguaje de forma objetiva, ya que la mayoría de las personas piensa que Java es lento, o que debido a que Java está implementada en C++, éste lenguaje es más poderoso (tip: ambas ideas son falsas). Convirtiéndome en Mythbuster, comparto alguna información al respecto:

¿”Java es lento”?

Java tuvo sus inicios en 1991, y Sun Microsystems lo liberó al público en 1995. Aunque el lenguaje heredó mucha de sus sintaxis de C/C++, los objetivos de Java en aquél entonces pueden resumirse en los siguientes principios:

• Simple, orientado a objetos y familiar.

• Robusto y seguro.

• Arquitectónicamente neutro y portable.

• Ejecutándose en “alto desempeño”.

• Interpretado, con soporte a paralelismo y dinámico.

El compilador de Java convierte el código fuente en archivos bytecode, que posteriormente son interpretados por la Máquina Virtual de Java o JVM, en un modelo de ejecución en pila o stack. Las primeras versiones de Java – previas a la 1.2 – no realizaban optimizaciones en el bytecode y debido a que las diferentes versiones de JVM eran más bien genéricas, la ejecución tenía un desempeño pobre.

A partir de la versión 1.2 (Diciembre de 1998), Java incluyó un compilador Just-In-Time o JIT, que optimizaba el bytecode en tiempo real de acuerdo a la carga de trabajo sobre el programa. Como contraste, un modelo de compilación estática como C/C++ “adivina” dónde se encuentran los cuellos de botella y se enfoca en esa parte del código para realizar la optimización, pero en el caso de ambientes dinámicos como las aplicaciones web, el compilador JIT mantiene una relativa ventaja. Por otro lado, con cada nueva versión de Java, el lenguaje ha ido mejorando su desempeño, ya sea por optimización en la JVM, el recolector de basura o el compilador JIT. De acuerdo a este artículo, podemos ver la comparación en desempeño entre C++ y Java en algunas funciones relativamente sencillas. Lo sorprendente es lo malo que se desempeña C++ si durante la secuencia de compilación y enlace (linking) se deshabilitan todas las banderas de optimización de código. Adicionalmente, de la versión 6 a la 7, Java mejora su desempeño en alrededor de un 33%:

Función Ejemplo Java SE 6 (2010) Java SE 7 (2012) C++ (optimizado) C++ (sin optimizar)
Aritmética entera int Y = rand(X) * 2 25 16 0.001427 70
Aritmética de punto flotante double Y = rand(X) * 2.0 47 28 0.001477 85
Comparación de enteros if A == B then X = B else X = B 50 33 0.001971 56
Acceso a memoria indexada for i = 0 to N: int X = array[n] 53 25 11 136
Asignación de memoria – tipo primitivo for i = 0 to N: int array[n] = X 12,994 7,589 3,661 8,567
Asignación de memoria – objetos for i = 0 to N: Object array[n] = X 710,788 191,581 29,348 70,436

Tiempos de ejecución en milisegundos (excepto la asignación de memoria, dada en nanosegundos) para algunas funciones en C++ y Java. La ejecución de J2SE 7 se realizó el 10/12/2012. Fuente: developer.com

Podemos deducir que el problema de desempeño no reside en el lenguaje mismo, sino en el compilador y en su caso, la JVM. De hecho, existen dos ejemplos de esta dependencia:

• Es bien sabido por muchos que JRockit, la JVM construida por BEA Systems (ahora Oracle) y publicada en 2002, es mucho más escalable en ambientes con una fuerte demanda de recursos que HotSpot, la JVM originalmente concebida por Sun Microsystems. Tanto así que la próxima Java SE 8, por liberar en Septiembre de 2013, tendrá integrado el core de JRockit.

• Por el contrario, algunas versiones de C++ para Linux sobre Intel pueden tener un nivel de optimización tan mediocre (por ejemplo, G++ [gcc] 3.3.1), que incluso con código escrito por el mejor programador, pueden tener un desempeño equivalente o más lento que el de Java, con lo que muchos fans de éste lenguaje justifican la afirmación de que “Java es más rápido que C++” (idea que por cierto, también es errónea).

Finalmente, debemos considerar la manera en que se está usando el lenguaje cuando hablamos de desempeño. En el caso de Java, tenemos el clásico ejemplo de Vector vs. ArrayList: mientras un Vector es una colección de datos “segura” para implementar hilos de ejecución y paralelismo, ésta genera un fuerte golpe al desempeño debido a que controla el acceso concurrente sobre los elementos que ésta almacena. Por ello, tampoco es sano realizar nuestras comparaciones sin primero verificar que el código fuente está optimizado, ya que en algunos casos la programación es tan mala que el tiempo de ejecución se incrementará enormemente.

Java vs. C++: una comparación histórica

¿Cómo se comparan Java y C++ en términos de programas “de la vida real”? Actualmente abundan muchos microbenchmarks como el arriba mostrado, donde se verifican funciones muy simples, como manipulación de arreglos o acceso a memoria. Sin embargo, la mayoría de los casos de prueba son demasiado básicos como para ser un indicador confiable del desempeño. En la actualidad, existe un estudio comparativo formal: desarrollado por J. P. Lewis y Ulrich Neumann, investigadores de la Universidad del Sur de California (USC), el estudio se basa en 5 pruebas con diferentes versiones de Java y C++. Sus resultados, en términos generales, fueron los siguientes:

• Al comparar algoritmos numéricos como FFT, factorización de matrices o SOR en diferentes arquitecturas y compiladores, los investigadores encontraron que el desempeño de Java en plataformas Intel es razonablemente cercano al de C++ y que Java era más rápido que al menos un compilador en C (KAI sobre Linux Red Hat 5.0). En hardware con Intel Pentium, especialmente con Linux, la diferencia en desempeño es lo suficientemente pequeña como para carecer de importancia.

• Al utilizar el benchmark SciMark2 en una plataforma Intel, ellos encontraron que el IBM JDK 1.3.0 generaba un poder de procesamiento de 84.5 MFlops, mientras que el compilador de linux2.2 gcc (2.9x) era marginalmente mejor con 87.1 MFlops. Es decir, Java era tan sólo 3% más lento que C++.

• Utilizando implementaciones de métodos numéricos mediante objetos, ellos encontraron que Java se aproximaba bastante a los tiempos que tardaba C++ en ejecutarse. Por ejemplo, para generar el Triángulo de Pascal, Java tardaba 9 milisegundos mientras C++ tardaba 1.1 segundos. Para una Factorización LU, Java tardaba 1 segundo en resolver el problema mientras C++ tardaba hasta 3.9 segundos.

• Implementando microbenchmarks con y sin cache, los investigadores encontraron que Java se encuentra justo a la mitad entre los mejores y los peores compiladores de C++. Es decir, Java 3 es mejor que gcc 3.2, pero nunca le ganará a un gcc 4.1.0.

El problema que tengo con este estudio es que fue desarrollado hace ya algún tiempo – en aquél entonces, Lewis y Neumann compararon Java 2 o 3 contra las versiones de C++ disponibles entre 2003 y 2004 – por lo que si bien podemos darnos una mejor idea de que la velocidad de los programas definitivamente depende del compilador, hoy por hoy tendríamos que correr todas estas pruebas en plataformas multi-core, con la última versión de software disponible para darnos cuenta cuál es el estatus actual de esta “carrera armamentista”.

Java 7 vs. C++ (gcc) 4.6.3

Afortunadamente, los amigos de Debian han hecho su tarea de forma magnífica. Mediante crowdsourcing, ellos han estado comparando no sólo Java y C++, sino también implementaciones de otros lenguajes como Fortran, Ruby o Perl. Incluyendo árboles binarios, fractales de Mandelbrot o el cálculo de Pi (π), los resultados son bastante coherentes. Aunque las pruebas se desarrollaron en diferentes plataformas, para este caso nos enfocaremos en los resultados de correr estos programas en Intel Q6600 (Quad Core) con Ubuntu 5.10 x64:

Prueba Java SE 7 C++ 4.6.3 Mejor de su tipo (factor = 1.0)
N-Body 2.1 1.0 C++
Fannkuch-redux 1.9 1.4 ADA 2005 GNAT
Meteor-contest 15.0 1.0 C++
Fasta 3.4 1.7 C
Spectral-norm 2.3 1.0 Fortran Intel, ADA 2005 GNAT, C++ (empate)
Reverse-complement 1.9 1.0 C++
Mandelbrot 1.9 1.7 Fortran Intel
K-nucleotide 1.1 1.0 C++
Regex-dna 5.3 1.7 C
Pidigits 2.4 1.2 ATS
Chameneos-redux 7.8 1.1 ADA 2005 GNAT, C (empate)
Thread-ring 41.0 21.0 Haskell GHC
Binary-trees 1.6 1.6 C

Factor de desempeño en Java y C++ para diversos algoritmos matemáticos. El factor se mide como 1.0 = tiempo con el mejor desempeño. En la tabla se muestra que para el programa Fannkuch-redux, Java tardó 1.9 veces el mejor tiempo, mientras que C++ tardó 1.4 veces el mejor tiempo. En este ejemplo, el mejor tiempo se lo llevó el lenguaje ADA 2005 GNAT. Fuente: debian.org

Obteniendo la media, mejores y peores tiempos, también incluidos en el estudio, nos damos cuenta que Java no está lejos de alcanzar la velocidad de C++, aunque todavía permanece por debajo del desempeño logrado por éste lenguaje y sus optimizaciones:

Lenguaje Mejor Tiempo Peor Tiempo Media
C++ 1.00 1.69 1.21
Java 7 1.13 3.46 1.95

Comparación de desempeño para todas las pruebas en Java y C++. Fuente: debian.org

De hecho, si sólo tomamos los valores de la media, nos daremos cuenta que el factor de desempeño de Java es de 3.46/1.69 = 2.06 contra el de C++. Es decir, una relativamente amplia variedad de programas escritos en Java tardarían aproximadamente el doble de lo que tardarían si fueran escritos en C++. Esto es un precio a pagar muy pequeño si tomamos en cuenta los otros beneficios de Java, como portabilidad, facilidad de uso, o impedir que los programadores administren la memoria directamente (apuntadores, ¿alguien?).

Conclusiones

Aunque todavía le falta camino por recorrer, durante los últimos años Java ha disminuido su factor de desempeño contra C++ hasta alrededor del doble en plataformas Linux-Intel. Por lo que es necesario “iluminar a los no iniciados” para que se den cuenta que la “lentitud de Java” es una leyenda urbana que ha perdurado por más de 15 años sin un verdadero análisis que lo respalde. Por otro lado, es importante reconocer que ningún lenguaje es la “bala de plata”, por lo que Java o C++ deben implementarse de acuerdo al problema que queremos resolver: para acceder a recursos de bajo nivel como drivers, rutinas matemáticas o código embebido de alto desempeño, la respuesta la encontramos en C++. Para programas orientados a negocios o web que requieran facilidad de modificación, portabilidad o simplemente, cuyos problemas de desempeño puedan ser “matados a billetazos” (es decir, pagando por agregar hardware más potente), Java es una buena opción. Para finalizar, esto no debería ser una competencia para ver “quién es el mejor”, sino encontrar la manera de complementar ambos lenguajes. Después de todo, ambos son los más populares entre los programadores. En nuestro caso particular, una opción interesante será tener el procesamiento geoespacial en C++, mientras dejamos todo lo demás en Java y sus múltiples frameworks de desarrollo.

h1

Sobre Agil y “Radical Management”

1 noviembre, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

Sólo hay una definición válida para un objetivo de negocios: crear un nuevo cliente.

Peter Drucker (1909 – 2005), consultor de gestión, educador y autor Austriaco-Estadounidense.

Desde hace tiempo muchas organizaciones han buscado adoptar del paradigma ágil (Scrum, XP, Lean, Kanban) con el afán de mejorar la tasa de éxito en sus proyectos de desarrollo de software y a final de cuentas, mejorar las ganancias de la compañía. Sin embargo, en un contexto más general, ¿qué pasaría si los mismos principios que rigen estas metodologías se adoptaran no sólo al desarrollo de software, sino que formaran parte de la actitud predominante dentro de la compañía? Es interesante ver los resultados de este modelo organizacional en la práctica:

Stock Quotes: Salesforce, Cisco, Amazon, Apple and General Electric


Mientras ciertas empresas han “sobrevivido” con márgenes mínimos durante los últimos 4 años, otras han crecido enormemente. En la gráfica, el crecimiento accionario de Salesforce (púrpura: CRM), Amazon (amarillo, AMZN), Apple (rojo, AAPL), Cisco Systems (azul rey: CSCO) y General Electric (azul obscuro, GE). (Fuente: Google Finance)

¿Qué permite que empresas como Salesforce, Amazon o Apple logren un crecimiento de hasta 600% en 4 años mientras organizaciones como Cisco Systems y General Electric apenas se mantienen a flote? La respuesta es que están aplicando ágil a toda la empresa: no sólo al desarrollo de software, un producto, bien o servicio. Estas empresas basan su operación diaria en una nueva cultura organizacional denominada Gestión Radical; sus principios se enumeran a continuación:

• Deleitar a los clientes. En vez de decirle al cliente esto es lo que tenemos: tómalo o déjalo, la compañía se enfoca en ser vista como un solucionador de problemas o socio de negocios: entendemos tus problemas y te sorprenderemos resolviéndolos.

• Equipos auto-organizados. Dejar de lado el modelo de comando y control, donde el gerente o líder funge como capataz, asignando tareas y haciendo “marcación personal” a los miembros del equipo. Ahora, éste se vuelve un facilitador, eliminando obstáculos que impiden a sus subalternos hacer su trabajo.

• Coordinación dinámica. En vez de seguir procesos llenos de reglas, reportes y burocracia, el trabajo es iterativo; los objetivos de cada ciclo se basan en lo que más deleita al cliente; las decisiones sobre cómo debería hacerse el trabajo se delegan al equipo que directamente realizará la labor y el progreso es medido en base a la retroalimentación directa del cliente.

• De valor a valores. Es decir, cambiar de un enfoque meramente económico y de maximización de eficiencia hacia uno donde se inculquen valores como innovación y crecimiento sostenible.

• Conversación. Un cambio en la comunicación, tradicionalmente top-down, compuesta por órdenes jerárquicas en un solo sentido, hacia conversaciones maduras que solucionan problemas y generan nuevas ideas.

En realidad este concepto no es nuevo y tampoco es radical: sólo que muchas organizaciones han adoptado estos principios de forma aislada o local, e incluso algunas veces han echado estos principios por la borda, obteniendo pobres resultados: Google, que es reconocida como una de las empresas más innovadoras del mundo, ha metido la pata de vez en cuando; al obsesionarse con el éxito de Facebook, incursionó en las redes sociales con su Google+. Sobra decir, todo terminó en un enorme fiasco. Oponiéndose al principio de deleitar a los clientes, Google incluyó ideas propias que no gustaron a los usuarios (esto es lo que tenemos, tómalo o déjalo). A final de cuentas, a todos nos encanta el motor de búsqueda, pero pocos realmente queremos migrar a Google+.

Una crisis global… y quienes salen mejor parados

De acuerdo al estudio The Shift Index publicado por la consultora Deloitte, la mayoría de las empresas Estadounidenses – y por ende, del resto del mundo desarrollado – están viendo una disminución gradual en su desempeño desde 1965. La principal causa de este problema es el uso continuo de modelos de gestión empresarial completamente obsoletos, así como el hecho de que las tecnologías emergentes (internet, redes sociales, aplicaciones en “la nube”) le han dado suficiente empowerment al cliente como para “botar” un mal proveedor y encontrar rápidamente otro, incluso si éste se encuentra del otro lado del mundo.

Según el mismo estudio, las empresas que deseen mejorar sus prospectos a futuro tendrán que reinventarse a sí mismas, cambiando el enfoque basado en el jefe dentro de la compañía como centro del universo, hacia un modelo donde la organización y sus trabajadores se encuentren gravitando alrededor de las necesidades del cliente. De hecho, Michael Hugos, director del Centro para Innovación en Sistemas (c4si), comenta:

La profesión de TI está en un punto de inflexión: un grupo de profesionales de TI ha aprendido que ágil es el camino a seguir, pero los practicantes más tradicionales todavía lo consideran radical. Sin embargo, los tradicionalistas siguen aplicando las mismas viejas formas de hacer las cosas que dan lugar a los mismos proyectos terriblemente caros, multianuales, que producen sistemas apenas mejores de lo que había antes, si es que llegan a funcionar del todo. Cada vez más ejecutivos están llegando a la conclusión de que el apoyo efectivo a la agilidad del negocio es la razón principal de que su empresa cuente con un grupo interno de TI.

Five Reasons Why CIOs Should Consider Agile Development. Ryan Martens. (Rally’s AgileBlog, 2010).

Así que en realidad ágil ha pasado de ser algo “exclusivamente de los desarrolladores” a un modelo que debería ser adoptado por el resto de la organización.

Y un poco más cerca de casa

Y todo este análisis viene de un simple hecho: la compañía en la que estoy trabajando está poco a poco cortando el cordón umbilical con Estados Unidos – de hecho por eso no he posteado artículos estas últimas semanas. Ya que los mercados Norteamericano y Mexicano tienen necesidades diferentes (allá todo se trata de eficiencia, aquí es la seguridad), estamos buscando pasar de ser meramente reactivos y “tropicalizar y vender lo que hicieron los gringos” a innovar y crear cosas de forma local. Y desde el punto de vista económico no es difícil, pues sí hay plata, pero nos falta reorganizarnos para escuchar las necesidades del cliente y salir a resolver sus necesidades, en vez de ofrecer productos que se venden bien, pero cada vez tienen menos ingresos.

Aunque todavía nos falta mucho por hacer, ya estamos trabajando para incrementar la colaboración entre las diferentes áreas de la compañía y mejorar el proceso de “liberación de producto”, desde que se genera una necesidad, pasa por el área de desarrollo (tanto de hardware como software), hasta que la solución se etiqueta y libera comercialmente. ¿Todo va sobre ruedas? No del todo: viejas formas de pensar, procesos legados y ciertamente, la posibilidad de que no se dé un apoyo completo e incondicional por parte de “top management” pueden descarrilar la iniciativa. Así que… veremos si pasamos a ser un poco más ágiles e independientes como empresa o nos aplican un doloroso bitchslap.

h1

CMMI in Mexico and around the world (2012)

23 julio, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

Quality is free, but only to those who are willing to pay heavily for it.

– Tom DeMarco, Timothy Lister. Peopleware: Productive Projects and Teams. New York: Dorset House, 1987.

A couple of years ago I published an entry regarding what is CMMI and how are distributed the certifications of this popular quality model around the world. Nowadays, there have been many changes in the process itself and the publication of the results by the SEI, so it seems aproppriate to explain some points relevant to this version:

• CMMI has evolved not only to diagnose the processes of management or development of products and services. There are currently six “constellations” that detect the level of maturity in other areas within the organization:

  • CMMI-DEV: focused on product development.
  • CMMI-SVC: for definition, delivery and management of services.
  • CMMI-ACQ: emphasizes the acquisition of products and services from third parties.
  • CMMI-DEV+IPPD: model that evaluates the development of industrial products and services, using good practices from the Integrated Product and Process Development – IPPD. This is a model used by system integrators such as Boeing, General Dynamics or Raytheon.
  • CMMI-SVC+SSD: for deployment of call centers, software for quality management or consulting services based on systems that are part of software as a service.
  • People CMM: focused on managing and developing the workforce of the organization.

• Because of the different types of evaluations, some companies may have more than one active certification. For example, the Mexican company Taak Corporativo [assessment 17013, valid until August 10, 2014] has two certifications: one based on the CMMI-DEV v1.3 model (software development) and another based on the CMMI-SVC v1.3 model (consulting services). For purposes of this analysis, both assessments are accounted for separately.

• Again, there are many certifications shared between different countries through the integration of globalized services and business models where suppliers are outsourced around the world. A representative example is taken by the Indian company Tata Consultancy Services Limited [assessment 15250, effective until December 8, 2013] which has distributed business units among India, Argentina, Brazil, Chile, China, the United States, Hungary, Ireland, Japan, Mexico, the United Kingdom, South Africa and Uruguay. On this study, the evaluation for each country is accounted for separately, as the certification includes an assessment of each business unit independently.

• The appraisal results page by the SEI now includes a filter by country. However, care must be taken with the assessments presented, because clearly there are some errors in the distribution of certificates. For example, if we look for certifications of Jamaica, the page shows a certification awarded to Infosys Technologies Limited. Closer inspection allows us to realize due to a typographical error, this company which is from India, is incorrectly attributed to Jamaica.

• As in the previous version, some evaluations have a CMMI level 1 (chaotic). While they are published on the appraisal results page, these are not accounted for in the study. On the other hand, there are certifications that do not provide the level of the evaluation, or due to customer requirement, the level is not published. These certifications are not considered in the count.

Who is certified?

As of July 17, 2012, there were 4,031 active certifications around the world, spread across 84 countries. This represents an increase of just over 14% annually in the number of certifications from 2010 (3,135 certifications). The medal table is shown below:

Country/Level L2 L3 L4 L5 Total
China 39 1376 45 48 1508
United States 309 496 4 56 865
India 20 263 5 94 382
Spain 90 53 1 9 153
Korea, Republic of 31 52 9 9 101
Brazil 55 38 1 7 101
Mexico 51 33 2 8 94
Japan 17 54 8 10 89
Taiwan 19 43 4 1 67
France 41 23   1 65
Argentina 17 20   5 42
United Kingdom 15 22 1 4 42
Germany 17 19     36
Malaysia 4 29   2 35
Thailand 9 22   3 34
Italy 18 14     32
Egypt 13 15   1 29
Colombia 13 10 1 4 28
Canada 7 12 1 3 23
Chile 11 9   2 22
Vietnam   13 1 4 18
Portugal 7 8   2 17
Turkey   14   2 16
Philippines 3 8   4 15
Singapore 4 8 1   13
Saudi Arabia 2 6 2 2 12
Peru 6 5     11
Sri Lanka 2 8     10
Hong Kong 4 3   2 9
Jordan   8 1   9
Israel   5   3 8
United Arab Emirates 1 6   1 8
Russia 2 2   3 7
Australia 1 4   2 7
Pakistan 4 2   1 7
Switzerland 5 2     7
Poland 2 3 1   6
Bangladesh   6     6
Netherlands 2 4     6
Paraguay 6       6
Ukraine   3 1 1 5
Uruguay   2   2 4
Ireland 1 2   1 4
Belgium   4     4
Syria 1 3     4
Romania 2 2     4
Hungary 1   1 1 3
South Africa 1 1   1 3
Morocco 2   1   3
Slovakia   3     3
Panama 1 2     3
Norway 2 1     3
Denmark   1   1 2
Latvia   2     2
Lebanon   2     2
Austria 1 1     2
Costa Rica 1 1     2
Czech Republic 1 1     2
Kuwait 1 1     2
Qatar 1 1     2
Tunisia 1 1     2
Bulgaria 2       2
New Zealand       1 1
Belarus     1   1
Angola   1     1
Bahrain   1     1
Cambodia   1     1
El Salvador   1     1
Finland   1     1
Ghana   1     1
Guatemala   1     1
Indonesia   1     1
Kenia   1     1
Luxembourg   1     1
Malawi   1     1
Mauritius   1     1
Nepal   1     1
Oman   1     1
Brunei Darussalam 1       1
Cuba 1       1
Chipre 1       1
Iraq 1       1
Macedonia 1       1
Sweden 1       1
TOTAL 872 2766 92 301 4031

CMMI appraisal table by country, for each maturity level. Information last updated on July 17, 2012.

Again, interesting situations arise from the numbers obtained:

• The top ten with certifications is composed by the same countries that represent some of the largest economies in the world:

Country Appraisals
2012
Appraisals
2010
Growth Change in rank
China 1508 1048 44% (-)
United States 865 680 27% (-)
India 382 294 30% (-)
Spain 153 131 17% (-)
Korea, Republic of 101 71 42% (+2)
Brazil 101 98 3% (-1)
Mexico 94 70 34% (+2)
Japan 89 87 2% (-2)
Taiwan 67 67 0% (+1)
France 65 70 -7% (-2)
Rest of the World 606 519 17%  
TOTAL 4031 3135 29%  

Top 10 countries with certifications. Information last updated on July 17, 2012.

The most significant changes over the 2010 version took place in China, Korea and Mexico, as they grew in number of certifications by 44%, 42% and 34% respectively. By contrast, France lost 5 certifications because these were not renewed.

• For Level 5 certifications, India remains to be the country with more maturity in their organizations; Korea is tied with Spain for the fifth place, now there are four Latin American countries included in the top ten and there is a tie between four nations for the 9th position and four for the 10th spot:

Country Certifications L5
2012
Certifications L5
2010
Growth
1.India 94 64 30
2.United States 56 40 16
3.China 48 20 28
4.Japan 10 2 8
5.Korea, Republic of
5.Spain
9
9
2
2
7
7
6.Mexico 8 6 2
7.Brazil 7 4 3
8.Argentina 5 2 3
9.United Kingdom
9.Vietnam
9.Colombia
9.Philippines
4
4
4
4
4
1
2
-
-
3
2
4
10.Canada
10.Thailand
10.Israel
10.Russia
3
3
3
3
3
1
3
1
-
2
-
2
Rest of the World 27 21 6
TOTAL 301 178 123

Top 10 of certifications level 5. Information last updated on July 17, 2012.

• Latin America keeps moving ahead with a sustained increase from 280 to 316 certifications. The region is still dominated by Brazil and Mexico with 62% of the region’s total, but the surprise here is Colombia, who went from 18 to 28 certifications in less than two years. We also have to celebrate that Cuba has acquired its first certification, however for now it is only for academic purposes.

• The United States and Canada have grown in number of certifications from 702 to 888 altogether. This represents an increase of 26% since 2010.

• Europe groups together 406 certifications, from which not surprisingly, Spain has almost 38%. Its closest competitors include France, the United Kingdom, Germany, Italy and Portugal, however these nations are well below the massive participation shown by the Iberian country, for while the latter included 22 new certifications since 2010, the rest of the continent only contributed with 13 additional certifications.

• Sub-Saharan Africa remains to be the last region from them all, with a growth from 5 to 8 certifications assigned to South Africa, Angola, Ghana, Kenya, Malawi and Mauritius.

• By contrast, the Islamic world is emerging as a new player, with 137 certifications under its belt, almost doubling the 78 it had in 2010. Countries with more certifications in this group include Malaysia, Egypt, Turkey, Saudi Arabia and Jordan.

• Australia and New Zealand have decreased from 11 to 8 certifications altogether, almost all of them attributed to operational support organizations and manufacture of embedded systems.

• Russia has increased the number of certifications from 4 to 7, almost all acquired by financial and research and development organizations.

• Finally, as expected, growth is focused on Asia, from 1718 to 2248 certifications. Of particular importance we have China, India, Japan and South Korea, which have 93% of the certifications from this region.

CMMI 2012 Map



Map showing the CMMI appraisals by country. Information last updated on July 17, 2012.(Click on image or here to see at larger scale)

     1      17 – 32      513 – 1024
     2      33 – 64      1025 >
     3 – 4      65 – 128      Without appraisals
     5 – 8      129 – 256
     9 – 16      257 – 512

♫ Mexico lindo y querido… ♫

Mexico comprises 94 certifications, of which four are shared with Colombia, the United States and India. The list includes two certifications that are not being recorded, as the CMMI level with which they were certified is not known:

Organization Constellation Level Cities
LINK TECHNOLOGIES S.A.P.I. DE C.V. CMMI-DEV v1.2(Continuous) Sponsor Requests No ML Monterrey
Interfases y Sistemas Electrónicos, S.A. de C.V. (INTERSEL) CMMI-DEV v1.2(Continuous) Not Given Hermosillo
Hildebrando S.A. de C.V. CMMI-DEV v1.2(Staged) 5 Mexico, Queretaro, Aguascalientes
IBM (Application Management Services Mexico) CMMI-DEV v1.2(Staged) 5 Guadalajara
PRAXIS DE MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 5 Mexico
PSL S.A. CMMI-DEV v1.3(Staged) 5 Mexico, Medellin (Colombia)
QuarkSoft S.A. de C.V. CMMI-DEV v1.3(Staged) 5 Mexico, Zacatecas, Leon, Aguascalientes
Softtek CMMI-DEV v1.2(Staged) 5 Monterrey
Tata Consultancy Services Limited CMMI-SVC+SSD v1.2(Staged) 5 Mexico, Hyderabad (India)
ULTRASIST S.A. de C. V. CMMI-DEV v1.3(Staged) 5 Mexico
INNEVO CMMI-DEV v1.2(Staged) 4 Guadalajara
SERVICIOS TELEPRO S.A. de C.V. CMMI-DEV v1.3(Staged) 4 Mexico
Accenture CMMI-DEV v1.2(Staged) 3 Mexico
AD INFINITUM S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
AsTecI S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Queretaro
Brain Up Systems S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 Mexico
Business Intelligent Software S.A.P.I. de C.V. CMMI-DEV v1.2(Continuous) 3 Culiacan
Coppel SA de CV CMMI-DEV v1.2(Continuous) 3 Culiacan
D&T Tecnología S de RL de CV CMMI-DEV v1.2(Staged) 3 Guadalajara, Celaya
DESARROLLADORA HOMEX S.A. DE C.V CMMI-DEV v1.2(Staged) 3 Culiacan
Expert Sistemas Computacionales S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Expresión Informativa y Técnicas Organizadas, S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 Los Mochis
GONET México S.A. de C.V. CMMI-DEV v1.3(Staged) 3 Mexico, Monterrey, Cd. Obregon, Cuernavaca
IBM AMS México (GNP Account) CMMI-DEV v1.2(Staged) 3 Mexico
IBM AMS México (Modelo Account) CMMI-DEV v1.2(Staged) 3 Mexico
IDS COMERCIAL CMMI-DEV v1.2(Staged) 3 Mexico
ImagenSoft by Imagen y Sistemas Computacionales, S.C. CMMI-SVC v1.2(Continuous) 3 Los Mochis
INNOX-Innovacion Inteligente S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Guadalajara, Zacatecas
Intellego SC CMMI-DEV v1.3(Staged) 3 Mexico
Intelligent Network Technologies S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Saltillo
Logica Interactiva S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Tijuana, Cd. Juarez
MEDISIST SA DE CV CMMI-DEV v1.2(Staged) 3 Guadalajara
NOVUTEK S.C. CMMI-DEV v1.3(Staged) 3 Cd. Obregon
PROCETI CONSULTORES S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Qualtop SA de CV CMMI-SVC v1.3(Continuous) 3 Guadalajara, Los Mochis, Culiacan
Schneider Electric India Pvt Ltd CMMI-SVC v1.3(Staged) 3 Monterrey, Bangalore (India)
Servicios Estratégicos OPTA SMART S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
SOL SER SISTEM S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Queretaro
SYTECSO, S.A. de C.V CMMI-DEV v1.2(Staged) 3 Monterrey
Taak Corporativo (Product development and implementation projects) CMMI-DEV v1.3(Staged) 3 Guadalajara
TSI ARYL S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Hermosillo
T-Systems México, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Puebla
Vision Consulting CMMI-DEV v1.2(Staged) 3 Mexico
Vision Software Factory, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Queretaro
Zentrum Ziztemaz S.A. De C.V. CMMI-DEV v1.2(Staged) 3 Tijuana
Applied Protocol Interfaces S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Culiacan
Ariesware Soluciones S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Asesores en ERP S.C. (Estrasol) CMMI-SVC v1.3(Staged) 2 Guadalajara, Leon
Atalaya Systems S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Bioxor S. de R.L. de C.V. CMMI-DEV v1.3(Staged) 2 Guadalajara
Bufete Consultor Mexicano, S. A. de C. V. CMMI-DEV v1.2(Staged) 2 Mexico
Centro de Inteligencia Competitiva S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Mexico
Cibernética de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 San Miguel de Allende, Aguascalientes, Guadalajara
Compu Campo S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Zapopan
Computación Interactiva de Occidente, S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Consiss S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Monterrey
Consultoría en Comercio Electrónico S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
CONSULTORÍA Y APLICACIONES AVANZADAS DE ECM, S.A. DE C.V. CMMI-DEV v1.3(Staged) 2 Mexico
DAWCONS: DW IT SERVICES S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
DEMOSOFT S.C. CMMI-DEV v1.3(Staged) 2 Guadalajara
Ejecutivos en Computación y Servicios S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Escucho Consultoría SC CMMI-SVC v1.3(Staged) 2 Guadalajara
Factor Informático de Negocios S.A. de C.V. CMMI-SVC v1.2(Staged) 2 Los Mochis
Gestión de Tecnología Especializada S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Mexico
GEUSA, Grupo Embotelladoras Unidas S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Gobierno Digital S.A. de C.V. CMMI-DEV v1.3(Staged) 2 Queretaro
Grupo Empresarial EISEI S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Monterrey
Infoware, Servicios en Tecnología e Ingeniería de Información, S. C. CMMI-DEV v1.3(Staged) 2 Mexico, Leon
INGENIA GROUP INTERNET DESARROLLO SAPI de CV CMMI-DEV v1.3(Staged) 2 Mexico
Innovación y Control de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO CMMI-DEV v1.2(Staged) 2 Irapuato
Instituto Tecnologico Superior del Sur de Guanajuato (ITSUR) CMMI-DEV v1.2(Staged) 2 Uriangato
Interlatin CMMI-SVC+SSD v1.2(Continuous) 2 Mexico, Guadalajara
Mapdata S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Mexico
MASFUSION MULTIMEDIA S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
MG MICROS DE OCCIDENTE S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
MKIdeas Tech S.A. de C.V CMMI-DEV v1.2(Staged) 2 Guadalajara, Mexicali
Pounce Consulting S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara, Mexico, Palo Alto (California, USA)
PRODESIS MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 Mexico
Punto Medio Operadora S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
RESET S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Irapuato, Silao, Villagran
RQPortillo Firm S. de R.L. de C.V. CMMI-SVC v1.2(Staged) 2 Culiacan
SIMBIOSYS S.C. CMMI-DEV v1.2(Staged) 2 Leon
Sinergit S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Sistemas Avanzados Integrales SC CMMI-DEV v1.2(Staged) 2 Guadalajara
Sistemas Digitales en Telefonía, S.A de C.V CMMI-DEV v1.3(Staged) 2 Mexico, Guadalajara
SPOT Consultoria SC CMMI-DEV v1.3(Staged) 2 Mexico
SUSOC CMMI-SVC+SSD v1.2(Continuous) 2 Guadalajara
SYE SOFTWARE SA DE CV CMMI-DEV v1.3(Staged) 2 Guadalajara
Taak Corporativo (Service desk services) CMMI-SVC v1.3(Staged) 2 Guadalajara
Tecnología de Gestión y Comunicación S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Chihuahua
Tecnología en Informática y Administración S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Tecnología, Asesoría, Sistemas, S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Mexico
Universidad Tecnologica de León (UTL) CMMI-DEV v1.2(Staged) 2 Leon
Universidad Tecnologica del Norte de Guanajuato (UTNG) CMMI-DEV v1.2(Staged) 2 Dolores Hidalgo
VERSATIL CMMI-DEV v1.2(Staged) 2 Guadalajara

Certified organizations in Mexico as of July 17, 2012.

If we consider all business units as independent entities, Mexico had 117 certifications. Now it is the state of Jalisco (35) taking the lead, followed closely by Mexico City (28). Guanajuato (13) has had a significant growth while Nuevo Leon (10) and Sinaloa (10) are lagging behind. Queretaro (5), Sonora (3), Aguascalientes (3) and Baja California (3) have maintained a small but steady growth while Chihuahua (2), Puebla (1) and Coahuila (1) remain almost unchanged. On the contrary, Zacatecas (2) and Morelos (1) are now part of the CMMI club, but this is rather due to the expansion of organizations whose headquarters are outside those states.

Conclusions

In an increasingly competitive environment, we must use every tool at our disposal to attract business and investment: CMMI is clearly a means to achieve that. And these are not only castles in the air, as countries as diverse as Malaysia, Egypt, Chile and Vietnam are becoming suppliers of high technology and consulting services that already compete in the global market.

In the case of Mexico, we can see how it is steadily becoming an information technology powerhouse, because it has a reasonable number of qualified professionals, decent infrastructure and significant support from the Mexican government and organizations providing support to bolster competitiveness. Are we now part of the first world? Of course not, but considering the progress made in recent years, the future looks bright.

h1

CMMI en México y el mundo (2012)

20 julio, 2012

Wizdoc [Icon By Buuf]  Tips & Tricks.

La calidad es gratis, pero sólo para aquellos que están dispuestos a pagar un alto precio por ello.

– Tom DeMarco, Timothy Lister. Peopleware: Productive Projects and Teams. New York: Dorset House, 1987.

Hace un par de años publiqué un post relacionado a qué es CMMI y cómo están distribuidas las certificaciones de este popular modelo de calidad alrededor del mundo. Hoy por hoy, se han dado bastantes cambios en el proceso y la publicación de los resultados por parte del SEI, así que me parece pertinente explicar algunos puntos relevantes para esta versión:

• CMMI ha ido evolucionando no sólo para diagnosticar los procesos de gestión o desarrollo de productos y servicios. Actualmente existen seis “constelaciones” que permiten detectar el nivel de madurez en otras áreas dentro de la organización:

  • CMMI-DEV: enfocado al desarrollo de productos.
  • CMMI-SVC: para la definición, entrega y gestión de servicios.
  • CMMI-ACQ: hace hincapié en la adquisición de productos y servicios de terceros.
  • CMMI-DEV+IPPD: modelo que evalúa el desarrollo de productos y servicios industriales, usando buenas practicas del Desarrollo Integrado de Productos y Procesos (Integrated Product and Process Development – IPPD). Este es un modelo usado por integradores de sistemas como Boeing, General Dynamics o Raytheon.
  • CMMI-SVC+SSD: para despliegue de centros de atención telefónica, software de gestión de calidad o servicios de consultoría basados en sistemas de software como servicio.
  • People CMM: enfocado en la gestión y desarrollo de la fuerza de trabajo de la organización.

• Debido a los diferentes tipos de evaluaciones, algunas empresas pueden tener más de una certificación activa. Por ejemplo, la empresa mexicana Taak Corporativo [evaluación 17013, vigente hasta el 10 de Agosto de 2014] posee dos certificaciones: una basada en el modelo CMMI-DEV v1.3 (desarrollo de software) y otra basada en el CMMI-SVC v1.3 (servicios de consultoría). Para efectos de este análisis, ambas evaluaciones son contabilizadas por separado.

• De nueva cuenta, existen muchas certificaciones compartidas entre diferentes países gracias a la integración de servicios globalizados, así como modelos de negocio donde se subcontratan proveedores de diversas partes del mundo. Un ejemplo representativo lo lleva la compañía india Tata Consultancy Services Limited [evaluación 15250, vigente hasta el 8 de Diciembre de 2013] que tiene unidades de negocio distribuidas entre la India, Argentina, Brasil, Chile, China, Estados Unidos, Hungría, Irlanda, Japón, México, Reino Unido, Sudáfrica y Uruguay. En este estudio dicha evaluación cuenta para cada país por separado, ya que la certificación incluye una evaluación de cada unidad de negocios de manera independiente.

• La página de certificaciones otorgadas por el SEI finalmente ya incluye el filtro por país. Sin embargo, es necesario tener cuidado con las evaluaciones presentadas, porque claramente existen errores en la distribución de las certificaciones. Por ejemplo, si buscamos las certificaciones de Jamaica, la página nos muestra una certificación otorgada a Infosys Technologies Limited. Una inspección más detallada nos permite darnos cuenta que por un error tipográfico, esta empresa que es de la India, está incorrectamente atribuida a Jamaica.

• Así como en la versión anterior, algunas evaluaciones poseen un CMMI nivel 1 (caótico) que si bien están publicadas en la página de certificaciones otorgadas, no son contabilizadas en el estudio. Por otro lado, existen certificaciones en las que no se proporciona el valor de la evaluación o por requerimiento del cliente no se publica el nivel. Estas certificaciones tampoco son consideradas en el conteo.

¿Quiénes están certificados?

Al 17 de Julio de 2012, existían 4,031 certificaciones activas alrededor del mundo, repartidas entre 84 países. Esto representa un crecimiento de poco más del 14% anual en número de certificaciones desde el 2010 (3,135 certificaciones). El “medallero” se muestra a continuación:

País/Nivel L2 L3 L4 L5 Total
China 39 1376 45 48 1508
Estados Unidos 309 496 4 56 865
India 20 263 5 94 382
España 90 53 1 9 153
Corea del Sur 31 52 9 9 101
Brasil 55 38 1 7 101
México 51 33 2 8 94
Japón 17 54 8 10 89
Taiwán 19 43 4 1 67
Francia 41 23   1 65
Argentina 17 20   5 42
Reino Unido 15 22 1 4 42
Alemania 17 19     36
Malasia 4 29   2 35
Tailandia 9 22   3 34
Italia 18 14     32
Egipto 13 15   1 29
Colombia 13 10 1 4 28
Canadá 7 12 1 3 23
Chile 11 9   2 22
Vietnam   13 1 4 18
Portugal 7 8   2 17
Turquía   14   2 16
Filipinas 3 8   4 15
Singapur 4 8 1   13
Arabia Saudita 2 6 2 2 12
Perú 6 5     11
Sri Lanka 2 8     10
Hong Kong 4 3   2 9
Jordania   8 1   9
Israel   5   3 8
Emiratos Árabes Unidos 1 6   1 8
Rusia 2 2   3 7
Australia 1 4   2 7
Pakistán 4 2   1 7
Suiza 5 2     7
Polonia 2 3 1   6
Bangladesh   6     6
Países Bajos 2 4     6
Paraguay 6       6
Ucrania   3 1 1 5
Uruguay   2   2 4
Irlanda 1 2   1 4
Bélgica   4     4
Siria 1 3     4
Rumania 2 2     4
Hungría 1   1 1 3
Sudáfrica 1 1   1 3
Marruecos 2   1   3
Eslovaquia   3     3
Panamá 1 2     3
Noruega 2 1     3
Dinamarca   1   1 2
Letonia   2     2
Líbano   2     2
Austria 1 1     2
Costa Rica 1 1     2
República Checa 1 1     2
Kuwait 1 1     2
Qatar 1 1     2
Túnez 1 1     2
Bulgaria 2       2
Nueva Zelanda       1 1
Belarús     1   1
Angola   1     1
Bahréin   1     1
Camboya   1     1
El Salvador   1     1
Finlandia   1     1
Ghana   1     1
Guatemala   1     1
Indonesia   1     1
Kenia   1     1
Luxemburgo   1     1
Malawi   1     1
Mauricio   1     1
Nepal   1     1
Omán   1     1
Brunei Darussalam 1       1
Cuba 1       1
Chipre 1       1
Irak 1       1
Macedonia 1       1
Suecia 1       1
TOTAL 872 2766 92 301 4031

Tabla de certificaciones por país, para cada nivel de madurez. Información actualizada al 17 de Julio de 2012.

Nuevamente, surgen interesantes situaciones a partir de los números obtenidos:

• El top ten de certificaciones se lo vuelven a llevar los mismos países que representan algunas de las economías más grandes del mundo:

País Certificaciones
2012
Certificaciones
2010
Crecimiento Cambio en ranking
China 1508 1048 44% (-)
Estados Unidos 865 680 27% (-)
India 382 294 30% (-)
España 153 131 17% (-)
Corea del Sur 101 71 42% (+2)
Brasil 101 98 3% (-1)
México 94 70 34% (+2)
Japón 89 87 2% (-2)
Taiwán 67 67 0% (+1)
Francia 65 70 -7% (-2)
Resto del Mundo 606 519 17%  
TOTAL 4031 3135 29%  

Top 10 de certificaciones. Información actualizada al 17 de Julio de 2012.

Los cambios más significativos con respecto a la versión del 2010 se dieron en China, Corea y México, pues crecieron en número de certificaciones en 44%, 42% y 34%, respectivamente. Por el contrario, Francia perdió 5 certificaciones debido a que éstas no fueron renovadas.

• Con respecto a certificaciones nivel 5, la India sigue siendo el país con mayor madurez en sus organizaciones; Corea está empatando con España por el quinto puesto; ahora cuatro países Latinoamericanos se incluyen en el top ten y hay un empate entre cuatro naciones por la posición número 9 y otras cuatro por la posición número 10:

País Certificaciones L5
2012
Certificaciones L5
2010
Crecimiento
1.India 94 64 30
2.Estados Unidos 56 40 16
3.China 48 20 28
4.Japón 10 2 8
5.Corea del Sur
5.España
9
9
2
2
7
7
6.México 8 6 2
7.Brasil 7 4 3
8.Argentina 5 2 3
9.Reino Unido
9.Vietnam
9.Colombia
9.Filipinas
4
4
4
4
4
1
2
-
-
3
2
4
10.Canadá
10.Tailandia
10.Israel
10.Rusia
3
3
3
3
3
1
3
1
-
2
-
2
Resto del Mundo 27 21 6
TOTAL 301 178 123

Top 10 de certificaciones nivel 5. Información actualizada al 17 de Julio de 2012.

• Latinoamérica sigue avanzando con un crecimiento sostenido de 280 a 316 certificaciones. La región sigue dominada por Brasil y México con 62% del total regional; sin embargo, la sorpresa se la lleva Colombia, que pasó de 18 a 28 certificaciones en poco menos de dos años. También es de celebrarse que Cuba haya adquirido su primera certificación, aunque de momento sea sólo por motivos académicos.

• Estados Unidos y Canadá han crecido en número de certificaciones de 702 hasta 888 de manera conjunta. Esto representa un aumento del 26% con respecto a 2010.

• Europa agrupa 406 certificaciones, de las cuales no es de sorprenderse, España posee casi el 38%. Sus competidores más cercanos incluyen Francia, el Reino Unido, Alemania, Italia y Portugal; sin embargo, estas naciones están muy por debajo de la enorme participación mostrada por el país Ibérico, ya que mientras éste incluyó 22 el certificaciones nuevas desde 2010, el resto del continente sólo contribuyó con 13 adicionales.

• El África Subsahariana sigue estando al último, con un crecimiento de 5 a 8 certificaciones asignadas a Sudáfrica, Angola, Ghana, Kenia, Malawi y Mauricio.

• Por el contrario, el mundo islámico se está perfilando como un nuevo jugador, con 137 certificaciones en su haber, casi duplicando las 78 que tenía en 2010. Los países con más certificaciones de este grupo incluyen Malasia, Egipto, Turquía, Arabia Saudita y Jordania.

• Australia y Nueva Zelanda han disminuido de 11 a 8 certificaciones conjuntamente; casi todas ellas atribuidas a organizaciones de soporte operativo y manufactura de sistemas integrados.

• Rusia ha aumentando el número de certificaciones de 4 a 7, casi todas adquiridas por organizaciones financieras o de investigación y desarrollo.

• Finalmente, como era de esperarse, el crecimiento se centra en Asia, pasando de 1718 a 2248 certificaciones. De especial importancia tenemos a China, India, Japón y Corea del Sur, que poseen el 93% de las certificaciones de esta región.

CMMI 2012 Map



Mapa que muestra las certificaciones CMMI por país. Información actualizada al 17 de Julio de 2012. (Dar click en imagen o aquí para ver a mayor escala)

     1      17 – 32      513 – 1024
     2      33 – 64      1025 >
     3 – 4      65 – 128      Sin certificaciones
     5 – 8      129 – 256
     9 – 16      257 – 512

♫ México lindo y querido… ♫

México agrupa 94 certificaciones, de las cuales cuatro son compartidas con Colombia, Estados Unidos y la India. El listado incluye dos certificaciones que no se están contabilizando, ya que se desconoce el nivel CMMI con el que fueron certificadas:

Organización Constelación Nivel Ciudades
LINK TECHNOLOGIES S.A.P.I. DE C.V. CMMI-DEV v1.2(Continuous) Restringido Monterrey
Interfases y Sistemas Electrónicos, S.A. de C.V. (INTERSEL) CMMI-DEV v1.2(Continuous) No Disponible Hermosillo
Hildebrando S.A. de C.V. CMMI-DEV v1.2(Staged) 5 México, Querétaro, Aguascalientes
IBM (Application Management Services Mexico) CMMI-DEV v1.2(Staged) 5 Guadalajara
PRAXIS DE MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 5 México
PSL S.A. CMMI-DEV v1.3(Staged) 5 México, Medellin (Colombia)
QuarkSoft S.A. de C.V. CMMI-DEV v1.3(Staged) 5 México, Zacatecas, León, Aguascalientes
Softtek CMMI-DEV v1.2(Staged) 5 Monterrey
Tata Consultancy Services Limited CMMI-SVC+SSD v1.2(Staged) 5 México, Hyderabad (India)
ULTRASIST S.A. de C. V. CMMI-DEV v1.3(Staged) 5 México
INNEVO CMMI-DEV v1.2(Staged) 4 Guadalajara
SERVICIOS TELEPRO S.A. de C.V. CMMI-DEV v1.3(Staged) 4 México
Accenture CMMI-DEV v1.2(Staged) 3 México
AD INFINITUM S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
AsTecI S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Querétaro
Brain Up Systems S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 México
Business Intelligent Software S.A.P.I. de C.V. CMMI-DEV v1.2(Continuous) 3 Culiacán
Coppel SA de CV CMMI-DEV v1.2(Continuous) 3 Culiacán
D&T Tecnología S de RL de CV CMMI-DEV v1.2(Staged) 3 Guadalajara, Celaya
DESARROLLADORA HOMEX S.A. DE C.V CMMI-DEV v1.2(Staged) 3 Culiacán
Expert Sistemas Computacionales S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Expresión Informativa y Técnicas Organizadas, S.A. de C.V. CMMI-SVC v1.2(Continuous) 3 Los Mochis
GONET México S.A. de C.V. CMMI-DEV v1.3(Staged) 3 México, Monterrey, Cd. Obregon, Cuernavaca
IBM AMS México (GNP Account) CMMI-DEV v1.2(Staged) 3 México
IBM AMS México (Modelo Account) CMMI-DEV v1.2(Staged) 3 México
IDS COMERCIAL CMMI-DEV v1.2(Staged) 3 México
ImagenSoft by Imagen y Sistemas Computacionales, S.C. CMMI-SVC v1.2(Continuous) 3 Los Mochis
INNOX-Innovacion Inteligente S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Guadalajara, Zacatecas
Intellego SC CMMI-DEV v1.3(Staged) 3 México
Intelligent Network Technologies S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Saltillo
Logica Interactiva S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Tijuana, Cd. Juarez
MEDISIST SA DE CV CMMI-DEV v1.2(Staged) 3 Guadalajara
NOVUTEK S.C. CMMI-DEV v1.3(Staged) 3 Cd. Obregon
PROCETI CONSULTORES S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
Qualtop SA de CV CMMI-SVC v1.3(Continuous) 3 Guadalajara, Los Mochis, Culiacán
Schneider Electric India Pvt Ltd CMMI-SVC v1.3(Staged) 3 Monterrey, Bengaluru (India)
Servicios Estratégicos OPTA SMART S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Monterrey
SOL SER SISTEM S.A DE C.V. CMMI-DEV v1.2(Staged) 3 Querétaro
SYTECSO, S.A. de C.V CMMI-DEV v1.2(Staged) 3 Monterrey
Taak Corporativo (Product development and implementation projects) CMMI-DEV v1.3(Staged) 3 Guadalajara
TSI ARYL S. de R.L. de C.V. CMMI-DEV v1.2(Staged) 3 Hermosillo
T-Systems México, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Puebla
Vision Consulting CMMI-DEV v1.2(Staged) 3 México
Vision Software Factory, S.A. de C.V. CMMI-DEV v1.2(Staged) 3 Querétaro
Zentrum Ziztemaz S.A. De C.V. CMMI-DEV v1.2(Staged) 3 Tijuana
Applied Protocol Interfaces S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Culiacán
Ariesware Soluciones S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Asesores en ERP S.C. (Estrasol) CMMI-SVC v1.3(Staged) 2 Guadalajara, León
Atalaya Systems S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Bioxor S. de R.L. de C.V. CMMI-DEV v1.3(Staged) 2 Guadalajara
Bufete Consultor Mexicano, S. A. de C. V. CMMI-DEV v1.2(Staged) 2 México
Centro de Inteligencia Competitiva S.A. de C.V. CMMI-DEV v1.2(Staged) 2 México
Cibernética de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 San Miguel de Allende, Aguascalientes, Guadalajara
Compu Campo S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Zapopan
Computación Interactiva de Occidente, S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
Consiss S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Monterrey
Consultoría en Comercio Electrónico S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
CONSULTORÍA Y APLICACIONES AVANZADAS DE ECM, S.A. DE C.V. CMMI-DEV v1.3(Staged) 2 México
DAWCONS: DW IT SERVICES S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
DEMOSOFT S.C. CMMI-DEV v1.3(Staged) 2 Guadalajara
Ejecutivos en Computación y Servicios S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Escucho Consultoría SC CMMI-SVC v1.3(Staged) 2 Guadalajara
Factor Informático de Negocios S.A. de C.V. CMMI-SVC v1.2(Staged) 2 Los Mochis
Gestión de Tecnología Especializada S.A. de C.V. CMMI-SVC v1.3(Staged) 2 México
GEUSA, Grupo Embotelladoras Unidas S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Gobierno Digital S.A. de C.V. CMMI-DEV v1.3(Staged) 2 Querétaro
Grupo Empresarial EISEI S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Monterrey
Infoware, Servicios en Tecnología e Ingeniería de Información, S. C. CMMI-DEV v1.3(Staged) 2 México, León
INGENIA GROUP INTERNET DESARROLLO SAPI de CV CMMI-DEV v1.3(Staged) 2 México
Innovación y Control de México S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
INSTITUTO TECNOLOGICO SUPERIOR DE IRAPUATO CMMI-DEV v1.2(Staged) 2 Irapuato
Instituto Tecnologico Superior del Sur de Guanajuato (ITSUR) CMMI-DEV v1.2(Staged) 2 Uriangato
Interlatin CMMI-SVC+SSD v1.2(Continuous) 2 México, Guadalajara
Mapdata S.A. de C.V. CMMI-DEV v1.2(Staged) 2 México
MASFUSION MULTIMEDIA S.C. CMMI-SVC v1.3(Staged) 2 Guadalajara
MG MICROS DE OCCIDENTE S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
MKIdeas Tech S.A. de C.V CMMI-DEV v1.2(Staged) 2 Guadalajara, Mexicali
Pounce Consulting S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara, México, Palo Alto (California, EE.UU.)
PRODESIS MÉXICO, S.A. DE C.V. CMMI-DEV v1.2(Staged) 2 México
Punto Medio Operadora S.A. de C.V. CMMI-SVC v1.3(Staged) 2 Guadalajara
RESET S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Irapuato, Silao, Villagran
RQPortillo Firm S. de R.L. de C.V. CMMI-SVC v1.2(Staged) 2 Culiacán
SIMBIOSYS S.C. CMMI-DEV v1.2(Staged) 2 León
Sinergit S.A. de C.V. CMMI-DEV v1.2(Continuous) 2 Guadalajara
Sistemas Avanzados Integrales SC CMMI-DEV v1.2(Staged) 2 Guadalajara
Sistemas Digitales en Telefonía, S.A de C.V CMMI-DEV v1.3(Staged) 2 México, Guadalajara
SPOT Consultoria SC CMMI-DEV v1.3(Staged) 2 México
SUSOC CMMI-SVC+SSD v1.2(Continuous) 2 Guadalajara
SYE SOFTWARE SA DE CV CMMI-DEV v1.3(Staged) 2 Guadalajara
Taak Corporativo (Service desk services) CMMI-SVC v1.3(Staged) 2 Guadalajara
Tecnología de Gestión y Comunicación S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Chihuahua
Tecnología en Informática y Administración S.A. de C.V. CMMI-DEV v1.2(Staged) 2 Guadalajara
Tecnología, Asesoría, Sistemas, S.A. de C.V. CMMI-DEV v1.2(Staged) 2 México
Universidad Tecnologica de León (UTL) CMMI-DEV v1.2(Staged) 2 León
Universidad Tecnologica del Norte de Guanajuato (UTNG) CMMI-DEV v1.2(Staged) 2 Dolores Hidalgo
VERSATIL CMMI-DEV v1.2(Staged) 2 Guadalajara

Organizaciones certificadas en México por el SEI al 17 de Julio de 2012.

Si consideramos las unidades de negocio como entidades independientes, México tendría 117 certificaciones. Ahora es el estado de Jalisco (35) el que lleva la delantera, seguido de cerca por el Distrito Federal (28). Guanajuato (13) ha tenido un crecimiento muy importante mientras Nuevo León (10) y Sinaloa (10) se han quedado rezagados. Querétaro (5), Sonora (3), Aguascalientes (3) y Baja California (3) han mantenido un crecimiento pequeño pero estable mientras Chihuahua (2), Puebla (1) y Coahuila (1) permanecen casi sin cambios. Por el contrario, Zacatecas (2) y Morelos (1) ya forman parte del club CMMI, aunque más bien esto se debe a la expansión de organizaciones cuya casa matriz se encuentra fuera de dichos estados.

Conclusiones

En un entorno cada vez más competitivo, es necesario aprovechar todas las herramientas a nuestro alcance para atraer negocios e inversión: CMMI es claramente un medio para lograrlo. Y esto no sólo son castillos en el aire, ya que países tan diversos como Malasia, Egipto, Chile o Vietnam se están transformando en proveedores de alta tecnología y servicios de consultoría que ya compiten en el mercado global.

En el caso particular de México, es posible ver cómo se está convirtiendo poco a poco en una potencia en tecnologías de información, debido a que cuenta con una razonable cantidad de profesionistas calificados, una infraestructura decente y apoyos significativos que el gobierno y asociaciones mexicanas proporcionan para mejorar la competitividad. ¿Ya somos del primer mundo? Por supuesto que no, pero considerando los avances obtenidos en los últimos años, el futuro que nos espera se ve brillante.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 32 seguidores