Note that I have about a year's worth of experience in HTML and CSS and six months of experience in PHP, JavaScript in MySQL. I also started learning React.js about a month ago. I have done some research into popular stacks, and I think that MERN Stack could be a good place to start.
I don't think that anybody in this world is living who never missed their school. I also miss my school so much and that's why I would love to read comics. But, today I am reading nosweatshakespeare.com/blog/shakespearean-words-t… blog and that's why I got late because of this.
Avoid full-stack frameworks (= frameworks that handles front+back).
I started programming with PHP Symfony because it was "cool", but frameworks will limit your creativity and soon you will have to start your projects again.
It's good to write your DB queries yourself, to implement authentication yourself (as long as you understand JWT and Bcrypt), it's good to not use ORM's, to design your architecture, to setup your servers etc...
Don't be afraid to write code, you will improve and learn from your mistakes.
DO NOT START BY LEARNING FRAMEWORKS. That's my most important piece of advice. Start out Vanilla, because, as the others already mentioned, libraries and frameworks come and go, but your vanilla knowledge is what always stays and helps you understand new frameworks and libraries (see my HNO for more info).
Also, start by learning the latest version. There are a lot of people who are not sure if it is good to learn and use the latest features right now, but since you are new, everything is new to you, so you should just go and learn how to work with the latest and the greatest. They are already supported on a majority of browsers :)
When starting out as a fullstack dev, there are many technologies and things to consider and learn. I suggest you start out with one topic and work on it until you feel confident using it. Since you already have some experience using HTML, CSS and PHP, why not try to spice things up with some JS? Try to load content from the server in the background instead of using regular HTML links!
In order to learn all that stuff, use the Hashnode search functionality to find posts about learning techniques. As for my tl;dr advice: practice a lot. Make your personal homepage and put it online. Make homepages for your family, your friends, your clubs, whatever. Maybe try to build a browser game, like LotGD. Put everything online, share the links on social media, get feedback and improve your creations. Imho, practice is the only way to become good.
I sold my first website (a static brochure site) at the age of 15. I'm 23 now and didn't graduate from college, but I write full apps (I'm front-end oriented, but I also manage all Git/CI stuff at my work) for a living. I came into the job with just a few years of intern experience. We probably have a tiny bit in common in terms of where we were when I was your age. I'm fairly naive since I'm still pretty young by industry standards, but I will suggest what I did to get where I am today:
That's the gist of it. Don't learn stacks or frameworks--Learn the primitives. I was fortunate to have my father growing up. We were extremely poor, but he was an electronics technician in the Navy, so I always had electronics/gadgets/tech when I grew up. My dad taught me HTML when I was 5 or so as he was learning it, but when he stopped caring about HTML and I had questions, he told me he didn't know and I had to find the answers on my own. The family computer was a custom-built linux box (Knoppix), so I had an understand of it pretty well at a young age.
The point is, I had the great fortune of understanding installing operating systems (Even linux :p), understand computer components (RAM, CPU, etc) and what they mean for programming. I recommend understanding these things because one day you'll be on a team with a devops person who's going to complain about your high RAM-consuming apps and you have to understand the implications of perf and how to learn to fix them.
I also urge you to learn how to learn the best way you can. Unfortunately, this is extremely subjective and unique--only you learn the way you do. The only advice I can give on this is study your own behavior when you get stuck on problems and examine your initial habits to gain knowledge. For me, my dad telling he didn't have the answers I was asking for was a blessing in disguise. I learn best when I'm by myself and dissecting working things and breaking them down. I "view-sourced" every site I could to get insight on how it worked, and tweaked things locally.
Also understand that programming languages are tools. JavaScript is a great tool for the front-end because... well... it's the only one. But on the backend the field is so diverse and you have to understand how to make choices on tools. Since every tool was invented to solve a problem, when considering learning a new language, try to understand what problem it solved and see if it fits with the problem you're trying to solve. Hammer and nail and all that good jazz.
For example, I've been getting into Erlang/Elixir recently and I immediately tried to understand how this 30+ year old tech is relevant today. Apparently Erlang was made for telecomm systems and that in of itself had problems it needed to solve--problems that are still relevant today and can be utilized to fix them because Erlang did it way back then. Learning things like that will give you a great perception of languages--instead of viewing them as skills, you view them as tools and your skill is your ability to understand when to use them.
Or you can just learn a stack every year and earn a paycheck and never go deeper than that--the choice is up to you :p
My advice would be always keep learning, ignore everything others tell you, follow news and trends, participate in meetups and conferences, be an active community member, contribute to open-source, never stop and master the search:
P.S. full-stack is not someone using JS on backend and frontend or someone who have written Hello World or basic apps in different languages. First master one language, one technology, one field. Learn to find a focus and to be a realist, evaluating own energy, knowledge, possibilities and time.
Build something! We often get into the trap of learning something and learning another new thing then another and stay in the same loop.
Even with the skill level you are on, build something and share it. The feedback negative or positive will accelerate your growth.
Share your knowledge when ever you can. There are places like Hashnode and stack overflow, there is always a developer somewhere stuck with something that you have already solved yourself. Lookup those unanswered questions and challenge yourself!
Focus on principles and core language rather than stacks. Unless you are getting a job tomorrow, the stack will change by the time you hit the market.
Principles and core language are long-term skills. For example, you'd do better learning ES6 than learning another framework. You'd do well to learn some functional programming basics as further studies will probably still be focusing on OO. Go in knowing there is no One True Way and you'll come out a better programmer.
What you have learned with React is how to handle client-side MVC, that is how to have the app in the client side and just the data on the server. What you have learned with PHP is the other way: having the app on the server. Understand the difference between the two on a deeper level and you will be able to evaluate the next thing that comes along.
If you haven't already, learn how to write unit and integration tests; and set up a basic build with something like bitbucket pipelines or the many github options.
If you haven't already, build something and maintain it for a while. Doesn't matter what it is, make yourself a website or little application and keep it online for a couple of years. You'll be surprised what that teaches you, particularly if other people use or need it. Stuff like monitoring uptime, learning .htaccess and how to SSH into your server that local dev just won't teach you. If you're not keen to put stuff online, run a raspberry pi on your home network.
Mostly though, just keep having fun and making stuff :)
Jermaine Guiterrez
JermaineGuiterrez
In college, it is quite difficult to devote all the time to one project. I tried to create something useful, but there was not enough time. When I started using https://edudriver.com/java-test-1-ch2-47542/ to free up time, everything fell into place, and now I work in a good IT company. Perhaps students who can not allocate a lot of time for one project will find it interesting and useful.