¿Qué debería poder hacer en HTML, CSS y JavaScript para ser considerado un experto?

A los fines de esta pregunta, supondré que un “experto” significa poder conseguir un trabajo principalmente debido a su conjunto de habilidades en esa área entre pares igualmente talentosos conocidos por su experiencia. Por ejemplo, usted es un desarrollador profesional de JavaScript contratado por una tienda JS, no solo un tipo que adquirió un código de front-end a través de w3schools.

Con ese fin, diría que la forma más sencilla de determinar la experiencia en HTML + CSS + JavaScript, en 2013, es ver si puede crear una aplicación web completa. Piensa en Gmail.

Esto implica una cantidad engañosamente grande de conocimiento, que incluye cosas como:

  • Características HTML5, soporte, marcos, fallbacks
  • Funciones CSS3, animaciones, diseños receptivos, compilación CSS, marcos
  • Bibliotecas JS, orden de carga, compilación, técnicas de codificación y mejores prácticas.
  • Posiblemente frameworks JS (digo posiblemente porque toma más de “He jugado con Backbone, y algunas personas realmente buenas de JS esencialmente han construido sus propios frameworks pero no han usado los comunes)
  • Posiblemente herramientas de diseño, procesos de diseño.
  • Administración del estado de la aplicación, administración del código, implementación de la aplicación, llamadas y recuperaciones de API (AJAX) e interacciones generales de servidor / cliente

Como puede ver, la experiencia debería ser más que simplemente trabajar en HTML, CSS y JavaScript; El ecosistema circundante y los puntos de contacto son cosas legítimas para saber, al menos parcialmente, y en la práctica son casi un hecho para los ingenieros de software que escriben mucho HTML / CSS / JS y lo hacen para ganarse la vida.

Crear una aplicación es una buena abstracción porque es lo suficientemente grande como para que su conocimiento de estas tecnologías vaya más allá de lo trivial; realmente no puede evitar copiar y pegar scripts en Google, debe lidiar con el estado agregado de una aplicación, y debe lidiar tanto con el diseño de complejidad adicional como con la escala de la cantidad de ingeniería para mantener la aplicación mantenible y rápido.

Lo bueno es que si cumple con estos requisitos, entonces, según la definición anterior, muchas compañías lo querrán. 🙂

Desglosaría esto en tres áreas principales:
1. Construye cosas nuevas bien.
2. Comprender y arreglar cosas viejas, posiblemente muy malas.
3. Conocimiento de los marcos y soluciones disponibles.

Tenga en cuenta que está pidiendo “experto”. Podrías obtener un “bastante bueno” con solo 2/3 de estas cosas.

Para el n. ° 1, me gustaría ver un buen conocimiento de las técnicas tradicionales de desarrollo de software. Debe tener una buena comprensión del HTML semántico de little-s, la capacidad de diseñar únicamente a través de CSS (no “Insertaré aquí un DIV para cambiar las cosas”), el conocimiento de cómo construir para múltiples navegadores con el mínimo cantidad de bifurcación de código posible.

En el lado de la codificación, debería poder configurar una aplicación simple basada en AJAX sin pensar. Su JavaScript debe estar bien estructurado y cumplir con los buenos principios de desarrollo. Cosas como un modelo MVC deberían ser su mejor práctica personal. Debería poder hacer algo como escribir una función de fusión de objetos recursivos bastante robusta (como jQuery extend) sin romper su cerebro. Para ser realmente un experto, probablemente debería poder escribir un complemento jQuery decente (o módulo Dojo, Dios no lo quiera). Familiarícese con los problemas de espaciado de nombres de JavaScript y utilice los cierres para su ventaja.

Además, debe saber cómo se mostrarán sus nuevas compilaciones en dispositivos móviles de todos los tamaños. Probablemente también deberías haber hecho experimentación o trabajo real con las soluciones híbridas móviles como PhoneGap / Cordova.

Para el n. ° 2, necesitará un conocimiento profundo y práctico no solo de lo más avanzado, sino también de cómo se hicieron las cosas hace dos, cinco y siete años. Esto significa arreglar diseños HTML basados ​​en tablas. Significa trabajar con el código generado por los sistemas WYSIWYG cuando esos sistemas ya no están disponibles, cuyo código puede ser horrible. Significa poder hackear algunos JavaScript simples pero probablemente mal escritos.

Además, debería poder colocarse en el medio de una aplicación front-end basada en framework (por ejemplo, una construida alrededor de Dojo o Backbone) y poder encontrarse sin asustarse. ¿Puede rastrear un error o una deficiencia en un complemento jQuery existente y solucionarlo? Debe ser capaz de.

Para el n. ° 3, debe tener un conocimiento sólido de los marcos y modelos disponibles para el desarrollo web. El modelo “tradicional” (PHP, JSP, etc.) en el que el código del lado del servidor está entretejido en HTML, así como el modelo SOA donde todos los datos y la lógica empresarial de back-end se envuelven como un servicio web y el front-end es plano HTML con JavaScript enriquecido. Al menos debe saber sobre la existencia de cosas como los envoltorios MVC-ish para PHP (CakePHP, etc.), la creciente variedad de marcos de aplicaciones de JavaScript (angular.js, etc.), lenguajes auxiliares (coffeescript, SASS) y yo Diría que debería haber comenzado a experimentar con node.js si aún no lo está usando de verdad.

Ser un experto implica saber y hacer muchas cosas, algunas de las cuales estoy seguro de que extrañé aquí. Sé que si tuviera un currículum vitae en mi escritorio con las referencias anteriores, iría corriendo a Recursos Humanos y comenzaría a gritar “¡Contrata!”

Si una persona solo conoce HTML, CSS y Javascript, no es un experto.
Si conoce Javascript puro, no otras bibliotecas, no es un experto de ninguna manera.
Considerando “experto” a una persona que sabe mucho, este Front-end es un front-end común.
Si esta persona conoce bibliotecas de Javascript (excepto jQuery) como Node.js, Socket.io, CoffeScript, etc. esta persona es un “experto”, es una persona que puede ir con las nuevas tecnologías.

Pero para ser un experto, el conocimiento ahora es la parte más importante, es cómo es ella / él como profesional. Un buen experto y profesional es una persona que puede:

  1. Aprender cosas nuevas.
  2. Aproveche los comentarios como una oportunidad para mejorar.
  3. Puede trabajar en grupo.
  4. Puede resolver problemas.
  5. Puede hacer un progreso de depuración rápido y bueno.
  6. Puede aprender de sus errores.

El concepto experto, para mí, no es la persona que ahora sabe mucho y sabe todo de HTML / CSS / Javascript, es la persona que sabe mucho y puede ser también un buen profesional.

En conclusión, si está preguntando si alguien es bueno (experto) si conoce solo este árbol, no es un experto, es un desarrollador front-end común. Si conoce Node.js o Socket.io, puede ser considerado como un experto.
Pero si él / ella solo conoce estas tres cosas (Javascript puro, HTML y CSS) pero tiene habitabilidad como un buen profesional, también puede considerarse como un experto.


Para mí, “experto” es un gran problema.

He estado programando por dinero durante unos 20 años, y no me considero un experto en ningún campo (aunque soy un experto en todos los oficios, maestro de ninguno).

Creo que básicamente deberías ser totalmente excitante para hacer software HTML / CSS / JS, como estas personas que hacen Ace Editor, TinyMCE o PhotoEditorSDK.

El trabajo de un experto , creo que debería ser de clase mundial, y si puedes mirar tu trabajo y considerarlo de clase mundial, entonces increíble, tal vez puedas considerarte un experto.

¿Qué tipo de experto?

Un webmaster puede escapar, en algunas circunstancias, con un conocimiento muy limitado de las tecnologías front-end. Los ingenieros han estado simplificando sus herramientas durante más de una década. Si su trabajo está orientado hacia las comunicaciones, estas habilidades son una ventaja y no debe pasar sus días de trabajo molestando con los internos. Es improductivo.

Un diseñador / integrador web puede considerar que un conocimiento profundo de HTML + CSS y una caja de herramientas relacionada (como sass o menos) es esencial para producir un buen diseño nativo web. También se puede requerir la capacidad de manejar (en comparación con la escritura) bibliotecas de JavaScript. Por lo menos, es un excelente complemento para su fondo de diseño.

Un desarrollador front-end no tiene conocimiento de todos los marcos, pero debe conocer su conjunto de herramientas. Más importante aún, debe dominar algunas prácticas de programación que son comunes a todos los entornos de desarrollo. Las buenas prácticas definirán la calidad de su trabajo. Saber cómo esas tecnologías funcionan juntas y hacerlas funcionar de manera consistente es más esencial que recordar oscuras propiedades CSS.

Un desarrollador de back-end debería estar familiarizado con las tecnologías de front-end, pero normalmente no necesitará un conocimiento profundo de las bibliotecas de front-end. Por otra parte, la frontera se está difuminando entre los dos. Un buen diseño y prácticas API se están volviendo esenciales …

En resumen, esas tecnologías que menciona son solo herramientas para el experto. No definen su experiencia. Él / ella los usará en consecuencia en el contexto de su oficio.

Cree un sitio web que sirva para un propósito y ayude a otros.

Si tienes que preguntar, no eres un experto 🙂

¡Acabo de construir tu propio Quora!

Crea un juego multijugador que funcione en todas las plataformas.

More Interesting

Cómo filtrar todos los parámetros GET en mi sitio web

¿Está bien usar .org para mi sitio de comercio electrónico porque se toma .com?

¿Qué debería aprender primero Desarrollo web, desarrollo móvil o desarrollo de juegos con Unity?

¿Cuál es la forma más sencilla de documentar nuestra API REST?

¿Cuánto valoras el puntaje de GTmetrix, Google Speed ​​en las plantillas de sitios web?

¿Qué marco de trabajo de JavaScript debería integrar en un inicio web que ya usa Rails y una gran cantidad de jQuery (y bibliotecas que dependen de él)?

¿Qué es una buena aplicación de reserva con una buena API para usar con angular?

¿Cuáles fueron las funciones PHP más complejas que ha desarrollado y cuáles fueron sus principales funcionalidades en detalles exactos?

¿Dónde puedo encontrar trabajos de diseño web?

¿Cuál es la diferencia entre alojamiento web y secuencias de comandos web?

¿Cuál es la mejor manera de insertar un feed o línea de tiempo de Facebook en un sitio web de WordPress?

¿Aprender Python puro me da la mayor flexibilidad en el campo profesional en comparación con aprender HTML / CSS / JavaScript / PHP?

¿Hasta qué punto el desarrollo de la interfaz de usuario de Android es diferente del desarrollo de la interfaz de usuario web?

Cómo aprender a programar por mí mismo que soy lo suficientemente capaz de construir sitios web revolucionarios

¿Qué sistema de administración y autenticación de usuarios debo usar para construir mi sitio web?