Sabemos que Microsoft se ha llevado los empleos al otro lado del mundo, a India, a un lugar que no es reconocido precisamente por la buena calidad, en un mundo globalzado donde sólo se puede competir por precio o por calidad. Pero también podrían sucumbir empresas que decidan llevarse el desarrollo de software a ese país.
¿Acaso esto le da cada vez más la oportunidad a Google sobre Microsoft para tomar la delantera en la carrera por el mercado? Si juzgamos por la cantidad incremental de problemas, veremos que en efecto, con el tiempo así podría ser.
Para el lector casual, un bug es un error de programación que empuja a que la ejecución del software se detenga o que sucedan cosas indeseables.
Controles fantasma
Ibas a usar alguna de las opciones del menu, y por alguna razón algunas veces los controles que necesitas se quedan transparentes y nunca los puedes pinchar. En este ejemplo iba a dibujar una figura (shape) pero también pasa si vas a dibujar líneas, cambiar color de texto, insertar gráficos, etc.
La transparencia es muy útil para el fashion, especialmente si eres mujer y amante de la moda de los 1990. Pero en Excel lo que importa es la funcionalidad y Excel va de mal en peor. Al jefe y al cliente no les interesa la transparencia.
¿Solución? Reinicia Excel, y si eso no sirve, reinicia tu computadora. Cuando estás contra tiempo en el trabajo, seguro a tu jefe o al gerente o al cliente no les molestará esperar. ¿O sí?
Refrescamiento en el Explorer
Cuando copias un archivo de un directorio a otro, o cuando creas un archivo desde un programa, lo que esperas es que Explorer actualice y refresque la lista. Así funcionaba en Windows XP, pero en Windows 7 no es así. En Explorer ahora tienes que ir a la ventana y oprimir F5 para refrescar. La actualización es inconsistente, a veces sí, y de otras maneras no, como si hubiese una puerta trasera que si empuja la no actualización bajo ciertas circunstancias.
Windows 8 en el abandono, y ¿las siguientes versiones?
Cuando llegó el mundial de futbol, si tenías Windows 8 estabas viviendo en Marte. No había manera de descargar aplicaciones para estar al tanto del avance del mundial. Android parece haber desplazado a Windows 8 para smartphone. Windows no estaba hecho para ser eficiente, ni tampoco para funcionar como funciona Android, ni tampoco para tener una manera de disfrutar el mundial de futbol. Es una suerte que nunca haya comprado un smartphone con Windows 8.
La característica Alt Tab
En Windows XP tenías dos ventanas, la actual y la que acabas de visitar. Te movías entre ellas con Alt Tab. Esta característica ya no funciona de manera consistente. A veces sí funciona, y a veces te lleva a otras ventanas, y a veces acabas de visitar una ventana y oprimes y no lleva a ninguna parte. Funcionamiento inconsistente.
Cierre de programas
Tienes un programa que quieres cerrar. Usas el task manager nativo de Windows y a veces sí lo puedes cerra, y a veces no. Cuando el programa nativo de Windows no funciona, acudo a una aplicación que sí me lo permite. Se llama "Process Explorer" y se descarga desde www.sysinternals.com. No se entiende cómo un programa de terceros funciona mejor que la aplicación del sistema operativo. Process Explore te ofrece mejores vistas del performance de la máquina, y caundo le dices que cierre algo, hace el trabajo y lo cierra, y no como el task manager.
Desempeño de Internet Explorer
El Internet Explorer tiene una historia tormentosa. Su pobre desempeño dio cabida a Firefox, y recientemente a Chrome de Google. La desmejora en eficiencia hace que para muchas empresas la herramienta Chrome se vuelva el navegador oficial, porque tiene prestaciones sólidas, tiene un respaldo de una empresa seria, y tiene muchas características de software corporativo que le hacen atractivo. Incluso Chrome permite que puedas conectar tu laptop won wireless a un TV con HDMI por medio de la tecnología ChromeCast.
La ineficiencia no sólo se limitaba a Internet Explorer, sino que si creabas una página web en Word, el código HTML quedaba sucio y pesado para ejecutar. Esto dio cabida a Dreamweaver de Adobe, que entre una de sus funciones tiene la limpieza de código de HTML.
Refrescamiento de libros nuevos de Excel o libros cargados
Mira a la derecha, la famosa vista del libro inaccesible. Se trata de un libro de Excel nuevo, o de un libro que acabas de cargar. Miras que existe pero no puedes moverte a él para editarlo. Muchas excusas se han puesto, y ninguna funciona. El "workaround" que he encontrado es crear otro libro nuevo para que puedas trabajarlo. Es muy molesto. Si Android lo tuviera, seguro enojaría a sus usuarios.
Freezing de macros en Excel
Cuando programas macros que realizan procesos largos, puedes desactivar la actualización de video para acelerar ejecución, pero de vez en cuando quieres refrescar ventanas para dar un estatus de la situación, como lo harías en Visual basic, el lenguaje de programación, pero no funciona. La macro entra en freezing de video y ni siquiera funciona el CTRL-Break para interrumpir la ejecución. Simplemente no funciona y como cerrar la aplicación desde la barra de tareas a veces tampoco funciona, entonces no hay más remedio que acudir al Process Explorer, pues el Task Manager no sirve tampoco. El resultado es un sistema operativo que antes funcionaba, y ahora ya no. Una degradación de sistema operativo de Windows XP a Windows 7.
Interrupciones inexplicables
De vez en cuando usas marcadores para detener ejecución, y a veces oprimes CTRL-BREAK para interrumpir ejecución. Pero Excel tiene la mala maña de interrumpir macros de manera aleatoria. Es un bug nuevo, cada vez que aparece "On Error Goto 0" y otros comandos que parece equivaler a "Stop". Un bug imperdonable, señal de que los programadores de india no están haciendo beta testing, están siendo torpes en manejo de código, y por eso muestran un falso ahorro de 60% porque se están saltando el beta test antes de pasar a producción.
Macros que no graban nada
Hay ciertas tareas de Excel donde al poner a grabar una macro, simplemente no graba nada. Y no es que no exista código para esa tarea, sino que simplemente es como si Excel dijera "esto sí lo grabo, aquello no". Esto obliga a los usuarios no programadores que quieran hacer una macro a buscar cómo se escribe el código, y lo usual es que encuentren cosas muy ininteligibles, y que para convertirse en código genérico reutilizable, tendría que desentrañar.
Constantes descargas y actualizaciones
Si tienes una computadora no corporativa, verías que estabas trabajando y de repente se reinicia y lo que estuvieras haciendo se interrumpe y pierdes documentos, tareas, o simplemente enlaces de videos o sitios web en los que estabas navegando. Si bien se aprecia el que te mantengan el sistema al día, me pregunto si realmente se trata de actualizaciones de seguridad o simplemente son bug fixes.
Microsoft antes de India
Antes de entrar a India, Microsoft era un conglomerado de adquisiciones. ¿Qué nos dice el hecho de que una empresa compre compañías? Nos dice que prefiere comprar las cosas hechas, en lugar de innovar e inventar dentro de la compañía. Esto por supuesto crea un mosaico de culturas corporativas, y las decepcionantes emociones de los recortes de las fusiones y adquisiciones. No es de extrañar que Windows tuviera problemas.
Sin embargo, al mover tareas a India, podría estar saliendo de Guatemala para caer en Guatepeor. Y aquí los estándares y costumbres tienen un gran impacto. India es un país donde los estudios siempre muestran que todo anda bien en India, y por eso es imposible hacer política pública. Tienen mucha experiencia haciendo fraudes con números, haciendo lo que les venga en gana, y en pasar la culpa de sus errores a otros. Por supuesto, tienen virtudes, y también grandes talentos, pero he tenido la ocasión de observar casos reales de las chapuzas descritas en otras compañías que no son Microsoft. Y ya miramos los bugs persistentes en Microsoft e incidentes en otras compañías.
Eso me hace sentir un poco de lástima, porque en sí mismo, el lenguaje VBA de Microsoft resulta una excelente herramienta para hacer prototipos de software para gente que no es muy ducha en lenguajes de más bajo nivel como C++. Y aunque se habla de la ineficiencia de VBA, hay trucos para optimizar significativamente la ejecución. Pero preocupa mucho la prevalencia de bugs, y donde nos obigan a aceptarlos como normales.
Peligros de los bugs
El bug de software más espectacular y caro ocurrió con el lanzamiento del Arianne 5. Trataron de reutilizar código del Arianne 4, y para optimizar la ejecución, recortaron la detección de errores para que funcionara dentro de los rangos de valores para el Arianne 4. Por supuesto, el Arianne 5 tenía valores distintos. Error de pantalla azul en el cohete y luego explosión de millones de dólares convertidos en escombros.
Hay bugs que vienen del desarreglo, pero me llamó mucho la atención que tu código de Excel va a tener bugs si usaba la conducta anterior, donde al actualizar una celda recalculaba todos los valores de la hoja. Ahora ya no lo hace, de modo que si actualizabas una celda y esperabas que se recalculara todo, ahora eso no sucederá y tendrás un bug. Los bugs en tu código debido a este arreglo van a ser inesperados. Y aunque es un arreglo para optimizar, tu código va a sufrir por el cambio de conducta. Para arreglar el bug deberás agregar la línea de Excel VBA.
Application.Calculate
Los CTD ocasionales
Cuando programabas macros, hace un tiempo, de vez en cuando tenías CTD ocasionales. El CTD es un "crash to desktop" donde corres la macro que está bien en sintaxis, y de pronto Excel desaparece sin previo aviso y te quedas viendo al escritorio, señal de que un error echó abajo al Excel. Ya lo arreglaron, porque eso era más que inaguantable. ¿Te imaginas una macro en un banco que tire abajo a Excel y no se pueda entregar el reporte al gerente?
La calidad del software al otro lado del mundo
Si fuese que sólo veo esto en Microsoft, entonces apuntaría a la empresa con el dedo, pero al ver los problemas de software hecho al otro lado del mundo, veo que es un problema de calidad al otro lado del mundo. Uno pensaría que el problema de calidad viene al inicio, cuando programaron el software. Pero mi experiencia me demuestra que al otro lado del mundo tienen una manera muy particular de trabajar.
Miramos que en empresas hay algunos problemas de mantener proyectos de software en India:
- Algo que ayer funcionaba perfectamente, hoy ya no funciona.
- Ausencia de beta test. Creen ahorrarse así el 60% del tiempo de desarrollo. La ideología en India es lanzar y si falla, luego se corrige. Muestran una altísima productividad, pero una fiabilidad comparable de un software en etapa Alfa. Y con cada lanzamiento puede haber cosas que estaban bien, y que regresan a etapa Alfa.
- Desempeño inconsistente del software debido a pobre diseño y ausencia de frameworks que faciliten, acorten y simplifiquen el código. Si el código se divide en dos ramas, y cada rama en dos ramas, entonces programan las 4 ramas, en lugar de encapsular cada rama en funciones y procedimientos genéricos. Esto significa código más largo, susceptible de fallar en unas ramas y en otras no. Y en el largo plazo significa bugs inexplicables y resultado inconsistente. Por ejemplo, si 1+1=2, para algunos casos encontrarás que el resultado es 2 y para otros encontrarás que es 3. Resulta dificilísimo establecer los modos de falla cuando analizas los outputs que producen. Y cuando encapsulan como se debe, muchas veces terminan haciendo "hardcoding" que no permite dar mantenimiento con facilidad porque encriptan el código fuente.
- Carecen de repositorio central de código. Esto significa que si hoy tenías el código más actualizado, mañana podrías tener código más viejo.
- Output basura. La inconsistencia en el output pone en entredicho la fiabilidad de los reportes entregados. Faltantes de información, cálculos mal hechos.
- No puedes tomar decisiones con la información, y la fuente de error es incierta. tendrías que escarbar en el código.
- Gustan de encriptar el código fuente, como si estuvieran descubriendo la maravillosa pomada canaria, el bálsamo de fierabras. ¿O tal vez esa pieza de código es tan genial que permite que Snowden filtre datos a Wikileaks? Así no puede haber ojos que encuentren las fallas. Esto tiene un efecto secundario, y es que si el desarrollador deja de estar contigo y necesitas mantenimiento de software tienes que construir el software desde cero.
Esto puede dar dolores de cabeza a gerentes de pequeñas y grandes empresas, principalmente si se trata de cosas que puedan tener impacto en multas del SEC, "restatements" de estados financieros, auditorías externas, etc. Y por ende representa un riesgo para el inversionista, porque una empresa que antes estaba aparentemente bien de pronto tendría que corregir estados financieros de varios años, o podría pasar a ser privada y salirse de bolsa.
Un buen diseño de software debería ser construido sobre un "framework" de librerías (funciones encapsuladas) que hagan más corta la programación. El código del programa principal debería ser tan simple que un no programador debería entenderlo. Es que normalmente lo que hace una persona en un proceso manual es una colección de órdenes simples y entendibles, y el programa principal también debería ser así.
En 2004 Dell se llevó su call center de soporte a India, y empezó a caer. Y en 2007 tuvo que sacarlo de India. Todavía un call center se arregla cambiando a la gente porque las costumbres de los empleados son distintas, pero el software no se arregla por sí mismo moviendolo a otro país.
Los bugs no son exclusivos de India, pero por otras razones. Pero cuando el trasfondo de los bugs es cultural, hay mucha razón para preocuparse.
La ideología anglosajona dice que poniendo a un anglosajón a cargo podrán bloquear las malas costumbres, pero no es así. Al otro lado del mundo daben cómo engañar a los anglosajones, y como tirar la culpa de sus errores a gentes de otros países. Y así, las empresas terminan castigando inocentes y premiando los engaños. Pero el problema permanece y sólo es cosa de tiempo antes de que esta mala calidad termine con un gran escándalo financiero para la compañía.
Claro, si Microsoft llega a sufrir con India, un desmejoramiento gradual del desempeño que lanza a los clientes hacia productos de otras compañías, será una gran oportunidad para Google, que ya le hace perder terreno a Microsoft con Chrome, y poco a poco puede ir desplazando a la mega compañía que en tiempos de Bill Gates fuera casi un monopolio. Si llega a pasar, que la mala calidad del software que un día funciona y al otro no, y de pronto tengas acciones de una empresa valiosa y de repente unas acciones basura porque la gerencia quería ahorrarse dinero llevando el desarrollo de software al otro lado del mundo, que no se diga que no te advertí.
Y si eres español y programas cosas que no fallan, y tus jefes o clientes quieren llevarse tu trabajo a India, más te vale dar a conocer esto a tus jefes o clientes. No es tanto que te convenga a tí, sino que al hacerlo, por simple moda gerencial, van a pegarse un tiro en el zapato, y estarás haciéndoles un favor.