Mi enfoque preferido es hacer algunos prototipos antes de trabajar en el proyecto del cliente, revisando los conceptos básicos y luego cualquier desafío específico para el trabajo. No tomaré un trabajo que esté demasiado alejado de mi experiencia (creo que es irresponsable), por lo que esto supone que ya tengo una buena base en el lenguaje y los patrones o paradigmas de diseño que emplea el marco.
Por lo general, hago referencia a la documentación para aprender la API, o libros / artículos de blog / etc. si la documentación es débil, y luego sitios de preguntas y respuestas como stackexchange para tratar problemas específicos que no están cubiertos en la documentación (errores oscuros o casos de uso que no están cubiertos por los documentos). Si hay buenos tutoriales, generalmente los revisaré como primer paso.
Como ejemplo, cuando me propuse aprender Angular para un proyecto, aquí es más o menos cómo lo aborde:
* pasó mucho tiempo con el cliente, reuniendo requisitos y obteniendo una imagen de lo que esperaban ver
* seleccionó los marcos que se sentían como el mejor ajuste (esto resultó ser angular y de arranque en la interfaz, el backend había sido un CMS con el que ya estaba familiarizado)
* revisó la documentación angular e implementó algunos prototipos básicos
* trabajó a través del tutorial angular de “base de datos de teléfonos celulares”, que fue realmente útil para comprender cómo se arma una aplicación angular
* escribí prototipos de cada componente principal de la aplicación, haciendo referencia a documentos y stackexchange cuando me encontré con problemas, que había un montón de – ¡angular tiene una curva de aprendizaje empinada para aplicaciones no triviales!
* pruebas unitarias de prototipos para verificar que estaban haciendo lo que yo pensaba que estaban haciendo (¡extremadamente importante!)
* guió al cliente a través de prototipos para obtener comentarios sobre UX
* prototipos desarrollados y refactorizados, generalizando el código donde sea necesario
* código resultante unificado en una sola aplicación angular js
* pruebas unitarias actualizadas para la arquitectura final
* Control de calidad y comentarios finales con clientes
- ¿Cuál es la diferencia entre la forma de implementación de aplicaciones de Amazon OpsWorks en comparación con la forma de implementación de aplicaciones de Elasticbeanstalk?
- Cómo obtener proyectos de desarrollo web
- ¿Conceptos fundamentales que todo desarrollador web necesita saber en JavaScript?
- Cómo personalizar el reproductor de audio HTML5
- ¿Puede alguno de ustedes explicar el código HTML escrito a continuación?
En este caso, el cliente acordó cubrir parte de mi tiempo de autoeducación, que siempre es agradable. Teníamos una relación estable y ya sabían que querían trabajar conmigo para el proyecto. En un caso más típico, necesitaría poder demostrar cierta competencia antes de obtener el trabajo, por lo que la fase de autoeducación puede llegar incluso antes de presentar su oferta.