Everyone these days wants to get into the tech industry and into programming, but honestly you shouldn't. It's hard work, long hours, not always a great payoff, and people expect a lot from you. Are you still with me? Great, then I should also tell you that it can be rewarding (at times), you get to learn a lot, and it honestly is fun. If you are just starting out and exploring the idea, then if can be daunting finding your start and the right direction to go in.
The best way to find your path (no we aren't talking A* pathfinding here), is to dig deep about why you want to get into programming. Was it your passion for gaming, or your love for a mobile or desktop application? Was it a really cool website, or even a really bad website? Maybe you are interested in how to defeat our robot overlords in the nearing dystopian future. Or maybe you just feel like you understand the logic of how something should work, but no one is creating it the way you want. Depending on which one of these you aligned with most, you can visit the idea of being a back-end developer, a front end developer, a machine learning expert, a web developer, a mobile developer, a game developer….well the list goes on.
In my case, I've traveled the route of game and application developer and I deploy to mobile, desktop and console. While that may sound like a lot of different platforms, there are actually a handful of great engines to choose from and some of them I've ranted/raved about here before. Engines will typically allow you to write your code in just one language, then it will compile it for your target platforms, doing all the major lifting for you. Having a tool like this will save you so much time and the headache of having to learn five different languages. Along with having the right engine, you'll also want to find a source code editor that works with your engine and that has all the features you need. There is a pretty lengthy list of editors you can find here, but my two favorite have been Visual Studio and Xcode. They both have great intelligent code completion and the (forever useful) syntax highlighting. Again, the ones available to you will depend on the platform you choose.
At this point you have the type of project that you want to work on, the engine that will support this, and you've decided on a language and code editor, but what next? Well, now is the time to start learning how to use all of these tools! There are some incredibly useful resources out there to learning the fundamentals of programming, as well as diving deeper in to the languages and tools. From my experience, it is best to buy a book or two and read through some of the tutorials to understand what is going on in each line of code. The next best step (or an alternate first step) is to take an online course. It doesn’t have to be an expensive course at your local University or college, but maybe simply a course from Lynda.com, Udemy or Codecademy. These are all websites full of different courses, lead by different instructors that have been in their respective fields, so you will learn a lot and by the end of the course you have a project that you've worked through line by line.
After understanding the fundamentals of the coding language and the engine, but you still run into errors or get stumped on how to do something, then the next best place is reading through the specific documentation relating to your engine or targeted operating system. The documents are out there to help you and it took several people tons of effort to write it, so please at least skim through it. After that, if you are still stumped, then there are so many forums full of willing people that are ready to help you out. The primary forum, and almost everyone's go to is StackOverflow.com. This site has been around for a long time, so a big chunk of questions that can be asked, have been asked on there. If not on Stackoverflow, then it's possible your engine has a forum with active members and experienced moderators. Taking the effort to write a detailed post goes a long way with people that are active on the forums, so don’t just ask for some one to write your code for you. You will get stumped and you will need help, because, as I said before, this is not an easy field you chose.
Now that you feel like you have a basic understanding, you can start writing that program that caught your interest in the field to way back at the beginning of all this. Just kidding. Start with just a smaller subtask of that big project that you envisioned from the beginning. If you wanted to make a game, well then make a Arkanoid clone. The point being, you do not want to overwhelm yourself, that will only lead to defeat. Take small steps and create something that you are proud to put your name to and even more importantly, something that you can show at your interview. Which brings me to the next point of finding a job in the field, after all you want to make a living right?
The whole job search charade is such a grueling process, and finding the right company to interview at is a process in it's own. There are (once again) several online resources to search for a job, and with this being such a large industry you will likely find several places to interview with. Start with searching sites like Monster, Indeed, Hired, and even Stackoverflow. If that doesn't work out, try joining a local group of other developers like yourself through a site like Meetup.com and search their bulletin board. While doing all of this it is also important to continue working on your portfolio.
Keeping all these small projects to yourself will not be of any use, so create a website that show cases each one and most importantly get on LinkedIn. Do not underestimate LinkedIn, as head hunters are constantly scouring it for talent. Now that you've also gained more experience with these small projects, try to make time to create a Stackoverflow account and start gaining reputation points there by answering the noob questions that get posted all day, every day.
Like I mentioned, the job search is a grueling process and preparing for the interview is just as important as learning the language. The interview will be a three, five or even eight hour long day at your prospective company. They will put you through the ringer. You will code on a whiteboard, complete coding tests, and just talk experiences. Start taking online coding interview test (Codility is a good resource for this), and make sure you have a basic understanding of the concepts, and know the lingo. You'll go through this process a few times, but you will eventually find a company that fits you and one where you fit in to it's culture.
After all is said and done, you may find that this wasn't what you wanted after all….or you might just absolutely love it, like I do. If the latter is the case, then keep at it and you will find the right position at the right company. The best advice I can offer is that coding/programming/software engineering it isn't easy; but if you love a challenge, you read this whole rant and are still in the game, well, then maybe it is the right path for you. Either way, good luck in your newly found hobby! May it consume your time and leave you broke, fat, hairy and living in your parent's dark basement, like everyone envisions us programmers. Happy coding!