Recientemente tuve el placer extremo de conversar con Karl Swedberg sobre Javascript y el desarrollo web en general. Karl es el autor de varios libros en Javascript, como Learning jQuery y jQuery Reference Guide. Únase a nosotros para echar un vistazo dentro de la mente de un desarrollador humilde y talentoso.
Soy un desarrollador web (en su mayoría front-end) en una pequeña agencia, Fusionary Media, en Grand Rapids, Michigan. A los 41 años, probablemente sea mayor que la mayoría de los desarrolladores web, pero la mayoría del tiempo todavía me siento como un niño. Fuera del trabajo, estoy muy involucrado con jQuery. Estoy en el equipo del proyecto jQuery, y escribo sobre eso, capacito a otros sobre cómo usarlo y hablo sobre ello en conferencias..
Mi primera participación en el desarrollo web fue en 1995, cuando construí un sitio simple para una cafetería que poseía. Después de eso me metí en el tema de la web aquí y allá, porque realmente me gustaba, pero no empecé a hacerlo como trabajo hasta hace unos cuatro años..
Me gusta leer, correr y salir con mi familia. Hasta hace un año, había estudiado karate durante unos siete años, y estoy considerando volver a hacerlo. También disfruto la fotografía, descubrir música nueva y hacer geeks con mis amigos..
Es un blog personal mío que he estado descuidando últimamente. No puedo recordar exactamente cuando lo empecé - 2000? 2001? - pero la idea era proporcionar información y enlaces para mis alumnos. Yo estaba enseñando inglés de secundaria en ese momento. Desde entonces se ha convertido en una mezcla de mis intereses fugaces. En 2003 cargué Movable Type y comencé a bloguear en él. En algún momento pensé que sería divertido publicar una nueva palabra cada día de lo que fuera que estaba leyendo en ese momento, así que lo hice por un tiempo. Luego tuve la loca idea de que podía responder las preguntas del mundo sobre gramática, puntuación, estilo, ortografía, etc., pero eso no duró mucho. Publiqué un montón de mis fotografías en el sitio por un tiempo, pero eso también se ha estancado. Probablemente la mayor motivación para mantenerlo en funcionamiento fue darles a mis amigos y familiares una instantánea de lo que estoy haciendo, pero últimamente Facebook y Twitter han estado satisfaciendo esa necesidad..
Comencé a usar jQuery en algún momento alrededor de mayo o junio de 2006. Todavía tengo una copia de "Rev 27" del archivo principal de jQuery desde el 2 de mayo de 2006, incluso antes de que tuviera un número de versión. Es una pena que el archivo esté comprimido y confuso. Sería muy divertido profundizar en él y ver cuánto ha cambiado..
El sitio vino primero. Después de jugar con jQuery durante un par de meses, pensé que sería una buena idea comenzar a documentar lo que había aprendido. Le pregunté a John Resig si le importaría usar el nombre jQuery y bloguear acerca de mis experiencias, y estaba entusiasmado con la idea..
Unos meses después de que empecé el blog, alguien de Packt Publishing me contactó y me preguntó si me gustaría escribir un libro sobre jQuery, una oferta que me halagó y aterrorizó. Acepté hacerlo, pero solo si mi amigo (Jonathan Chaffer) podía escribirlo conmigo. Él es un programador mucho mejor que yo, y en ese momento yo era solo un novato.
Elegir una biblioteca de JavaScript es muy parecido a elegir una cámara réflex digital (por supuesto, una vez que haya eliminado el precio de la ecuación). ¿Por qué Nikon? ¿Por qué no Canon o Pentax? No estoy seguro de que alguien pueda responder satisfactoriamente estas preguntas solo por el mérito técnico. Mucho tiene que ver con los intangibles: comunidad, soporte, compatibilidad con sus modelos mentales ya establecidos acerca de cómo deberían funcionar y verse las cosas. La gente también considera la extensibilidad, en forma de lentes y accesorios para cámaras, complementos y widgets para bibliotecas de JavaScript. Claro, el mérito técnico hace una parte. El rendimiento, las características y la fiabilidad son importantes. Pero al igual que con las compañías de cámaras, los desarrolladores de bibliotecas de JavaScript continúan saltándose unos a otros en estas áreas, y la mejor en cualquiera de estas áreas hoy puede no ser la mejor en esa área dentro de seis meses..
La razón por la que elegí jQuery en primer lugar es que tenía sentido para mí casi al instante. Vi que podía transferir fácilmente mi conocimiento de CSS a jQuery con su enfoque centrado en DOM. Desde entonces, a medida que aprendí más sobre técnicas avanzadas de JavaScript, he encontrado que JavaScript es suficiente para tratar las áreas del lenguaje que jQuery no aborda, y no he sentido la necesidad de confiar en una biblioteca para esas áreas. . También me encanta el espíritu de comunidad y la generosidad y amabilidad de los demás miembros del equipo del proyecto y los contribuyentes de las listas de discusión..
La pregunta que veo con más frecuencia en la lista de discusión de jQuery (Grupo de Google) está en la línea de "¿Por qué mis eventos dejan de funcionar después de haber insertado elementos en mi documento?" Tenemos un tema detallado de preguntas frecuentes que responde a esta pregunta. He escrito un par de artículos sobre learningjquery.com al respecto. Tenemos el complemento Live Query y, a partir de jQuery 1.3, el método .live () que resuelve el problema. Sin embargo, a pesar de todo eso, la pregunta sigue surgiendo algunas veces a la semana..
Aparte de learningjquery.com y el libro Learning jQuery 1.3, hay bastantes recursos excelentes. Remy Sharp tiene algunos screencasts fabulosos en su sitio jQuery for Designers, y he visto algunos artículos geniales de Marc Grabanski y James Padolsey en sus respectivos blogs. El Grupo de Google jQuery es muy popular, con más de 16,000 miembros y el canal IRC #jquery en freenode.net es bastante activo y útil..
Deseo que el método .live () funcione con todos los tipos de eventos. Actualmente solo funciona con un subconjunto, por lo que no puede usarlo con cambio, enfoque, desenfoque, envío, mouseenter o abandono del ratón. También creo que sería genial permitir que una función anónima se use como un argumento para .css (), .val () y .html () de la misma manera que para .attr ().
Me temo que estos sonarán como lugares comunes, pero aquí va: No tenga miedo de aprender sobre la marcha. No tienes que tener todo resuelto antes de tiempo. Estar dispuesto a cometer errores. Siga aprendiendo cosas nuevas sobre el idioma y trate de establecer conexiones entre lo que ya sabe y lo que está aprendiendo actualmente..
Por supuesto. Una mala práctica es usar jQuery para algo que podría hacer más fácil y eficientemente con CSS. Por ejemplo, los desarrolladores web durante años han estado cambiando la posición de fondo de un sprite de imagen cuando el mouse del usuario se cierne sobre un enlace. No hay absolutamente ninguna razón para usar jQuery para esto, a menos que el desarrollador quiera que se anime el cambio de estado de hover.
Otra mala práctica es la repetición innecesaria de selectores. En lugar de crear otro objeto jQuery cada vez que desee hacer algo a un conjunto particular de elementos, encadene los métodos o almacene una referencia al objeto jQuery en una variable y use esa.
Lee tutoriales de sitios de buena reputación. Haga preguntas en la lista de discusión y lea las respuestas a las preguntas de otras personas. En particular, lea todo lo que Michael Geary y Dave Methvin publican en la lista. Intente emular el código de grandes autores de complementos como Mike Alsup, Ariel Flesler, Jörn Zaefferer y Brandon Aaron..
A menudo escribo los míos, pero uso algunos con bastante frecuencia. Todos los clientes parecen querer algún tipo de rotador de imagen en su página de inicio, así que uso el complemento Cycle de Mike Alsup para eso. También uso bastante sus plugins de Form and Media. A menudo confío en el plugin Superfish de Joel Birch y el plugin hoverIntent de Brian Cherne cuando un cliente quiere menús desplegables. Últimamente, he estado usando jQuery UI cada vez más para temas de widgets generales, efectos avanzados, controles deslizantes y elementos que se pueden arrastrar y soltar..
No estoy loco por algunos de los nombres de métodos en la API. En las primeras versiones de jQuery, había dos nombres de métodos para recorrer todo el camino hasta el árbol DOM: .parents () y .ancestors (). Cuando se recortó la API, se eliminó .ancestors (). Hubiera preferido dejar caer .parents () en su lugar porque creo que "ancestros" describe mejor lo que se está seleccionando. Y mientras que en general me gusta cómo jQuery sobrecarga los métodos, creo que los métodos .load () y .toggle () llevan la idea un poco demasiado lejos..
La parte más difícil es, probablemente, seguir el horario. Pero es absolutamente esencial establecer un calendario razonable antes de tiempo y cumplirlo todo el tiempo..
La mayoría de los cambios en el núcleo de jQuery se realizarán en las áreas de rendimiento, estabilidad y corrección de errores. No veo que se agreguen muchas funciones nuevas al núcleo. Para las nuevas funciones, vigile jQuery UI. Hay un montón de cosas nuevas que se están desarrollando allí..
Soy uno de varios revisores técnicos de un libro de cocina de jQuery que está en proceso. Pero actualmente no estoy escribiendo ningún libro y no tengo planes de hacerlo pronto..
Nada que no haya sido ya mencionado, pero gracias por la oferta.!
¡El gusto es mio! Me siento halagado por tu interés en lo que tengo que decir..