Qué tienen en la cabeza?

Saturday July 17th 2004, 9:24 pm
Filed under: Java

Resulta que conseguí un trabajito en RentACoder para arreglar unos bugs a un sistema, y estoy viendo como esta hecho.
Por ética no voy a dar nombres, pero aparentemente es un sistema comercial, desarrollado como portal vertical para una industria determinada.
Para empezar, ponen: “It is an object-oriented database implemented in a relational system”. No, no quiere decir que implementaron su propio OR mapping (lo que ya sería bastante estúpido), sino que cada tabla mapea exactamente a una clase, cada registro tiene un OID, y hay una tabla Link, que mapea OIDs de una clase con OIDs de otra, individualmente, o sea que hay una fila por cada OID que se relaciona con otro. O sea, para qué preocuparse por primary keys, foreing keys, constraints, etc, etc, si todo el mundo sabe que no sirven para nada?
Esto por supuesto hace que cualquier query que involucre un join sea imposible de hacer, y lleve a hacer asquerosidades como lo siguiente:


               Vector v = roleTable.findMembersByRole(stateObject.role);
                stateObject.list = new Vector();
                for(int i=0; i<v .size(); i++) {
                    Member member = (Member) v.get(i);
                    if (!"".equals(stateObject.email)) {
                        String email$ = member.getEmail().toLowerCase();
                        if (email$.startsWith(stateObject.email)) stateObject.list.add(member);
                    } else {
                        String lastname = member.getLastname().toLowerCase();
                        if (lastname.startsWith(stateObject.pattern)) stateObject.list.add(member);
                    }
                }

Como verán, al no poder hacer un join con la tabla de usuarios, tienen que recorrer todos los resultados de roles y filtrarlos en el código, haciendo otro query por cada uno (el famoso n+1) . No importa que haya 30 años de experiencia en desarrollo de base de datos, este programador creé saber mas que todos y que esta solución que implementó es eficiente.

Y vean esto:


public class RoleTable extends Table {
    public static Vector /* of Members */ findMembersByRole(String _role) {
        Vector results = new Vector();
        try {
            RoleTable roleTable = new RoleTable();
            MemberTable memberTable = new MemberTable();
            Vector v = roleTable.find(Role.ROLE+"='"+_role+"'", Role.USERNAME);
            for(int i=0; i<v .size(); i++) {
                Role role = (Role) v.get(i);
                Vector x = memberTable.find(Member.EMAIL+"='"+role.getUsername()+"'", null);
                if (x.size() > 0) {
                    results.addAll(x);
                }
            }
        } catch (Exception ex) {
            Debug.error(ex);
        }
}

Estando en un método de RoleTable, el tipo instancia otro RoleTable para llamar a find(), en vez de hacer this.find(). Sin duda muy eficiente, si.

Esta es la verdadera razón de porque hay tantas fallas y tantos proyectos de software fracasan, porque esta lleno de programadores que son unos inútiles e ignorantes, se ponen a laburar de algo apenas con una vaga noción. Imaginen si hubiera médicos ejerciendo con este nivel de capacitación?? Se atenderian con ellos? Entonces porque les dan trabajo a esta clase de programadores?


| show comment »

Inglés o castellano?

Friday July 09th 2004, 10:27 am
Filed under: General, Java

Estoy pensando si escribir esto en inglés o en castellano.
Estaría bueno que sea bilingüe, pero es mucho trabajo :) y este software no lo soporta (creo).
Creo que me voy a inclinar por el inglés, cualquier geek que se precie tiene que poder leer en inglés, haya nacido en Buenos Aires, China o Madagascar.
Después voy a publicar un breve ensayo sobre el inglés.



Nuevo blog! (y JBoss)

Friday July 09th 2004, 10:16 am
Filed under: General, Java

Hoy es feriado, y tengo que pasar gran parte del fin de semana estudiando JBoss y EJB en general, para la entrevista que voy a tener el miércoles que viene con Dan Leuck en Globant, un british que viene exclusivamente para las entrevistas. Según me dijeron, el tipo hace mucho énfasis en patterns y todo lo que signifique “hacer las cosas bien”. Veremos que tal me va.

Es raro, los últimos meses ma la pasé leyendo por muchos lados que JBoss es una porquería, muy lento y que todos sus developers son una manga de engreídos soberbios. Parece que finalmente voy a tener la oportunidad de verificar la veracidad de todo esto (tampoco hay que creer todo lo que se lee en los blogs).


| show comment »