Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from a Full-Stack Developer on reddit
- As I work in a service based company, I will give you a roadmap for that. I am not sure if all these things are required for product based or where it deviates but for product based ones, practicing data structures and algorithms as well as solving lots of leet core problems is necessary I've heard. Hope people in replies will confirm us on that. For service based companies, it is as follows:-
- Java-
- first master core Java and make a lot of programs/solve problems in it. This will be the most important of all the things that you'll ever learn in programming. The programming intuition, algorithm designing approach, object oriented architectural approach and the most important programming concepts that you'll always be using no matter in which technology you work in, you'll learn here. Like variables, conditional statements, methods (functions in other languages) etc. everything will start making sense if you've practiced it good. You'll find syllabus for java in any course that you'll do. Make sure it includes java 8 concepts like functional interfaces, lambda expressions, streams etc.
- after that, there are two career lines that I can think of-
- Backend developer
- Full stack developer
- There are more like QA, application tester etc. but I think they have lower packages and market so i won't be mentioning them here. Android developer is also there but kotlin is more preferred for that than java and I think it has less opportunities here.
- Database-
- For both the career options, you can start with learning SQL, you can learn for any database, the concepts are always same. Morever majority of the SQL syntaxes are same for all the databases just with database specific add ons that you can take advantage of for that database and types are slightly different. The common SQL langauge that is the superset of all database specific dialects is called ANSI SQL and will work on all databases. I will give you some hints on some databases so that you can choose as per your taste-
- MySQL, PostgreSQL - Open source, easy to install and get started with. MySQL has many things common with Oracle Database.
- Oracle - This database is used in most of the enterprise Java based applications that you may work in. Not open source and hard to install in the computer. However, they have an online platform called apex where you can just login and run your queries, even from your mobile devices and tables but you cannot run DCL operations in apex and connect it with external applications like your java application so the above two, I will recommend you for now.
- Java EE-
- After that people may prefer you to do Java EE (Enterprise edition) like java with servlets with a little bit of JSP pages etc. as it may help you to understand concepts used in Java based framework easier. But i personally think you can skip it or just check what it is, and maybe don't waste much time in it as it is older ways, and today's applications are created on frameworks that uses these as underlying technologies but we do not have to care much about them as the framework handles it.
- Java Unit Testing - Getting some basic knowledge in it is good, ad you may need to create test cases in most projects.
- Spring Framework-
- Now comes the next important thing after core java. Spring Framework. This is exactly what you'll use for Java based backends. This is the no. 1 framework in Java, which is used for huge enterprise applications and in most companies that uses java. And the best thing is, it is open source. You can do a course on spring framework, I think they will mostly cover spring boot, as it is the modern way to use spring framework, but the underlying concepts will be the same; it'll just become easier to use. You'll learn when you'll start with spring framework. Spring Framework is very vast with it's modules but learning all of them is not important and specific to requirements. Make sure you master important spring concepts like dependency injection and some module dependencies like spring web and spring data jpa correctly, this will include a little bit of hibernate as JPA uses that behind the scenes, but it must be covered in a decent spring course.
- Some Devops-
- After this, you can learn basic git and github. And optionally a little bit of Jenkins and maven too.
- Hibernate-
- Now if you're going for the backend path, this maybe considered enough at some places but you may add Hibernate and JDBC as it is also often demanded from backend developers. Hibernate is a framework that will help you to run SQL statements in the database and map the data in objects inside your java application, but now just think of it as a link between your java application and the database. And also caching too you can learn if you like. But don't stop reading here... continued in reply
- Microservices etc.-
- However there is one more very important thing for backend developers, even mastering hibernate is not as important as mastering this I think, and you can learn this before hibernate too. Microservices. Knowledge of this will not only increase your job opportunities but your package as well and both of them quite significantly. You can say, this (arguably with cloud) is number one technology for backend right now. And the best part for you is, microservices are very highly supported in spring framework and are very powerful in it. You can learn it after mastering spring framework. For a brief intro on microservices, what it is, I'll tell you that it is an architectural approach where you divide your backend into multiple self individual applications, and they can communicate among each as well as the front end as per the requirements. Each one of them has its own responsibility so if one goes down, the entire functionality of the application is not affected. There are other features too, you'll find out. More important technologies you can learn with this are - docker and kubernetes. They are often used in conjunction with microservices and cloud.
- Cloud Certification-
- There are some more things that people these days says, will increase your package and job market. It is learning and getting cloud certification like AWS cloud certifications. There are similar for Google and Microsoft too. You can do atleast one of them for upto level 2.
- Full Stack Developer-
- Now, here we deviate from the path of backend developer. Java ends here, but the concepts we've learnt will still remain. Microservices and cloud certifications are also not necessary for this but definately a big plus
- Front End Basics-
- You can start by learning basic HTML5 and CSS, along with a CSS framework like Bootstrap. Then learn JavaScript thoroughly.
- Front End Framework-
- Now you'll have to choose one front end framework - React, Angular, Vuejs. The first two, I think have more job opportunities so I'll be mentioning them here-
- Angular - Steeper learning curve than react. You'll have to learn typescript basics first too, as it uses typescript, not javascript, which is a superset of javascript and seems more java like than javascript itself. However for Java developers, I think it won't be that hard to learn angular as it has quite a lot of similarities with spring framework, structurally atleast.
- React - easier learning curve, globally used more than angular. Same things you can do with angular, you can do with this.
- You can learn both of them too to increase your opportunities.
- Full Stack Extras-
- So, people have different definitions for full stack development, some people say that's enough, some people include learning devops stuffs like creating pipeline and deployment compulsory too. You can do them too as there's no harm, while you get time. Some work requirements for full stack developers even include stuffs like PL/SQL.
- Next Steps-
- After all this if you want, you can go for higher level cloud architect certification and aim for software architect roles if you prefer.
- Package-
- I don't think there's anything like full stack developers will get higher packages than backend developers. As of my personal life example, my lead who's a full stack developer and at manager rank has much lower package than what a consultant got who was previously in my company but switched to another company for backend with microservices only. It's all about chances i guess, keep taking them.
- Notes-
- Make sure you keep making a lot of projects and learn everything practically. Always use your creativity and make a lot of things with whatever you've learnt, atleast at the starting. Keep your LinkedIn profile updated and make a target to add x number of people each month in your connections. Keep your projects in GitHub and add them with their links on your resume. Wish you all the best.
Advertisement
Advertisement