The Best Way To Get Started in Software Engineering
Unfortunately, when I first got interested in Software Engineering (2010-2011), I had a hard time figuring out where to start.
Far fewer resources were available at the time compared to today when every semi-successful software engineer is starting their own software engineering bootcamp.
Degree vs Bootcamps vs Self Study
If I were to start my software professional journey, I'd still pursue a traditional engineering or STEM focused 4 year degree.
Please excuse my survivorship bias here as I'm from a traditional Computer Science background in college. If you're a foreign national and want to work in the US/Canada/UK/[Insert Country of Choice], you may need a formal Bachelor's degree in Computer science (or related STEM program) due to visa sponsorship requirements companies face when hiring foreign nationals.
So, if you are trying to learn more about Software Engineering, here's the best way to get started:
Go get a CS degree or go through a Bootcamp: Self study can help but if you're like me, you thrive on some structure as a free for all self study approach can be difficult without systems of accountability. A Computer Science degree and/or a coding Bootcamp can provide you that structure. Now the Degree vs Bootcamp conversation is beyond the scope of this post but they both offer benefits with certain trade offs, namely cost and time, perception and work opportunities within/outside your country of citizenship.
Self Learn: Courses on Khan Academy, Coursera, Udemy, and various free online courses offered by universities like Stanford and Harvard are more than enough to get a working understanding of programming. You may struggle with super theoretical topics like Parallel Computation, Data Structures and Algorithms and Computer Architecture amongst others but there are some excellent books out there for this.
Internship or hands on Projects: There is no substitute for learning by doing and this step is required before any real company (big or small) would consider you for a software engineering position. If you can score an internship or a contract engineering position for 3-6 months, that gets your foot in the door!
These 3 methods will exponentially accelerate your learning process.