miércoles, septiembre 30, 2009

Un reclamo por la simplicidad

En los últimos días, poco más de una semana, varias notas convergen a un problema que -a guiarnos por estos comentarios- parece que van alcanzando un tope: la creciente complejidad que resulta del diseño del software, al menos siguiendo la línea predominante publicada (No digo el promedio común de la industria, que sospecho que ha de ser mucho más humilde y próximo al Duct Tape Programmer de Joel Spolsky)
El primero en hablar es el mencionado Joel Spolsky, que presenta de ésta manera el problema:

Here is why I like duct tape programmers. Sometimes, you’re on a team, and you’re busy banging out the code, and somebody comes up to your desk, coffee mug in hand, and starts rattling on about how if you use multi-threaded COM apartments, your app will be 34% sparklier, and it’s not even that hard, because he’s written a bunch of templates, and all you have to do is multiply-inherit from 17 of his templates, each taking an average of 4 arguments, and you barely even have to write the body of the function. It’s just a gigantic list of multiple-inheritance from different classes and hey, presto, multi-apartment threaded COM. And your eyes are swimming, and you have no friggin’ idea what this frigtard is talking about, but he just won’t go away, and even if he does go away, he’s just going back into his office to write more of his clever classes constructed entirely from multiple inheritance from templates, without a single implementation body at all, and it’s going to crash like crazy and you’re going to get paged at night to come in and try to figure it out because he’ll be at some goddamn “Design Patterns” meetup.

And the duct-tape programmer is not afraid to say, “multiple inheritance sucks. Stop it. Just stop.”

Pocos días después, Rodrigo Corral, en su blog, toma el problema desde el punto de vista de la complejidad desbordada, invirtiendo una frase que Microsoft popularizara ( ‘hasta donde quieres llegar hoy?’), y convirtiéndola en una expresión de cansancio (¿Hasta donde podemos llegar?):
Un anuncio de Microsoft decia: ‘hasta donde quieres llegar hoy’ o algo así, pero la pregunta es más bien ¿hasta donde puede llegar la ingeniería del software?. Comenta Gustavo, vecino de blog y uno de los grandes de Sharepoint (y no solo de Sharepoint) que cada vez la complejidad de los proyectos de Sharepoint es mayor, tanto como para que en muchas ocasiones lo mejor sea esconder la cabeza como un avestruz. Yo lo se bien, pase de conocer a fondo la versión 2003 a caer en la sima de la transición a 2007. Hace tiempo que deje de ser un experto en Sharepoint, si es que alguna vez lo fui del todo, el salto a la versión 2007 me supero, demasiada complejidad para un humano mortal.

En mi opinión lo que Gustavo comenta no solo está ocurriendo en Sharepoint. Es un problema generalizado, cada vez más voces importantes del mundo de la ingeniería de software se preguntan si no hemos alcanzado un punto de singularidad en el que la complejidad de los problemas a resolver se ha incrementado más allá de lo manejable.

[...]Los sistemas son cada vez más complejos, exponencialmente más complejos, pero las herramientas han cambiado solo sutilmente. Ya nos sabemos eso de KISS, si, pero no es suficiente. En esencia, desde que Grace Murray, almirante de la marina estadounidense y probablemente la mujer más influyente en la historia de la ingeniería de software, invento el compilador, no se ha producido un cambio cualitativo importante en la forma en que se hace software. Codificar, compilar, depurar. Solo se han añadido billones de horas hombre al desarrollo de software. Fuerza bruta. El problema es hasta donde escala esta aproximación... cada vez parece más que hemos tocado techo. Hay quien incluso ha puesto nombre a este problema: el dilema de la divergencia del software. Ahí es nada…

[...]Yo personalmente soy pesimista. Todos los intentos de atajar la complejidad que hemos realizado han sido en vano. Los patrones parecían prometedores, pero aunque útiles no han supuesto una revolución. Las herramientas 4GL se postularon como una especie de bálsamo de Saxafrax, que se quedo en nada ¿alguien usa 4GL?. Las herramientas de modelado… en fin… esperemos a Oslo, pero mucho me temo que tampoco será mágico… y necesitamos mucha magia. Las herramientas no van a ser la solución al problema. Fijaros, llevo programando desde VB3.0. En la caja de todas la herramientas de programación que he usado desde entonces ponía algo parecido a ‘mejora tu productividad un X%, siendo X > 20’. He conocido VB4, VB5, VS6, VS2001 (productividad con esteroides gracias a .NET), VS2003… hasta VS2010. Si cada versión hubiese mejorado mi productividad lo que su marketing prometía ahora yo sería capaz de programar con la mente.

Finalmente, hace dos días, leo a Charles Young hablando de StreamInsight, de tal forma que representa claramente lo que Rodrigo comenta:
There are a couple of gotchas. First, don’t do what I did while experimenting. I created a QueryTemplate and serialised it to XML. I then tried to deserialise it as a second, identical, QueryTemplate in the same Server instance. I got back an InvalidDefinition error. It seems you can’t have identical QueryTemplates in a single StreamInsight Server instance.

The second thing to note is that the serialised QueryTemplate does not contain fully qualified references to your event types. You still have to define the event types in your application by calling the CreateEventType method. If you plan to store QueryTemplate XML in some custom repository, you will also need to store the fully qualified names of the .NET types your have defined for your events. Of course, you will also need to ensure that these types are available at runtime.

Much the same argument applies to adapters. The QueryTemplate XML does not contain any information on which input and output adapters you want to bind to your query. However, once you realise that your QueryTemplates are serialisable, it is simple to work out how you might store and manage the template in some repository together with event type and adapter information. All this information, taken together, defines the StreamInsight concept of a query. You can write code to extract it from the repository at run-time and run the query.

The current CTP is just a glorified SDK. Will Microsoft provide a repository and tooling in the release version? I have no idea. Given the freedom StreamInsight offers in terms of event definition, and given the fact that the engine can be hosted in custom applications, it is difficult to see how Microsoft could provide a totally generic end-to-end solution that would support externalisation of queries in any and all circumstances. They could provide a repository and API, and leave it to developers to write the code to exploit the repository. However, you would still need to write the LINQ together with code to create QueryTemplates and extract and upload XML to the repository.
...And so on...

En fin, quisiera sin embargo terminar diciendo que quizá lo que ha alcanzado un tope es el modo de encarar la construcción del software. Dada la complejidad, pretender abordarlo a nivel de campo no será materialmente posible. Disintiendo con Rodrigo, éste es el momento de marchar a los 4GL, aquél paradigma sistemáticamente descartado por los enamorados del código, especialmente si es el más novedoso, y elevar el nivel de abstracción. Mucho se ha hablado aquí de ésto, y no es necesario ser redundante.

miércoles, septiembre 23, 2009

USA: Crisis y fuga de cerebros

La crisis todavía presente está forjando un nuevo escenario, donde nuevos actores económicos aparecen, y otros sufren daños de alcance todavía no previsible. Infobae profesional, de Buenos Aires, señala hoy uno especial, la fuga de cerebros, en su impacto en Estados Unidos:
Por la crisis, EE.UU. atraviesa una alarmante fuga de cerebros
Profesionales altamente calificados que habían emigrado hace tiempo al país del norte en busca de mejores opciones de trabajo se van desalentados


Los profesionales altamente calificados que alguna vez llegaron a Estados Unidos en busca de mejores opciones de trabajo, abandonan hoy el país en número creciente, según las estimaciones de distintos especialistas.
Lo que antes era un goteo se convirtió en un diluvio, señaló el experto Vivek Wadhwa de la Universidad Duke, en Carolina del Norte, al resumir el fenómeno de la pérdida de cerebros extranjeros que sufre la nación en medio de la crisis.

Wadhwa, estudioso de la inmigración inversa, proyectó que para los próximos cinco años unos 100.000 profesionales regresarán a la India y otro tanto a China, detrás de beneficiosas ofertas de trabajo en dos mercados en rápida expansión.

"Por primera vez en la historia, nosotros experimentamos la fuga de cerebros que otros países sufrieron", añadió el analista. Tal tendencia despierta preocupaciones por la posible pérdida del poder competitivo en áreas como la ciencia, la tecnología y otros campos, según consigna el diario USA Today.
La nota proviene de USA Today, donde fue publicada el 20 de septiembre, firmada por Emily Bazar ("More of world's talented workers opt to leave USA"). El artículo, no muy extenso, lleva quinientos cuarenta y un comentarios a menos de tres días de su presentación. Algunos elementos importantes:

"What was a trickle has become a flood," says Duke University's Vivek Wadhwa, who studies reverse immigration.

Wadhwa projects that in the next five years, 100,000 immigrants will go back to India and 100,000 to China, countries that have had rapid economic growth.

"For the first time in American history, we are experiencing the brain drain that other countries experienced," he says.

Suren Dutia, CEO of TiE Global, a worldwide network of professionals who promote entrepreneurship, says the U.S. economy will suffer without these skilled workers. "If the country is going to maintain the kind of economic well-being that we've enjoyed for many years, that requires having these incredibly gifted individuals who have been educated and trained by us," he says.

Wadhwa surveyed 1,203 Indian and Chinese immigrants who had worked or been educated here before returning to their homelands and found the exodus has less to do with the faltering U.S. economy than with other factors:

Career opportunities. At NIIT, an information technology company based in New Delhi, about 10% of managers in India are returnees, mostly from the U.S., says CEO Vijay Thadani.

Most go into mid- to senior management and make "excellent employees," he says. "They're Indian, so they understand India, and they have lived outside the country."

China's government entices some skilled workers to return with incentives such as financial assistance and housing, says Wang Baodong, spokesman for the Chinese Embassy in Washington. "China needs a lot of well-trained personnel" in fields such as finance and information technology, he says.

Quality of life and family ties. People return to India to reconnect with their families and culture, Dutia says. "They have a support system there, family and friends."

Purchasing power is greater, he says, which allows returnees to afford more luxuries than they did in the U.S. Dutia describes a complex of "magnificent homes" in Bangalore. In the club room, there were "all these Americans and Europeans and expats on the treadmills with iPhones, watching CNN and BBC," he says. "Things have changed."

•Immigration delays. Multinational companies that belong to the American Council on International Personnel tell Executive Director Lynn Shotwell that skilled immigrants are discouraged by the immigration process, she says. Some can wait up to a decade for permanent residency, she says. "They're frustrated with having an uncertain immigration status," she says. "They're giving up."

Las cargas se están acomodando; dos crisis sucesivas en menos de una década, afectando particularmente al mundo tecnológico, han diluído el papel innovador y avanzado de Estados Unidos (lo ejemplifica claramente Silicon Valley), y le han agregado una resistencia creciente a la entrada de extranjeros en general, afectando a la tecnología en la reducción drástica de visas (las H1B), y en las condiciones para obtenerlas. Este panorama ha favorecido el pensar en otros destinos, y otros interesados están tomando posiciones.
Así como el artículo de USA Today destaca las iniciativas de India y China, estos movimientos abarcan otros países tratando de ganar un lugar. Sería interesante conocer cómo es posible aprovechar este frágil equilibrio en nuestros países.

domingo, septiembre 20, 2009

Buena presentación sobre el estado del desarrollo basado en modelos

Pedro Molina, invitado a participar de la reunión anual de Genexus en Montevideo, preparó una muy buena presentación del estado del desarrollo basado en modelos y sus perspectivas actuales. El video de su charla se puede seguir en su sitio.

Plex: A tres días de la conferencia


Esta semana, desde el 23 hasta el 25, se desarrolla la cuarta CA 2E/Plex Worldwide Developer Conference. No estaré, pero espero que el próximo año sea distinto. En el sitio de la conferencia puede consultarse el programa de sesiones para los tres días (a propósito, la grilla del programa de actividades está hecha con Plex y XML).
Quisiera destacar de su contenido, la nota inicial de Simon Williams, capaz de dar una visión en perspectiva del producto, considerando que es su constructor inicial. Y luego, la gran cantidad de material sobre la orientación de Plex a servicios Web y aplicaciones Web: Plex y WCF, desarrollo con Ajax, Plex y XML, y otras de mucho interés. Se puede observar una gran potenciación de la actividad de terceros, tanto empresas como usuarios individuales.
Trataremos de disponer aquí las presentaciones o sus enlaces públicos tan pronto estén disponibles.
La conferencia en la Wiki (estarán seguramente aquí las presentaciones).
La conferencia en Facebook.

Desarrollo de aplicaciones y Web 2.0

Rescatado de Eclipse Zone, escrito por Zviki Cohen, el catorce de abril de 2008:
The Future

As I mentioned, there are some immediate benefits from having an online IDE, especially: no installation and instant deployment. IMHO, this is just the tip of the iceberg. Here are just a few thoughts of what we might expect:

  • Online IDEs open new capabilities of sharing and collaboration. Consider doing pair-programming with your colleague, which is sitting in another continent.
  • This can be even more useful when it comes to outsourcing and your coworker is an occasional developer. For example, I need the services of an expert DBA. I can find one online in elance and work together on my project immediately.
  • On-demand services open new possibilities: instead of buying a profiler for $500, maybe I'll just pay for the time which I'm using it.
  • Mash-ups: I can use Google Page Creator to design my project's web pages and Yahoo Pipes to define a web service. All as part of the same project. Today, Eclipse is already a mash-up of OSGi services. Tomorrow, it may be a mash-up of web services or REST.
  • All the online services I mentioned in this post had to developed their own IDEs. I'm sure future vendors will be more than happy to use an existing online IDE and develop plug-ins on top of it. As the number of online services provided grow, the need becomes more imminent.

I'm just guessing here, but it does open up new directions and opportunities.

domingo, septiembre 06, 2009

El uso de tecnologías en la administración

Un colega interesado en la política 2.0 encontró, a propósito de las recientes elecciones argentinas, un artículo que mostraba cómo los políticos mendocinos (para quien no lo sepa, Mendoza es una provincia argentina de buen desarrollo económico y educativo) adherían y entendían el uso de Internet (en particular, el uso de Facebook, como eco de la campaña norteamericana de Obama): gran despliege de actividad y participación, y cero al día siguiente de las elecciones.
Gracias y chau: los políticos y Facebook, después de las elecciones
[...] Adolfo Bermejo perdió las elecciones y dos días después subió su último mensaje en Facebook. Nunca sabremos si lo hizo en persona o sus asesores, pero siempre llamó la atención que todos hablar de sí mismos en tercera persona. Esto es lo último que registra su Facebook: "Los jóvenes del PJ de mi departamento me pasaron este video sobre la actividad que realizaron durante la campaña. Muchas gracias a ellos por todas las ganas que le pusieron y a todos los que confiaron en mí para representarlos en el Senado de la Nación.Un fuerte abrazo a todos!".

Pero el que apagó la luz más temprano, con los primeros resultados de las urnas en la mano fue Omar Félix. A las 22.46 del domingo 28 de junio escribió su último mensaje: "Ahora a trabajar por todos los mendocinos. por los excluidos, por los que no tienen trabajo, por los que no están seguros, por los que necesitan justicia, por los que necesitan salud. Un gran abrazo...".

Algo parecido pasó con el perfil de Ernesto Sanz. pero como tiene una gran cantidad de "amigos" (y seguramente influye el hecho de que su partido ganó las elecciones) el sitio permanece vivo, con comentarios de gente que sube notas de dirios, fotos y videos. No hay mensajes de Sanz, sino muchas notas que hablan de él y que fueron publicadas por diversos medios.

El rivadaviense Ricardo Mansur se reconoce como una persona "no muy ducha" con las computadoras. Sin embargo, al ingresar a su Facebook puede verse que continuamente sigue sumando "amigos". Mansur asumirá en diciembre una banca de diputado nacional por Mendoza y no para de recibir felicitaciones. El agradecimiento por el apoyo es lo último que escribió el diputado electo, hace una semana: "Desde aquí -dice- reitero mi agradecimiento a todos los que aun me hacen llegar sus felicitaciones y a todos los que me brindaron su apoyo. A una semana del triunfo en Mendoza, con la fuerza y el impulso que nos dieron ustedes, los legisladores del Frente Cívico Federal repetimos el compromiso y los instamos a seguir aportando para encontrar soliciones en conjunto.

Pero si hay un perfil que está muerto, ese es el de Omar De Marchi. Nada, no hay nada desde hace mucho tiempo. Aunque fue -hay que señalarlo- tal vez el candidato que usó mejor los recursos que ofrece Internet.

La curiosidad la aporta Juan Carlos Aguinaga, quien tiene cerrado el acceso a su perfil de Facebook para personas que él no aceptó con anticipación como sus "amigos". Por lo tanto, no pueden leerse mensajes suyos ni comentarios para él.

Esto quizá no sea tan anecdótico, ni limitado a Mendoza o Argentina. Las personas a cargo de las administraciones, cada vez que fugazmente se roza el tema en la actividad propia, revelan poco o nulo entendimiento de qué significa la herramienta que tienen a su disposición. Luego, así será lo que promuevan en su responsabilidad.
Me pregunto si aquellos que pueden facilitar u obstaculizar el despliegue del uso de Internet, son concientes de qué cosas se podrían hacer. De las cotidianeidades de la vida aquí (y no estoy diciendo que España haya hecho un gran recorrido ya), quisiera saber si un ciudadano argentino podría hacer alguna de estas cosas:
  • Mis hijos se inscriben a la Universidad exclusivamente por Internet, y lo pueden hacer desde cualquier sitio, o en su defecto, desde múltiples terminales disponibles en su establecimiento. Luego pueden seguir allí el estado de sus trámites, y sus actividades académicas. Usualmente, en trámites específicos, son advertidos a sus cuentas o por SMS a sus móviles.
  • Si estoy en una parada de autobús, puedo marcar un número en mi móvil, y recibir un aviso de cuántos minutos faltan para que llegue el próximo. En muchas de estas paradas, un display advierte esto mismo para las diversas líneas que paran allí (estoy hablando de Valencia; no estoy en condiciones de asegurar otros casos)
  • Cuando llega la época del pago de impuestos (que se pagan sin chistar), recibo por Internet, en mi cuenta, un borrador que es razonablemente claro, que especifica en qué elementos se basa, y que puedo aprobar o no. Eventualmente, puedo pedir por ese mismo medio una cita con un funcionario (hora y día), conversar con él, y definir allí mismo cuál será la declaración definitiva. Si acaso correspondiera que el fisco me devolviera un saldo, éste me llegaría en pocos días a mi cuenta automáticamente. Ah, cuando devolvieran el saldo, tendría un aviso en mi móvil o en mi cuenta de e-mail.
  • ¿Y cómo puede la Tesorería confeccionar este borrador? Porque una gran mayoría de las actividades económicas tributables están controladas, y generan registros que la Tesorería centraliza.
  • Si trabajo en relación de dependencia, recibo un informe de alta de mi contrato desde el Ministerio de Trabajo, y un estado anual (o de cada cambio de estado) de las características de mi contratación. Este estado es "off line", pero cuánto se apreciaría al menos así en Argentina, para ponerse a salvo de la falta de cumplimiento de obligaciones contractuales.
Sólo una pequeña lista, basada en lo que salta a la vista. ¿Visualizan estas alternativas nuestros administradores?

sábado, septiembre 05, 2009

Algo más sobre la orientación a la Web en la construccion de aplicaciones

Un post de Stefan Tilkov, seguramente ajeno a la discusión que generara Michael Braude, refuerza el criterio de prestar atención a las aplicaciones creadas para la Web. Redondeando esas ideas, Tilkov, que hace tiempo que opta por posts minimalistas, por primera vez dedica varios párrafos al tema:

I recently noticed more and more often how badly applications within the typical large-scale enterprise suck, and how much they would profit from some basic Web sanity applied to them. But for some reason, many enterprise software developers, whether they’re working with the .NET platform or with Java (more common among our customers), still believe that their software is different from what people use on the Web.

I’ve become convinced that you need something like an Eclipse RPC or Swing app only in very exceptional circumstances, most of which are usually not there in typical enterprise apps. The benefits of being able to centrally change something without having to deploy some sort of client alone usually outweigh any perceived or real disadvantages. But even if you don’t care about this aspect (because of the super-smart software roll-out solution you have), I still think that there are many more benefits of building Web apps:

  • Your users probably don’t care much about the things you think they do. They basically want to find information, enter some data, hit a button, enter some more data, and be done with it. They don’t care about being able to use the right mouse button, don’t care for dragging and dropping things, and entirely happy with a pretty basic design.
  • Even if you want to add some of these things, there are pretty easy to do nowadays with simply CSS and Ajax magic (no need for anything fancy like Air or Silverlight or Flash)..

But even if you buy into these arguments, many people still build Web apps that suck. Both within the enterprise as well as on the Web, I think good Web apps expose some, or ideally all of these characteristics:

  • There are meaningful “entry points” into the app - URIs. (No, I’m not going to mention the R-word.) It’s simply entirely unacceptable for a Web app to expose only a single URI, break the “Back” button, and disallow linking. Frameworks that don’t support URIs for application concepts, such as every customer, order, contact report, document etc. should simply be banned.
  • Application boundaries are a concern to developers, not users. The Web is about linking stuff together, without any concern about application boundaries. There’s absolutely no reason why you shouldn’t be able to follow a link in your CRM application that takes you to a product page in your online catalog, or from a customer record to the information about when they last logged in to the Web site, or from a page that’s part of a complex business process UI to the appropriate documentation and on to the discussion group where you can tell everybody how much it sucks.
  • Documents are accessible in a standard way. The idea of accessing any kind of document, such as an insurance application form that’s been scanned in, a letter sent to a business partner last year, or a contract with a business partner, by any other means than an HTTP GET is just stupid.

In other words: Many web frameworks, especially those within the Java space, try to support the development of desktop applications that are delivered over the Web as opposed to “web sites”, and I believe this idea is deeply flawed: Any Web application should be measured against the criteria that are used to judge web sites.

If you are an enterprise developer building applications, I suggest that you consider turning them into web sites instead. Why not do what makes your users happy for a change?

miércoles, septiembre 02, 2009

Otro frente de competencia para Microsoft

Mencionado primero en Denker Über, el nuevo frente abierto al predominio de Microsoft por VMware: "mientras Google es el ataque desde el “consumer side” la gente del virtualizador de sistemas operativos lo está atacando en datacenters y empresas… encima con el ex-número 3 de MSFT a la cabeza". Mariano Amartino comenta la nota de Steve Lohr en The New York Times. La afirmación de Lohr es que Google y VMware representan un riesgo serio al perdominio de Microsoft:
Google and VMware pose a broadly similar challenge to Microsoft, by potentially undermining the dominance of its most lucrative products, desktop software and operating systems. While Google represents the attack from above, VMware is the assault from beneath.
Google, the search giant, offers free advertising-supported software for e-mail, word processing, calendars and spreadsheets online, as alternatives to Microsoft’s popular Office products. For Web-based programs like these, it is the browser — not an operating system like Windows — that is the vital layer of software on the computer.

VMware is the leader in so-called virtual machine software, which allows a computer to run two or more operating systems at once. Its software resides on top of the hardware and beneath the operating system.

But as VMware’s technology becomes more powerful and it adds more features to its products, it can start to supplant the operating system from below — just as the browser can from above.
El artículo completo, en The New York Times.