El desarrollador de desbordamiento de pila completa
En algunas charlas y entrevistas me lamenté de un fenómeno en nuestro mercado que siempre ha existido, pero que ahora parece estar desenfrenado: el de el desarrollador completo de Stack Overflow. Impulsado por Stephen Hay en Twitterahora hablaré un poco sobre lo que esto significa.
Los desarrolladores de Full Stack Overflow trabajan casi en su totalidad copiando y pegando código de Stack Overflow en lugar de comprender lo que están haciendo. En lugar de investigar un tema, primero van allí para hacer una pregunta con la esperanza de que las personas les den el resultado.
En muchos casos, esto funciona. Es increíble lo que puedes lograr pegando cosas que no entiendes, que la gente que sabe lo que hace pone por ahí.
No voy a probar Stack Overflow aquí. Es un recurso increíble y es difícil crear una comunidad como esta y no ahogarse en spam y mediocridad (créanme, soy administrador en varios grupos técnicos de Facebook).
Tuvimos ese problema durante mucho tiempo.. Desafío a cualquiera que esté aprendiendo PHP a no simplemente copiar los ejemplos de código en las notas. Durante años, los sitios de referencia de código nos han dado las respuestas que queríamos, pero que no necesitábamos. Diablos, incluso Archivo de guiones de Matt es probablemente la fuente de muchos remitentes de spam, ya que la gente solía formmail.pl
sin saber lo que hace.
Sin embargo, me preocupa cuán desenfrenado es este comportamiento en la actualidad. Por supuesto, es comprensible:
- Crear algo es más divertido que leer sobre cómo crear algo.
- Usar algo que funciona de inmediato, incluso si no sabe cómo lo hace, se siente mejor que encontrarse con la frustración de no poder arreglar algo.
- Sientes que engañaste al sistema: los atajos son divertidos y te hacen sentir más inteligente que todos esos tontos que pasan todo este tiempo aprendiendo.
- Nuestro trabajo es convencional y existe una gran necesidad de desarrolladores. La velocidad con la que se nos pide que entreguemos ha aumentado enormemente. La gente quiere resultados más rápidos, en lugar de más limpios.
Nosotros, como comunidad, somos en parte culpables de criar este tipo de desarrollador:
- Cuando respondemos preguntas, tendemos a dar la solución en lugar de analizar lo que realmente necesita la persona. Esto es mucho más trabajo, por lo que tendemos a evitarlo.
- Publicar la «única solución verdadera» y ganar un hilo en Stack Overflow se siente genial, incluso si no tenemos ningún plan para volver a él más tarde si resulta que ya no es una buena idea a medida que cambia el entorno.
- Obtener reconocimiento, karma y votos positivos por dar la solución es mucho más fácil que obtenerlo por ser la persona que hace las preguntas correctas para llegar al origen del problema.
- Es fácil perder la paciencia al recibir las mismas preguntas una y otra vez y un «solo use jQuery» es fácil de pegar.
¿Y QUÉ? ¿POR QUÉ ES UN PROBLEMA SI LAS PERSONAS SON MÁS RÁPIDAS Y EFICACES EN LANZAR PRODUCTOS?
Por supuesto, ahora puedes llamarme un viejo gruñón y decirme que el concepto de aprender los conceptos básicos del software es un concepto obsoleto. La complejidad de los productos actuales hace que sea casi imposible saberlo todo y en otros entornos de gran éxito, el uso de muchos paquetes y bibliotecas es normal. Bien, aunque nosotros parece estar comprendiendo ese el software en su conjunto podría estar más roto de lo que queremos admitir, y esta podría ser una de las causas.
Hay varios problemas con el desarrollo completo de Stack Overflow:
- Asume que la respuesta más simple con los detalles más técnicos es la mejor. Esto es peligroso y puede resultar en muchos ejemplos copiados y pegados que tienen muchos problemas para sobrevivir durante años y años en la web.
- La respuesta más copiable que se usa, se vota y se vincula significa que es mucho menos probable que las mejores soluciones que solucionen sus problemas tengan éxito en reemplazarlas. No hay que «profundizar más», por lo que incluso las correcciones importantes pasarán desapercibidas.
- Es muy probable que cualquier comunidad de expertos tenga muchas suposiciones sobre lo que constituye un «entorno profesional». Eso significa que es muy probable que las respuestas proporcionadas en esas comunidades funcionen en una configuración de desarrollador excelente, nueva y compleja, pero no son necesariamente útiles para nuestros usuarios finales. Es muy fácil agregar otra biblioteca o paquete npm o solución de arranque a un proyecto, pero se suma al vertedero ya repleto de código obsoleto en la web.
- Perpetúa el cariño que tenemos por la tersidad sobre la escritura de código comprensible. La solución más pequeña, por ilegible que sea, es siempre la que gana el hilo. Como la gente los copia y los pega sin entender, está bien para ellos. Sin embargo, para la depuración y el mantenimiento, es la peor solución. Un gran ejemplo de esto es el uso de || para parámetros predeterminados. Corto no es mejor, es sólo menos trabajo.
- Abarata nuestro oficio. Si nosotros, como personas que realizan el trabajo, no lo respetamos y simplemente juntamos las cosas y esperamos que funcionen, entonces no debería sorprendernos que nuestros gerentes y compañeros no nos vean como profesionales.
El mayor problema, sin embargo, es que es malo para los propios desarrolladores.
ENCONTRAR EL ORGULLO EN TU TRABAJO ES LA MAYOR RECOMPENSA
Ir a la web, encontrar una solución y copiarla y pegarla es fácil, demasiado fácil. No hay esfuerzo en ello, y no es tu trabajo, es el de alguien más. En lugar de estar orgulloso de lo que lograste, es más probable que te estreses porque no quieres que te descubran como un farsante que usa el trabajo de otras personas y lo vende como si fuera tuyo.
La repetición es un anatema para muchos desarrolladores. No te repitas (DRY) es un buen concepto en código, pero para aprender y trabajar es una idea terrible. Necesitamos repetición, para desarrollar la memoria muscular. Cuanto más repites una tarea, más fácil se vuelve y tu cuerpo lo hace sin que tengas que pensar en ello.
Cuando comenzó a conducir un automóvil, probablemente se sentó en el asiento y se sintió completamente abrumado por todos los cambios, palancas, pedales y cosas a las que prestar atención. Después de un tiempo, ya ni siquiera piensas en lo que estás haciendo, e incluso cambiar del Reino Unido a otros autos no es un problema. Fallar y aprender de ello es algo que retenemos mucho mejor que simplemente usar algo. Ponemos más esfuerzo, se siente más digno.
Charla TED de Dan Ariely “Lo que nos hace sentir bien con nuestro trabajo” tiene algunos puntos increíblemente buenos sobre ese tema:
El reconocimiento es lo que anhelamos como humanos. Y no podemos obtener reconocimiento si no somos dueños de lo que hacemos. Puede obtener totalmente copiando y pegando y usando solución tras solución y abstracción tras abstracción. Pero, tarde o temprano, sentirás que no estás logrando ni creando nada. Muchos desarrolladores que trabajaron así se quemaron rápidamente y dejaron de desarrollar, dejaron de preocuparse. Y esa es una gran pérdida, ya que podrías ser la persona a la que se le ocurra la próxima gran idea que cambie las cosas para muchos de nosotros. Esa es una opción de la que no deberías privarte. No seas un desarrollador completo de Stack Overflow. Mereces ser mejor.
Más prácticas con JavaScript
Este artículo es parte de la serie de desarrollo web de los evangelistas tecnológicos de Microsoft sobre aprendizaje práctico de JavaScript, proyectos de código abierto y mejores prácticas de interoperabilidad, que incluyen Borde de Microsoft navegador y el nuevo Motor de renderizado EdgeHTML.
Lo alentamos a probar en todos los navegadores y dispositivos, incluido Microsoft Edge, el navegador predeterminado para Windows 10, con herramientas gratuitas en dev.modern.ES:
- Escanee su sitio en busca de bibliotecas desactualizadas, problemas de diseño y accesibilidad
- Use máquinas virtuales para Mac, Linux y Windows
- Pruebe de forma remota Microsoft Edge en su propio dispositivo
- Laboratorio de codificación en GitHub: Pruebas entre navegadores y mejores prácticas
Aprendizaje tecnológico en profundidad sobre Microsoft Edge y la plataforma web de nuestros ingenieros y evangelistas:
- Cumbre web de Microsoft Edge 2015 (qué esperar con el nuevo navegador, los nuevos estándares de plataforma web compatibles y los oradores invitados de la comunidad de JavaScript)
- Woah, ¡puedo probar Edge e IE en una Mac y Linux! (de Rey Bango)
- Avance de JavaScript sin romper la Web (de Christian Heilmann)
- El Edge Rendering Engine que hace que la Web simplemente funcione (de Jacob Rossi)
- Dé rienda suelta a la renderización 3D con WebGL (de David Catuhe incluyendo el vorlon.JS y babiloniaJS proyectos)
- Innovaciones en plataformas web y aplicaciones web alojadas (de Kevin Hill y Kiril Seksenov incluyendo el múltiple.JS proyecto)
Más herramientas y recursos multiplataforma gratuitos para la plataforma web:
(dpe)
#desarrollador #desbordamiento #pila #completa