October 4th, 2010 Category: Programacion
11 Comments »
Cada vez es hay mayor cantidad de herramientas y tecnicas para realizar sistemas web, esto le da muchas mas complejidad dia a dia al desarrollo web, pero tambien mucha herramientas que facilitan el desarrollo de un sistema web.
Antes con saber programar en PHP/Mysql/Html/Css era mas que suficiente para conseguir clientes, y poder trabajar en cualquier proyecto web. Hoy en dia esto no es suficiente.
Los sistemas al ser mas complejos, requieren mas profesionalismo en el desarrollo, y gente mas capacitada. Hay muchas herramientas que hoy son indispensable para proyectos medianos/grandes, que requieren mas de un programador.
Control de versiones.
Es real que los sistemas son cada vez mas grandes y mas robustos, generalmente vemos que un sistema tiene varios desarrolladores, disenadores, QA, y otros, solo para crear un sitio de e-commerce, o un portal mediano. Esto hace indispensable el uso de un sistema para el control de versiones, pero no solo alcanza con saber hacer un checkout y commit con svn, ahora se necesita un conocimiento general sobre la teoria del control de versiones, branch, tags, mergear ramas. Tambien manejo de otros sistemas de control de versiones como mi actual favorito Git, o mercury, entre otros.
Testing Unitarios.
El trabajo en grupo es algo de todos los dias, siempre nos acomplamos a un grupo de desarrolladores, son muy pocos los proyectos que hacemos solo para que los desarrolle una sola persoa, esto si bien acelera los tiempos de desarrollo, tambien puede generar conflictos con el codigo de otras personas, puede pasar que alguien suba algo y rompa todas las funcionalidades del resto de los desarrolladores. Esto es tan normal que ya tenemos asumido que puede pasar en cualquier momento. Pero tenemos los unit testing, que hacen que estas cosas se puedan prevenir. Antes de hacer un commit, corremos todos los testing unitarios, y podemos saber si rompimos algo, antes de subir nuestro codigo al repositorio global. Igual, lo ideal es que cada developer trabaje en su branch, y que alguien o un script, mergee los branch al trunk cuando haya pasado todos los testing, y se considere que puede pasar al trunk (rama principal). Hay sistemas open source como crouisecontrol, que mantienen informado a todo el equipo como salieron los unit testing despues de que alguien del equipo subiera sus cambios. Si alguien subio y rompio algun unit testing, este le envia un mail a todo el equipo avisando del problema, para que lo solucionen rapido, ademas podemos hacer que sino pasa los testing, revote los cambios.
SEO
El SEO es un tema importante hoy en dia, no necesitamos ser “expertos” en SEO, pero necesitamos entender que es y cuales son las buenas practicas que podemos aplicar en nuestros desarrollos para facilitar la indexacion de parte de los motores de busqueda. Url amistosas, xhtml estricto y semantico, jerarquizacion de nuestro contenido utilizando correctamente los tags html, edicion de metatags, etc.
Servidores
Este siempre fue un tema que todo desarrollador esquivo, para delegar la responsabilidades al sys admin correspondiente. Es increible la cantidad de desarrolladores que se consideran senior, y no saben configurar un Virtual Host en apache, o usar minimamente la consola de linux. Linux/Unix nos brinda un monton de herramientas para los desarrolladores increbiles, que nos pueden hacer la vida mucho mas facil, y no lo digo solo por los comandos mas usados como tail, cat, vim y grep, tambien tenemos muchas otras herramientas que aumentarian considerablemente la velocidad y calidad de nuestros trabajos.
Uso de Frameworks.
Coincidas o no con la filosofia de usar uno u otro framework, te guste ZF y detestes Cake, o no te guste ninguno, la realidad es que tenes que tener la capacidad de poder manejar cualquiera de estos. Obviamente no estoy diciendo de manejarlos en profundiad sino manejar sus conceptos basicos, como configuracion, como maneja el modelo de datos, las vistas, etc. La mayoria de frameworks en PHP usan el Patron de diseno MVC. Conocer como funciona MVC es vital hoy en dia, pero tambien lo es entender los conceptos de ORM, Smarty (sistemas de plantilla), y tantos otros “Frameworks” / Libreria que complementan el desarrollo de una aplicacion.
Aplicaciones Pre Armadas.
Antes teniamos PHP-Nuke y gracias, en la actualidad que un cliente te presente la posibilidad de usar Joomla, Drupal, o Magento, es algo casi de todos los dias, nosotros como developers, tenemos que conocer no solo las ventajas de cada sistema de este tipo, sino tambien estar preparado para utilizarlo en el caso de que creamos que es necesario. Drupal para desarrollar webs es una herramienta increiblemente facil, ahorramos muchisimo tiempo de desarrollo configuracion, etc, etc. Lo mejor de estas aplicaciones es que es muy facil integrarlas a otros sistemas como Wikimedia, wordpress, u otros sistemas similares, o propios. Crear un modulo o plugin tambien es muy simple y las comunidades brindan una ayuda que vamos a poder valorar muchisimo cuando las necesitemos.
Social Media.
Muy lejos estoy de aceptar este rubro como algo importante, pero cuando yo me refiero a social media, lo hago desde el lado de desarrollo, orientando la aplicacion para que tenga las funcionalidades para integrarse con las redes sociales mas importantes. Un ejemplo excelente para mi gusto es stackoverflow, intenta registrarte y loguearte, son geniales. Esta claro que un usuario web comun y corriente hoy en dia tiene alguna cuenta o en gmail, facebook, wordpress, twitter, entre otros, porque no usar las api de esas redes sociales para facilitar el registro y login de usuarios en nuestros sistemas?
Compartir el contenido de nuestros sitios, con herramientas tan facil de usar como el “Me gusta” de facebook, o twittear un contenido, son muy utilies no solo para que nuestros usuarios puedan compartir sus intereses dentro de sus circulos “sociales”, sino tambien para que podamos conseguir usarios nuevos por este medio.
Herramientas para el desarrollo
No quiero volver a empezar la discusion de Vim o Eclipse, esto es algo que sobrepasa cualquier discusion, hoy en dia necesitamos todas las herramientas que aumenten nuestra productividad y el mejor manejo para el trabajo en equipo. El IDE hoy en dia es esencial, no quieras desarrollar algo en Vim, porque si estas trabajando por hora, vas a generar perdidas a la empresas en un monton de aspectos, que la verdad esos problemas no lo vas a tener con el correcto uso de un IDE, Eclipse PDT / Netbeans, son herramientas geniales para cualquier developer. Pero tambien estas herramientas no son las unicas. Necesitamos algo con el que puedas ver tus tareas asignadas, estado de las mismas, y porque no las de tus otros companeros de equipos. Un tracker como Trac, o Pivotal Tracker, yo estoy usando este ultimo y la verdad es que es bastante complejo pero muy util una vez que le hagarraste la mano. Necesitas trackear tus horas para aumentar la productividad?, usa Toggl, es un servicio web publico con una version gratuita muy flexible. Con una herramienta para instalar que tiene su version en windows, mac , y linux
.
Conclusion
Pareciera que estoy dejando de lado los temas importantes que son conocimientos del lenguaje del lado del servir, motor de base de datos, javascripts, frameworks en JS, Css, xhtml, html5. Todos estos son conocimientos que ya deberiamos tener en claro, sinos consideramos experimentados.
Trabajando en entornos Norte americanos, las exigencias son aun mayores. Estos exigen un nivel, que es muy dificil encontrar en latino america. Pero podemos adaptarnos, tenemos la capacidad, y ellos tienen que entender que somos la mejor opcion. Lo mismo para el mercado europeo.
Espero que entiendan que mi idea no es hablar como absolutista, mas bien compartir la experiencia de haber estado tanto tiempo en el desarrollo web.
Invitame una Cerverza
Comentar
11 Responses
Como herramienta de tracking te puedo recomendar Redmine, la estoy usando y es muy buena.
Por otro lado te cuento una historia corta, tengo un primo peruano que se fue a vivir a EEUU recibido de arquitecto (de verdad no de software) y alla su titulo no valia nada, asi que se fue a meter a un terciario de alla, y me conto que con temas de laburo son muy especificos, osea se hacian todo un curso de lo que el habia estudiado como un temam en programacion pasa lo mismo, aca es normal que para laburar necesitemos saber tanto de como preparar un servidor como usar librerias JS para hacer las interfaces, pero alla son mas de tener "especialista en interfaces", "epecialista en integracion de modulos de wordpress", jeje. El nivel Latino de desarrolladores es bastante bueno, muchos paices latinoamericanos se encuentran en una carrera de crecimiento en lo que es profecionales I.T. Los que nos faltan no son recursos, son politicos visionarios y no tan ladrones.
Pero paso todo el tiempo, que escuchas no pasa nada yo valido del lado del cliente, o ni siquiera controlan como pasan parametros a la db desde un form o una url get, ya vimos mil ejemplos, y obviamente si le pasa a Twitter porque nosotros vammos a ser la excepcion, pero podemos evitar muchos de los problemas mas comunes.
Gracias por escuchar :P
Mi nombre es tania soy administradora de un directorio de webs/blogs, navegando por la red ví tu página y está muy buena, sería genial contar con tu site en mi sitio web y asi mis visitas puedan visitarlo tambien.
Si estas de acuerdo solo escribeme.
Exitos, un beso
Por lo demás todo estoy de acuerdo xD.
En que te basas para decir que se trabaja mas rapido?
Porque consume menos recursos?, eso es verdad yo tengo un quad core 3.4ghz y 4gb ram, y con los shortcuts de netbeans, trabajo 10 veces mas rapido que con vim.
Te recomiendo probarlo. Cualquier programador que lo use te dirá que aumenta su productividad.
Coincido plenamente en que el teclado es mas rapido que el mouse, el hecho solo de tener que desplazar tu mano fuera del teclado para hagarrar el mouse es muy molesto. Por eso me aprendi los shortcuts de netbeans. Y te aseguro que es mas facil hacer ctrl+h - cadena a reemplazar - tab -cadena nueva - ctrl+A que :1,% s/cadenaareemplazar/cadena_nueva/g Ademas es mucho mas simple si a ese reemplazo le tenes que agregar regex.
Pero mas alla de eso, lo mas importante para mi, lo determinante es la indexacion de los archivos. Yo me paro sobre una funcion y apreto ctrl+b y ya me lleva al archivo donde esta esa funcion, eso es muy comodo. El ctrl+pg down / pg up, tambien me sirve para switchear entre archivos que estoy editando. La velocidad no solo tiene que ver con los recursos.
Recuerdo que alguna vez use el eclipse con un plugin de vi :P
Pero igual siempre uso vi, para la configurar cualquier servidor, o para hacer commit git commit -a me muestra el vi por default, editar archivos de apache, es muy rapido, mucho mas que con el nano, pero no hay con que darle desarrollando con Vim durante algunos meses experimente que lo mejor es un IDE.



Gracias Pablo, buena lectura