I think that this is a rather difficult question, which is most easily answered by yourself, just by trying, below I will describe all the experience in these tools and you will be able to learn a lot of information about this.
Advantages of React
As already explained, a virtual DOM enables creating a simplified copy of the DOM. All the changes that need to be implemented are made in the virtual DOM. Later on, two DOMs are compared and when the differences are identified, the real DOM will re-render only the changed part. This is much faster and more efficient than working directly with the DOM.
One-way data binding
Two-way data binding was an advantage for Angular, and the one-way data binding of React may be an advantage as well. This approach makes the view react to any changes made to the model, but the view itself cannot affect the model. As a result, the data only flows in one direction, which reduces the possibility of any side effects.
Native mobile development framework
Being supported by the world’s two major social media companies, React has millions of users across the globe. The strong community means access to quick help from experienced developers. On Github React has gathered over 73 thousand stars, and the usage statistics on npm shows that the framework was downloaded more than 4,766 million in the last month. A very impressive score!
Disadvantages of React
Need to use third-party technologies
Complex app structure
React doesn’t have any predefined structure. This means that structuring the app is fully the responsibility of the developer, and depends a lot on his knowledge and experience.
Steep learning curve
React isn’t the easiest technology to learn. Besides React itself, you will need to get to know several other libraries and modules as well.
When to use React?
React is pretty universal, which means you can build nearly anything with it. However, there are some cases, where React is an absolute must. For these apps it is currently the best solution available on the market.
Building an app that needs to re-render quickly? React is a good choice due to the ability to quickly reflect the data changes in the view.
Single page apps
Since React can display content changes without reloading the current page, it is a great solution for single page apps.
Native mobile apps
React Native enables building mobile apps that are indistinguishable from native apps built with Java or Objective-C.
Vue.js is a progressive framework for UI building. This alternative to Angular and React is now gaining popularity. It is extremely popular in China, and is now spreading to the west, which is to be expected.
Advantages of Vue.js
Just like Angular, Vue is an MVC (or Model-View-Controller) framework. The advantage of this is obvious – the ability to write well-structured code, which is extremely important when working on complex applications.
One of the significant advantages of Vue is the small size of the framework as it doesn’t include many features right “out the box”, but the functionality is easily extended with a variety of third-party solutions. It is often compared to Angular, which is a monolithic framework with a bunch of built-in features, which are unlikely to be used in your app at all. Of course, tree-shaking allows eliminating the unused code, but the size of the framework remains higher compared to what Vue offers. A full-featured Vue 2 project with Vuex + vue-router weighs ~30kb gzipped. At the same time, an out-of-the-box, AOT-compiled application generated by angular-cli has the size of ~130kb gzipped. A compact size and the ability to include third-party modules to extend the functionality make Vue.js a wiser choice for those who care about reducing the size, and therefore improving the speed of the web app.
The templates in Vue.js are written in HTML, which makes them readable without the knowledge of other programming languages.
Due to lighter-weight virtual DOM implementation, apps built with Vue.js have the highest performance in comparison to other frontend frameworks.
Two-way data binding
Vue.js automatically syncs the whole model with the DOM.
Supported by Laravel “out of the box”
Laravel is one of the best PHP backend frameworks. The support of Vue allows building web apps using two of the most progressive technologies without any additional installations.
Low learning curve
Compared to Angular and React, Vue.js is the easiest frontend technology to learn and start working with. In addition to this, you can start adding Vue.js to your project step by step.
Disadvantages of Vue.js
Vue is less popular when compared to Angular and React, both of which have an impressive number of users. However, you can still count on support from other community members.
Fewer libraries for Vue.js
Since there are fewer users of the framework, they share fewer solutions to extend the framework functionality.
This framework was created by Evan You a former Angular developer. He knew exactly the weak points of Angular and started to work on an alternative, while keeping all its advantages. The new framework quickly became extremely popular in his native country China. As a result, documentation for some of the third-party libraries may be available only in Chinese.
With about 658,000 downloads per month, Vue.js is showing great results. Over 63 thousand Github stars prove the rising popularity, and reflects the views of the community as well. Vue.js is now being used all over the world. This means that there will be more and more solutions compatible with this JS framework.
When to use Vue.js?
Dynamic high-performance applications
Similar to React, Vue.js is a good choice for dynamic applications, however thanks to virtual DOM it offers higher performance, which is beneficial for complex apps.
Single page apps
Vue.js allows changing the content quickly without reloading the page, which makes this framework perfect for SPAs.
Afew years ago, I was bouncing back and forth between landscaping jobs and restaurant jobs. I had just left college, and didn’t know what I was going to do with my life.
I had a lot of ideas, but no direction. During that time, I started teaching myself programming. At first it was a hobby. I thought it was cool to be able to build things using nothing but my brain and some code.
But then I started thinking about where my life was going, and saw this as a potential living.
At first, I put the idea out of my head. I couldn’t afford real education. I already dropped out of college once because of money, and if I went in for computer science, I’d have to start over.
I’d leave with 6 years of school and well over $50,000 in debt if I took that route. So that wasn’t an option.
Then I started thinking that I could teach myself web development well enough to get an internship.
My initial plan was to introduce myself to a few companies in my town, and ask if they would want to meet with me. I wanted to discuss the potential of me working with them while I was in school. That way I could pay for school and get some experience at the same time.
So I got serious about web development.
Instead of tinkering I started to build a real portfolio and document my skills.
I started becoming active on places like Stack Overflow.
I built a few practical applications and put them on GitHub. They were nothing fancy, but they demonstrated that I knew how to code.
One company didn’t offer me a part time job. They didn’t say to come back after I had my degree. They offered me a full-time job on a 6 month trial basis as their new Junior Developer.
I was over the moon. It turns out that once I got serious and started developing with a purpose, I taught myself quite a bit.
I was able to answer their questions. I was able to walk them through the modest applications I had built. And I was able to explain how my projects worked.
I stayed at that company for two and a half years, and then took a job as a web developer for the city I live in.
View yourself as a lifelong apprentice
An important part of my transition into a professional developer role was viewing the time I spent with my previous company as an apprenticeship. I learned as much as I could.
The real-world knowledge gained from working at a company is invaluable. Knowing how to work with clients, coworkers, and within constraints is essential. This is something you can only learn in the field.
While I may know more now than I did when I first started that job, I’ll never stop viewing myself as an apprentice. One of the requirements for being a great developer is the desire to continue learning. The minute we see ourselves as having mastered a skill is the minute we stop growing.
Hemingway said it best:
We are all apprentices in a craft where no one ever becomes a master.
He was talking about writing, but it applies to development as well.
The combination of teaching myself and working for a company has allowed me to learn so much (I’m even writing a book). I understand the technical practice of web development, and also how to go from a hobbyist to a professional. It’s a path that anyone can take, regardless of your time or abilities.
To give you some perspective, I was working two jobs at once — one of which involved getting up at 4 a.m. to drive a forklift around.
Learning to code as a busy adult takes determination, drive, and a stubborn persistence.
Making the transition from Hobbyist to Professional
Here’s a process that you can follow. The exact journey will be different for everyone, but there are steps you can take to get you on the right path.
1. Realize that you can do this
Anyone can teach themselves to be a developer. There’s this idea that being self-taught is something only a certain type of person can do. They’re right in a sense. You need to be self-driven and motivated by something other than immediate payment. But anyone can become this type of person.
There’s this idea present in our society that some people are born with certain traits and others aren’t. It’s detrimental to growth, and one of the reasons why so many people feel unfulfilled in life.
If you always felt that you either “had it” or you didn’t, it would be very easy to get discouraged.
I want to put that myth to bed right now. Anyone can learn to be self-motivated and teach themselves programming. Or start a successful business. Or achieve a long-term goal.
It’s not about catching a big break, or being born with the right traits. It’s about perseverance.
If you can put your head down, push through the hard times, and commit, you can do anything you want to.
That last part is super important, but I want to provide a warning before moving on.
People are often too quick to embrace their own successes and the successes of others. It’s known as survivorship bias.
There is an element of luck in everything. Sometimes things just work out. For example, I contacted a web development agency and was lucky enough that they happened to be looking for someone at that moment, and I happened to fit what they were looking for.
But what is luck?
Sure, I was lucky to get that job, but I never would have been lucky if I hadn’t made the decision to teach myself development. And then made the decision to apply to that job.
Luck does play a factor, but the myth is that it is all up to luck. You can increase your odds of getting lucky, you just have to be willing to put yourself out there.
But luck will never find you if you don’t commit to being great at something.
2. Commit to being incredible at your craft
One of my biggest weaknesses is that I get bored and distracted. I want to jump into the next project. This tendency will kill your success.
It feels like freedom. Being able to bounce between whatever project happens to suit your mood that day, but…
It’s a trap! If you take away nothing else from this article, let it be this:
The number one key to succeeding in becoming a professional developer is to commit. Commit and never stop until you make it happen.
This applies to everything.
People stress out about which framework to use. But what matters is picking one and sticking with it. You can transfer and learn new languages and frameworks later.
What matters is the problem solving skills you will gain when developing. The ability to think like a developer.
I taught myself programming using Laravel, but the company that hired me used CakePHP. It didn’t matter. They knew I could pick up the technical skills required to switch frameworks.
Pick a direction and see it through, no matter what. You have to remove the possibility of getting distracted by something else.
Few feelings can compare to the relentless pursuit of mastery of a craft.
It isn’t easy. Once you learn to ignore distractions, you will notice an increase in enjoyment of your work.
Mike Rowe is fond of saying that people shouldn’t start with finding their passion.
People are so unhappy because they look for the perfect career. They look for the one that they are passionate about.
But passion comes from an unstoppable desire to be incredible at your craft. Once you adopt that mindset, your abilities as a developer will take on a new life.
3. Start building things immediately
Aspiring developers can get stuck in the trap of reading too much without taking action.
Tutorials and books are great for learning the basics. The problem is that they instill a false sense of confidence in the developer.
Have you ever finished a programming book and gone to build something on your own only to realize you had no idea how to go about doing it? Then you know what I’m talking about.
The solution to this is simple, but not easy.
Make something. Make an app that solves a problem you have in your own life, or that addresses an issue for someone close to you.
Make something for fun.
Make something and put it out there. Make it open source and put in on GitHub. You aren’t doing it for anyone else, it’s for you, so don’t worry about other people’s opinion of it.
Your code will be ugly at first. I look back at some of the code I wrote even a few months ago and want to vomit. But you can’t learn development without building stuff. Books are fantastic, and I am obsessed with reading as many as possible. Then you must apply that knowledge.
You’re going to run into issues and you’re going to struggle. That’s good. Those are the times we learn the most.
Start off by building things that solve problems, I’ll talk more about that in step 6 below.
4. Set up an online presence
As soon as you start building things, you’ll want to set up an online presence. Your GitHub account will be a great start.
This is where you’ll be able to house the projects you are working on and share them with the world.
But you want to go further than this. I recommend setting up your own portfolio site.
This site will do a few things:
It will serve as a public place to tell potential employers about yourself
It will be another place where you can showcase your work
It will serve as your platform
That last one is huge. Once you start building things, you should immediately start writing about them. Start a simple blog where you share what you are working on and teach everything you know.
This is one of the best ways to give potential employers a taste of who you are and what you can do. It’s a way to get your name out there and start building a platform for yourself.
This can lead to job opportunities and the possibility to make more income on the side by writing books or freelancing.
Your site should serve a very specific purpose.
Most people create an online resume, but you should do more. What is your specific goal? Your website should be designed and created around that goal.
If you want to get a job working on a certain kind of project or with a certain framework, put that in your site.
I recommend having 4 core areas for your site:
Your home page is the entry point to your site. It should provide a very brief overview about who you are and what you do. And should direct people to go where is most relevant for them.
For example, you could have two main buttons. One leading people to your writing section to learn more about web development, and one leading to a hire me page if someone is interested in hiring you.
This is where your blog and your tutorials will live. Write as much as you can here, and don’t be afraid to share it.
A simple about section that goes into more detail about who you are and what you do. Don’t make this a life story. Again, target this section to be relevant towards what you want to do.
Rather than talk about your personal life, talk about what led you to web development, your journey so far, and where you want to go. Mention some of your favorite projects and link to them.
4. Hire Me
An essential part of your site, this is where people will go if they are interested in hiring you as a developer.
Make sure to find the right balance between selling yourself and being honest. There may be some overlap between this page and your about page, but this page will be more specific about your skills and what you bring to the table.
This page should also have a contact form so people can get in touch.
In addition to your own site, start offering to write for other major publications. Then you can provide a link back to your site in the bio section.
5. Start teaching everything you know
Nathan Barry is a big fan of teaching everything you know. He tells the story of Chris Coyier, founder of CSS Tricks.
That site started out as Chris publicly writing about what he was learning so others could follow along. Now it’s one of the biggest web development sites out there.
The lesson here is that you don’t have to be the world’s greatest expert to start writing about something and teaching it.
In the online business world, there is this idea of the relative expert. It’s the idea that everyone is an expert in something relative to someone else.
I have my issues with this, especially when it is used by someone to justify selling something that maybe they shouldn’t be selling. But it is a useful comparison to make.
What bothers me is the use of the word expert. I don’t think there is anything wrong with teaching what you know, and even potentially selling that information if it is valuable to someone else.
But calling yourself an expert may be taking it too far. So when you write your content, approach it honestly.
I prefer the term learning in public.
There are many people who got their start by simply being a public learner. They were learning a craft and documenting what they were learning along the way.
This is the perfect way to approach teaching everything you know. As you learn more and more, you build up your content, and become a better writer in the process. Over time, others in your industry will start to see you as an authority in your space.
This will be invaluable both when it comes to finding a job and if you ever want to strike out on your own.
6. Build to solve problems
One of the most important aspects of becoming a professional developer is doing everything with a specific intention.
It’s one thing to build random apps for fun, it’s another to build apps and sites that solve specific problems.
Web development shops aren’t really in the business of coding, they are in the business of solving problems. The coding is just their preferred tool to make that happen.
Read any marketing or copywriting book and they will tell you to sell the benefits of your product, not the features.
Web developers should market their apps to show how they effectively solve a customer’s problems. And then back up their claims with specific metrics. Customers are generally more responsive to this approach than if the developers talk about the bleeding edge technologies they use.
You will be a very attractive prospect for employers if you can demonstrate your programming skills as well as your ability to code with the specific intention of solving problems and making meaningful applications.
Think about benefits vs features when you are communicating with potential employers or clients, and when writing the content for your site.
Of course, you should also mention your coding proficiency, but most people spend all their time on this. Mention it briefly so potential employers know what you do. If you have a portfolio of effective applications, your coding skills will mostly speak for themselves.
7. Take on an apprentice mindset
The day you think you have mastered something is the day you stop learning.
Adopt the mindset of a lifelong apprentice. There is always more to learn and always more to improve on.
This is especially important in the early stages of your career. If you get a part time job or internship or land a role as a junior developer, you need to immediately get in the mindset of learning and growing as much as possible.
You should really be doing this right away, even before you have an actual ‘mentor’.
In his book, The Art of Work, Jeff Goins talks about the 21st century version of the apprentice-master relationship.
Back in medieval times, the relationship was very formal. A master would take on an apprentice for years, and they would slowly start to master their craft until they reached the title of master, at which point they would take on an apprentice.
The relationship has changed, but it is still very important to consider yourself an apprentice. The main difference is that now you have to keep an eye out for potential mentors and learning opportunities, and there will be many throughout your journey.
In the world of web development, we are constantly on the internet, so this can come in various forms.
Books, tutorials, courses, forums, and other forms of learning are all valuable. I think, however, the most valuable form of apprenticeship comes from learning from someone who is currently in the position you want to be in.
This is why it is so important to be eager and willing to learn. Getting your first development job is not the end of the journey, it’s the beginning.
That is when you will really start learning and exponentially growing your knowledge.
8. Learn to collaborate
One of the biggest differences between coding as a hobby and coding for a living is learning to collaborate with people.
You’ll need to interact and work with peers, bosses, colleagues, clients, partner companies, and all kinds of personalities throughout your career.
Learning how to effectively work with other people is important.
In the field of web development, communication is key. When a company comes in and tells you what they want, and you aren’t clear about exactly what that looks like, it can cause a lot of problems and headaches in the future.
Likewise, if you can’t communicate with the people you work with, your work will suffer and you won’t be able to do your job as well.
While you’re still learning, there are a few great ways to do this.
Part of this will come when you start teaching everything you know. People will interact with you, sometimes negatively, and you’ll learn how to deal with those situations.
I also highly recommend contributing to open source projects. This gives you a taste of what it is like to collaborate on a project where different people may have different ideas on the best way to do things.
Contributing to open source projects can be intimidating, but it will do wonders for your development career.
Being a web developer is hard. It means a life of non-stop learning and adapting to new technologies. It’s one of those careers where you need to be well-versed in not only technology, but business and communication as well.
It’s an extremely rewarding path. You get to make things that solve people’s problems and make their lives easier, while making a fantastic living at the same time.
There are countless resources to help you learn to code, many of them completely free, but there seems to be a lack of resources helping people make that transition into professional developer.
I hope this short guide provided a good road map for you to get started becoming a professional developer.
Remember, nothing will happen unless you take action. Build a simple portfolio website, email a few potential employers, write some posts on Medium. Just start doing something.
The more you put yourself out there, and the more you do, the sooner you’ll make the shift from amateur to professional.
2017 is almost over and web development trends are changing rapidly. So I’ll tell you the future web development trend in 2018:
Progressive Web Applications
The world first heard about progressive web apps in 2015. The next year we met the pioneers of this technology, and in 2017 progressive Web Applications seem to have become the major competitor of native mobile apps.
Progressive web apps (or PWAs) are websites that feel like native mobile apps. Thanks to service workers, they can work offline, delivering an extraordinary user experience.
Online customer support
2016 was the year of chatbots. 2018 will be the year of helpful chatbots. Since there are thousands of bots out now, the quality of their services will be the next web development trend.
The prediction is that 85% of all customer interactions will proceed without human assistance till 2020.
A customer service chatbot becomes a must on almost every website. Whether you are selling electronics, crocheted toys or software development services, you should have a chatbot.
You definitely remember the concept of a static website from the early years of the World Wide Web. All the first websites on the Internet were static.
But then the era of dynamic websites began.Websites became more functional and easier to update even for people with no technical background. At the same time, the development process became more complicated, as the extended functionality required communication with the server, so backend development got involved. Modern CMSs are the actual dynamic websites
Nowadays, the web is returning to its roots. Static websites are becoming the web development trend of 2018 again.
Another web development trend for simplicity is single-page websites. This solution allows putting all the content onto one long scrollable page, removing any clutter.
One-page websites have a bunch of advantages. They don’t challenge the visitor with complex navigation, multi-level menu, and tons of text. The essential information is all on one page. The user only has to scroll to it.
Of course, the use-cases of single-pagers are limited. This type of website will not suit e-commerce projects and blogs. At the same time, businesses can significantly benefit, presenting their services in a simplified and more engaging manner.
Push notifications for websites
Mobile apps notifications turned out to be a highly efficient means of user re-engagement. And recently this idea has been implemented for websites and is becoming new web development trend.
The workflow looks quite simple: the user visits a website and is offered to enable push notifications. The user will then be notified of any changes on the website (like a new blog post or a private message), even after he has closed the tab with that website.
In 2010 Steve Jobs published his thoughts on Flash and its future. It became clear that this technology won’t last long. Jobs’ statement about the death of Flash is quite popular for around two years now when YouTube defaulted to HTML5 players.
The major weakness of this technology is the incompatibility with mobile devices. An enormous amount of traffic is lost just because of the outdated technology.
Simplicity is the trend in recent years. This is also true for web design. Users are already tired of crazy GIFs and flashing ads, that’s why websites with moderate design get more appreciation.
At the same time, sophisticated motion UI is becoming more popular. Animations allow to add more style and enable you to distinguish your website from the thousands of others with the static UI.
There are several ways to add some life to your minimalistic website. Consider page header transitions, nice hovers, animated charts, background animations and modular scrolling. These and many other elements may make your web presence much more enjoyable for users. The true artwork!
We met Angular 2 in 2016. It is a complete rewrite of the AngularJS framework. The main advantages are improved modularity, app architecture scalability, improved dependencies injections, etc.
PHP 7.x – Laravel 5.x
PHP remains the popular choice for website backend development. This programming language has improved its positions even further after the release of version 7.x. The latest update of the PHP framework Laravel 5.x is a recognized web development trend in 2018.
Laravel is the most popular open-source PHP web framework. All the benefits of it can be fully experienced on dynamic websites with complicated backend.
Laravel offers ready solutions for complex tasks. The variety of existing packages makes the development process faster and more reliable. Regular updates ensure that the framework complies with the current needs of the website owners and the requirements of the time.
And of course you should remember that nowadays having a website is more important for the company than having an office. You can read this article and find out more about web development trends in 2018
Front end development is a great career in 2017, but don’t get hit by the bus.
There is all the hype around as to which is the latest cool front end technology to learn as a beginner.
You assign yourself a task to learn front end development only to realize that the task is to find the particular framework to learn.
Let me give you a few tips that will help you be a better front end developer.
It’s great that you have already mentioned that you know some jQuery.
2. Build some Boostrap themes
It is quite easy to take a responsive Bootstrap template, paste it on a server and viola! you have a responsive website.
Nah! If you want to be a great front end developer, try and recreate the whole template ground up because in most cases you will be required to build a user interface from a Photoshop mock up, not from another bootstrap template.
4. Consider taking a UI/UX course
If you are very very serious about front end software developer then you want to consider one of these courses that will help you understand user interaction with interfaces.
In order to design great interfaces that yield greater users experiences you need to have a better understanding of the UI/UX design and these courses go a bit into more depth about that.
I am not a front end dev so I might not say much about them.
5. Go get a job
You asked what employers like – employers like a developer who has a job!
You could task yourself reading all this content and trying to build some demo projects but without that job experience, employers will still consider you a risky investment.
Learning all these skills is only interesting if you are actually doing something useful with the skills learnt, or you will even forget what you learnt.
Because getting a front end developer job might be hard when you don’t have the experience, I suggest you build a project by yourself that you can then show off as part of your portfolio to help you get a job.
You might need to team up with a back end developer if you project will need some back end work.
Have you considered contributing to open source projects on GitHub?
If you are still stuck on how to get started with front end development then please message me if you want to work with me on some of my open source projects as you sharpen your front end skills.
Link to the post on Quora – https://www.quora.com/Is-front-end-web-development-a-good-career-today/answer/Geoffrey-Bans