While everyone has their own personal journey to achieve expertise, I'll share some of the things that have helped me become a better engineer.
1. Define your engineering success: Engineering is generally about using your scientific knowledge and skills to solve problems. That's the very essence of it and my recommendation would be to always remember that. Everything else like money, respect, adulation, etc. follows because one is able to do the engineering right. Therefore, I've always tried to define my success in learning skills(new and existing), and applying them to solve problems (big and small).
2. Pick-up projects: There's no better engineering learning in my opinion than actually working on a project where you get to apply your skills. The project could be a small hardware, phone app, website, database, etc. it doesn't really matter. At the end of the day, you will learn the principles of problem solving, creating a solution, testing it with customers, and improving it after feedback. You will also learn the power of dividing a problem into smaller problems, the frustrations of getting stuck(and questioning your decision to be an engineer), and the happiness of figuring the solution out (and remembering how wonderful it is to be an engineer).
3. Work with a mentor: If you have folks around you who are already engineers, talk to them. Understand how they think, how they solve problems, and work with them. The best analogy of this is playing sports with people who are more experienced than you (You will learn and grow you skills quickly). As a caution, remember that just like in sports not everyone will be a good player(engineer), so make sure you take anyone's advice (including mine) with a pinch of salt.
4. ALWAYS ASK QUESTIONS: This is probably my biggest advice to you. Every solution built in this world, be it engineering, pharmacy, society, etc. is built on a certain set of assumptions. To be a successful engineer make sure you actively ask the "Whys". "Why was this solution put in place", "Why do you think my solution will not work", "why do you think we should solve this problem" and so no. It helps you understand the history and context of the problem and the solution. The context keeps changing as technology progresses and so a good engineering solution should be build for today's context with the ability to extend it for the future.
Put in the work, be honest and brave, success will follow.
Cheers and have fun!
Anybody should start by attempting to focus on one area vs the other. What is your greatest interest? It might not be very enjoyable if you only look to see where can you make the most money. There are plenty of engineers who do it all, or at least multiple levels ( a Full Stack engineer )
The next step might be to go through some training. There are many places to pay for training and many which are FREE. Conduct a search on Youtube and you will find people want to brag how well they can do something and are willing to share that information with you. I might recommend that you begin with a Phone App or a Website. The reason I choose those are because you can easily see your accomplishments because both are visual. And just watching training videos is not enough.
You will want to actually use the skills you are learning. You know what they say, " If you don't use it, you will lose it." So, create something with the language you are using. And again you can do this for free. You do not have to publish your website on the internet for the world to see, just to create a fully functioning site.
Next I would recommend you start small and simple. There is a reason why many languages start of with a program that simply displays "Hello world". You want to have success. Small successes will lead to bigger successes. IF you start by trying to host your own Social Media platform, this will have several pitfalls between each success. So start small and work your way to bigger successes.
I would say that the most important thing to follow that path is to be passionate about the topic you are studying. A desire to understand how and why things work is fundamental driver in following any engineering or science path.
The other really important factor in my opinion is perseverance, regardless of how passionate you are about a subject there will be times where things get hard and even frustrating, the deeper you venture into a subject less and less of it will be intuitive automatically. So knowing that things will get tough at times and having a plan on how to deal with those moments will be critical to you staying on the path you have chosen. As opposed to giving up and moving on to another path, when things get difficult remember that they were difficult for everyone at some point along the path, even the smartest and most driven of students, just backtrack some restudy the fundamentals on which the current topic that frustrates you depends and comeback to it with a fresh mind and a better foundation. Do this as many times as you have to, until you build an intuition for this new topic.
Being able to learn on your own and quickly is another recurring skill that will greatly serve you not only while getting your education but throughout your career. Technology changes rapidly as such having good fundamentals and the ability to self teach are key. We are lucky to live in a time where access to knowledge it widely available to anyone with an internet connection, take advantage of that. There are numerous free resources on the topics of computer science, computer and software engineering that you can take advantage of. YouTube has countless great videos on the subject, both shorter explanations and full lectures from prestigious schools like MIT, Harvard
etc. There are even breakdowns and list of the whole CS degrees and where to access all resources and information for free. Free online learning platforms such as KhanAcademy can also be very useful.
Use the all these resources available to you before, during and after taking on a formal education path in your chosen area of study, develop rock solid fundamentals and problem solving intuition and you will well position to have a very successful career in any of those fields. As you are learning new topics come up with projects related to them and implement/ build them, the two best ways(im my opinion ) to really learn something, to solidify it in you mind are to use it a practical manner to make something and to work being able to explain it to others in better and better (clearer) ways (look up Feynman method).
I believe to become successful in any field, it needs learning attitude, sincerity and hard work. If you put your energy in right direction then definitely you will be successful. People have their own success recipes, as per me below combination will help to be succeeded.
Right selection of the college and program - Since there are so many fields in which software engineering and programming is being used so you should decide in which area you want to pursue your studies for example telecom, Artificial Intelligence, Robotics, medical equipments, electronic machines, cryptography, multimedia etc. First select your choice of subjects in which you have interest and then select which college will be suitable for you as per your need. You can explore on internet which are the good colleges offer these subjects.
Internship and projects - During the studies, if you work on the live projects thats always and add on and gives you the practical knowledge. Since many software companies offer summer/fall internships for the students so keep an eye and grab the opportunity. Along with the practical knowledge you will also learn the organizational behavior would learn a lot from that. This will help you to groom for your next job.
Strong networking - You can connect with many of the professional on linked in and can grow your network. Many of times these contacts help you to provide the require informations. You can ask your queries from the professionals.
In the begging, things might look little difficult but as you progress you will start understanding the things. The success key is never give up, keep on trying.
There are devops and other software engineer bootcamps that quickly get you immersed in the field with a possible job offer at the end of the bootcamp. There are also lots of free virtual classes and Salesforce (my employer) has many trails (learning paths) that you can take online for free.
The opportunities are plentiful and getting the experience through volunteer or paid internships is the first step in demonstrating your technical aptitude and flexibility in working with others in a virtual team. Communication skills (verbal and written) is also very critical since there will be a lot of collaboration across a virtual team. Once you get the basics down, you can start to branch out and develop your career. Good luck and hope this helps!
You LIKE it. Engineering job can be exciting, or boring, depending on the type of problems you solve (and stages of problem solving journey you are at). If you like and you are passionate about solving challenging problems, you will have the right attitude to face all challenges along your path to become a successful engineer. Like other answer you see here, you have a variety of resources/methods to help you. Reading & doing things are a lot of FUN.
You WANT it. Like something doesn't mean you need to take that as your profession. If you really want to advance in the engineer career, take that seriously. You want to make progress with that role. There might be other exciting things in life, but you WANT the engineer career. This motivation can fill you with energy to grow continuously.
You DO it. Engineering job is a lot about doing things. Try-n-error isn't a bad thing. You learn from it. After iteration, you become a stronger engineer.