now just a question would you ever board on a plane that hasn't been tested no
no in a million years you'd never risk your life right so it's the same thing with software
bismillah bismillah what's going on guys assalamu alaikum welcome to amigos code in this video i
want to talk to you about five concepts that you must know when you start to learn java and this is
a two-part video in the next video i'm going to talk to you about things that you need in order
to master the java stack so that one will be more comprehensive but this one's still very important
because i feel that i've been teaching a lot of people um over the last year and this is something
that i need to address so that you understand exactly what you need to know in order to move
forward now as you know java is a big language with lots of concepts and keywords and a bunch of
things that you need to understand but hopefully i can break it down for you if you need to my
channel go ahead and literally take one second and subscribe also give me a thumbs up so i can
keep on recording these videos let me know what you want to see next by commenting down below and
if you're not part of the amigos code community both discord and private facebook group go ahead
and join without further ado let's kick off this video so the first concept that you need to know
and i would say it's a concept but it's a tool and that is intellij yes intellij or maybe netbeans or
uh eclipse if you use eclipse but i'll say try and stay away from eclipse and netbeans because
those are old school and really professional java software engineers or majority of professional
software engineers that i know they use intellij and intellij is by far the best ide for the jvm
so you should also know how to use intellij now intellij can do so much for you and the worst
thing is having a great tool but not knowing how to take advantage of it so take the time to learn
intellij luckily for you on my website i've got a course so if i go to courses so there is a course
specifically for intellij which was released i think was last month but i didn't actually
promote it but this course right here there's a bunch of people enrolling right now
and i go over and also there's a 30 coupon in there but i go over basically everything you need
to know in order to take advantage of intellij how to set up your development environment how to use
keyboard shortcuts right because with the keyboard shortcuts you can do so much things that maybe
will take you two five minutes take you seconds so intellij it's powerful and you should know
how to use this tool inside out moving on to the second thing that i want to talk to you is how
the java memory works so i actually have a diagram which i've been recording for my brand new course
which is coming up very soon and right here so this is part of the course by the way
and basically in this course i teach about the call stack frames the memory stack the heap
how objects are different from primitives how they are stored how the garbage collector works
because as you know like as you start you know creating variables this and that and also this the
the string pull which is quite important right here but as you start to allocate variables and
passing um variables whether it's by reference or by value you need to have a clear understanding
of what you are doing right so if you define a variable what are you doing and if you don't
know what you're doing then it can be really difficult so i highly recommend you to learn
about this and actually i'm going to record a video for youtube just on this topic because it's
really important that you master how all of this works the third concept that i want to talk to you
is you should know the basics of the language classes objects inheritance you basically should
have a a clear foundation of the language if you don't know how to create classes how to
create objects how to link these objects together then how how do you go about start writing code
you don't right so also like for example the static keyword what does it mean right so as
beginners people will start using a bunch of static keywords but without realizing you know
what does he even mean to be static right so having a clear understanding of the foundations
of objects oop basically it's crucial but one important one which i need to stress out is
interfaces you should program to an interface and not an implementation and with that you gain
so much as you move into the world of design patterns testing your applications and much
more and in fact i'm going to record a video for you teaching you how to program to an interface
and not an implementation so interfaces is a must and obviously abstract classes
so that you can basically build reusable code and whatnot but on this course right here which i'm
kind of almost finishing and will be part of a bootcamp which i want to release very soon by the
way both camp yes it's going to be insane so stay tuned for that so i'm going to cover all of this
and all these diagrams that you see here it's part of that the fourth thing which is really
important for you to know is data structures data structures now here java so java has the
collections framework and basically i've done a video for free on youtube where you can go
and learn about the the collections framework i teach about arrays and array lists 2d arrays sets
maps um stacks queues and all of that stuff right so having an understanding of how they work
it's essential and you must know so these data structures are there to help you because
with programming what we do we just manipulate data now if you don't know how to store that data
and the efficient ways of manipulating that data then you're going to be in big trouble right now
two of the structures that i want you to focus and two data structures that i want
you to focus and trust me you'll be using them most of the times most of the times and they are
lists and maps so with those two you can achieve pretty much anything you want right
but having an understanding of the others is also important because then you can be more selective
on the data structure that you're going to use for a particular problem
last but not least number five and you know that i love testing yes
testing test your code because testing your code will teach you how to write better code that is
as simple as that right so sometimes we kind of write a bunch of code we throw things together
but we don't know whether it works well we think it works because we've just you know press the
play button and it's running and we've tested that way but one like that that is pure wasting
time and don't do that i've done it myself and that's because i didn't know how to test my code
but don't don't do that learn how to test your code right especially uh unit testing and mocking
obviously there are all the types of testing that i should be learning but learn those two because
once you learn those two then like literally you start to write better code you're like okay so how
do i for example mark this dependency oh crap i'm not using the dependency injection so i cannot
mock it bingo you change that to a dependence injection right or i'm using static keyword um
okay so is there a reason for using static here i don't i don't even know i'm talking like that but
is there even a reason for using a static keyword in here or am i using interfaces correctly
abstract classes and basically like literally test test test test test your code now just a question
would you ever board on a plane that hasn't been tested so let's say you want to fly from london to
uh new york for example right and this is me coming in oh i've got this brand new plane
i've tested it in my own way uh by just you know doing like manual testing and whatnot and
you know i tested it for three months a brand new plane would you ever board on that plane
never in a million years you'd never risk your life right so it's the same thing with software
when we build software we're delivering it to real users now i know that you might be saying okay so
maybe i'm actually learning and all these you know little projects it doesn't really matter but trust
me you want to build the foundation correct you want to build the foundation correct so that in
the long term you are a badass developer this is it five concepts that you should and must know
if you enjoyed this video please do let me know also if there is anything that i've missed but i
think these were the five main ones uh since i've been teaching for the last year at boot camps and
online as well this is one of the things that i i felt like people were struggling the most and this
is what i do recommend you for you to focus on but obviously let me know if i've missed anything
uh which you think that it's really important but as i said this is a part one and the second part
i'm gonna actually talk about the java stack which is going to be like more advanced steps such as
design patterns jvm lambda streams immutability uh and a bunch of other stuff like blocking
non-blocking um because you need to have a full understanding also distributed systems and
and basically the java stuff including docker kubernetes terraform aws and and whatnot but
i'm going to cover that um probably next week so if you enjoyed this video give me a thumbs
up literally just smash that like button let me know what you thought about this video
comment down below if you're not part of the amigo squad community go ahead and join both
private physical group as well as discord so for now i'll catch you on the next one
why did i do why did i do this
you