jueves, mayo 21, 2009

¿Desarrolladores o compradores compulsivos?

Imaginemos que estamos en el supermercado y que hay una prueba que quieren hacer para un estudio de la facultad, donde nos invita a participar de esta prueba de laboratorio que consiste en que nos dan un minuto y medio para llenar el changuito como querramos y antes del minuto y medio, tenemos que llegar a la caja para llevarnos gratis lo que hemos 'comprado'.

Seguramente habrá diferentes estrategias y una muy comúnque es la de comprar como loco lo que tenemos a mano. Podemos decir entonces que algunos desarrolladores creen que el desarrollo de sistemas es una prueba de laboratorio (un juego), y entonces el negocio aquí es poner frameworks y tecnologías para nuestros planes de estudio (CV), ups, quise decir para los proyectos. Sería lo mismo que si vamos al médico y nos comienza a dar remedios que no necesitamos, no nos va a gustar no? Es probable que no nos haga bien a la salud.

¿Cual debería ser nuestro pensamiento?

Para empezar el desarrollador de verdad lleva su trabajo en serio, eso significa que él no irá a introducir una tecnología o framework que el cliente no precisa. Es desarrollador verdadero, está preocupado en resolver los problemas del cliente y no los problema de su currículum
Ser desarrollador profesional implica que a veces tengamos que usar tecnologías que ya están ahí, hace un buen tiempo y que muchos conocen.

Un desarrollador profesional sabe la diferencia de innovación e innovar para el cliente y la diferencia de hacer las cosas para propósito solo personal.

Falta de ética...

Para algunos es una palabra fuerte. Pero es la verdad, realmente no entiendo porque un médico o un ingeniero civil pueden responder por sus actos y un desarrolldor de software sale ileso y sin responder a nada. Cuando un edificio cae porque está mal proyectado el ingeniero es el responsable y responde legalmente por eso, y cuando hablamos de desarrollo de software, lo máximo que va a pasar es que el desarrollador vea su CV aumentado con algunas tecnologías y frameworks mas, ¿y el cliente? ¿y la ética?

Infelizmente la ética no es un asunto que se converse mucho en los entornos de TI, aunque debería, así como los valores, esto ocurre porque muchos fabricantes de software solo quieren vender, vender y vender sus productos y si se las puede llamar a eso 'soluciones'.

De nada sirve el API....

Eso no es verdad para el desarrollador supermercadista, porque saber bien un API y tener muchas certificaciones cuenta mucho para que él aumente su salario. El problema es que el desarrollador supermercadista no sabe hacer una solución de verdad. Eso pasa porque no sabe entender los problemas del cliente, porque no entiende de requerimientos, de gestión de proyectos, de análisis, de base de datos y principalmente de diseño.

El diseño es lo que diferencia a los desarrolladores profesionales de los picapedreros. Un buen desarrollador tiene que ser un buen diseñador. Nuestro trabajo está mucho mas allá de elegir frameworks, está en entender las reglas de negocio y los requerimientos.

De nada sirve la tecnología sin...

Un propósito. Toda decisión debe estar basada en requisitos o problemas que la tecnología o framework va a resolver. Enfoquemos nuestro trabajo en las necesidades que tenemos, necesitamos ser rápidos, tener arquitecturas robustas, nuestras aplicaciones tiene que escalar, y por sobre todo tienen que tener calidad.

En la fecha en que estamos las aplicaciones no pueden salir a producción sin un mínimo de escalibilidad y eso puede ser controlado através de pruebas de stress y carga y principalmente a través de los requisitos. La tecnología solo es buena cuando está bien aplicada, de nada sirve Spring, EJB, WS-*/WS-RS, ESB, SOA y otras si no fueron bien aplicadas y el catalizador es el negocio.

Entonces, siempre está pendiente de nuevas tecnologías o frameworks que mejoren la calidad de nuestras soluciones, en lo posible no desarrollando soluciones que existan, que están probadas, y muchas veces son estandares de hecho en el mercado, y pongamos los límites de la utilización de ello, en que siempre la implantación de esto sea lo mejor para el cliente o para el negocio y no solo para nuestro CV.

Articulo original: ¿Desarrolladores o compradores compulsivos?

martes, mayo 19, 2009

Mitos sobre el liderazgo

Hemos adoptado muchos conceptos erróneos y mitos acerca de los líderes y el liderazgo.

He aquí los cinco más comunes:

El mito de la gerencia

Un malentendido muy difundido es que liderazgo y gerencia son lo mismo. Hasta hace unos pocos años, libros que afirmaban ser sobre liderazgo por lo general eran realmente sobre gerencia. La diferencia principal entre las dos cosas es que el liderazgo consiste en influir en la gente para que siga al líder, mientras que la gerencia enfoca los sistemas y procesos de mantenimiento. Como antiguo presidente y jefe principal de la Chrysler, Lee Iacocca comentó con ironía: “A veces hasta el mejor gerente es como aquel muchacho que pasea un perro grande y espera a ver dónde quiere ir el animal para entonces llevarlo allá”.

La mejor forma de probar si una persona es líder en vez de gerente, es pedirle que haga algunos cambios positivos. Los gerentes pueden mantener el rumbo, pero no pueden cambiarlo. Para cambiar el rumbo de las personas, usted necesita influencia.

El mito del empresario


Con gran frecuencia la gente supone que todos los vendedores y empresarios son líderes. Pero ese no siempre es el caso. Tal vez usted recuerda los comerciales de Ronco que aparecieron por televisión hace años. Vendían artefactos como Veg-O-Matic [procesador de vegetales], Pocket Fisherman [caña plegable de pescar], y Inside-the-Shell Egg Scrambler [aparato para revolver huevos dentro de la cáscara]. Esos productos eran inventos de un empresario de nombre Ron Popeil. Llamado “el vendedor del siglo”, este hombre también ha aparecido en muchos comerciales informativos de diversos productos, como remedios para la calvicie en atomizador y aparatos para la deshidratación de alimentos.

Es muy cierto que Popeil es emprendedor, innovador, y exitoso, especialmente si lo mide por los $300 millones de ganancia que la venta de sus productos ha dejado. Pero esto no lo convierte en un líder. La gente puede estar comprando lo que él vende, pero no lo sigue. En el mejor de los casos, el puede persuadir a la gente por un momento, pero no tiene influencia sobre ellos a largo plazo.

El mito del conocimiento

Sir Francis Bacon dijo: “El conocimiento es poder”. Mucha gente que cree que el poder es la esencia del liderazgo, naturalmente supone que los que poseen conocimiento e inteligencia son líderes. Pero eso no sucede de manera automática. Usted puede visitar cualquier universidad importante y conocer hombres de ciencia ocupados en la investigación y filósofos cuyo poder de raciocinio es tan alto que se sale de las gráficas, pero cuya capacidad para dirigir es tan baja que ni siquiera se registra en las gráficas. El cociente intelectual (IQ) no necesariamente equivale al liderazgo.

El mito del precursor


Otro concepto erróneo es que todo el que está frente a la multitud es un líder. Pero ser el primero no siempre es lo mismo que ser el líder. Por ejemplo, Sir Edmund Hillary fue el primer hombre en llegar a la cumbre del monte Everest. Desde su ascenso histórico en 1953, mucha gente lo ha “seguido” en la realización de esa hazaña. Pero eso no convierte a Hillary en un líder. Ni siquiera fue el líder de esa expedición particular. El líder era John Hunt. Y cuando Hillary viajó al Polo Sur en 1958 como parte de la Expedición Transantártica de la Comunidad de Naciones, iba acompañando a otro líder, Sir Vivian Fuchs. Para ser líder, una persona no sólo debe ir al frente, sino que también debe tener gente que intencionadamente viene detrás de ella, sigue su dirección, y actúa sobre la base de su visión.

El mito de la posición

Como ya se dijo, el peor de todos los conceptos erróneos acerca del liderazgo, es que se basa en la posición. Pero no es cierto. Stanley Huffty afirmó: “No es la posición lo que hace al líder; es el líder quien hace la posición”.

Observe lo que sucedió hace varios años en Cordiant, la agencia publicitaria conocida antiguamente como Saatchi & Saatchi. En 1994, inversionistas institucionales en Saatchi & Saatchi obligaron a la junta directiva a despedir a Maurice Saatchi, el jefe principal de la compañía. ¿Cuál fue el resultado? Varios de los ejecutivos lo siguieron. También lo siguieron algunas de las cuentas más grandes de la compañía, incluidas British Airways, y Mars, el fabricante de caramelos. La influencia de Saatchi era tan grande que su partida ocasionó que las acciones de la compañía bajaran inmediatamente de $8.5 a $4 por acción.

Lo que sucedió fue resultado de la Ley de la Influencia. Saatchi perdió su título y su posición, pero siguió siendo el líder.

Basado en John C. Maxwell, Las 21 Leyes Irrefutables del Liderazgo (Dos Ideas)

lunes, mayo 11, 2009

Ser muy productivo puede ser malo!

Lamentablemente, este simple tema de asegurar que nadie trabaje muchas horas por día (más de 10 ó 12) en un equipo a veces no sucede. Cuando un equipo está atrasado con respecto a la planificación, la primera cosa con la que un líder novato (o no hábil) es presionar para que su equipo haga muchas horas de trabajo. En una organización de desarrollo, si un líder hace esto alguna vez es inmediatamente puesto en la lista negra por la gente que lo rodea.

Sin embargo, en la misma organización de desarrollo, algunos desarrolladores pueden quedarse ellos mismos a terminar cierta cantidad de trabajo, aún si el líder no le pidió que lo haga. Esto suele estar bien visto. Se entiende que cuando estás programando una solución a un problema no quieres abandonarlo por la mitad sólo porque son las 6 pm... pero a veces los desarrolladores se van de tema con esto.

De hecho, si estás en un proyecto de XP (o no), es mejor para tí que no trabajes muchas horas de más. Por ejemplo, si estás trabajando 12 horas todos los días en una iteración y terminas entregando 10 puntos en esa iteración, cuando el líder mire la velocidad anterior va a planear cerca de 10 ó 12 puntos de trabajo en la próxima iteración. Si esto pasa continuamente tu líder va a olvidar que esto era sólo un excepción en una iteración en la que te mataste por 12 horas, y rápidamente se va a convertir en la norma. Un líder novato o poco orientado a las personas va a estar propenso en caer fácilmente en este error. La próxima vez, si estás de vacaciones por una iteración, la gente restante en el equipo debe alcanzar el mismo resultado al que llegaban contigo, lo que implícitamente significa que ellos trabajarán 12 horas o más.

Mientras que tu equipo (y la mayoría de los líderes) serán bien vistos por los stakeholders por tener terminado un montón de trabajo constante en una iteración, vos como desarrollador vas a sufrir de agotamiento. Y sabes bien que la próxima vez que no estés ahí tu equipo va a sufrir, ya que otros en el equipo pueden no estar preparados para una maratón de 12 horas.

De lo que estoy hablando acá es de como lograr un ritmo sostenible en el equipo. No sólo da predecibilidad para que la gente planifique sus iteraciones mejor, sino que también mantiene al equipo en marcha juntos por meses, sin agotarse.

Si sos desarrollador o líder, por favor no abuses de vos mismo o de tu equipo matándose de trabajo todas las noches.

Traducción del Original

martes, mayo 05, 2009

Alternativas a Visual Studio

Para aquellas personas habituadas al desarrollo de aplicaciones Microsoft (basadas en WinForms, ASP.Net o inclusive WPF, WWF, WCF) quisiera mostrarles las distintas alternativas que existen que les van a permitir seguir desarrollando en los lenguajes a los que están acostumbrados (C#, VB.Net, XAML) sin necesidad de pagar licencias de SO Windows ni de Visual Studio:

  • Monodevelop: Es un IDE liviano basado en GTK, trabaja con el framework Mono, no trabaja con .Net framework, hay binarios para la mayoria de las distribuciones GNU/Linux aunque para windows se puede generar desde los fuentes,editor visual de interfaces gráficas en GTK, soporte para aplicaciones ASP.Net.

  • SharpDevelop: Es un IDE extremadamente liviano, soporte .Net Framework y Mono, editor visual de interfaces gráficas en Windows Form y WPF, soporte para C#, VB.Net, Boo, F# e IronPython, soporte para ASP.Net, el instalador sólo pesa 14 MB en comparación con los casi 4 GB del Visual Studio de Microsoft, soporte para .Net 3.5 (WPF, WCF, WWF).

Que son las Ondas

Te haz preguntado alguna vez como es que puedes comunicarte en tiempo real con una persona en particular ubicada a kilómetros de distancia de ti mediante un simple dispositivo llamado teléfono inalámbrico o alambrico?

Pues esta comunicación en tiempo real es posible gracias a un fenómeno denomina Onda. Una onda es un mapa mental definido es decir, una señal que se encuentra en la atmósfera y que no puede ser visualizada por ojo humano.

Un concepto más exacto de Onda podría ser; es una perturbación que se propaga en un medio. Para que una onda se produzca es necesario la actuación de una fuente como masa de perturbación y de un medio por el cual dicha perturbación se desplace; una onda esta conformada por: La Cresta, el Valle, la Amplitud el Nivel de Equilibrio y la Longitud de Onda. La misma depende de una Frecuencia y de un Periodo. Ver Fig. 1


Fig. 1 Onda y sus Características
Los puntos altos sobre una Onda se denominan Cresta y los Bajos Valle.
Amplitud: Es la altura máxima de una Cresta, o la profundidad máxima con respecto a un valle.
Longitud de Onda: Es la distancia entre dos Crestas sucesivas.
Frecuencia: Es el numero de Crestas o ciclos completos que pasan por un punto dado en una unidad de tiempo.
Periodo: Es el tiempo requerido para que una Oscilación completa o ciclo completo de la Onda pasen por un punto dado a lo largo de su línea de viaje.

Una Onda puede generarse de forma Transversal o Longitudinal. Las Ondas Transversales viaja de izquierda a derecha mientras que sus partículas vibran hacia arriba y hacia abajo en dirección transversal o perpendicular a la misma onda, la Longitudinal es aquella donde la vibración de las partículas del medio es a lo largo de la misma dirección que el movimiento de la onda.

Existen varios tipos de Ondas entre las cuales se encuentran las Ondas Mecánicas, Ondas Electromagnéticas y hasta Ondas de Luz… Próximamente se estarán desarrollando estos temas.

miércoles, abril 29, 2009

Introducción a .NET.

¿Que es .NET?

.Net es la nueva plataforma de desarrollo que ha lanzado al mercado MicroSoft, y en la que ha estado trabajado durante los últimos años. Sin duda alguna va a ser uno de los entornos de desarrollo que reinen durante los proximos años.

¿Entonces .NET es un lenguaje de programación?, No. Es mucho más que eso, Microsoft .NET es un conjunto de tecnologías de software , compuesto de varios lenguajes de programación que se ejecutan bajo el .NET Framework. Es además un entorno completamente orientado a objetos y que es capaz de ejecutarse bajo cualquier plataforma.

Vamos por partes. Podriamos dividir el entorno .NET en las siguientes partes:

  • .NET Framework, que es el entorno de trabajo de la plataforma .NET y que la engloba completamente. Toda la plataforma .NET forma parte de .NET framework.
  • Lenguajes .NET. Destacan C# y VB.NET,y recientemente J#, aunque existen más lenguajes y con toda seguridad surgirán nuevos.
  • El Common Runtime Language CRL, que es el motor de ejecución común a todos los lenguajes .NET.
  • MSIL, Microsoft Intermedial language, es el lenguaje intermedio al que compilan las apliaciones (Asemmblies) .NET. Este lenguaje intermedio es interpretado por el CRL en tiempo de ejecución.
  • CLS, common Language Specification, que engloban las pautas que deben cumplir los lenguajes .NET. Es está característica la que va a permitir a otras compañias producir lenguajes compatibles con .NET.
  • ADO.NET, es la nueva interfaz de bases de datos. No se trata de una evolución de ADO, sino que se trata de una interfaz completamente nueva.
  • ASP.NET, es la nueva tecnología para páginas web dinámicas completamente integrada dentro del entorno .NET. Representa una autentica revolución en el desarrollo Web (Internet e Intranet).
  • Biblioteca de clases .NET, es el conjunto de clases que componen el .NET framework y que nos permiten realizar casi cualquier tarea de una manera facil y rápida.

Domotica y el fantastico protocolo X10


  • SEGURIDAD Y FACILIDAD AL ALCANCE DE TU VOZ

protocolo x10: Lo que quiero decir es de verdad funcion XD, ya he instalado una serie de dispositivos PLC liksys de la manufactura de cisco una de las empresas mas grande del mundo en el area de redes y telecomunicaciones.


Bueno basicamente domotica es la unión de las palabras domus (que significa casa en latin) y tica (de automática, palabra en griego, 'que funciona por sí sola'). Se entiende por domótica al conjunto de sistemas capaces de automatizar una casa o apartamento, aportando servicios de gestión energética, seguridad, bienestar y comunicación, y que pueden estar integrados por medio de redes interiores y exteriores de comunicación, cableadas o inalámbricas, y cuyo control goza de cierta ubicuidad, desde dentro y fuera del hogar. Se podría definir como la integración de la tecnología en el diseño inteligente de un recinto.


En pocas palabras puedes dar ordenes a tu casa por comando de Voz, abriendo una paginas web en tu computador o simplemente haciendo unna llamada, instalando dispositivos de alto rendimiendo, ademas por su uso de PLC que te permite formar una red por medio de tu cableado electrico dando super velocidades

  
Que puedo hacer ?


  • Apagado general de todas las luces de la vivienda

  • Automatización del apagado/ encendido en cada punto de luz

  • Regulación de la iluminación según el nivel de luminosidad ambiente

  • Automatización de todos los distintos sistemas/ instalaciones / equipos dotándolos de control eficiente y de fácil manejo

  • Integración del portero al teléfono, o del videoportero al televisor

  • Control vía Internet

  • Gestión Multimedia y del ocio electrónicos

Qué utilidades puede tener la casa domótica en nuestro despertar?


  • Con la instalación domótica el individuo de la casa puede programas sus mandos de forma que cada mañana se realicen unas operaciones concretas, que le ayudarán a comenzar el día.
  • Se puede programar por ejemplo, que a primera hora se encienda la radio para irnos despertándonos con ese sonido, y que progresivamente vayan subiéndose las persianas, que el baño se vaya preparando para darnos nuestra primera ducha del día, y que en la cocina, por ejemplo, se prepare el café y las tostadas.
  • Los aparatos podrán ir poniéndose en marcha según a la hora que los hayamos programado, así, dejando un intervalo de tiempo entre cada uno, podremos comenzar la rutina diaria con todos nuestros elementos imprescindibles preparados.
  • El aparato que suele utilizarse para encender y apagar luces, y conectar o desconectar la radio y televisión, es el programador X-10 (es más sencillo porque no requiere obras en su instalación domótica, pero cualquier otro serviría).
  • Asimismo, los encendidos y apagados de calefacción también se pueden controlar introduciendo una programación horaria, para que se active a una hora concreta.

¿Y por la noche?

Edificios bajo control domótico

Lo más útil es programar la bajada de persianas, el riego automático del jardín, y apagar el resto de aparatos eléctricos (radio, TV, equipo de música, ...). También se pueden activar las alarmas de seguridad que conectan con los centros de control en caso de detectar intrusos en el hogar.

Por la noche es de gran interés la instalación eléctrica que se activa al detectar calor humano. De esta forma, tenemos las luces apagadas y si precisamos ir al baño, las luces se van encendiendo progresivamente (habitación, pasillo, baño...), sin necesidad de ir activando con el mando una a una. Con este método se ahorra energía, porque solo se enciende la luz de la habitación donde nos encontramos.

Asimismo, destaca la opción de tener conectado un control que detecta posibles anomalías en nuestro cuerpo durante la noche, activándose y conectándose con emergencias (por teleasistencia), para conseguir ayuda.


Domotica ayuda a enfermos!!

Bueno por aqui les dejo alguito que les podria interesar o motivar en algol como lo hiso conmigo


Una de las principales acciones consiste en tener al usuario localizado a través de un chip, que se le implanta en la ropa y los zapatos ("porque el enfermo de alzheimer u otra enfermedad parecida que se desnuda no suele descalzarse") o como brazalete ergonómico.Esta tecnología no sólo localiza la situación exacta, como otros del mercado, sino que tiene una precisión de 40 centímetros y discrimina en tres dimensiones qué se encuentra realizando en cada instante. "Sabemos las 24 horas si está sentado en una mesa, tumbado, caído en el suelo o delante de una puerta. Permite actuar con inmediatez ante emergencias porque detecta cualquier comportamiento extraño", indica el presidente

La domótica ofrece al usuario una mejor calidad de vida, con menor gasto tanto de dinero (al ahorrar energía en la realización de tareas) como de tiempo (ya que su utilización es sencilla y ágil).

Los mecanismos para utilizar los sistemas integrados en la vivienda son de fácil utilización, pasando desde una pantalla táctil, a mensajes de voz o a través de Internet. Otra de sus ventajas es que nos ofrece mayor seguridad en caso de accidentes o incidentes dentro del hogar, ya que si hubiera un incendio o fuga de gas en el domicilio, el sistema nos avisaría telefónicamente para cortar el suministro afectado.

Las personas con discapacidad o personas mayores con problemas de movilidad dan la bienvenida a la vivienda domótica, ya que les ayuda en una gran parte de sus tareas cotidianas.

En personas con problemas degenerativos el hogar inteligente les brinda la opción de poder ir usando sus opciones de forma progresiva, a medida que vayan perdiendo su movilidad o autonomía, y de esta forma, su vida podrá seguir de forma autónoma con estos apoyos.

En el caso de personas con discapacidad lo esencial que les ofrece la domótica son los sistemas de control de entorno cuya finalidad es controlar elementos del entorno doméstico y laboral.

Una persona con movilidad reducida o con otras discapacidades puede encender sus aparatos electrónicos bien por voz, bien por mandos a distancia, o pueden realizar llamadas de emergencia o activar sus servicios de alarma si lo necesitan. En casos de movilidad reducida severa incluso hay aparatos habilitados para levantarse de la cama, acceder a la ducha, mandos para abrir puertas, etc.

Equipo de control del entorno

Todos los mecanismos y componentes, tecnologías e interfaces necesarios para poner a punto un edificio domótico se basan en lo que se llama "diseño para todos", que es en conclusión, un tipo de diseño y desarrollo tecnológico que permite que las diversas ayudas y mandos de la nueva instalación puedan ser utilizados por todo tipo de personas, tanto con discapacidad como sin ella, independientemente de sus cualidades o limitaciones.





Incrementar rendimiento de BBDD con "Particionado de Tablas"

Con la aparición de la versión 5.1 de MySQL, se incluyó en éste el particionado de tablas (algo que en PostgreSQL ya existía hace tiempo enlace) por lo que me he animado a escribir sobre el tema.
El particionado de tablas es una técnica que se usa para reducir la cantidad de lecturas físicas a la base de datos cuando ejecutamos consultas, existen dos principales modalidades de particionado:

  • Horizontal: Esta modalidad consiste en tener varias tablas con las mismas columnas en cada una de ellas y distribuir la cantidad de registros en estas tablas (generalmente se particiona separando la data por años, meses, etc). Ej: Tenemos tres tablas registro2001, registro2002 y registro2003 y en cada tabla guardamos los registros de los años correspondientes, esto nos garantiza un incremento considerable cuando realicemos consultas sobre las tablas ya que la data estará distribuida en tres partes y ya sabríamos dependiendo del año en cual tabla buscar.

  • Vertical: Esta modalidad generalmente la aplicamos en nuestros diseños de BBDD sin darnos cuenta, por ejemplo cuando tenemos una columna de tipo BLOB con una fotografía o un texto muy largo que no leemos frecuentemente y decidimos ponerla en otra tabla referenciandola con la clave foránea.

Ahora bien, el particionado horizontal es el que vamos a comentar, ya que el problema radica en como hacer para que nuestras aplicaciones sepan en que tabla guardar el registro dependiendo del año (porque obviamente no le vamos a agregar esas condiciones a nuestra aplicación), esto se logra agregando una serie de sentencias y condiciones en la definición de las tablas.
En los siguientes enlaces se muestra como hacerlo: MySQL y PostgreSQL
En el ejemplo mostrado de MySQL se puede observar la gran diferencia con dos tablas que tienen exactamente la misma data (8 millones de registros) una sin particionar y la otra particionada por años, al realizar una consulta filtrando por la columna en la cual se basó el particionado se obtuvieron los siguientes resultados:
  • Tabla sin particionado: 38.30 segundos
  • Tabla con particionado: 0.34 segundos
¡Asombroso nooo!

jueves, abril 23, 2009

¿Java, PHP o .Net (VB.Net/C#)?

Hoy en día estos 3 son considerados como "Los Grandes" y yo pienso que hay razón en decirlo, aprender uno de estos es una de las cosas que debemos hacer si queremos estar al día por unos 5 años más en el mundo del desarrollo de software, ahora bien, siempre nos planteamos la pregunta ¿cuál de ellos?, a lo que respondo como siempre lo hago: "depende!".
En mi opinión, sería ideal conocerlos todos y enfocarnos en uno o dos, ya que pienso que todos tienen sus ventajas, desventajas y propósitos diferentes:

  • PHP: Está diseñado para la programación web, en lo que es definitivamente uno de los lenguajes más utilizados en su área (por no decir el más utilizado), es rápido, versátil, multiplataforma, libre, gratis.

  • Java: es un lenguaje de propósito general (desktop, web, movil, etc), bien tipado, robusto, excelentes IDEs, muchísimos framewors, multiplataforma, gratis, libre.

  • .NET (VB.Net / C#):Multipropósito, no es multiplataforma (aunque el proyecto MONO está bastante avanzado, lo que nos permite usar C# u otros lenguajes en otras plataforma), bastantes frameworks, pocos IDEs la mayoría propietarios.

Cualquiera por el que se inclinen sumará bastantes puntos en su currículo y además garantizará su valor en el mercado actual, aunque viendo las características de cada uno, pienso que java lleva una ventaja significativa. Veamos un ejemplo:

Tenemos que desarrollar una aplicación web que gestione una agenda de contactos para ser usada por el departamento de ventas, por lo que decidimos -debido a la sencillez- del asunto usar PHP, realizamos el software y el personal del departamento antes mencionado empieza a utilizarlo. Con el pasar del tiempo la empresa crece, se crean nuevos departamentos e ingresa más personal, por lo que la demanda de la aplicación aumenta y sale un nuevo requerimiento: “El nuevo departamento de RRHH necesita acceder a la aplicación desde una interfaz Desktop (no veo la razón del porque esto, pero creanme que me ha pasado)”.

Viendo este requerimiento, y con la decisión que tomamos anteriormente nos vemos en la necesidad de realizar una nueva aplicación desktop que se conecte a la BBDD.

Si la opción seleccionada anteriormente hubiese sido Java o .Net, y asumiendo que la arquitectura de la aplicación está hecha en capas (como debe ser), la parte de la lógica de negocios la tuviéramos aislada de la presentación web, así como el acceso a los datos, por lo que sólo nos tocaría construir las nueva interfaz desktop. ;)

Metodologías ágiles de desarrollo

Siempre ha sido un dilema qué metodología seleccionar para comenzar un proyecto de desarrollo de software, ya que son tantas la variedades que es una ardua tarea seleccionar la apropiada, y en la mayoría de los casos después de iniciado el proyecto nos damos cuenta que no seleccionamos la adecuada. Desde hace muchos años he oído hablar de UML, casos de uso, diagramas de secuencias, RUP, etc, etc y es importante mencionar que una cosa es la metodología(s) para el seguimiento/realización del proyecto y otra cosa es la metodología(s) y/o arquitectura de la aplicación/producto a realizar porque al principio solemos confundir esto.

Al inicio de mi carrera, cometí los errores que todos cometemos como por ejemplo desarrollar sobre la marcha sin ninguna metodología de seguimiento y control, sin las herramientas necesarias para ello, con el tiempo uno empieza a indagar y sobretodo a “googlear” y empieza a seleccionar metodologías o esquemas de trabajo que formalizan todo este proceso de seguimiento, pero son ¿adecuadas estás técnicas que seleccionamos?.

El desarrollo de software moderno implica rapidez y precisión, por lo que ciertas metodologías están quedando atrás en esta carrera (RUP, EUP, RAD, etc.), ya que implican un grado tan estricto de cumplimiento de actividades que finalmente toma más tiempo realizar actividades de la gestión del proyecto que del proyecto como tal. En este sentido han surgido otros mecanismos, metodologías, patrones, etc. denominados “ágiles” (AUP, XP, Scrum, etc.) en donde los pincipios básicos estan expuestos sobre el siguiente manifiesto.

Si decidimos utilizar una metodología ágil o las estamos usando desde hace poco, recomiendo seguir al pie de la letra los pasos o procedimientos de dicha metodología y cuando se tenga un nivel de uso más elevado empezar a optimizar estos procedimientos o pasos para ir ajustandolos a nuestras necesidades y así evitaremos un posible desastre en el proyecto.