How to plan your Java learning path - Brain Bytes

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
okay so you're looking for a new job as a java back-end developer are you just trying to improve your skills and cover the gaps in your knowledge how do you go about planning your learning path to be a good back-end server-side java developer where do you start what topics do you cover and in what order this video will give you the answers you need here's the thing about back-end development or server-side development in java today there's a whole lot of technologies and buzzwords involved so for someone who's new to the field or for someone who has not been in touch with the developments over the years it can be quite tricky to navigate through what's going on or even where to start how do you become a good java backend developer and where do you start learning let me remove all the buzzwords and jargon out of the picture and start from the basics in this video i'm going to lay down a basic learning path that you can take and plan for i'm obviously not going to be 100 accurate and 100 comprehensive and cover everything that's not possible in a video of this nature what i want to do in this video is cover some of the popular and more important options for a newcomer to get started with and if you're someone who's already a java developer you can see what are the gaps in your knowledge and what you don't know and what you need to focus on starting from the beginning the very first thing you need to focus on and get good at is the java programming language this is a no brainer but it's surprising to me how oblivious some people are to this concept i often meet people who think that they have to learn this fancy new framework or that shiny new technology hang on a minute before you learn all that how much of the language do you actually know how good are you in coding in java for better or for worse java is now in a very rapid cadence with new features and releases so if you haven't been keeping yourself updated with the new stuff in java there's a lot of catching up to do actually so i recommend you start here first once you learn how to code well in java you can be good at coding in any related framework or technology you might choose later so what do you learn in the language after you covered like the basics about how to write loops and if blocks focus on the main language paradigms and make sure you get them right something like polymorphism and object oriented programming in general stuff like generics concurrency collection apis you know that kind of stuff you can pick up any online java course and look at the table of contents to see what you don't know very well and what you should be learning and then you can plan your learning path based on that after you're comfortable with java next you should focus on testing specifically j unit chain unit is one of those things that you kind of have to deal with as a java programmer but it's not something you study up when you're preparing for a job interview because people rarely get asked anything about junit during interviews even though it's like a fact of life for a majority of java programmers so if you're preparing for an interview then you might want to skip this one and get a job and then get back to this and learn junit because writing and maintaining test cases is essential right asserting test conditions marking objects using something called mokito these are all essential skills okay from here there are three directions you can go although this is kind of a false choice and you're very very very likely going to be choosing among two of the options that i mentioned here or maybe even just one of these three on the one hand you can choose to specialize in desktop programming right building applications that run on desktop machines using javafx are slightly older swing technologies notice that it's a swing here not spring all right spring is a completely different thing we'll get back to that in a bit so will you go down this route very likely no there are not a lot of people programming desktop apps these days there is a need for desktop apps in java don't get me wrong it is just that the number of apps and the number of developers are in the minority compared to the other two options here the second and slightly more popular option is developing apps for the android platform you can build apps for android devices using java there are other options for languages of course including kotlin but this is another path you can take once you're comfortable with java you can specialize and become an application developer what to learn here again look at any of the hundreds of courses that are available online for android programming and browse through the table of contents this should give you a good idea of the topics that you need to dive into the third and the most popular option for java developers is server-side programming this is kind of what i want to focus on in this video there are a huge number of technologies and learning paths you can take for this option itself i will cover two major branches with honorable mentions of some others so if your favorite technology does not get a mention here please don't hate on me i'm just trying to provide a simple introduction that covers the more popular options all right i'm not trying to be comprehensive here so what is server-side programming in java it's also referred to as back-end programming this basically refers to writing applications that are deployed and they run on the server as you can tell this is a very broad definition it primarily covers two major types of applications one is web applications where users open a browser load a url they get sent an html page this html page is generated on the spot at runtime by java code that's running on the server so every user gets a different html page with different data and contents you must be familiar with this concept the second use case for server side applications are apis these are application endpoints that are not meant to be used directly by end users but they're for other applications to call the applications that call these uh server-side apis could be running on desktops they could be running on a phone or even on a server as a web application so either way you're building web applications or apis you're looking at server-side programming let's say you decide to go with server-side programming well congratulations on your choice because like i said this is a very popular choice with a lot of demand not that android or desktop applications is a bad choice okay that's good too oh man okay moving on what should i learn for server side programming let's say i'm getting started right what do i learn i highly recommend you start with servlets and jsps servlets are the way you get into java on the server side right this is the way to get java to run on the server side they are like the fundamental foundational technologies on top of which all other java web technologies are built right would you be coding sublets directly as an enterprise java developer well probably not but understanding how servlets work is important to understanding how java works on the server and in the process of understanding servlets you'll also be understanding how http works what a servlet container is and you'll really get the whole picture of having code run on the server to handle web requests so i highly recommend it from here you'll be moving to the more enterprise side of java development there are technologies and frameworks used by big enterprise companies to manage web applications of large size and complexity you have two very popular alternatives here one option is to learn and become good at a framework called the spring framework it's a very popular choice and honestly you can build pretty much any kind of job application you can think of using the spring framework it is very robust as well as configurable and customizable if you go down this path you will first need to learn the inner workings of the spring framework right it's the framework itself then you'll move on to spring mvc which is what you use to build web applications and apis with spring then you can learn about database connectivity especially with relational databases that are very common to enterprise systems there is this concept called object relational mapping or orm the idea is that when you work with objects in the java application world there are usually problems that deal with connecting to the database that follows a relational model so you're dealing with two different models so it's handy to have this thing called object relational mapping or orm that lets you map these two concepts and allow you to work with java objects in the java world while still maintaining meaningful interactions with the relational database world a popular framework that does orm and is very commonly used with spring is a framework called hibernate okay so once you learn about all these various options that are available to you in spring and you realize the amount of pain involved in creating and configuring a new spring project where you experience the pain you alter some profanities and then you learn about spring booth spring boot is a really cool way of creating new spring projects you will learn about spring boot you can see how it takes away most of the pain most of the trouble with spring projects from here on you can take a look at various other projects in the spring framework family you see spring is not just the core framework itself there are other projects that provide additional functionalities that plug into a spring application and they kind of work well with it for example there is advanced tooling to work with relational and nosql databases using spring data our tooling for building microservices with spring again using spring boot and spring cloud projects so check out the spring website at spring.io to learn more about what are the options that are available to you okay so this was about spring an alternative to the spring route for building enterprise software is the java ee route java enterprise edition route so java ee it's also called jakarta ee is a set of standard specifications that outline how enterprise software is built and what are the apis that are available to it so unlike the spring world where you kind of pick and choose the options for various things like the mvc layer the data connectivity layer and so on in the java world everything is pretty much standardized it's all assembled and put together for you to use using a web application server that's called the java ee application server you write your code assuming that everything you need in this specification is available right so as long as it's a part of the standards it'll be available to you so there are some advantages they're both advantages and disadvantages to using this approach obviously i won't get into the details here however the advantages here as far as chalking out your learning path is concerned is this since this is a standard there's not a lot of choosing and evaluating options that you need to do so just look at the java e spec and the associated technologies and learn whatever technologies that are out there in that spec that you need to do what you want to do right so for example you want to build a rest api in java e where you learn jax rs you want to learn to connect to a relational database use jpa so these are technologies that are designed for specific purposes and they're a part of the specification so finding what you need to learn and what you need to use is very very straightforward in fact the server that's in jsps that you would have learned in the previous step they're a part of this java e spec so you kind of already have a start to java e at this point in your learning path there are of course other java frameworks for building enterprise applications that i haven't covered here for example you have the play framework or drop wizard these are really really good but there are nowhere near the kind of popularity that these two options have so i'll leave them out of this video for the sake of simplicity with the major frameworks out of the way now i'd like to talk about what i call auxiliary knowledge or technologies that i think are usually handy when working with java especially enterprise java first is a good understanding of design patterns design patterns are kind of like tried and tested recipes for handling complex problems so learning and having these patterns as tools in your tool belt is vital once you start working in any programming language let alone java second spend some time getting familiar with the git source control system more and more companies are adopting git for their source control and also github is a very popular home for a lot of open source projects today so learn how to work with git understand what branches are what comets and pull requests are this is a this is a really important thing to know next spend some time understanding the build systems in the build process learnable tool like maven or gradle understand ci cd which stands for continuous integration and continuous delivery most organizations use continuous delivery model for developing and deploying code the idea is that people check in their code to their source control system and then there is this process which is constantly watching it and it automatically gets new code builds it runs tests and gets everything ready to deploy to production usually with like a click of a button it is super cool next there is a significant trend towards microservices as of me recording this video so learn what micro services are and how you can create micro services with java understand kind of like the principles of how we can architect a good micro service and what are the properties or characteristics that a good micro service should have finally i recommend you to spend some time learning about standard computer data structures and algorithms this is kind of a controversial topic because a lot of people feel that this is a skill that's kind of a necessary evil right it's useful only in the context of interviews i've talked to people who kind of hate the fact that they have to learn algorithms and data structures after years of computer programming experience in the industry where they've never had to write a single starting algorithm of their own this is this is a valid argument and i kind of understand why people are reluctant to learn about these algorithms just for the sake of cracking interviews but i kind of see it a bit differently you see i think of everything we write in our code as software developers as some manifestation of some algorithm we may not be writing sorting or searching algorithms but we do write some algorithms no matter what you're coding right the objective of that algorithm is uh to solve the problem that you're working on right so as with any skill it helps to study the classics right so just like a good author reads classic literature or like a good musician listens to great compositions a good computer programmer should have a good knowledge and appreciation of classical algorithms it'll affect the way you think in code in general i i can tell you that it usually affects it for the better so i recommend you do this finally one last piece i want to leave you with at the end of this video a big part of mastering any aspect of any of these topics that i've covered so far is to actually build stuff with them i cannot emphasize this enough don't just read a book or watch a video build something take an example project build it try out these concepts i'll tell you it'll not be very easy in the beginning but once you start writing code it gets easier and easier to gain mastery over these topics and you'll get better over time so definitely work on these write code and learn in the process all right so there you have it this is the complete basic getting started learning path map for getting into the java programming world or preparing for an interview or getting better at the job you already have i've published this learning path map as a pdf file that you can download in the link in the description take a look at it see what other things you already know see what are the things you need to focus on and prepare your learning path and also let me know in the comments if you have any other suggestions for things you would like to add to this learning path or your favorite framework that i missed from this list there are some links in this video to details about some of the topics and the names that i've introduced in this video click on them to get like a 10 minute introduction to each of these concepts even if you're already familiar with these concepts i can guarantee you that in just these 10 minutes you will definitely learn something new about these topics that you didn't already know so check them out and thanks for watching [Music] you
Info
Channel: Java Brains
Views: 513,764
Rating: undefined out of 5
Keywords: java, brains, javabrains, koushik, kothagal, koushik kothagal, kaushik, brain bytes, beginner, learning path, java tutorial, java tutorial for beginners, java learning path
Id: DC5wtYGQ7XE
Channel Id: undefined
Length: 16min 45sec (1005 seconds)
Published: Sat Oct 06 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.