Stories of coding, working remotely and travel. That’s the description of this creative space that represents our blog. We showed you some travel, also a little bit of working remotely, but we didn’t say anything about coding. Well, this will change today, as this is the first post about programming. After all, this is the passion that enables us do all the things that we love, including being able to travel and work at the same time. And maybe, just maybe, it will inspire others to do the same. Programmers at the beginning of your career, this is for you 😋
I’ve begun coding, like many others, in high-school, continued through college, then as an employee to now I’m a full time frontend contractor and traveling with my wife around the world. I specialised in frontend development mostly because I love this field. I like to slice a good design and implement its UX functionality more than just handling data and “hardcore” algorithms.
Working for different companies and on different projects taught me that there is no perfect recipe for a developer and that different patterns have emerged. Most of the time it counts the passion for how you do your job and tasks, more than your core specialty.
My view on core skills that a frontend dev should master
Throughout my career I’ve seen and heard a lot of interpretations on what a frontend developer should know and do. I’ve seen HTML/CSS devs, I’ve seen JS devs, I’ve seen Angular/React/Vue devs and so on. From my point of view, this separation is a bit of a stretch and it represents a lack of understanding or “living in your own bubble” kind of situation.
I know the every developer needs it’s own style and own mindset but I also think that all of us, frontend devs, should at least try to have a set o common knowledge and sets of skills.
CSS & Designs
This is the bread and butter of any frontend job you will encounter, having these skills is essential. Converting a static design to an interactive page should be a second nature, also seeing a design for the first time should make you already think about the common components you can extract and the type of structure you will use. You need to be prepared to understand all the user interactions the application will support and have a good understanding of the CSS capabilities at the moment (transitions, animations, grids, filters etc.).
You should be also comfortable to discuss freely with the designers about the concept and about their vision that’s been incorporated in the design. Also, you shouldn’t be afraid to suggest new concept ideas that they’ve missed or you think they can be implemented using new CSS techniques.
At the moment knowing a CSS extension language (SCSS/LESS/Stylus etc.) is kind of a must and my suggestion is to try them all and test their capabilities/formats to see what suits you (I personally prefer SCSS). Just keep in mind that CSS is getting stronger everyday and you should keep an eye on css-variables support and other cool features already baked-in.
Every application needs interaction and the time when we only had webpages that just refresh when you select a filter or submit a form has passed. Right now, JS incorporated in a web application gets a really important role and that’s why having a good understanding of JS with its quirks or strengths it’s just a no brainer.
Concepts of functional programming and async set of mind should be the first things you should master. You have to be comfortable with Promises and Callbacks and always think that everything JS is not blocking, it will be handled later.
In the past, JS was heavily criticised for incompatibilities between different browsers but right now, especially starting with ES5-ES6, things are going into a good direction. Depending on your browser support list you can use the features as they come out the door. Of course, you should also get comfortable with Babel compiler just to make that support list a bit longer.
Speaking of Babel, you should also be aware of languages that transpile to JS like Coffeescript or Typescript (I transitioned from CoffeeScript to TypeScript and I really love it).
JS Frameworks and Libraries
jQuery, oh jQuery! Everyone knows it and everyone has at least written some selectors or click listeners. I know it’s old-school right now, but most of the frameworks that we work with right now have started from it. Frontend development, from my point of view, was like the wild west before jQuery but now, even if some people blame it for not being performant enough or for being a drag for a simple functionality, I think it set a stone for great frameworks today. If you think about it, some concepts and syntax are still used today in different forms.
Angular, React, Vue – just pick your poisson. From my point of view, if you worked with any of these, you can decrease the learning curve significantly when you have to work on a different one or just want to dip your toes in another framework. So don’t be afraid of working with all of them, just don’t pick sides on which one is better. Experiment, decide what are the best features that you like from all of them, try to apply patterns and just keep an open mind because there are new frameworks everyday.
Most projects you may work on today already use a framework and you need to be prepared to work with any of them. Of course you will have favourites but make the most of it and always try to find you the good practices and just don’t be afraid to ask for help.
Task runners and builders
This is simple: have a good understanding of task runners and builders for web development (Grunt/Gulp/Webpack etc). Also a good knowledge on how to deliver a web app ready to be deployed in production with the tools you have at hand is a must.
Keep an open mind
This list may continue but these are the core strengths that I think a good frontend dev should have. I don’t really agree with developers or companies which suggest that there are only CSS devs or there are only JS devs and so on. When I think of a frontend developer, I have in mind a person that can handle with ease writing a new component for a web app, but then, also styling it following a design or maybe just using a well-know CSS framework (Bootstrap/MaterialUI/Foundation etc)
You should be ready to explain what you’re using
One big part of being a good developer, not just frontend, is to be able to share your knowledge and not just to apply it.
Do a simple exercise: Can you explain to a newbie, in a coherent fashion, the tool/framework/library/pattern that you are using? If not, dig deeper and just find more about that: search the web, watch a video, go to Medium, StackOverflow and just study more until you can do this exercise.
Self Study and open communities
Never leave with the premise that you know everything or you are an expert. Keep in mind that new stuff surface everyday and you always have something to learn. I personally prefer PluralSight or TreeHouse to get familiar with new tech but also Medium or HotJS is a good place to find them.
Invest time in this, you won’t regret it! Don’t just say to yourself: ‘Oh, I don’t have time for this, I’m to busy actually working or I need time allocated by the company/project for this’. Nobody will give you the time unless you make time. You are the only one in control and it’s YOUR choice.
Another way, and I guess you already know about it, is to interact with other developers (not just frontend, but any kind of developer) and discuss about tech, patterns, frameworks, how-tos and many other IT-related things. You can just do this by attending conferences, by joining local communities or just by making friends that work in tech or are passionate about it.
I consider myself a bit of an introvert but I still like this because it’s my chance to get a second opinion or just to find out new stuff.
Instead of conclusion
As the title suggests, this is my view on what a good frontend developer should master but obviously there are more skills and flavors that you might encounter and would like to approach.
I think that the best experience is gathered by self exploration, by asking questions (even if you think they are trivial) and just by trying something new everyday. Keep an open mind, talk with your friends, colleagues and strangers about your passions and interests and you might get surprised on the things you’ll find out.
Is there something you would do differently or do you have some other skills that are not included here? Let’s just talk and debate in the comments 😊