Frontend vs Backend vs Fullstack Web Development - What should you learn?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hi everyone welcome to this video there's one question i get quite a lot should you learn front-end web development back-end web development or full-stack web development what are the advantages of each and what is it actually about and which one should you choose let me try to answer this in this video so front end versus backhand versus full stack what's the right one let's first of all clarify what's what so as you know the web works like this we have users using the browser be that on a desktop machine or the mobile phone or of course other clients like mobile apps but let's keep it simple so users using the browser and we have servers service where our website runs on where it is hosted the browsers send requests when we visit a certain domain and the server returns a response thus far nothing special now the part on the browser is referred to as the frontend so the user interface which we render there which consists of html css and javascript more on that in a second the part on the server which is responsible for returning that page but also which is responsible for storing user data in a database fetching data from a database that is referred to as the backend so these two ends communicate with a java and that is relatively straightforward the end which you see as a user which you directly interact with is the front end and the part which does work behind the scenes is the back end now what's full stack development full stack development is both together of course you as a developer can work on both the backend you write your own server-side code you write your own logic on the server you access the database and you can also be responsible for the front end for the user interface you're rendering you can do both and then you're a full stack developer so that is the big picture let's now take a closer look i decided to create four boxes which we can use to talk about these ends and let's start with front-end development let's have a look at the technologies and programming languages you're about to use when you become a front-end developer obviously that is important because you gotta know if you enjoy working with these technologies because if you don't enjoy it you'll not have the greatest time of your life working as a front-end developer you'll work a lot with html css and javascript that is your bread and butter tech stack as a fronted developer because as a fronted developer you will build user interfaces you will build stuff that runs in the browser you'll not build stuff that runs on a server that uses a server-side language therefore you'll probably not just need the basics about these languages but advanced knowledge and also knowledge about things like css preprocessors things like sas stylus which make writing css code easier you also want to know some javascript libraries like lowdash and frameworks like angular react yes that's a library but let's put it into that basket because we use it as an alternative to angular or view or well view so these are the things you work with and these are the things you gotta know and obviously in general you got to know that ecosystem around that you got to know how to use other third-party libraries that might be connected to react let's say react router you have to feel confident working with these libraries and you have to know what they do and how they connect and you will also have to know some build tools you will have to know what npm does what webpack does at least basic knowledge about how to configure it is definitely required so this is your workspace this is what you work with this is what you have to know now you work with these technologies but what are you working on you'll build javascript driven user interfaces and that means you'll build what the user sees you'll build all the forms the widgets the user uses drag and drop things everything the user interacts with depending on what you're building that has moderate or very high complexity you'll also be responsible for creating reusable ui components with javascript and css especially when working with a component driven framework like angular react review but in general you'll work a lot with css and you will build things which you then repeat in your page therefore your job will also be to think about what you need to build and then build it in a clever way so that you don't repeat yourself all the time as i already mentioned you'll work a lot with forums and you'll have to validate user input is that email address an email address you'll have to answer that but important not because you're the final validation layer you're not making the final decision whether this is valid because your code can always be tricked since it runs in a browser the user can always edit your code but you'll do all of that to provide a good user experience because user interfaces is your job user experiences is what it's finally all about you'll also have to work with the backend you'll have to decide how to communicate with the backend does that form send a post request or do you use an ajax request are you building a single page application with angular for example these are things you'll have to know and you'll have to build finally you'll probably also have to work on advanced user experience strategies as i called it here things like adding offline capabilities in general progressive web app features to your app or handling live updates working with web sockets these are things which sometimes also touch back end topics or where you have to know to which end point to connect where you have to know which technologies your backend has to use but you'll be responsible for working on that on the front end now what's not so important for you you'll not work that much with server set languages node.php knowing some basics always helps but you don't need to be an expert that's not your main job you'll also not interact with databases you'll probably not write any queries so that's probably all something you don't have to worry about you'll also don't dive into server configs you don't necessarily do this as a back-end developer by the way because that is the job of a server administrator but as a fronted developer it's definitely not your job so these are the technologies you're not going to use now you'll therefore not work on server-side logic of any kind if you have a products app where users can issue orders well you'll not store them you'll not handle them you'll not implement user authentication on the backend on the front end yes the forums sending the data validating it yeah but you'll not store it in a database you'll not check if that password is correct you'll also not send any emails or things like that this is always something which gets triggered on the server which gets executed with server-side code and since i mentioned you won't work with databases so you will not directly connect to any database your front-end code won't connect to databases you'll reach out to back-ends which then do the connection you'll not do it directly so that's the front-end development what about back-end we got the same boxes and it's basically well the opposite for technologies we need server-side technologies like node like php we also will work with frameworks like laravel for php or express for node you will work with databases and query languages now chances are you still don't need to know sql in detail because you might use some some package some orm which basically takes the heavy lifting of writing such queries away from you but still you'll interact with databases you need to know some basics at least you'll partly also be involved in server configuration now typically that is of course the task of a server admin but still you'll be involved in that you'll have to think about things like logging strategies or how your app works together with the server which server features do you need so you will be involved with that and you also have to have basic html css and javascript knowledge but certainly no expert knowledge but obviously you want to know what the frontend does just as the front end should have a basic idea of what you're doing now what will you work on you'll work on server-side business logic things like user authentication storing these orders working with the database in general automatic notifications data validation that's important the front end does this too but only to show an error message to the user you will have the final say in whether something gets saved to the database or not because the frontend code can easily be hacked or tricked your code is way more secure because your users can't directly access it therefore you'll have to validate any user input you have the final say and that's really important to understand you on the back end really have to make sure that you secure your back-end and your app overall that only checked data ends up in the database because working with the database and data storage in general this also includes files is of course your task it's not happening on the front end you connect to the database and just in case you're wondering why we don't do that directly from the front end well they're technically that would be possible but the credentials for working with the database should not be exposed to your users on the server users can't read your code there you can safely access the database and there you also can write code which can't be manipulated additionally you will also probably be involved in setting up scheduled processes like doing some calculations cleanup processes this is all server-side work this is all happening on the servers so it's not so much about user interfaces not at all actually but about all the heavy lifting the core logic of your app it's not more important than the front end it's just another important building block because of course it's also important to provide a nice user interface but thereafter something meaningful should happen and that is then your task on the server side now what's not so important for you regarding technologies languages you don't really need advanced javascript or css knowledge unless you're working with node then you should have advanced javascript knowledge at least you'll also not really need javascript libraries or frameworks regarding the front-end if you're working with node you will have to understand how this echo system works and you will have to know which libraries and frameworks to use on the server but you won't need to know angular or react because that's a front-end framework you'll also not need build tools that much it always helps to understand some basics and npm for example is definitely needed if you're working with node to install your local node packages but you won't need to know how to set up a build workflow with webpack which automatically compiles your sas code to css code that's not something you'll worry about now what will you not build there you'll not build the client-side validation for example you'll do the server-side validation of user input you'll not do it on the client side in general you'll not build the user interfaces you might render simple ones or return some html here and there but in general you're not involved in that you don't build complex user interfaces and you therefore also don't need to know where you won't work on advanced strategies that impact the user experience offline capabilities in your app it's not really something you'll be involved in it's not your core business so that's the back end development what about full stack full stack needs to know everything you gotta know the basic technologies you gotta know server-side technologies like node uh frameworks for the server-side front-end uh advanced knowledge for javascript and css as well as libraries and frameworks for the front-end you gotta know all that you also got to know how to interact with databases the key thing is you'll probably not be an expert at all these fields you just will know the basics maybe the advanced basics but really everything because well it's very complex it's a lot so pretty hard to know everything there you'll work on everything you'll work on both the server side and client side uh you'll work on the user interfaces and the logic you'll do the validation on both ends on the client side for better user experience for immediate errors on the server side to make sure no invalid data ends up in the database you'll also be responsible for storing files and data in general data in the databases so that will be your task you'll do everything that is the definition of full stack development so what is not so important for you then advanced things you don't need to know libraries and frameworks in every detail you'll probably have some advanced knowledge don't get me wrong but you'll rarely have expert knowledge in all these things build tools you got to know the basics as for everything else but you'll probably not be a super deep expert on them because you can use a lot of clies or templates to find your way around setting up everything on your own and that by the way sounds negative it's not meant to be it's perfectly fine you'll also not work on something for example very complex user interfaces probably all something you won't work on the same for very complex server-side logic since you won't have expert knowledge in a lot of things you can't work on these super high sophisticated things and that's not necessarily a huge issue because not every app not every web project is super sophisticated so it always sounds worse than it necessarily is so what's better then it sounded like full stack development is absolute garbage and you have to choose between front and a back end well let's compare it frontend development offers great opportunities it's an ecosystem or a technology stack which is evolving rapidly we see a new javascript framework every day it's really evolving super fast we can do more and more in the browser we got new browser apis coming up every day so the browser gets more and more capable we can see that in the popularity of javascript it's exploding because there's so much you can do and therefore there's high demand in developers and that demand is still growing to sum it up in a negative sentence you're just doing the user interface though and that of course is wrong you're doing a lot in the browser you're also doing things like caching things to provide offline access but in the end obviously you always just work in the browser which is a lot but the browser the back end well there security stays important and with ever more data and ever more touch points to our users with more and more devices connecting to our servers we always need more and better algorithms and processes to handle all that incoming data to do something meaningful with that and therefore the challenges are growing there too we can do more and more and obviously we therefore want to do more and more so there too we got a lot of opportunities and demand is growing to also add a negative sentence here you got no direct connection to your users or customers though you of course write the core logic which they'll use or which will impact them but since you're not designing the user interface you're not the one fetching their data you're not the one providing the user experience that ensures that users want to interact with your app and that is of course something which you might be missing or you're liking the fact that you can focus on the core business logic now what about full stack development full stack development has one huge advantage you can build everything on your own you don't have any dependencies on backend experts or frontend experts you got a full understanding of the complete text that you're working with the backend is no black box to you the front end isn't either that is huge and that of course means that it's perfect for small companies and freelancers i'd say it's rare that in super big projects in bigger companies you work as a full stack developer you typically specialize in something even as a front-end developer you specialize on something maybe you're the guy for the authentication forms maybe you're the guy doing the css depending on the project and the company size but for smaller companies and for your startups or as a freelancer you got all the power and you can do everything on your own which is extremely extremely valuable the downside is of course you're a check of all trades this has advantages but also disadvantages you're not an expert in anything that sounds hard but you'll not master everything that can be discouraging or this can be a disadvantage it's obviously always possible to specialize in one area thereafter though so a lot of people start off as full stack developers because you want to know the whole tech stack and then you specialize or you always stay a full stack developer because you say hey i'm a freelancer and i like the fact that i can pull off whole projects on my own so i hope this gave you a bit of an overview was a lot of talking let me know if such videos are interesting to you i saw this question a lot and i hope i could clear up some confusion
Info
Channel: Academind
Views: 465,568
Rating: 4.9481387 out of 5
Keywords: frontend web development, frontend, backend web development, backend, fullstack, javascript, html, css, node, node.js, frontend vs backend, maximilian schwarzmüller, maximilian schwarzmueller, maximilian schwarzmüller web development, academind
Id: pkdgVYehiTE
Channel Id: undefined
Length: 17min 40sec (1060 seconds)
Published: Tue Jun 26 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.