De un traductor: esta publicación es una traducción del
artículo original de David Harron, un experimentado desarrollador de software. A menudo escribe artículos sobre el tema de su trabajo, incluido Node.js, con el que David tiene una relación especial.
Como desarrolladores de software, todos sabemos lo rápido que está cambiando la tecnología. Estamos tratando de mantenernos al día con ellos, aprendiendo constantemente nuevos métodos de trabajo, herramientas, lenguajes y marcos. Constantemente tenemos que comparar sus fortalezas y debilidades, decidiendo qué se necesita dominar y qué dejar atrás. Esta no es una tarea fácil, puede perderse fácilmente en el mar de opciones.
Skillbox recomienda: La profesión en línea "Profesión de desarrollador web" .
Le recordamos: para todos los lectores de "Habr": un descuento de 10.000 rublos al registrarse en cualquier curso de Skillbox con el código de promoción "Habr".
Sea como fuere, para seguir siendo profesional, debe conocer las tecnologías actuales. A veces se debe agregar una función X o Y a una aplicación simplemente porque el espíritu de los tiempos lo requiere.
Se ayuda al desarrollador a mantener a flote libros, video tutoriales, cursos. Y es muy simple: dedicar todo su tiempo a la capacitación sin haber comenzado a trabajar en el proyecto.
El desarrollador Tony Mastrorio
escribió una vez que tenía miedo de comenzar uno de sus proyectos, porque le faltaba conocimiento para implementarlo. Por lo tanto, en lugar de trabajar, comenzó a tomar un curso tras otro, con la esperanza de que cada material posterior le diera el conocimiento necesario. Esto continuó hasta que Tony eligió un camino diferente, del que ahora hablamos.
Recientemente, en Quora,
respondí a la pregunta de qué tan rápido puede aprender JavaScript y comenzar a desarrollar aplicaciones en este idioma. Escribí que el programador no necesita conocerlo a fondo para poder usarlo. Muchos de nosotros escribimos pequeños fragmentos en JavaScript para la web, y solo unas pocas líneas de código son suficientes para mejorar significativamente la funcionalidad del sitio. Lo mismo puede decirse de Node.js: un pequeño código, y todo mejora. JavaScript es un lenguaje muy poderoso, y los módulos disponibles en el ecosistema Node.js satisfarán casi cualquier solicitud.
El ecosistema de JavaScript está muy desarrollado, con este lenguaje realmente puedes hacer mucho. La prueba es que estoy escribiendo este artículo en Google Docs, un editor de texto basado en navegador.
Un lenguaje de programación debe estudiarse tan bien que pueda realizar ciertas tareas.
Hace unos meses comencé a estudiar Vue.js. Comencé con el curso de Udemy, busqué lo suficiente para comenzar a trabajar en el proyecto. Si necesito más información, siempre puedo volver a estudiar este tema. Mientras tanto, estoy creando mi aplicación de escritorio sin un conocimiento profundo de Vue.js, solo estoy estudiando lo que se necesita para llenar los vacíos de conocimiento sobre el tema.
Déjame darte otro ejemplo: mi experiencia de aprender Node.js.
Hasta enero de 2009, trabajé en el equipo de Java SE en Sun Microsystems. Luego escribí una gran cantidad de artículos técnicos. Como fanático de Java, lo comparé con JavaScript, mostrando las virtudes del primero. Mi siguiente trabajo ya estaba en Yahoo, luego seguí usando Java y, a finales de 2010, cambié gradualmente a Node.js, entonces era una nueva tecnología.
Inmediatamente me sumergí en JavaScript cuando nuestro equipo comenzó a trabajar en Mojito / Manhattan, una plataforma de alojamiento para aplicaciones. Fue a finales de 2010, un poco antes
Ryan Dahl le contó a los empleados de Yahoo sobre Node.js. Al mismo tiempo, yo, junto con Packt Publishing, trabajé en un libro sobre Node.js como consultor técnico, y poco después me dijeron que el autor del libro decidió abandonar el proyecto, el editor sugirió que me convirtiera en autor. Al no tener idea de cómo se escriben los libros, acepté de inmediato.
Y ahora, sabiendo bastante sobre JavaScript, comencé a usarlo para resolver problemas de trabajo en Yahoo, mientras escribía un libro sobre Node.js. Su primera edición se lanzó en agosto de 2011, la cuarta, en junio de 2018.
Bien podría tener miedo a la incertidumbre y dejar de escribir. ¿Conocía JavaScript lo suficientemente bien para tal tarea? Definitivamente no. Además, no sabía escribir libros. En el trabajo del autor había muchos aspectos desconocidos para mí, pero gradualmente los estudié y los acepté. Pude y me encantó escribir, porque era blogger. Durante diez años antes del comienzo del trabajo en el libro, escribí artículos y notas de noticias. Pero aún así, las publicaciones no son un libro; escribirlas parecía una tarea muy difícil.
Al final, me di cuenta: en lugar de tener miedo, solo necesitas crear un plan de trabajo bueno y claro. Después de eso, escribir un libro se convierte en una serie de ensayos. Bueno, escribir ensayos, tutoriales o publicaciones ya es una tarea más fácil. Lo único es que cada uno de ellos debe corresponder al espíritu general del libro y el plan. Cada ensayo anterior (capítulo) debería pasar sin problemas al siguiente. Tan pronto como entendí todo esto, el trabajo en el libro fue mucho más rápido.
Obviamente, muchos de nosotros tenemos miedo de realizar tareas complejas y esconder nuestras cabezas en la arena en lugar de actuar. Para seguir adelante, para ascender en la carrera profesional y desarrollarse, necesitas un testamento. De hecho, no hay nada complicado incluso en las tareas más voluminosas. Por ejemplo, cuando una persona se enfrenta al proceso de comprar una casa, el proceso parece demasiado complicado, los agentes inmobiliarios son vistos como estafadores, usted piensa que nada funcionará. Pero, de hecho, todo es más simple de lo que parece.
Anteriormente, tomé varias cosas nuevas. Entonces, por ejemplo, queriendo contribuir a la popularización de los vehículos eléctricos, comencé a escribir artículos sobre este tema. Nunca hice periodismo ni sé cómo funciona todo. Pero al final, logré escribir varios miles de artículos de noticias. La gente dice que tengo talento, y realmente me gusta sentirme como una persona que dice la verdad.
Hablemos sobre algunos de los principios principales antes de hablar sobre el proyecto en el que estoy trabajando actualmente.
- Objetivo claro Para concentrarse en lograrlo, debe tener su objetivo en mente todo el tiempo. También debes articularlo claramente.
- Divide el proyecto en elementos. Ya he hablado sobre esto arriba. Es mejor dividir un proyecto grande, un objetivo en varias tareas separadas.
- Piense en qué elementos, subtareas puede hacer ahora y cuáles no.
- Haga una lista de subtareas agregando datos de respaldo que puedan ser necesarios. Es mejor escribir todo en un planificador semanal o de tareas. Por cierto, Trello es una gran herramienta para esto.
- Utiliza Agile.
- Se positivo. Los objetivos se pueden lograr incluso si al principio parece imposible.
Arriba, hablé sobre mi proyecto. Este software, y la tarea es bastante complicada. Voy a crear una aplicación de escritorio que permitirá a los usuarios crear libros electrónicos en formato EPUB3. El programa usará archivos en varios formatos ubicados en un directorio específico y los formateará de acuerdo con el estándar EPUB 3.0.1. El desarrollo se basará en Electron, planeo lanzar la versión de lanzamiento en las tiendas de aplicaciones de Apple y Microsoft. Voy a construir una interfaz de usuario basada en Vue.js usando la biblioteca de componentes Buefy.
Este es un proyecto bastante arriesgado, porque todavía no sé cómo llevar a cabo algunas de sus partes. Por ejemplo, aunque es posible vender Electron en tiendas de aplicaciones, todavía no entiendo cómo hacerlo. Y esta no es la única tarea difícil.
Sin embargo, espero completar todas las partes de mi proyecto.
Logro de cada objetivo, considero un evento teóricamente posible. Sé que algunas tareas ya han sido resueltas por otras personas, para que yo pueda hacer lo mismo. Y si no sé algo ahora, intentaré averiguarlo en el futuro cercano.
Tengo a Trello para hacer un seguimiento de las tareas restantes. Intento mantener el plan relevante y también estudiar las cosas que necesito para trabajar.
No tengo que ser un experto en todo esto. El proyecto tiene objetivos claros, para cuya solución necesito ciertos datos, elementos de conocimiento.
Algunas cosas ya las conozco ahora, por ejemplo, la especificación del estándar EPUB3. Hace unos cuatro años, me desperté con el entendimiento de que EPUB es solo un archivo ZIP de archivos HTML. Durante tres días estudié el problema y me di cuenta de que EPUB3 es una colección de archivos XHTML, este estándar usa elementos HTML5 y CSS, y ZIP usa un formato de empaque. Un poco más tarde creé una herramienta en Node.js, que me permitió compilar documentos EPUB. Una versión un poco más compleja de este documento será el núcleo de mi nueva aplicación.
Recientemente, me encontré con un problema bastante complicado. El hecho es que mi aplicación se reduce a crear una interfaz de configuración gráfica para archivos XML con metadatos. Un archivo OPF (Open Package Format) contiene varios elementos de datos, como dc: identifier o dc: title, que pueden considerarse como una tabla. Un libro puede tener varios identificadores diferentes, incluidos ISBN, DOI, encabezados cortos y largos, varios nombres en diferentes idiomas, etc.
La aplicación debe tener un método que permita al usuario agregar, editar o eliminar elementos de diferentes tablas de datos. Pero como?
Desde el principio, comencé a posponer esta tarea. Escribí todo, excepto la parte donde necesitas encontrar una solución para trabajar con tablas.
Pero es imposible posponer la tarea indefinidamente, y procedí a ello. Al final, logré lograr lo que quería con la ayuda de los componentes Vue.js para trabajar con tablas. Me tomó un par de días resolverlo. Esto es lo que sucedió:

Aquí vemos un par de tablas para procesar las listas dc: creator y dc: contributor. Cada línea contiene dos botones para editarla y eliminarla. Un botón marcado con un signo más agrega una nueva fila, y la tabla admite la paginación si hay demasiadas filas.
Quizás esta no sea la interfaz más amigable, pero todo funciona, y el proyecto pasó de la etapa de "imposible" a "implementado".
Y después de todo, pospuse la solución a este problema muchas veces, y resultó estar en la superficie: solo necesita usar el componente Vue.js / Buefy. Y hay muchas tareas similares: se encuentran tanto en casa como en el trabajo.
Ahora mi próxima tarea "imposible" es tratar con la colocación de aplicaciones Electron en directorios. Vi a otros desarrolladores publicarlos de alguna manera, por lo que esto es completamente posible. Lo principal es resolverlo.
Desconocido puede causar preocupación. La tarea, que no está clara de cómo implementarla, es un territorio completamente nuevo, aún no desarrollado, todo aquí nos asusta. Pero los ojos tienen miedo y las manos están haciendo. Este es el principio correcto, que es aplicable incluso en la codificación.
Al principio, hablamos sobre los rápidos cambios en la industria del software. Intentamos constantemente mantener el ritmo, no retrasarnos. Para hacer esto, dominamos nuevos "territorios" para nosotros mismos: nos enfrentamos a un problema, sin saber cómo hacer la tarea, utilizando nuevas herramientas. E incluso si resolvimos este problema con el conjunto de herramientas anterior, ahora, por alguna razón, puede que no esté disponible. Por ejemplo, jQuery se vuelve obsoleto y tenemos que volver a aprender.
En definitiva, todos somos héroes. Queremos lograr un objetivo específico, llegamos a un lugar que parece insuperable, pero que aún resuelve el problema. Y la solución, el proceso de encontrarlo, no solo nos proporciona un código de trabajo (estamos hablando de programación, ¿verdad?), Sino también confianza en uno mismo y nueva experiencia.
Skillbox recomienda: