¿Por qué la programación de la interfaz de usuario está tan desordenada?

Porque, al menos en cierta medida, los desarrolladores pueden controlar el back-end. (Lo que también dijo). Dado que los usuarios no interactúan directamente con él, los programadores y los administradores pueden usar todo tipo de soluciones para servir y almacenar datos.

Pero mientras que, si tiene las habilidades y el permiso, puede cargar una aplicación de base de datos o un compilador en un servidor, no puede enviar su propio lenguaje de IU al cliente. Si tiene una idea ingeniosa de que las IU deben programarse en Python, hay poco que pueda hacer al respecto. Los navegadores no entienden Python. Estás a merced de las herramientas que Mozilla, Microsoft, Google, Apple y otros decidan darte. Y si esas compañías deciden cambiar de herramienta o salir en diez direcciones a la vez, estás a su merced.

Flash es un buen ejemplo. Durante algunos años, se convirtió en el idioma de elección para todo tipo de interfaces de usuario del navegador. Luego, el iPhone se hizo popular y Apple se negó a incluir reproductores Flash. Las empresas no podían simplemente ignorar los iPhones, por lo que les dijeron a los desarrolladores: “Aprenda Javascript o camine”.

No es probable que esto suceda, pero si, el próximo año, Apple decide deshacerse de la tecnología de navegador estándar y hacer que los iPhones solo entiendan C, tendríamos que programar las IU en C. Mientras que Apple no tiene control sobre lo que tiene en sus servidores .

O imagine lo que le sucedería a Quora mañana si Microsoft presentara un dispositivo cliente muy popular que solo podría programarse en Scheme. Para que Quora siga siendo competitiva, tendrían que codificar a los clientes de Scheme, pero no tendrían que hacer ningún cambio en el back-end.

tl; dr. Se necesitan dos para bailar tango en un mundo servidor-cliente. Usted “posee” el servidor, pero no posee el cliente.

Los desafíos de construir interfaces de usuario son complejos. Para simplificar eso hasta cierto punto, varias tecnologías y procesos de ingeniería deben unirse para distribuir las responsabilidades entre ellos. Pero eso no lo hace “en mal estado”.

Si uno entiende el razonamiento detrás de trabajar con diferentes tecnologías para construir las interfaces, comienzan a encontrar el desafío interesante. Definitivamente no es fácil, pero es encantador. Fuera de UI Engineering, las cosas funcionan principalmente en blanco y negro. Aquí, las dimensiones en las que tendrá que adaptarse su solución son múltiples. Eso requiere una comprensión profunda de las plataformas del lado del cliente (por ejemplo, navegadores), habilidades combinadas que van más allá de la programación para tocar el diseño visual, la psicología del usuario y las tendencias de la industria, buenas habilidades de enlace, muchos años de práctica y, sobre todo, un gran corazón para seguir disfrutando de estos desafíos. .

Tomando el ejemplo de la creación de interfaces para aplicaciones web, el equipo de ingeniería front-end necesita comenzar primero con el Análisis de usabilidad. Debe comprender los objetivos comerciales y los usuarios objetivo de esta aplicación para decidir sobre el diseño de la mejor experiencia de usuario posible. Luego tienen que elegir las tecnologías correctas (bibliotecas y marcos) que se adapten a la necesidad o, a veces, crear las suyas propias. Lo que sea que esté siendo diseñado, debe funcionar y sentirse igual en todos los navegadores web populares (Chrome, Firefox, IE, Safari, Opera) sin olvidar los estándares web. La accesibilidad es un desafío constante. A estas pesadillas se suma la expansión de la web a teléfonos móviles y tabletas. La matriz de soporte es abrumadora. Cuando todo esto sucede, el equipo debe separar limpiamente los entornos de desarrollo y producción. Las capacidades de depuración y el mantenimiento del código son fundamentales durante el desarrollo, mientras que nada más que el rendimiento es la clave en la producción.

Desde cualquier punto de vista, si eso te parece una queja, déjame decirte que nos encanta trabajar en el front-end . El aprendizaje nunca se detiene y la emoción nunca se acaba. Sí, muchas veces, nuestros esfuerzos y habilidades no obtienen el respeto merecido y terminan siendo llamados ‘desordenados’, pero eso no desmotiva.

Creo que es porque
a) muchos graduados de CS tienden a pensar en la programación de backend como “programación real”.

Cuando ingresas a un título de CS, te enseñan sobre estructuras de datos … bases de datos … bla, bla. Construir cosas de back-end se parece mucho a la ingeniería. La construcción de la interfaz de usuario parece que solo la estás haciendo ver bonita. SO, los graduados de CS salen de la universidad buscando construir backends. La gente no está interesada en los front-end

b) Los desafíos de la interfaz de usuario son más difíciles para los programadores

Los programadores tienden a quedarse sin cerebro, mientras que construir una buena interfaz de usuario requiere que apliques ambos lados del cerebro. Debe tener en cuenta la estética al traducirla en código

Mira cómo han evolucionado todos los marcos de la interfaz de usuario. La mayoría de ellos han evolucionado para asegurarse de que los programadores no tengan que lidiar con la estética. Toda la idea detrás de CSS comenzó porque los programadores no eligen colores. Le das a un programador un trabajo que requiere que construya una interfaz de usuario, y la interfaz de usuario se verá como si hubiera sido construida por un programador: D .. ¿Sabes a qué me refiero?

Entonces, sí … todo se reduce a que los desarrolladores no tengan interés y capacidad. La razón por la cual Steve Jobs se considera influyente es porque construyó con éxito una compañía que combinaba la estética con una buena ingeniería, no solo una vez, sino muchas veces. Necesita a alguien que pueda lograr que las personas que puedan pensar con el cerebro izquierdo y las personas que puedan pensar con el cerebro derecho trabajen juntas

Sin embargo, Steve Jobs era un tipo de producto. Sabía cómo hacer productos increíbles. No sabía cómo hacer marcos asombrosos.

El backend también está cambiando. Las bases de datos SQL ahora tienen que competir con NoSQL y Hadoop. Java está siendo rechazado en favor de ecosistemas más ágiles como node.js (express) / django / rails. Entonces las cosas están cambiando y creciendo en todas partes. Simplemente es menos presión cambiar algo del lado del servidor como nadie lo ve.

Frontend es, bueno, el front-end en la batalla por el usuario. Tienes que estar donde están tus usuarios. En el navegador, en dispositivos móviles, wearables, tocables, “segunda” pantalla.

La suposición de que la API de 10 años aún es viable es más difícil de romper que la suposición de que sus usuarios seguirán instalando una aplicación WinForms o usarán el applet java 🙂

Bueno, considéralo así …

El funcionamiento de los auriculares es proporcionar sonido -> ese es el backend

La apariencia, tamaños, tipos, colores de los auriculares -> esa es la interfaz

La salida del sonido es solo una cosa.
Pero hay personas a las que les gustan los auriculares, auriculares, auriculares internos, auriculares inalámbricos, auriculares con clip, sin mencionar los diferentes tamaños y colores.

Es tan vasto que parece desordenado, pero no lo es. Quién sabe mañana habrá un nuevo estilo de auriculares, pero al final seguirá haciendo lo mismo.