Hi, any advice for someone who wants to become a software engineer but has no access to the necessary education or the money for necessary materials?
//So the short answer to this is very simple: use the internet.
The long answer is a bit more complicated, but just know that this is totally doable. Plenty of people become programmers (or software engineers) without going to school for that, or for that specifically. This is one field where traditional education isn’t the end-all-be-all that gets you an automatic job. It might be more difficult to get your foot in the door, but if it’s what you really want to do, you can make it happen.
Your question refers to the “necessary education,” which I’m going to assume means “traditional” education, or college. The truth is, you will still need an education, but you can do that on your own. It will take time and can be more difficult in terms of self-motivation, but I’ve found that if it’s something I really enjoy, I can usually motivate myself. The trick is to work on things that you enjoy.
There are a lot of free classes online; this might be a good place to start if you’re just trying to get into programming and there is just too much stuff online to figure out what to do. A lot of schools have their course syllabi online for free; you could check those out:
http://ocw.mit.edu/courses/intro-programming/
http://www.extension.harvard.edu/open-learning-initiative/intensive-introduction-computer-science
http://ocw.usq.edu.au/course/view.php?id=13
http://ocw.utm.my/course/view.php?id=53
There is also a growing list of actual, full-fledged online courses you can take for free. I highly recommend these, because they come with a built-in support system of other people taking the class with you.
http://www.codecademy.com/
https://www.udacity.com/courses#!/software-engineering (free if you don’t want a certificate)
https://www.coursera.org/
http://alison.com/learn/Programming
https://www.codeschool.com/courses (only some are free)
https://www.khanacademy.org/computing/computer-programming
I also recommend online books, or checking out a library if you have access to one. Part of a computer science/engineering degree is learning things beyond just coding; you’ll want to look into algorithms, data structures, etc.. This is more of your basic “studying” rather than just writing code and learning as you go.
http://math.hws.edu/javanotes/
http://www.informit.com/library/content.aspx?b=STY_Java2_24hours&seqNum=8
Other resources, including communities, which I think is very important if you don’t know any other software engineers in person:
http://stackoverflow.com/
tumblr has some great programming blogs and a lot of people hang out in those circles
THIS IS THE IMPORTANT PART:
However, if what you ultimately want to do is to write code, then all of that stuff isn’t what’s most important. The most important thing for you to do if you want to learn to write code is this: write code. It’s gonna be hard at first, and it’s probably gonna suck. But that’s how you learn, and I’ll share a secret with you: a lot of what professionals are writing out there right at this very moment is still shit. It’s just terrible. So don’t feel discouraged, because we’re all the worst and you learn from your mistakes.
How do you start this? Take a course, pick up some programming books (for free though don’t pay for that shit), and then find a project you want to work on. Any project. Something that you’ll enjoy. And then do it. When you finish it, do another one. Rinse and repeat until suddenly you are writing some pretty cool stuff and you can send that in to a company in lieu of a resume or slap that shit up on the app store and make yourself a career. If you don’t care what project you’re working on, or you just have no idea where to start, offer to work on projects for people (probably for free). This has the added benefit of building your portfolio and helping you to network, and could eventually lead to paying jobs. (However, unpaid internships are shit, and you deserve to be paid for your work, so don’t hang out in this stage forever.)
My only other bit of advice is to make friends along the way. Find people who are also learning, or who already know some of what you’re learning, and are willing to help you out when you’re frustrated. Trust me, you will get frustrated. Having someone there to bounce ideas off of or to just complain to will get you through the desire to light your computer on fire better than actually lighting your computer on fire.
tl;dr, Write code and you are already a programmer.
Hope this helps a little. Go for your dreams, friend. Soon you too will be shouting obscenities at your monitor and/or crying hysterically about semicolons.