Miguel Lattuada is one of Altimetrik’s top Front-end developers, he has worked with us for several years participating in all kinds of projects. Today, he is giving us his view on nowadays technologies, what he expects of the future and his vision of Uruguay’s developers.
Which are the most popular front-end technologies today?
Based on the frameworks and libraries of today’s market, I believe that Angular, from its 2.0 version, and React are the most widely used. It should also be noted that Vue is having an exponential growth and good acceptance by the open source community.
We also have tools focused on fast development and quality. Some of them are Typescript or Flow (tools that add types and type checking, among other functionalities), Webpack or Rollup module bundlers, there are other similar tools but they are generally based on these), and Babel (it allows to develop modern javascript supporting older platforms).
When working with stylesheets, the best tool is SASS. SASS is a preprocessor that extends CSS with new functionalities and allows us to import, extend and nest styles, create mixins, among others. In addition to SASS, technologies such as flex and grid facilitate the creation of more complex layouts.
For HTML it is very common to combine jsx and React (although they do not necessarily have to go together), Mustache which provides support for several languages with a very simple API, and pug. Note that these last two are generally used in backend development to generate static sites. The rest of the frameworks use raw HTML for the definition of their templates since they have their own add-ons to replicate visual elements, show them or hide them.
Also read: Essential JavaScript for ReactJS Journey
Which of these technologies are used in Altimetrik?
Nowadays, Angular is the framework we use the most, but we also have projects in React and Polymer. Polymer is not among the most popular libraries but still has good support. It was created by Google and is used in sites such as YouTube, Zeplin and some experimental features of Facebook.
The tools we use for React and Polymer are Webpack and Babel (ES6 +). For Angular, we use Webpack and Typescript, which come by default. For the stylesheets, we opted for SASS and in some cases CSS with its latest features. We also have to mention nodejs, the platform where our development environment is located and on which most of these tools depend.
Which technologies do you think have a prominent future?
It is very difficult for me to project my vision, especially in an environment where new technologies are emerging almost every day, and others get obsolete.
I would like to see in the not-too-distant future Web Assembly a bit more polished and with support for more APIs, giving the opportunity to other languages to join the web stack. Currently, a large number of languages can be compiled to the new portable format of wasm, C / C ++ / Go / Rust, etc;
It would also be positive that PWA (progressive web apps) could add standard APIs for communication between native apps and those that are not, and also improve the current support on platforms such as iOS, Edge, etc;
In turn, I consider that nodejs will be a more relevant and interesting platform once the worker threads module is stabilized, which allows the use of threads to execute JavaScript code in parallel.
Based on the interviews you have done to candidates, what do you think about the front-end level in Uruguay?
I think there is a good level. In general, I have met people looking for challenges, who are currently comfortable with their job (from an economic point of view), but they were interested in personal growth, finding something interesting, and being able to get out of the routine.
One of the biggest challenges is to find colleagues with specific knowledge about a framework or library, which is totally unrelated to the level they have. I believe this is a problem derived from the learning approach.
What would you recommend to a person who is beginning to study front-end?
First of all, I would recommend not focusing on learning a library or a framework (React, Angular, Vue), without first having a knowledge based in javascript as a language, and in the rest of the web technologies (HTML, CSS). The amount of existing tools for javascript is immense and the specific knowledge in libraries or frameworks gets obsolete very fast. The same happens for CSS and HTML.
Understanding concepts of javascript as a language, regarding its operation and execution, are crucial when debugging a program. The async model is not natural for those who come from other languages (environments) where multithreading is handled, and intuitive libraries / APIs are provided to deal, for example, with concurrency/parallelism.
Currently, our browsers provide endless APIs, from Location to Media, and it is practically impossible to stay on the sideline with all of them. Many of them are simple, such as Location and Notification, but others not so easy, such as WebGL, Web Audio, WebRTC. Trying to learn to manage all is not recommended.
I recommend going to communities such as StackOverflow when finding problems while developing.
Part of the learning is to consider what resources we use. I recommend using sites like https://web.dev, https://developer.mozilla.org, and https://javascript.info as guides, with content about browsers APIs and javascript APIs.
As visual content, the Google YouTube Developers channel has a good level. Interesting series are: Http 203, Supercharged and The state of the web.
Some of the best contributors of the open source community are Addy Osmani (Web Performance), Surma (Web Advocate), Dan Abramov (React), Jake Archibald (Web expert), Sebastian Markbåge (React & Web Expert), Rob Dodson (Polymer & Web Components), and Paul Irish (Web Performance).