Siento que tengo una perspectiva única sobre esto como diseñador ahora (Quora) e ingeniero en el pasado (Facebook).
El rol de “diseñador que codifica” está lejos de ser estandarizado en toda la industria, aunque generalmente se considera una habilidad valiosa. El diseñador que codifica tiene algunas ventajas:
- La capacidad de liberar a los ingenieros para resolver problemas de algoritmos, ingeniería y sistemas en lugar de largos cambios de interacción o detalles visuales.
- Desarrolle un mejor modelo mental para ser ingeniero y escribir código. Ayuda a comunicarse en la misma terminología y a comprender las limitaciones del medio, aunque no es nada como escribir código como ingeniero.
- Ayudar a los ingenieros a diseñar abstracciones que permitan a los diseñadores iterar sobre el diseño más rápido.
En este punto, me referiré a Designers Will Code de David Cole sobre Emesis, que está mucho mejor escrito desde la perspectiva de un diseñador primero.
- Cómo aprovechar el almacenamiento en caché del navegador para archivos externos
- ¿Cuánto valor tiene un desarrollador de WordPress hoy en día?
- Cómo promocionarse como desarrollador web en Nigeria
- ¿Cuáles son los límites de WordPress en términos de escalamiento?
- ¿Qué marco JS debo elegir como principiante en marcos JS, AngularJS, ReactJS o EmberJS? Tengo experiencia intermedia en JS / jQuery.
Personalmente, creo que es una buena experiencia de aprendizaje construir una aplicación de principio a fin, por lo que sería mi orden personal recomendada.
- Aprenda HTML y CSS para construir una página web
- Aprenda JavaScript para manejar el comportamiento. Aprenderá algo de programación básica y un poco sobre las estructuras de datos.
- Aprenda un lenguaje del lado del servidor como Python o use Node si ya conoce JS y duda en aprender otro. Aprenderá más sobre las estructuras de datos en el proceso, y esta es una buena oportunidad para aprender un poco de informática y algoritmos en el camino.
- Aprenda a usar una base de datos para almacenar el estado. Esto lo familiarizará con los cuellos de botella de rendimiento.
- Aprenda un poco sobre ingeniería de software, OOP, organización de código, consistencia y estilo.
- (Mobile Track) Aprenda Objective C, Swift o Java y escriba una aplicación simple para Android o iOS. Puede usar esos conceptos de base de datos para hacer que persistan los datos y usar sus habilidades del lado del servidor para crear una API y convertirla en una aplicación que funcione en la web.
- (Opcional) Obtenga información sobre sistemas distribuidos, almacenamiento en caché, replicación y fragmentación para ver cómo las aplicaciones se crean a escala. Esto le permite empatizar con los ingenieros y comprender realmente las limitaciones del sistema.
- (Rastreo de datos) Aprenda estadísticas básicas y las matemáticas detrás de las pruebas A / B, luego explore otras curiosidades como el aprendizaje automático. De esta manera, puede comprender mejor su diseño con datos y diseñar productos en torno a los datos.
- (Opcional) Aprenda sobre programación funcional para ver cuán elegante puede ser la programación cuando la programación en sí misma está cuidadosamente diseñada. Los videos de SICP en YouTube son un buen recurso para esto.
- (Opcional) Aprenda sobre sistemas de bajo nivel, ensamblaje, localidad, representación de datos, etc., básicamente, cómo funciona una computadora bajo el capó. Recogerás C muy bien en el camino.
- (Opcional) Aprenda sobre la teoría de CS, algoritmos de nivel superior y los límites de la computación.
Algunos llamarían a 1 un diseñador que codifica, mientras que otros pasan por todo esto. A eso de las 3 puede trabajar eficientemente con un ingeniero. A los 5 tienes una superposición de vocabulario decente. A las 7 puede completar ocasionalmente y a las 9 o más puede hablar en barra con programadores con experiencia en CS.
Entonces la gente recorre todo este espectro. Realmente depende de cuáles son tus objetivos y curiosidades.