Los "Desarrolladores PHP" debemos profesionalizarnos o quedaremos descartados por obsoletos

Esta reflexión se la escribo a todos los "Programadores PHP":

Al día de hoy la mayoría de los institutos o universidades de muchos países siguen enseñando PHP4, o mejor dicho, programación "scripting" básica. Se mueven en el viejo concepto de la "programación estructurada", trabajando constantemente sobre código que mezcla html y sintaxis PHP, todo como si de una ensalada estuviéramos hablando.

Casi paralelamente, los jóvenes autodidactas siguen por el mismo camino, tal vez ayudados por la gran cantidad de material repetido y obsoleto que se encuentra tanto en la web como en las editoriales de turno, donde a pesar que un libro haya sido impreso recientemente, los autores siguen siendo los mismos y escribiendo -una y otra vez- sobre los mismos temas elementales.

Enfrentar la realidad con madurez

Solo nos damos cuenta que estamos en un grave problema cuando nos enfrentamos a la realidad: salimos al mercado laboral y con inocente sorpresa vemos que se habla mayoritariamente de Java o .Net, de UML, desarrollos en 3 capas, lógica de negocios, persistencia, polimorfismo, frameworks, patrones de diseño, refactoring... y tú solo tienes una vaga idea de algunos conceptos, pero nulo conocimiento de si es realmente posible hacerlo con PHP...


¿No crees que algo está pasando y que tú estás quedando fuera de la "conversación"?

Este es el gran problema de la mayoría de los "Programadores PHP": se quedan en el "lenguaje", en la programación lisa y llana, rechazando todo lo que sea objetos hasta que no les queda otra salida que aprender a usarlos mínimamente... pues todas las nuevas herramientas solo hablan "ese" idioma.

¿Hasta donde piensas que podemos llegar con tan poca preparación?

Mi experiencia personal

De lo que trato de hablar en este blog es de "profesionalizarnos", de copiar y mejorar, de aprender y evolucionar. La mayoría de los temas que expongo no son nuevos, trato de basarme en autores reconocidos y darle más prioridad a los conceptos que al lenguaje, y por sobre todas las cosas: ser simple y directo (pragmático antes que dogmático, pero sin olvidarme de lo último). Hay muchas cosas que desconozco de PHP y otras que directamente no uso, y nunca me baso en la memoria, siempre voy a buscar hasta lo más elemental al manual (doy prioridad al razonamiento por sobre la retención mecánica de conocimientos). Siguiendo esta metodología, mañana deberías poder cambiar de lenguaje y seguir trabajando sin problemas, pues los conceptos base los tendrías claros y estos se aplican sin importar la plataforma que estés usando.

Muchas veces comento que los temas sobre los que escribo son elementales para muchos desarrolladores Java de nivel medio y alto, pero en el ambiente PHP esto cambia (todavía no hemos madurado hacia el concepto de "arquitectura") donde "en el mundo de los ciegos puedo ser rey". Debemos cambiar la mentalidad ahora que existe PHP5 y que su nueva sintaxis nos permite hacer muchas cosas que son habituales en el mundo Java.


Por lo tanto, tenemos todas las herramientas para "evolucionar" y no quedarnos en las excusas.

Programador versus Desarrollador

Desarrollar Orientado a Objetos va más allá que crear objetos aislados que solo contienen datos, programar usando algunos objetos es distinto a desarrollar 100% Orientado a Objetos, ser programador es distinto a ser un desarrollador, un sitio web no es lo mismo que un sistema web. Existen, además de los objetos, "Principios de Diseño (OO)", "Patrones de Diseño (OO)", el lenguaje de diseño UML, frameworks, etc, y todo es perfectamente aplicable usando PHP.


Es más, muchos de estos conceptos e ideas son independientes al lenguaje si este cumple mínimamente con las características de la OO, cosa que sucede a partir de PHP5 en adelante y que PHP4 casi carece por completo.

Finalmente, es mi visión que un programador resuelve problemas aislados usando un lenguaje, pero un desarrollador diseña e implementa una solución global, une los componentes en un único sistema integrado y es lo suficientemente inteligente y estratega para poder reutilizar la experiencia y conocimientos adquiridos en favor de los próximos desarrollos.

Los sistemas que van quedando atrás nunca serán un lastre porque podrán ser mantenidos con el mínimo costo posible, permitiendo que el desarrollador pueda afrontar nuevos y enriquecedores desafíos.

Todos estos detalles los percibimos claramente cuando nuestros desarrollos dejan de ser un "programa menor" y necesitamos crecer, pero vemos que con los conocimientos que contamos hasta el momento todo se nos hace cuesta arriba.

La culpa es enteramente nuestra

No podemos quejarnos que a los programadores Java se les paga el doble que a nosotros y que a la mayoría de los proyectos PHP se los desvalorice, se los trate como "algo menor", "poco serio", todo porque es un "simple lenguaje web" limitado en sus posibilidades.

El "Simple Lenguaje" lo hacemos todos, al ser "Simples Programadores PHP" y nuestras son las limitaciones fundamentales. Perfectamente podemos tratar de trabajar "más seriamente" como lo hacen los "desarrolladores Java", y tratando con creatividad de suplir las carencias momentáneas (como el muy sonado caso de la falta de "namespaces").

PHP se está orientando a convertir en una "arquitectura", a parecerse a un J2EE pero mucho más simple y directo.

El proceso hace tiempo que inició.

Debemos pasar de los dichos a los hechos

De la misma forma, creo que nos hace falta tener más "sentimiento de comunidad", como sucede habitualmente -hasta de forma exagerada- en el mundo GNU/Linux. No es posible que nos sigamos quejando que los proveedores de hosting siguen usando PHP4. Deberíamos hacer campañas para promover la migración a las nuevas versiones de PHP, pero fundamentalmente, incorporar en nuestros desarrollos las características avanzadas del lenguaje, e invitar a usarlo como si fuera una arquitectura, actualizar a nuestro equipo de desarrolladores, visitar empresas, universidades, etc.


¿Tú, qué vas a hacer? ¿Te vas a quedar donde estás o te vas a subir al tren?

¿Eres parte del problema o parte de la solución?

Tenemos que especializarnos y profesionalizarnos, el mundo pide POO, arquitecturas, capas, etc, y habla en "UML"... tú, en que idioma hablas?

Artículo basado en una respuesta dada en Foros del Web

41 comentarios:

Joserra dijo...

¿has probado Code-Igniter? Muy interesante, lleva un poco la idea del framework de Rails a PHP.
Lo comenté un poco en mi blog aqui.

Mariano dijo...

Los desarrolladores en PHP cargamos con el estigma de implementar cosas 'chapuceras', nos critican el 'embebido' de código PHP dentro del HTML, y lo que más me duele, es que dicen que PHP no escala bien para grandes proyectos.
O nos ponemos las pilas programando en serio, o siempre vamos a estar (hablando de salarios) en el escalón mas bajo de los desarrolladores (quizás a la par de los de Visual Basic)

vmvarela dijo...

Llega un programador de Java a PHP y dice "Cuando me he puesto a hacer aplicaciones en PHP echaba de menos mis controladores, filtros, vistas y cada cosa en su sitio de Struts en la plataforma J2EE....".

En serio alguien piensa que es bueno para PHP aquello que, en mi humilde opinion ha sido el cancer de la programacion en los ultimos tiempos? Como se creen que PHP ha llegado a ser tan utilizado?

Lo que he aprendido en 15 años es... KIS (Keep It Simple) por favor.

Utilizas MVC porque esta de moda, antes simplemente utilizabas plantillas (porque tambien estaban de moda), pero en ningun caso merecio la pena. Un script mucho mas corto y mucho mas eficiente habria dado sus frutos en menos tiempo.... Y lo mismo con la POO, si esta de moda, lo utilizo para todo, da igual el proyecto. Ahora esta de moda Rails....

Java es elegante, una idea brillante, pero ademas de contar con su maquina virtual, lo revestimos de cientos de Frameworks (supuestamente para trabajar menos) y surgen los problemas de compatibilidades y de integracion. Para resolver un problema sencillo ya no sabemos hacerlo de otra manera que con soluciones Gigantescas.

La programacion "real" nunca debe confundirse con la "teorica", "ideal" que se enseña en las escuelas, donde lo importante es aprender una serie de conceptos fundamentales. En la programacion "real" las cosas funcionan o no, y son eficientes o no, y tienen resultados a corto plazo o no (todo depende del proyecto) y estas familias de metodologias y arquitecturas no son las mas adecuadas en la mayoria de los casos.

Toda la POO que necesite la encontre en PHP5. Si se amplia la sintaxis para dar cabida a gente que desea aplicar otras metodologias me parece bien, pero que no afecte al espiritu del lenguaje. El resto, tienen Java.

Emilio dijo...

Pienso que el exito de php ha sido por su sencillez, es un lenguaje orientado a la web, sin complicas php tanto como java o .NET, ¿para que quieres php?, coincido con vmvarela en la siguiente afirmacion "Si se amplia la sintaxis para dar cabida a gente que desea aplicar otras metodologias me parece bien, pero que no afecte al espiritu del lenguaje. El resto, tienen Java."

en lo que no puedo coincidir es en "Utilizas MVC porque esta de moda","Un script mucho mas corto y mucho mas eficiente habria dado sus frutos en menos tiempo....,Y lo mismo con la POO" ¿MVC de moda?,es un patron basico que se debería usar en cualquier aplicación medianamente grande, y lo de la POO sin comentarios.

Saludos.

Anónimo dijo...

Estoy muy de acuerdo con lo dicho por el autor del post, sobre todo en una cosa: los conceptos son lo más importante, el lenguaje o la herramienta algo secundario.

POO, arquitectura, refactorización, pruebas unitarias, programación orientada a aspectos, metodologías etc,etc. estas son las cosas en las que un desarrollador profesional tiene que ser un EXPERTO (con mayusculas, no vale con que te suenen, si eres un profesional tiene que dominarlas completamente).

Luego que tecnologíu se utilize para poner en practica estos conceptos es algo secundario, importante claro, pero secundario. Por supuesto un desarrollador también tiene que conocer los detalles de las distintas tecnologíuas para elegir la más adecuada a cada contexto.

En resumen, dejar de ser "desarrolladores PHP" y convertiros en "desarrolladores".

enrique_place dijo...

Estimado joserra:

En plena "Era de la abundancia de los Frameworks" (y principalmente para PHP) es imposible conocerlos todos y menos probarlos todos ;-)

Fuera de que he leído su documentación inicial, no he podido profundizar más que eso.

De todas formas, creo que el punto del artículo apunta al concepto general de lo que deberíamos hacer y ser los desarrolladores, en particular los que usamos mayormente PHP. El hecho que puedas usar o dominar un framework no te hace un profesional en desarrollo, solo un especialista en una herramienta en particular.

He visto desarrolladores que usan bastante bien frameworks de desarrollo ágil, pero no entienden ninguno de los conceptos que hay detrás de la POO. Los frameworks ayudan, pero no nos resuelven el 90% restante de nuestro sistema.

¿Se entiende el punto?

PD: ya que me vuelven a insistir en este framework, voy a intentar profundizar un poco más mi lectura (de toda formas, tengo pendiente investigar el de mi amigo GatorV, que ahora no veo que su sitio esté activo ;-))

enrique_place dijo...

Estimado Mariano:

> Los desarrolladores en PHP
> cargamos con el estigma de
> implementar cosas 'chapuceras',
> nos critican el 'embebido' de
> código PHP dentro del HTML, y lo
> que más me duele, es que dicen
> que PHP no escala bien para
> grandes proyectos.

Perdón, no es un estigma, es la evidencia pura de nuestra auto-flagelación. ;-)

El tema es que se sigue pensando como hace unos años atrás, y desarrollando como en los viejos tiempos cuando se incorporó la primera generación de sitios dinámicos. El problema es que "lo que se hacía" no está acorde con "lo que se necesita" en la actualidad.

Por eso nuestros desarrollos actuales no pueden escalar ni pueden competir con otras tecnologías más actualizadas a los tiempos modernos.

Ojo, tampoco ayuda en todos los sentidos el desarrollo actual de PHP... aunque con PHP5 se ha dado un gran salto, sumado al advenimiento de muchos frameworks, amén del oficial Zend Framework.

Todavía PHP sigue siendo "solo un lenguaje", pero se lo puede reforzar con muchas herramientas, pero no solo queda ahí el trabajo, nosotros mismos debemos hacer un "upgrade" mental.

No son solo las herramientas y saber usarlas, es tener claro los conceptos fundamentales de la POO, de arquitectura, de patrones, etc.

No todo son las herramientas, repito. Hoy muchos desarrolladores piensan que un framework es todo.

Abundan las preguntas en foros sobre conceptos básicos de POO... y con esas dudas no se puede seguir adelante.

¿Te pregunto, cuantos programadores/desarrolladores que usan PHP conocen UML?

Considero que sin este conocimiento es imposible aprender y comprender OO, y menos, desarrollar un sistema OO.

> O nos ponemos las pilas
> programando en serio, o siempre
> vamos a estar (hablando de
> salarios) en el escalón mas bajo
> de los desarrolladores (quizás a
> la par de los de Visual Basic)

Totalmente de acuerdo, es algo que depende enteramente de cada uno de nosotros, somos y valemos los conocimientos que tenemos y demostramos. Si nuestros desarrollos son pobres y no se ajustan a las necesidades actuales, nos pagaran sueldos mediocres y nuestros proyectos serán menores.

Debemos demostrar que podemos abordar desafíos mayores, pero eso no se hace solo con actitud, se hace adquiriendo conocimientos. Y si no existen aún en PHP, tómalos de otras arquitecturas, como Java o .Net.

Por ejemplo, POO, Patrones, Principios POO, UML, etc, no están atados a un lenguaje en particular... por lo tanto no es excusa por no encontrar libros exclusivos que hablan de esta temática usando PHP.

PD: un gusto tenerlos por acá compartiendo y opinando sobre el tema ;-)

enrique_place dijo...

Estimado vmvarela:

> En serio alguien piensa que es
> bueno para PHP aquello que, en mi
> humilde opinion ha sido el
> cancer de la programacion en los
> ultimos tiempos? Como se creen
> que PHP ha llegado a ser tan
> utilizado?

Ojo, lo que yo argumento no tiene nada que ver con ser exactamente a Java ni a J2EE. También hay que diferenciar entre mi opinión y lo que opina Zend (los que desarrollan PHP).

Estoy de acuerdo, también es mi opinión que Java (tanto como lenguaje como arquitectura) es innecesariamente complejo, *pero*... PHP está años luz de eso, y algo de eso tiene que adquirir y aprender, pues son conceptos generales y necesarios para hacer cualquier sistema medio para arriba.

> Lo que he aprendido en 15 años
> es... KIS (Keep It Simple) por
> favor.

Lo repito siempre y es KISS, "¡Mantenlo Simple, Estúpido!" ;-)

Pero hay que ver el punto medio, conceptualmente comparto que KISS se puede aplicar a los diseños en general, pero no a la tecnología o la arquitectura. La arquitectura la necesitas, y si la puedes aplicar de forma simple, KISS, mejor.

Eso lo prefiero toda la vida a tener la "arquitectura más compleja del mundo" = J2EE ;-)

> Utilizas MVC porque esta de moda,
> antes simplemente utilizabas

Un patrón de diseño no es una moda, la misma definición de lo que es te lo dice.

La moda son los frameworks que lo aplican, y la gente que repite MVC por todos lados, como parte de una campaña de márketing, y principalmente, porque los usuarios consumen por que solo dice la palabra "MVC", aunque no entienden de que se trata ;-)

> plantillas (porque tambien
> estaban de moda), pero en ningun
> caso merecio la pena. Un script

Si partes de cero un desarrollo, existirán muchos problemas que vas a tener que ir resolviendo. Indefectiblemente vas a llegar a un modelo del tipo "modular" o algo del tipo "MVC" o "Front Controller".

Y aunque sea un invento tuyo, va a tener alguna característica de las soluciones formales anteriores, o sea, ahorrarás más tiempo aprendiendo patrones y usando algo validado y aceptado como solución correcta para un problema recurrente.

Eso es un patrón de diseño. Lo otro puede caer en "reinventar la rueda".

> menos tiempo.... Y lo mismo con
> la POO, si esta de moda, lo
> utilizo para todo, da igual el
> proyecto. Ahora esta de moda
> Rails....

La POO no es una moda, es una evolución. Rails es una moda, pero incorpora dentro mucho de "evolución".

POO es un paradigma, Rails un framework, una herramienta más.


> Java es elegante, una idea
> brillante, pero ademas de contar
> con su maquina virtual, lo
> revestimos de cientos de
> Frameworks (supuestamente para
> trabajar menos) y surgen los
> problemas de compatibilidades y
> de integracion. Para resolver un
> problema sencillo ya no sabemos
> hacerlo de otra manera que con
> soluciones Gigantescas.

Totalmente de acuerdo, por eso prefiero a PHP y por eso abogo por su evolución. Una cosa no quita la otra.

Cuando tengo la oportunidad de enseñar patrones de diseño siempre confirmo que hacerlo desde PHP5 es mucho más sencillo que hacerlo desde Java... se pueden hacer muchas implementaciones simples y directas, sin complejidades extra (ideal para la docencia).

También es otra razón del por qué IBM y Oracle invierten en PHP para que evolucione a algo similar a J2EE, pero mucho más simple y pragmático. Muchas empresas se han dado cuenta que la arquitectura Java o hasta .Net, no son aplicables a todos los conceptos, y que para muchos casos es un cañón láser para matar moscas.

Bueno, si PHP evoluciona a un J2EE simple, creo que estaremos todos muy satisfechos.

> La programacion "real" nunca debe
> confundirse con la "teorica",
> "ideal" que se enseña en las
> escuelas, donde lo importante es
> aprender una serie de conceptos
> fundamentales. En la programacion

Discrepo, aunque con matices. Lo que se enseña en muchas escuelas es "demasiado teoría alejada de la realidad", que es distinto a separar la teoría de la realidad. Las dos cosas van juntas, siempre.

> "real" las cosas funcionan o no,
> y son eficientes o no, y tienen
> resultados a corto plazo o no
> (todo depende del proyecto) y
> estas familias de metodologias y
> arquitecturas no son las mas
> adecuadas en la mayoria de los
> casos.

Eso es correcto, pero una no quita a la otra. Aplicar metodologías o arquitecturas donde no corresponden es el primer grave error.

> Toda la POO que necesite la
> encontre en PHP5. Si se amplia la
> sintaxis para dar cabida a gente
> que desea aplicar otras
> metodologias me parece bien, pero
> que no afecte al espiritu del
> lenguaje. El resto, tienen Java.

A pesar que te vas de un lado para el otro, tal vez se deba a un tema de redacción apurada, pero este último resumen estoy de acuerdo contigo en un 98%. Un 1% te digo que aún faltan características fundamentales (como los namespaces) y el otro 1% te digo que no hay que cerrarse a la evolución y mejoras que puedan existir, que no quiere decir que se convierta en Java, pues Java exististe y PHP tiene sus características particulares que lo hacen exitoso.

Yo también estoy en desacuerdo de volverlo extremadamente complejo, pues para eso está la arquitectura Java ;-)

rastafari dijo...

La verdad, no entiendo donde veis esa suspuesta complejidad de J2EE, leyendo vuestros post parece que lo tomais ya como un axioma indiscutible "java es complejo", pues siento disentir completamente.

Cuando se diseña una aplicación en java no es necesario usar todas las piezas de J2EE, no tienes porque usar EJB's, JMS, JMX, no tienes porque usar hibernate, jdo o jpa para la persistencia, tampoco tienes porque usar struts, puedes hacer un jsp a pelo si se ajusta mejor al problema. Con java puedes montar desde la arquitectura más compleja a la más simple.

Lo que si existe es una inercia a usar las herramientas de determinado modo, vosotros os quejais de que en PHP la gente no aplica conceptos de arquitectura, diseño OO etc,etc, pues bien, en el mundo java existe el problema opuesto, la gente tiende a hacer sobreingenieria. Los dos extremos son equivocados. Cuando decis que "j2ee es excesivamente complejo" estais aplicando el mismo topico que otros aplican con php cuando dicen que es "código spagheti sólo para proyectos simples".

De todos modos, si quereis complicación construir un sistema en CORBA con C++, esto es complejidad, j2ee es un caramelo por dios.

Sobre el principio KISS, esto se lo inventarón los agilistas del XP (Kent Beck, Martin fowler...), casualmente MF ha escrito los libros más reconocidos sobre UML (UML distilled), patrones de diseño empresariales (Patterns for enterprise applications) y refactorización (refactoring: improve the quality of existing code). Por cierto, de obligada lectura para cualquier profesional que se precie de serlo.

el "simple" de KISS es una critica a la sobreingeniera, pero muchos quieren ver en este principio una excusa para la chapuza, y esto es algo totalmente opuesto a la intención y a las ideas que promueven los padres de este principio. KISS significa "no lo compliques más de lo necesario", pero en muchas ocasiones las arquitecturas complejas SON NECESARIAS.

Emilio dijo...

Hola, coincido en todo con rastafari, j2ee puede ser todo lo complejo que quieras, o todo lo simple que quieras. El ecosistema de java es mucho mas rico que el de php, solo busca por sourceforge o por google, o mira que utilizan las grandes empresas, excepto microsoft claro.
"También es otra razón del por qué IBM y Oracle invierten en PHP para que evolucione a algo similar a J2EE, pero mucho más simple y pragmático", si IBM u Oracle invierten en php es para integrarlo con sus soluciones de servidor (desarrolladas sobre java), ven a php como un medio para hacer la parte web,y para atraer a esos desarrolladores que ven java "complejo", si mahoma no va a la montaña llevemos la montaña a mahoma. Para ver en que esta irvirtiendo oracle solo tienes que mirar sobre que esta haciendo su proyecto mas ambicioso oracle fusion, que es java claro. Por suerte o por desgracia el mundo empresarial es complejo, y vuelvo a incidir en que php es un lenguaje excelente para la parte web de un sistema, fuera de hay tenemos mejores alernativas como puede ser java EE o .Net.

"Estoy de acuerdo, también es mi opinión que Java (tanto como lenguaje como arquitectura) es innecesariamente complejo,Cuando tengo la oportunidad de enseñar patrones de diseño siempre confirmo que hacerlo desde PHP5 es mucho más sencillo que hacerlo desde Java... se pueden hacer muchas implementaciones simples y directas, sin complejidades extra (ideal para la docencia).", Esta afirmacion la tienes que demostrar con argumentos,si no solo es demagogia, ¿porque php5 es mas simple que java para explicar el patron singleton, factory, command, etc...? . ¿Cual es esa complejidad extra?. El singleton es igual de simple o complejo en php5, java, C# o C++.

Una cosilla mas, como puedes montar en php un sistema de mensajes asincronos, o sistema con trasacciones distribuidas entre objetos remotos. Esto en java EE es relativamente sencillo, los tienes implementando en los servidores de aplicaciones, pero si no quieres NO lo utilizas.

Otra cosilla como desarrollas en php una aplicación de escritorio o una aplicación para dispositvos moviles, que yo sepa no se puede. ¿Puedes en php controlar una transacción ditribuida entre diferentes bases de datos?.

No se pienso que php es para web, y deberia reforzar su posicion en ese dominio, fuera de el las cosas son muy complejas con muchos intereses empresariales.

Saludos.

enrique_place dijo...

Estimado rastafari:

> La verdad, no entiendo donde
> veis esa suspuesta complejidad de
> J2EE, leyendo vuestros post
> parece que lo tomais ya como un
> axioma indiscutible "java es
> complejo", pues siento disentir
> completamente.

Leyendo nuestros "comentarios", pues el "post" se concentra en PHP y en los programadores, y todo lo que debemos aprender de las demás arquitecturas, como Java o .Net.

Sobre que es complejo, ya es una opinión personal que escapa la intención del tema original. Nadie quiso convertir esto en una discusión sobre Java o J2EE. Si prestas atención, cada vez que opino sobre Java lo hago con un "smile" de guiño, tratando de transmitir que no estoy siendo riguroso ni despectivo, es un comentario superficial.

Si somos estrictos con el término "complejo", sí, una arquitectura es mucho más compleja que un simple lenguaje.

Y no estoy siendo despectivo.

> Cuando se diseña una
> aplicación en java no es
> necesario usar todas las piezas
> de J2EE, no tienes porque usar
> EJB's, JMS, JMX, no tienes porque
> usar hibernate, jdo o jpa para
> la persistencia, tampoco tienes
> porque usar struts, puedes hacer
> un jsp a pelo si se ajusta mejor
> al problema. Con java puedes
> montar desde la arquitectura más
> compleja a la más simple.

Muy buena tu aclaración.

Lo que sucede es que siempre las generalizaciones son injustas, y estoy de acuerdo con tu explicación. Pero volviendo al punto original, Java es mucho más complejo que PHP desde el punto de vista de su filosofía.


> Lo que si existe es una
> inercia a usar las herramientas
> de determinado modo, vosotros os
> quejais de que en PHP la gente no
> aplica conceptos de
> arquitectura, diseño OO etc,etc,
> pues bien, en el mundo java
> existe el problema opuesto, la
> gente tiende a hacer
> sobreingenieria. Los dos extremos
> son equivocados. Cuando decis que
> "j2ee es excesivamente complejo"
> estais aplicando el mismo topico
> que otros aplican con php cuando
> dicen que es "código spagheti
> sólo para proyectos simples".

Como decía más arriba, desde la filosofía de PHP (amén que además eran opiniones personales y al final terminaba con un smile de guiño)... pero sigo estando de acuerdo contigo y tus afirmaciones son del todo correctas.

Es muy buen punto el que abordas sobre el habitual exceso de ingeniería, y eso es lo que quise transmitir con mi comentario. Es muy habitual ver soluciones empresariales que usan uno o más frameworks para cada capa del problema, que a su vez se divide en muchas capas. También es habitual ver desarrolladores que conocen el 1% del basto mundo que hay alrededor de Java.

Tal vez por esa razón, muchos (no solo yo), lo ven "excesivamente complejo".

Vuelvo a aclarar, no es el punto del artículo y lo demás fueron comentarios y opiniones personales para ser tomadas a la ligera, no eran definiciones ni argumentaciones estrictas sobre Java (lo que más digo del mismo es aprender de su avance).

> Sobre el principio KISS, esto
> se lo inventarón los agilistas del
> XP (Kent Beck, Martin fowler...),
> casualmente MF ha escrito los
> libros más reconocidos sobre
> UML (UML distilled), patrones
> de diseño empresariales
> (Patterns for enterprise
> applications) y refactorización
> (refactoring: improve the
> quality of existing code). Por
> cierto, de obligada lectura
> para cualquier profesional
> que se precie de serlo.

Si, en mayor o menor medida los tengo leídos todos.

> el "simple" de KISS es una
> critica a la sobreingeniera, pero
> muchos quieren ver en este
> principio una excusa para la
> chapuza, y esto es algo
> totalmente opuesto a la
> intención y a las ideas que
> promueven los padres de este
> principio. KISS significa
> "no lo compliques más
> de lo necesario", pero en
> muchas ocasiones las
> arquitecturas complejas
> SON NECESARIAS.

Estimado, dije lo mismo pero con distintas palabras (eso sí, tu resumen es mucho más claro que el mío), creo verdaderamente deberías estar contestando a vmvarela.

enrique_place dijo...

Estimado Emilio:

> Pienso que el exito de php ha
> sido por su sencillez, es un
> lenguaje orientado a la web, sin
> complicas php tanto como java o
> .NET, ¿para que quieres php?,

No entiendo por qué es tan fácil irse a los extremos opuestos. Se habla de evolucionar, de profesionalizar, etc, no por eso se tiene que volver una copia de la arquitectura Java... que para eso está.

> ¿MVC de moda?,es un patron basico
> que se debería usar en cualquier
> aplicación medianamente grande,
> y lo de la POO sin comentarios.

De acuerdo. MVC, el patrón no es una moda, pero está de moda publicitarlo con cada framework de PHP (por que parece que vende, ya que RoR también implementa el patrón ;-)) ... y POO es fundamental, ya no se discute si sirve o no sirve.

enrique_place dijo...

Estimado "anónimo" (consigue un seudónimo por lo menos ;-)):

> Estoy muy de acuerdo con lo dicho
> por el autor del post, sobre
> todo en una cosa: los conceptos
> son lo más importante, el
> lenguaje o la herramienta algo
> secundario.

Es más, parece que se dejó de lado la "vieja escuela" de decir que primero se analiza el problema y luego se selecciona la herramienta. Tal vez pueda ser que la concepción haya cambiado porque los problemas de hicieron más "homogéneos".

Lo que sí tengo claro, que como profesional, hoy es PHP, pero mañana podría ser otra cosa. No se puede ver al mundo desde un único punto de vista.

> POO, arquitectura,
> refactorización, pruebas
> unitarias, programación orientada
> a aspectos, metodologías
> etc,etc. estas son las cosas en
> las que un desarrollador
> profesional tiene que ser un
> EXPERTO (con mayusculas, no vale
> con que te suenen, si eres un
> profesional tiene que dominarlas
> completamente).

Ese es mi punto. ;-)

> Por supuesto un desarrollador
> también tiene que conocer los
> detalles de las distintas
> tecnologíuas para elegir la más
> adecuada a cada contexto.

También para aprender de las carencias de uno, algo que se descubre si uno no es "monotemático" y su mundo no es otra cosa que PHP.

> En resumen, dejar de ser
> "desarrolladores PHP" y
> convertiros en "desarrolladores".

Bienvenido al barco :-)

enrique_place dijo...

Estimado Emilio:

> Hola, coincido en todo con
> rastafari, j2ee puede ser todo lo
> complejo que quieras, o todo lo
> simple que quieras. El ecosistema
> de java es mucho mas rico que el
> de php, solo busca por
> sourceforge o por google, o mira
> que utilizan las grandes
> empresas, excepto microsoft
> claro.

Te estás yendo de tema. Nadie quiso plantear una guerra entre lenguajes ni arquitecturas, el "post" hace mención de las arquitecturas como ejemplo a imitar y aprender.

> "También es otra razón del por
> qué IBM y Oracle invierten en PHP
> para que evolucione a algo
> similar a J2EE, pero mucho más
> simple y pragmático", si IBM u
> Oracle invierten en php es para
> integrarlo con sus soluciones de
> servidor (desarrolladas sobre

Es lógico que si una empresa invierte es para poder sacarle provecho.

> java), ven a php como un medio
> para hacer la parte web,y para
> atraer a esos desarrolladores que
> ven java "complejo", si mahoma

No veo entonces la parte en que nos contradecimos.

> no va a la montaña llevemos la
> montaña a mahoma. Para ver en que
> esta irvirtiendo oracle solo
> tienes que mirar sobre que esta
> haciendo su proyecto mas
> ambicioso oracle fusion, que es
> java claro. Por suerte o por

Estás siendo muy extremista, muy "blanco o negro", que se apoye a PHP no quiere decir con eso que se tenga que evitar Java, o que ellos tengas otros proyectos, no son excluyentes.

> desgracia el mundo empresarial es
> complejo, y vuelvo a incidir en
> que php es un lenguaje excelente
> para la parte web de un sistema,
> fuera de hay tenemos mejores
> alernativas como puede ser java
> EE o .Net.

Estoy de acuerdo.

>
> confirmo que hacerlo desde PHP5
> es mucho más sencillo que hacerlo
> desde Java...

> Esta afirmacion la tienes que
> demostrar con argumentos,si no
> solo es demagogia,

¿La tengo que demostrar con argumentos? No sabía que los comentarios de mi propio blog se habían vuelto un juicio con abogados.

> ¿porque php5
> es mas simple que java para
> explicar el patron singleton,
> factory, command, etc...? . ¿Cual
> es esa complejidad extra?. El
> singleton es igual de simple o
> complejo en php5, java, C# o C++.

Como me decía un docente una vez: "si me cambias de contexto, debo cambiar la solución". Tu tomaste el caso del Singleton, yo no me estaba refiriendo a ninguno en particular, hablaba en general.

Si tu afirmas que PHP es más simple, más sencillo, suma "tipado dinámico de variables", "ausencia de definición de tipos de retorno", "clases base", "package", etc, y lo que debes expresar en varias líneas de código en Java -obligatoriamente, hasta para imprimir un mensaje en pantalla- lo haces con las justas líneas en PHP (con solo las que necesitas para decir "este es el patrón X").

> Una cosilla mas, como puedes
> montar en php un sistema de
> mensajes asincronos, o sistema
> con trasacciones distribuidas
> entre objetos remotos. Esto en
> java EE es relativamente
> sencillo, los tienes
> implementando en los servidores
> de aplicaciones, pero si no
> quieres NO lo utilizas.
> Otra cosilla como desarrollas en
> php una aplicación de escritorio
> o una aplicación para dispositvos > moviles, que yo sepa no se puede.
> ¿Puedes en php controlar una
> transacción ditribuida entre
> diferentes bases de datos?.

Te estás yendo por las ramas. No quieras plantear una guerra de "Java versus PHP" que nadie la inició.

> No se pienso que php es para web,
> y deberia reforzar su posicion
> en ese dominio, fuera de el las
> cosas son muy complejas con
> muchos intereses empresariales.


Nadie dijo lo contrario. Mi opinión personal sobre JEE y PHP(que ni siquiera abordo en el "post" más allá de decir que es algo bueno para aprender) es que este último debería incorporar muchas cosas del primero, pero no con esto ser una copia.

PHP es un lenguaje especializado para la web, pero si puede adoptar mejoras, ser más profesional, más "una arquitectura", creo que nos beneficiaría a todos.

Pero volviendo al tema, pues están llevando la discusión hacia un tema que no es lo medular, el problema va más allá del lenguaje, el problema fundamental es la mentalidad de "programador" versus la mentalidad del "desarrollador".

Mariano dijo...

Enrique: Sería bueno ver por aquí un análisis de algunos frameworks populares: cakePHP, Symfony, RoR, etc. Por lo que parece, vos implementas tus desarrollos en tus clases + Pear + Smarty. Si bien para cada sistema (proyecto, página, etc) se analiza que herramienta utilizar, ¿podrías exponer que te ha influido para decidir utilizar lo que antes mencioné?

Gracias a todos por las lindas discusiones planteadas ;)

Emilio dijo...

Hola Enrique, estoy de acuerdo contigo en que lo importante son la ideas, los patrones, los modelos, no los lenguajes en particular, pero al final hay que utilizar una tecnologia u otra, hay es donde entra si elegir java, php, .net o cualquier otra tecnologia. Creo que php tiene que evolucionar como es lógico, pero deberia centrarse mas en la parte web y dejar la logica y la persistencia a otras tecnologias mas adecuadas."
el "post" hace mención de las arquitecturas como ejemplo a imitar y aprender.", estoy de acuerdo, pero esas arquitecturas hay que implementarlas, y hoy por hoy las mejores plataformas para implementar arquitecturas medianamente complejas (modelo 3 capas distribuido), son java y .Net. En este modelo de 3 capas php se puede reforzar en la presentacion.

"Te estás yendo de tema. Nadie quiso plantear una guerra entre lenguajes ni arquitecturas". Entonces como tengo que entender comentarios como: "PHP se está orientando a convertir en una "arquitectura", a parecerse a un J2EE pero mucho más simple y directo."o este otro: "Estoy de acuerdo, también es mi opinión que Java (tanto como lenguaje como arquitectura) es innecesariamente complejo", y no hablar de la camiseta :-D. Cuando tu acusas a java de complejo(de forma ¿innecesaria?) yo lo defiendo diciendo que esa complejidad existe para solucionar problemas complejos,si tu problema es simple puedes optar por una arquitectura simple, puedes elegir, cosa que en php hoy por hoy esa eleccion es mucho mas reducida, no es ninguna guerra es una realidad.

No te has planteado que igual la gente que desarrolla en php cuando se profesionaliza se pasa a plataformas mas completas como java EE o .Net. Que le sirve para resolver los problemas complejos con los que se encuentra en el dia a dia de una empresa.

"¿La tengo que demostrar con argumentos? No sabía que los comentarios de mi propio blog se habían vuelto un juicio con abogados.", con esta afirmacion no esta siendo "extremista", la afirmacion que haces puede confudir a la gente que se esta iniciando, y hay que poner las cosas claras para que la gente pueda comparar.Decir que A es mas simple B, sin razonar esa simplicidad, puede confundir.

Sobre la docencia, se coge un ejemplo particular para demostrar la generalidad, viendo un ejemplo se puede comparar de forma concreta dos soluciones.

"Si tu afirmas que PHP es más simple, más sencillo, suma "tipado dinámico de variables", "ausencia de definición de tipos de retorno", "clases base", "package", etc, y lo que debes expresar en varias líneas de código en Java -obligatoriamente, hasta para imprimir un mensaje en pantalla- lo haces con las justas líneas en PHP (con solo las que necesitas para decir "este es el patrón X")."
Si no lo vas a hacer funcionar, que solo es un codigo de pizarra, no es necesario que realizes todo lo que comentas en java. Ademas para aprender a programar en un lenguaje particular OO, lo mas didactico seria hacerlo en java, C# o smalltalk, ya que todo lo que has comentado que no es necesario usar en php5, es muy conveniente saberlo y comprender su utilidad. Ademas hoy en dia con los editores actuales te centras en resolver el problema, todo lo que has comentado esta automatizado, pero sigo diciendo que es muy necesario saber que es un package o namespace, tener muy claro los tipos de datos, tener muy claro que es lo que devuelve una función, sobre todo para los test. Para enseñar POO sin entrar en detalles de implementacion ya tienes UML y el pseudocodigo.

Saludos.

noHuman dijo...

Yo uso PHP desde hace años, simplemente porque funciona, tiene las funciones justas las que se gastan, Los Frameworks es lo de toda la vida, antes Librerias, Kernel's y tal, el cut & paste ... a su maxima expresion. Nuestra lobor debe de estar fundamentada en Linux+Apache+php que funciona y demostrarlo. Lo cual es muy dificil en Administracion y grandes empresas donde un representante de MicroPollas siempre lo hace mejor ante un Jefe de Departamento Informatico Licenciado en Quimicas....lo de mas son historias.

enrique_place dijo...

Estimado Mariano:

> Enrique: Sería bueno ver por aquí
> un análisis de algunos frameworks
> populares: cakePHP, Symfony, RoR, etc.

¿No, no y no... qué me preguntaste?

(no, no soy necio ;-) )

En el blog he hecho enlaces a distintas comparativas sobre el tema, pero realmente en lo personal trato de escapar de ellas y trato de usar un criterio basado en el sentido común: tratar de seguir la "corriente oficial" de la empresa Zend (no es muy disparatado, ellos mismos desarrollan PHP, el Zend Framework, tienen un proyecto de RAD, etc).

Pero también, como alguien dijo alguna vez: "no hay problema informático que no se resuelva con otra capa de abstracción", por lo que trato que los sistemas que desarrollo usen sus propias capas de abstracción y dentro -tal vez- una herramienta específica. Si mañana decido cambiarla por "X" razón, el resto del sistema no se entera. No soy "framework dependiente", pero tampoco "reinvento la rueda", trato de aprovechar las herramientas existentes... algunas me sirven por su "bajo nivel", otras por su "alto nivel", pero trato de buscar la justa medida y tener el control del desarrollo del sistema.

Como dije, trato que mis desarrollos no sean "framework dependiente", de una empresa, de un producto en particular, etc, o por lo menos, trato de tener una puerta de salida, que me permita flexibilidad para adecuarme a los requerimientos particulares de un sistema/cliente/empresa/contexto/etc.

Hoy es eso, mañana no sé, tal vez evolucione a otra estrategia, amén de que todo esto es muy personal y acorde a nuestro conocimiento base y experiencia.

Pero vuelvo, el punto no es si uso o cual uso, es que debemos tener ese "bagaje" de conocimientos base, profesionalizarnos, usar UML, principios de diseño OO, patrones, poder competir al mismo nivel que arquitecturas (nosotros no lo somos aún, pero podemos intentar serlo) como Java o .Net (salvando las distancias).

Pero si o si, dejar de ser simples programadores de scripting.

Ese es el punto, no otro.

Pero como comenté, justo para este "post" sería salirse del tema, pues no es el punto fundamental del mismo.

> Por lo que parece, vos implementas
> tus desarrollos en tus clases + Pear +
> Smarty. Si bien para cada sistema
> (proyecto, página, etc) se analiza que
> herramienta utilizar, ¿podrías
> exponer que te ha influido para
> decidir utilizar lo que antes
> mencioné?

No necesariamente ;-) Aunque a veces las decisiones pueden ser "por un tema de piel"... vuelvo a repetir, no necesariamente el tema son las herramientas que termines usando, sino, todo los conocimientos que hay detrás, de los cuales se debe apoyar el desarrollador. Si tu decides por una u otra, con fundamento, la respuesta será correcta. No necesariamente tenemos que llegar a la misma.

Lo que no es correcto usar las cosas por "moda" sin fundamentos, todos usan aquel framework, porque Place usa este yo lo uso, etc... mi realidad no tiene por qué ser la tuya, ni mi solución debe ser la correcta para ti.

Decide tú, pero para eso debes ser "profesional", por los conocimientos que debes tener y por ser responsable y hacerte cargo de tus decisiones.

Nota: es muy común ver que autores de blogs, artículos, libros, son mucho de mostrar "una verdad absoluta", la de ellos, cuando eso no es correcto. Yo no busco que me sigan o me imiten, ni que me den la razón, busco hacer razonar y que cada uno sea su propio "arquitecto". ¿Por qué debemos "uniformizarnos" si podemos tener los mismos "principios" sin tener que ser idénticos unos a otros?

Yo no me voy a poner a discutir que este es mi mejor framework o el otro, por eso trato de basarme en autores reconocidos, una tercer persona, para apoyarme en ellos y hablar de "conceptos generales" y no de "productos particulares".

¿Se entiende? El punto es que los típicamente programadores PHP ni siquiera tienen conocimientos (ni preocupación por adquirirlos) sobre POO elemental. PHP5 dio un gran salto hacia adelante, pero los programadores quedaron en el mismo lugar.

No es solo frameworks.

Tu puedes hacer un sistema entero sin frameworks, o directamente, con uno propio.

Un framework es una herramienta más, de que sirve para realizar un sistema completo si medianamente no sabemos de POO, ni de principios de diseño, de patrones, cómo se usan las interfaces, ni de UML, etc.

Un framework solo no te resuelve el 90% del sistema, del "dominio del problema". ¿Que hacemos? Trabajamos con frameworks que son OO pero el resto de nuestra programación la hacemos estructurada?

Muchas traducciones estrictas convierten a "framework" en "armazón"... bueno, es literalmente eso.

> Gracias a todos por las lindas
> discusiones planteadas ;)

Espero que sigamos concentrados en el punto medular y no al "infinito y más allá" ;-)

enrique_place dijo...

Estimado Emilio:

> Hola Enrique, estoy de acuerdo contigo
> en que lo importante son la ideas,
> los patrones, los modelos, no los
> lenguajes en particular, pero al final
> hay que utilizar una tecnologia u
> otra, hay es donde entra si elegir
> java, php, .net o cualquier otra
> tecnologia. Creo que php tiene que

Bueno, pero no estoy discutiendo sobre eso. El blog es de PHP, el "post" habla de los desarrolladores que usan PHP, pero invita a mirar "al costado" para aprender de otros ambientes y desarrolladores, para profesionalizarnos.

No es una discusión sobre qué plataforma es mejor ni menos que producto es mejor que otro.

Trato de evitar "guerras santas" ;-)

> evolucionar como es lógico, pero
> deberia centrarse mas en la parte web
> y dejar la logica y la persistencia a
> otras tecnologias mas adecuadas."

No entendí, ¿cuando dices "otras tecnologías" hablas de fuera de PHP o de dentro de PHP?

> el "post" hace mención de las
> arquitecturas como ejemplo a imitar y
> aprender.", estoy de acuerdo, pero
> esas arquitecturas hay que
> implementarlas, y hoy por hoy las
> mejores plataformas para implementar
> arquitecturas medianamente complejas
> (modelo 3 capas distribuido), son java
> y .Net. En este modelo de 3 capas php
> se puede reforzar en la presentacion.

¿Y en que parte dije lo contrario? ;-)

Estoy diciendo eso, a PHP le faltan algunos años para llegar a hacer mínimamente cosas como Java o .Net por el simple hecho de que aún es un lenguaje, pero con tendencias a convertirse en arquitectura. Amén también que los "programadores PHP" deberían ser críticos consigo mismos y reconocer que la mayoría bordea el "analfabetismo informático" al no seguir la evolución de la tecnología.

> Entonces como tengo que entender
> comentarios como: "PHP se está

Eso son, comentarios, finalizados con un "smile".

Creo que tu problema es que "no me toquen Java que me vuelvo loco" ;-)

> y no hablar de la camiseta :-D. Cuando
> tu acusas a java de complejo(de forma
> ¿innecesaria?) yo lo defiendo
> diciendo que esa complejidad existe
> para

Tranquilo, tranquilo, es mi opinión personal dicha muy a la ligera en un contexto de camaradería. No seas tan extremista e intransigente.

Sé autocrítico también, no todo el mundo accede fácilmente a entender y trabajar cabalmente en una arquitectura tan amplia y completa (¿compleja?) como Java.

> solucionar problemas complejos,si tu
> problema es simple puedes optar por
> una arquitectura simple, puedes
> elegir, cosa que en php hoy por hoy
> esa eleccion es mucho mas reducida, no
> es ninguna guerra es una realidad.

Ok, tu puntualización y la de rastafari, son justas y precisas, pero no deberían tomar unos comentarios (que ya los expliqué como eran) tan al pie de la letra como si de una "declaración de principios" fuera... que ni siquiera es el sentido del "post" que nos lleva a intercambiar estos comentarios.

> No te has planteado que igual la gente
> que desarrolla en php cuando se
> profesionaliza se pasa a plataformas
> mas completas como java EE o .Net. Que
> le sirve para resolver los problemas
> complejos con los que se encuentra en
> el dia a dia de una empresa.

Puede ser, pero también hay personas que no desean entrar "en el basto mundo de la arquitectura Java", y prefieren hacer desarrollos "menos complejos".

¿O por qué crees que se abrió un nicho para Ruby On Rails?

Muchos prefieren usar otras tecnologías para abordar los mismos problemas, y están en todo su derecho. No para todo sirve Java o .Net, de ahí es que debemos seleccionar la herramientas que nos sea más convenientes a nosotros (que no quiere decir que para otros se aplique igual).

> "¿La tengo que demostrar con
> argumentos? No sabía que los
> comentarios de mi propio blog se
> habían vuelto un juicio con
> abogados.", con esta afirmacion no
> esta siendo "extremista", la

Si, ahora lo estoy siendo yo ;-)

Estás tomando al pié de la letra cada comentario donde digo algo de Java, observando el detalle a través de una lupa y siendo poco objetivo.

> afirmacion que haces puede confudir a
> la gente que se esta iniciando, y hay
> que poner las cosas claras para que la
> gente pueda comparar.Decir que A es
> mas simple B, sin razonar esa
> simplicidad, puede confundir.

Eso corre por cuenta de quién lo lee. Nunca se pude tomar nada sin digerir ni razonar, y tampoco es sano que te preocupes tanto por ese tipo de detalles... pues nunca fue el punto de discusión.

> Sobre la docencia, se coge un ejemplo
> particular para demostrar la
> generalidad, viendo un ejemplo se
> puede comparar de forma concreta dos
> soluciones.

Te felicito ;-) (no sé que quieres que te conteste).

> java. Ademas para aprender a programar
> en un lenguaje particular OO, lo mas
> didactico seria hacerlo en java, C# o
> smalltalk, ya que todo lo que has
> comentado que no es necesario usar en
> php5, es muy conveniente saberlo y
> comprender su utilidad. Ademas hoy en

Lo de cual lenguaje usar, te pediría que me dejaras un poco de libertad para yo tomar la decisión... más si te digo que el curso es sobre "desarrollo de sitios web orientados a objetos usando PHP5" ;-)

> diciendo que es muy necesario saber
> que es un package o namespace, tener
> muy claro los tipos de datos, tener
> muy claro que es lo que devuelve una
> función, sobre todo para los test.
> Para enseñar POO sin entrar en
> detalles de implementacion ya tienes
> UML y el pseudocodigo.

Bueno, a algo de eso es que apunto con mis dichos.

PD: Tengo una duda: ¿al final, tu usas PHP o Java, entraste a este blog a hablar de PHP y de los desarrolladores del mismo, o solo a defender a Java por si alguien hablaba mal de él? ;-)

enrique_place dijo...

Estimado nohuman:

> Yo uso PHP desde hace años,
> simplemente porque funciona, tiene las
> funciones justas las que se gastan,
> Los Frameworks es lo de toda la vida,
> antes Librerias, Kernel's y tal, el
> cut & paste ... a su maxima expresion.
> Nuestra lobor debe de estar
> fundamentada en Linux+Apache+php que
> funciona y demostrarlo. Lo cual es muy
> dificil en Administracion y grandes
> empresas donde un representante de
> MicroPollas siempre lo hace mejor ante
> un Jefe de Departamento Informatico
> Licenciado en Quimicas....lo de mas
> son historias.

:-))))

Tus incoherencias son muy claras y gratificantes ;-)

rastafari dijo...

No te tomes a mal mis comentarios enrique, estoy totalmente de acuerdo en el fondo de tu articulo y me parecen realmente muy loables tus intentos de transmitir la necesidad de una mayor profesionalización entre los desarrolladores PHP.

Si me he centrado en salir en defensa de "java" es sencillamente porque en los comentarios anteriores al mio ya habeis dado por sentado que "java es complejo", sólo queria exponer mi opinión para poner de manifiesto que no todos compartimos esa afirmación.

Un saludo y suerte con tu "campaña", aunque jugando por un momento a pitoniso, en pocos años te veo de lleno en el mundo java ;), para los que nos gusta esto del desarrollo de soft (y es obvio que a ti esto además de ser tu trabajo te gusta) es el mejor sitio, creeme.

Emilio dijo...

Hola enrique, lo primero que quiero aclarar es que actualemtne soy bastante objetivo, yo he usado php y ahora uso java (java SE y java EE). Yo no defiendo a java por que si, simplemente expongo lo que es una realidad. En este foro dais por hecho que java es complejo, lo cual no es del todo cierto, tiene muchas especificaciones, pero no es necesario saberse ni la mitad para hacer un desarrollo mediano. Es mas yo actualemente uso Spring e Hibernate que no estan dentro de las especificaciones (los JSR),aunque se integran con ellas.

"No entendí, ¿cuando dices "otras tecnologías" hablas de fuera de PHP o de dentro de PHP?", hablo de tecnologias fuera de php. Actualemente voy a trabajar en usar EJB desde PHP, creo que puede ser una buena solución.

"Creo que tu problema es que "no me toquen Java que me vuelvo loco" ;-)", no es mi problema creeme, por suerte o por desgracia he programado en muchos lenguajes, y he llegado a la conclusion de que java (java SE, java ME, java EE), es la mejor opcion actualemente, para la mayoria de los problemas que te puedes encontrar en el desarrollo empresarial. Cubre la resolucion de un mayor numero de problemas.

"Sé autocrítico también, no todo el mundo accede fácilmente a entender y trabajar cabalmente en una arquitectura tan amplia y completa (¿compleja?) como Java."

Es que no entiendo eso que comentas (completo o complejo, que no es lo mismo), en php necesitas apache (o iis) y mysql, por ejemplo, en java, tienes la maquina virtual, tomcat (de apache) y mysql, puedes poner unas jsp (que son muy similares a php) en tomcat, y ya tienes una web funcionando. Una vez hecho esto puedes adentrarte mas en las especificaciones, si lo necesitas claro.

"¿O por qué crees que se abrió un nicho para Ruby On Rails?", ruby on rails plantea unos principios para el desarrollo de web, que no estan en las especificaciones de java EE, ni en ningun proyecto open source en java. Actualemente estan trabajando en JRuby, veremos dentro de poco ruby funcionando en java.

"Muchos prefieren usar otras tecnologías para abordar los mismos problemas, y están en todo su derecho. No para todo sirve Java o .Net, de ahí es que debemos seleccionar la herramientas que nos sea más convenientes a nosotros (que no quiere decir que para otros se aplique igual)." , Estoy totalmente de acuerdo. El problema es que muchas veces se abordan problemas con tecnologias que no cubren bien la resolucion de esos problemas. Una cosilla, en el desarrollo de aplicaciones empresariales ¿para que no sirve java o .Net?.

"Lo de cual lenguaje usar, te pediría que me dejaras un poco de libertad para yo tomar la decisión... más si te digo que el curso es sobre "desarrollo de sitios web orientados a objetos usando PHP5" ;-)". Yo no soy quien para imponer que lenguaje usar, simplemente queria expresar, que desde mi punto de vista hay otros lenguajes mas didacticos que php5 para enseñar POO.

"PD: Tengo una duda: ¿al final, tu usas PHP o Java, entraste a este blog a hablar de PHP y de los desarrolladores del mismo, o solo a defender a Java por si alguien hablaba mal de él? ;-)"

Como he dicho al principio, antes usaba php y ahora uso java. Java tienes sus problemas como todos los lenguajes, pero la complejidad en java es opcional, esta hay por si la necesitas.

Enrique una opinion personal, me pareces una persona politicamente muy correcta, y valoro tus esfuerzos por mejorar php, pero como ha comentado rastafari, creo que acabaras haciendole un guiño a java o .net :-D.

Saludos.

phpleo dijo...

Toda la razón en este post y yo creyendo que esto podría mejorar el uso pero en realidad me aleja mas del uso de los namespace. Por toro lado aun (en muchos casos), estamos bajo el yugo de los servidores en empecinarce en usar php4 y mysql v3 o anteriores no permitiéndonos desarrollar un verdadero diseño de la DB ni el manejo de relaciones, muchas veces teniendo que programar cosas que la misma Db debería de hacer.

Un saludo maestro y a todos los PHPeros :)

jesus dijo...

Llevo 2 años programando con PHP orientado a objetos y con plantillas.

Implemento el modelo vista controlador, lo que hace que mi aplicación se pueda reutilizar cambiando simplemente la tpl.

Entonces según algunos, por lo que he leido, dicen que las plantillas fueron una moda y nada mas, ???, pues no se la verdad es que yo prefiero tener todo mi codigo php en un lado y html en otro. y no ver 2000 lineas de codigo mezcladas, lo odio.

En cuanto a la OO, quien haya estudiado un minimo de informatica conocerá el concepto de "divide y venceras", pues esto es eso llevado al estremos.

En mis desarrollos tengo objetos que hacen determinadas cosas, con lo cual cuando necesito hacer lo mismo en otra pagina, lo unico que tengo que hacer es crear una instancia de ese objeto y listo ya tengo esa parte de la pagina montada. Por ejemplo en el index de mi pagina tengo una encuesta, pero claro el modulo de la encuesta tambien tiene que verse las encuestas, pues nada creo un objeto que lo que hace es parsear(construir) la parte del html que contiene la encuesta. y lo utilizo en todos los sitios donde tenga que meter la encuesta, claro por supuesto esto se puede lograr gracias a que tengo una plantilla con solo el html que contiene el html de la encuesta.

Con todo esto tengo que decir, que hay una frase que dice "Renovarse o morir", en nuestro caso será "renovarse o quedarse sin curro".


Por supuesto programo en Java, y me da pena ver la forma tan poco profesional con la gente que programa en PHP, y me refiero a empresas muy grandes en España, que ni siquiera usa plantillas y tiene portales muy complejos embebiendo codigo. No me quiero imaginar lo que tiene que suponer el mantenimiento de esos portales.

a los que no usais plantillas una pregunta ¿ Y cuando quereis cambiar el diseño de la pagina, que haceis , reprogramarla por completo?.

Un saludo

enrique_place dijo...

Bien dicho! gracias por compartir tu experiencia en el tema.

La gran ventaja que contamos nosotros es conocer otros entornos de desarrollo que están varios niveles arriba de PHP, como en este caso, la arquitectura Java.

Cuando se pasa un poco de tiempo investigando te das cuenta que estamos sumergidos en el desconocimiento y la ignorancia, pero la culpa no es "del lenguaje PHP", es nuestra, de los propios desarrolladores.

Hector dijo...

Tenemos una gran cuesta que ascender todavía, eso es indudable.

Actualmente estoy dirigiendo un equipo de desarrollo en PHP, nuestra supervivencia en la jungla laboral depende de competir por proyectos contra otros equipos, su mayoría de desarrolladores en JAVA, y créanme no ha sido nada fácil.

Nuestra primer estrategia para competir fue tratar de emular JAVA usando PHP, esa es la tendencia que se ha sentido en el ultimo año, por lo menos eso es lo que nosotros hemos percibido y desgraciadamente también nosotros caímos en el juego. Durante meses nos desvivimos tratando de hacer PHP mas "ingenieril" mas organizado, mas "fancy", mas de MODA, mas JAVA.
A nosotros nos costo meses de estrellarnos en muros, de causar risas en presentaciones con clientes. La vida se encarga de que revises la realidad de vez en cuando y a nosotros nos toco una revisión un tanto cruda, pero al final la valiosa y muy dolorosa lexion fue simplemente eso, "PHP no es JAVA, PUNTO".
Es cierto que hay muchos huecos que cubrir y muchas carencias a las que hay que darle la vuelta. PHP es un lenguaje joven todavía y como tal tiene que evolucionar, pero antes tenemos que quitarnos el estigma nosotros mismos, ese estigma que hemos acceptado y bajo la sombra del cual vivimos desde hace mucho tiempo... "PHP es el JAVA para nenas", "PHP solo funciona para sistemas sencillos". PHP no es JAVA, punto. Y lo que para muchos representa nuestra debilidad, sabiéndose explotar, es nuestra mas grande fortaleza.
El mundo funciona con dinero, eso lo sabemos todos, el dinero es el aceite que mantiene lubricados los engranes de la vida laboral y profesional de todos nosotros. Ese mundo es dirigido por gente que no le interesa si el sistema por el que esta pagando es JAVA o PHP, (eso es algo que solo nos interesa a lso que entendemos la diferencia) a ellos, a los que mandan, a los que pagan, a ellos solo les interesa el cuando y el cuanto.
Si tu sometes 2 sistemas a una prueba de performance (APC Test), uno en PHP y otro en JAVA, ambos con la misma funcionalidad, es muy probable que JAVA supere con creces a PHP simplemente porque por naturaleza es mas eficiente, y si a eso le sumas la madurez de la comunidad JAVA, el soporte, los frameworks, IDE's, documentación, capacitación... PHP se ve realmente pequeño a lado de todo eso. Pero entonces, ¿donde esta nuestra fortaleza?...
Nuestra fortaleza esta en la SIMPLEZA. La simpleza te permite llevar a la practica el concepto del RAD (Rapid Application Development). Rapido implica barato, y eso si le interesa a la gente que paga las cuentas. Y si a rapido le sumas planeacion, profesionalismo y mucha ingeniería pero SIN HACER LAS COSAS COMPLICADAS, JAVA ya no se ve como el Goliath que a veces vemos.
Ese es el camino que a mi muy humilde opinión deberíamos seguir, tomar lo bueno del UML y los modelos POO pero no adoptarlos si no ADAPTARLOS a esa filosofía de sencillez que es lo que distingue a PHP .KISS (Keep it simple, stupid!).
JAVA es un gran lenguaje, de eso no hay duda, tenemos que aprenderle mucho a la comunidad JAVA pero no podemos seguir persiguiendo su sombra, donde ellos fallan (simpleza) es donde PHP debe ser mas fuerte.

enrique_place dijo...

Estimado Hector:

Impresionante, 100% de acuerdo.

No sé si te enteraste, pero me gustaría invitarte personalmente a participar de mi "taller piloto" sobre PHP5, en calidad de "líder" de grupo o directamente como asesor y discutir ideas.

¿Te parece? ;-)

garaged dijo...

Pues malos programadores hay donde sea, he visto programas terribles en perl, con html embebido, he visto programas en java que estan orientados a objetos porque todo lo hacen en clases, pero ninguna clase hereda o extiende a otra (cero patrones de diseño), y asi te puedes ir

No es el lenguaje, así que para que darle mas leña a una discusión que no tiene sentido ?

David F. dijo...

Saludos muy cordiarles a todos, me ha tomado unos buenos minutos leer el post + los comentarios... wao parece ser que llegue tarde ;-) aun asi quiero dar mi opinion.

PHP es verdaderamente simple, es algo sencillo y sobre todo practico, pienso que por eso su popularidad. No hay que centrarse en el tema "PHP vs JAVA" no tiene sentido. Creo en la evolucion, en el progreso, en crecer. PHP en sus inicio fue un lenguaje orientado a la web, que esta dando pasos para convertirse en un lenguaje mas GENERAL debido a su popularidad, pero aun le faltan mucho, no podemos "tapar el sol con un dedo".

Personalmente, utilizo PHP como mi "HERRAMIENTA" no. 1, debido a razones puramente personales. Digo herramienta, porque para mi, eso es. No es verdad que al momento de desarrollar una aplicacion de "Escritorio" (para mencionar algo que no es "tan complejo" en solo algunos casos, en la mayoria si lo es), seamos tan tercos, y empezemos a "matarnos" con el GTK+, no tiene sentido complicarnos la vida, para eso existen otros lenguajes (para mi, herramientas :-P), para Proyectos mas complejos.

Sin salirme del tema inicial, SI, los desarrolladores PHP debemos profesionalizarnos, crecer, imitar lo bueno, pero siempre manteniendo la originalidad, que es la SIMPLEZA.

Ahora bien, coincido en lo que mas arriba dijeron: "los frameworks son una moda". Tienen sus pros y sus contras. A mi entender, "propagan la vagueza", causan ser extremistas con eso de hacer las cosas lo mas sencillo posible; pero evitar todo esto cabe en el campo de lo "ideal", en la realidad al cliente, ni al usuario final, les importa si usaste un framework o no, lo que le importa es que "le soluciones" el problema, no le importa si hay 2mil lineas HTML/PHP, lo que le importa es que la pagina se vea, y se vea bien. Mi experiencia en lo profesional me ha enseñado a que independientemente de como soluciones el problema, debes solucionarlo, asi que debemos utilizar todas las herramientas posibles para lograrlo, todo es personal.

Y, por lo menos en mi pais (no quiero generalizar :P), al momento del cliente pagar, no importa si te desvelazte o simplemente hiciste un "copy/paste", si el index tiene 10k o simplemente 3k, el cliente paga lo mismo.

Estamos viviendo una etapa donde el PHP está evolucionando, esperemos un tiempo para así poder comparar PHP con arquitecturas.

Cordialmente me despido, desde Santiago, República Dominicana.

Saludos.

Sandra Luz dijo...

he leido el articulo, pero no todos los comentarios, pero por lo poco que lei estamos divididos entre los que piensan que avanzar en la programacion en php es bueno y los que piensan que se malograria el espiritu de php, puede que este equivocada pero me parece que aquellos que piensan que la programacion en php debe quedarse como esta o no son programadores que vivan de eso, o al menos no han pensado en subir de nivel de programador a algo mas, en mi caso, antes de leer este articulo, solo estaba pensando en aprender java lo mas pronto posible por que es lo que pide el mercado en cuanto a desarrollo de sw se refiere, y que con php se tiende a ser mas desordenado a la hora programar, entre otras cosas, por que el mismo lenguaje te lo permite, pero este articulo me ha animado a ir un poco mas con php, aprender la POO con php y despues la transicion de php a java pues no sera tan dolora, y asi sabre 2 lenguajes, lista para la jungla de desarrollo
y es verdad que el codigo embebido es un desastre, por que nos confunde y a mi hasta me deprime ver tanto desorden, pero es solucionable usando plantillas, actualmente trabajo en proyectos de php con smarty, pero no es php orientado a objetos y es verdad que hacer crecer el sistema es una pesadilla, confio en la POO ayude a la escalabilidad de los sistemas

Yanier dijo...

Sin comentarios solo decir que eso es una falta de respeto paa los autores de proyectos como Code Igniter, CakePHP, Seagul, Sinfony, TYPO3, y se me quedan muchisimos... cada uno de estos proyectos aplican por mucho mejores tecnicas basadas en patrones modernos de arquitectura que muchas app hechas en .NET o J2EE...

Es cierto que hay aun muchos desarrolladores que mentien el scripting pero es que somos muchos... Si todos los programadores PHP programaran bien... El mundo muera muho mejor......

marcelo dijo...

totalmente en desacuerdo con David F.
dijo: "en la realidad al cliente, ni al usuario final, les importa si usaste un framework o no, lo que le importa es que "le soluciones" el problema, no le importa si hay 2mil lineas HTML/PHP, lo que le importa es que la pagina se vea, y se vea bien. "
Entendio mal parece este tipo, va totalemnete en contra del conecepto de desarrollador web, asi piensa un simple programador que seguira programando a ojos cerrados como caballo desbocado, escribiendo mil lineas para un "hola mundo", no se trata de fomentar la vagancia se trata de optimizar el tiempo de codificacion y ocuparlo en un modelo de datos una buena implementacion. Si bien al cliente le vale madre como este su pagina o sistema, pero cuando quiera hacer una modificacion va a asesinar al programador que codifico ese chorizo.
saludos cordiales

Marcelo PHP

eltonto dijo...

Una pregunta tonta, de las mias, ¿abrazar todas estas técnicas hace programadores que escriben mejor código? por mi experiencia no. ¿Conseguimos profesionales que desarrollen mejores soluciones? Si vemos la mayor parte del software que se hace en la actualidad, sobra la respuesta.

Creo que un buen desarrollador, lo es independientemente de los lenguajes y técnicas que utilice, porque conseguirá una buena aplicación, la que precisa el cliente, bien desarrollada y fácil de mantener, con las herramientas que tenga a su disposición.

El problema de los "programadores" que utilizan PHP es que no tienen idea, ni de programación, ni de como crear aplicaciones y en muchos casos no entienden ni los conceptos más básicos de la web. No es un problema del lenguaje.

Por lo tanto identificarse con los malos programadores de PHP es un complejo absurdo y que no lleva a ningún lado. Si se cree que PHP es la limitación -técnica, comercialmente o a nivel de imagen-, cámbiese de lenguaje.

Saludos

Sergabrod dijo...

Hola a todos, leí el artículo completo y casi todos los comentarios (algunos no valieron ni la pena), particularmente coincido en lo que dice Enrique en su post y creo captar lo que el quiere transmitir, me parece que se desvirtuó la escencia en los comentarios llevando esto a una guerra entre lenguajes que no tiene el más mínimo sentido.

Básicamente pienso que la posibilidad que da PHP de seguir codificando estructurado y realizar todo un sistema sin siquiera haber creado una clase hizo que retrasara un poco la adopción de OOP y sus "buenas prácticas" entre los desarrolladores de este lenguaje, cuando JAVA fue siempre un lenguaje más OOP puro desde sus inicios.

Pero este no es el punto, creo que el desarrollo de software a esta altura dejó de ser cosa de "un programador" como lo era hace unos años, es una industria, no es lo mismo hacer una página para una pyme que un ERP web-based a nivel empresarial, seguramente este último llevará mucho mas tiempo, costos, planificación, comunicación entre desarrolladores, etc. y es ahi donde pasan a ser importantes todas las herramientas que menciona Enrique, UML, Patrones de diseño, frameworks, polimorfismo, binding dinámico, etc, etc, etc.

Imáginense un arquitecto o ingeniero construyendo un edificio sin planos, sin usar fórmulas de cálculo de estructuras ya probadas, y comenzado desde cero en cada proyecto, o si tuviese que modificar o ampliar uno de sus edificios construidos hace un par de años y no tiene sus planos. IMPOSIBLE.

Eso pasa con el soft, todavía seguimos pensando en la programación imaginándonos un tipo sentado frente a su pc escribiendo código, no lo pensamos como industria, donde cada reinvención de rueda que hagamos es dinero perdido, donde hay software del que dependen equipos complejos (control de aeropuertos, equipos de medicina, centrales nucleares, etc) y que un fallo puede ser una catástrofe.

Que quiero decir con todo esto, debemos dejar de ser "los chicos de la computadora" y profesionalizar la informática, sea cuál sea el lenguaje, paradigma, sistema operativo, mac o pc, etc. desarrollar software hace mucho dejó de significar sentarse a escribir código, creo que depende de nosotros algún dia ser considerados profesionales a la altura de otras ciencias.

Saludos.

Sergio Gabriel Rodriguez
http://www.3trex.com.ar

José Roberto dijo...

Considero que la realidad es que los programadores/desarrolladores generalmente se casan con una herramienta (hace 6 años no trabajaba con mas que visual basic 6.0 y no sabia nada de programacion web hoy solo programo en php) eso provoca que nos adaptemos y evolucionemos con una herramienta aplicar conceptos teoricos siempre se puede hacer, siempre que sea adecuado hacerlo, considero que no siempre es idoneo aplicar todo lo teorico, coincido con un comentario que decia que lo importante es que funcione, sea agil y fail de mantener si se puede tener todo que bien

cabe mencionar que php desde sus inicios se concibio como una herramienta orientada al web exclusivamente eso le brinda mucho potencial

internia dijo...

Completamente de acuerdo, Enrique, abundan los que se dedican a la programación en php pero pocos de ellos son realmente profesionales. Es fácil encontrarse gente que alardea de 5 años de experiencia en desarrollo php, de ser ingenieros del software, que se ponen medallas por cosas que no hacen,... y luego hacen unos trabajos impresentables. Se escudan en que sus clientes no tienen los conocimientos ni la habilidad de detectar los errores antes de que sea demasiado tarde. Pero cuando trabajan para otro desarrollador, más profesional, entonces se les pilla el gato por liebre. Por eso soy muy exigente a la hora de colaborar con otros desarrolladores, y digo desarrolladores porque es lo que deseo que sean, no me basta con un programador. El desarrollo con php no tiene por qué ser un enjambre de echos, una maraña de scripts, un conjunto de funciones rápidas mal diseñadas,... La reutilización de código, el ahorro de esfuerzo, y el fácil mantenimiento son posibles gracias a una buena planificación y buen uso de los recursos. La utilización de programación orientada a objetos, librerías de javascript, estilos css genéricos, un motor de plantillas (¡¡Smarty!!) son puntos a tener muy en cuenta.

Saludos.

José Carlos
Programador PHP Freelance

enrique_place dijo...

Que tal José Carlos ;-)

Es un tema de lucha diaria, es responsabilidad de nosotros mismos, como desarrolladores PHP (o del lenguaje que sea), de ir evolucionando con el tiempo... debemos entender que no podemos trabajar bien sin estudios, sin conceptos generales adecuados.

Hasta el 2000 aún podías trabajar armando páginas estáticas. Hoy, casi cualquier sitio, sea personal o empresarial, hasta de tipo institucional, requiere un mínimo de diseño de sistemas: administración de usuarios, noticias, seguridad, listas de correo, presentación de productos, poder modificar el contenido de un menú o el contenido de cualquier página del sistema.

¿Lo haremos siempre a mano? ¿no sería más productivo que tuviéramos un desarrollo único para todos nuestros sistemas y que cualquier mejora o corrección nos sirve para todos los proyectos?

Ahí ya necesitamos empezar a pensar en "sistemas", diseño, estrategias, versionado, políticas de desarrollo, etc.

Hace tiempo que pensar en "páginas" y solo "diseño estético" ya no es suficiente.

Gracias por tu aporte ;-)

geco dijo...

MORALEJA : Enrique, totalmente deacuerdo con vos, al final de todo PHP es un lenguaje de programación en crecimiento, el cual es rapidísimo, claro y práctico, podemos incluir cualquier tipo de librería Ajax, la ExtJs de yahoo, google, JQery, etc... podemos usar cualquier Framework si lo queremos(hay muchos)... podés crear tu propio sistema, organizado en carpetas que representen ese MVC que tanto mencionamos... etc.. pero ahí está la diferencia, tenemos que volver un HABITO el adquirir más y más el conocimiento conceptual para DESARROLLAR bien en PHP. ¿Cómo? más explicado en éste foro NO puede estar... pero igual lo resumo:

- NO importa el lenguaje sino los Conceptos (UML - MVC) arquitectura, patrones de diseño, etc... ésto es lo que NOS hace distintos al afrontar cualquier tipo de problema en cualquier tipo de Aplicación a realizar, poder PARARNOS desde un punto de vista MAS Elevado y poder tomar la desición correcta... (Eso hace la diferencia entre desarrollador y programador), tenemos que poder realizar los 5 pasos generales en la construcción de cualquier tipo de software (pequeño,mediano o grande) las menciono muy genericamente:

a) Analisis : recolección de la información y captura de necesidades y requerimientos del cliente.
b) Diseño: con ésta informacióny ya conocientdo lo que se requiere, iniciamos el proceso de construcción de la BD y realización de pantallas del sistema. UML(Diagramas de clase..Casos de uso...etc)
c) Programación: Estos diagramas y casos de uso y etc.. pasan a producción(Programación) que ya se entenderán y se desarrollaran.
d) Pruebas: (todo un sistema de pruebas, no conformidades, pruebas unitarias.. etc.. todo depende de lo que el proyecto requiera).
e) Implementación: de la aplicación y Capacitación...

Aclaro: En su gran mayoría se hacen éstos pasos básicos, aunque no Necesariamente siempre, depende del proyecto, necesidad , cliente, etc... muchos factores.. pero es algo general y que comparto como YO lo hago.. ojalá no esté equivocado.. jejeje

Bueno muchachos, me alegro que éstos espacios sirvan para la globalización del conocimiento.. y Enrique compré tu Libro y es Excelente y muy practico....

A los Jovenes JAVA, éstos foros es bueno compartir el conocimiento, pero no podemos volverlo un tema RELIGIOSO, POLITICO O FUTBOLISTICO ya que llevamos 2000 añs de religión y hay miles de religiones, mas de 2000 años en Política.. ysigue existiendo Izquierda y derecha... y en el Futbol ni hablar... dejémos ésos fanatismos Dogmáticos de que "Mi lenguaje es el MEJOR y el UNICO"... y más bien aportemonos conocimiento los unos a los otros mirando ventajas y desventajas y como dandole ideas a los otros podemos ayudar a construir mejores cosas "Ya me estoy volviendo religioso.. jejeje".

PHP me encanta, mi necesidad es hacer cada día mejor mis desarrollos con mi equipo de trabajo, volverlos reutilizables, eficientes, aplicar las tecnicas de desarrollo y obviamente cumplirle a mis clientes, que al final NO les importa si está hecho en CLIPPER ..pero que les funcione... mis hábitos de programación buenos, me sirven es a MI! ¿para que? para dar un mejor soporte,tener separarada las capas, reutilizar, mantenimiento... que se transforma en $$$$$ ... que al final es lo que mueve al MUNDO.

Saludos a todos...

Enforcer dijo...

Un saludo a todos.

Aunque este post lleva ya bastante tiempo me gustaría poder opinar.

Desde hace un tiempo, no mucho, buscando tiempo fuera del trabajo (que es muy poco), aprendo PHP de forma autodidacta; manuales por aqui, algún libro que me compro, algún curso gratuíto o pagando, mucho leer por internet, etc.

Creo que, por culpa de gente como yo, es por lo que PHP parece tan poco "profesional".

Me decidí por PHP sin saber nada de programación primero porque era gratis, segundo porque había abundante documentación y tercero porque lo entendía, que no es poco XD

El problema de aprender por uno mismo, o incluso recibiendo algún curso (la mayoria son muy básicos y enseñan lo mismo), es que aprendes de una forma muy anárquica, desordenada y poco eficiente. Algunas veces te das cuenta que sabes cosas que no deberías, por tu inexperiencia, y en cambio algunas cosas básicas no las sabes. El problema es que no hay nadie que te lo diga :p

De Java por ejemplo, me da la impresión que no es tan fácil aprender asi como asi, por uno mismo, y que la gente que lo sabe manejar es mayoritariamente porque lo ha dado al estudiar una carrera lo que conlleva una cierta "profesionalización" en la forma de trabajar.

Aún no he realizado ningún proyecto y antes de hacer alguno en condiciones y empezar con malos hábitos me puse a buscar información sobre motores de plantillas porque odio escribir código mezclado y desordenado.

Luego me enteré de la Programación Orientada a Objetos y me pareció la panacea. Joder, las cosas que se les ocurren a los que diseñan estos lenguajes, recuerdo que me dije a mi mismo :p. Aunque reconozco que pensar de forma abstracta es bastante complicado a veces...

Y luego de todo eso pensé... a ver, si yo tuviera que hacer un programa en PHP ¿por donde empezaria?. Es decir, sé lo que quiero que haga el programa pero ¿como lo organizo? y ahi empecé a leer en algunos sitios que la gente hablaba de MVC y parecía que era lo que respondía a mi pregunta (aunque aún no lo pillo) pero cuando profundicé más salieron más preguntas aún ¿frameworks? ¿IDE? joder, pero PHP no se podía hacer con el bloc de notas de Windows... XD

José Carlos dijo...

Me ha encantado tu post, Enforcer, está lleno de humor. Además me ha interesado por venir de alguien que se confiesa no-profesional.

Lo cierto es que ya sea de forma autodidáctica, como a través de cursos, o estudiando una carrera, lo normal es que uno aprenda el lenguaje de programación, técnicas de programación, forma de solucionar problemas concretos,... pero las estrategias de desarrollo, al menos hablando de php, se aprenden con la experiencia, el tiempo es el que nos va dando las claves para diseñar y llevar a cabo un proyecto web desde cero de una forma correcta, limpia, ordenada, eficiente y fácilmente mantenible.

joaquin dijo...

muy buen articulo. felicitaciones.
tienes razon, los sueldos de los programadores de PHP estan por debajo de los de Java o .Net. Pero todo esta en uno, y hacer valorar el trabajo, ya que PHP es un lenguaje muy potente.

saludos desde Colombia

Entradas populares