#1 Posted by iBushido (136 posts) -

So this is probably gonna be long and annoying to read. I'll try to keep it simple. Sorry in advance.

I'm 31 years old. Had a shit childhood and got really messed up. Didn't graduate HS, got a GED, worked some shit jobs, tried to get a degree through Devry (huge mistake), and now I'm back to square one. There is nothing on my resume that would get me anything other than some entry level, manual labor job that goes nowhere.

I worked as a security guard for the last 6 years and lived with my girlfriend. I quit that job, we moved out of the city and into the suburbs and I'm currently sitting here in our new apartment all day trying to figure out the best way to learn some kind of programming language so I can ultimately get a coding job.

So far I have learned a tiny bit of HTML and CSS, a fairly good amount of beginner stuff with Javascript, and I finished everything there is to be done with Ruby on codecademy.com. My initial goal was to learn to code for web development, but I found it to be exceedingly difficult to stay motivated, as it really has nothing to offer me other than finding work. However, some other languages also offer the advantage of being able to design games as your job, or in addition to your job as a hobby. This certainly has a much greater appeal and considering I've been able to handle learning this kind of thing thus far, I'm seriously considering shifting gears and learning a language that can also be used for game development.

With that said, I have no idea what I'm doing, no idea which languages are better for that than others, and I have found a lot of contradictory information while researching the subject online. Even just figuring out the differences between C, C++, C#, and Objective-C have been pretty difficult, and that's before I even know for sure that I should be learning a variation of C in the first place.

Long story long, I'm unemployed, I want to learn a programming language to get a job and get my life in order, preferably something that would allow me to find an entry level job relatively soon, but that could also be used for game development as a hobby and to help with motivation. Also, I need something I can learn on my own with sites or books as I certainly don't need to pile on even more debt. I'm living with my gf now and she's basically my sugar mama, paying all the bills herself. She's a psychotherapist, she's brilliant, she's a gamer too, and she's way out of my league, but for some reason she's loved me for all these years. I wanna do right by her and make something of myself and I'm just hoping for a little help finding some direction for this plan. Any advice would be greatly appreciated. Thanks for reading.

#2 Posted by cmblasko (1872 posts) -

IMO if you can learn C++ then you can learn just about any high-level programming language. However, it might be daunting to teach yourself C++ outside of an educational institution or some kind of apprenticeship, so I would recommend you start with C#. It is widely used and you will be able to find plenty of learning resources online. Additionally, when you are comfortable with your abilities, you can start playing around with making games in Unity since it uses C# as its scripting language. C# knowledge also translates well to Java which seems to be in demand for a lot of computer programming jobs nowadays.

Here's a C# game programming tutorial I found just now; it seems to go over the basics well enough, though I can not vouch for its total effectiveness since I haven't watched the whole thing through. Somewhere to start at least.

I'd recommend using Visual Studio Express as your development environment for now. You can download that here. If you need any help getting it up and running let me know.

If anyone thinks I am giving poor advice here feel free to correct me.

#3 Edited by development (2956 posts) -

Well, to say something that is totally trite, but nevertheless needs to be said: there is no substitution for pure motivation. It's the #1 most important tool of programmers (anyone?). If you can put in the time required to learn these things, then you'll learn them well enough to get a job with them relatively shortly; anywhere from 6 weeks to a few months to a year or more, depending on your learning and what kind of work you want. Hopefully your girlfriend will support you and not let you get burnt out, because getting burnt out is a death sentence for this career. Once you walk away from a project you'll never want to return to it, and the longer you stay away the more and more difficult it is to return and still recognize what you're looking at.

"Use it or lose it" is more applicable to programming than many, many other things; especially in the early stages, when the information isn't drilled into your head yet. The best advice I can give is to keep at it until you have a job.

C# is probably your best all-around language to learn. It's applicable to programming, applicable to web development, and applicable to game development (it's the best language to use for Unity game development of the 3 languages it supports, and Unity is far-and-away the leading development platform right now).

To get a general better sense of what you personally need to learn and what roads you wanna travel down or goals you wanna aim for, you should immerse yourself in programming/game dev communities and see what they're doing and talking about. If you just look at /r/programming, /r/learnprogramming, and /r/gamedev a few times a week for awhile you'll get a fantastic sense of direction for yourself.

#4 Posted by Veektarius (5635 posts) -

Python is big for most industrial purposes.

#5 Posted by ProfessorEss (7818 posts) -

Obviously cant understand the nuance of your situation but I will say things can go weird after you get into a job.

You say it's hard to be motivated doing some job you don't like for the sake of "getting work" but who knows. Is it a big company that you could roll through horizontally meeting people learning new skills? Maybe there's some stuff you could learn there that you could put on your next resume? The job I took years ago is nothing like what I do today or where I would've expected myself, and it's been a mix of inspiring and crushing, but I learned tons of shit every step of the way.

The bright side is that your profile says you live in New York so despite competition being tough at least there's jobs to be competing for.

#6 Posted by Example1013 (4855 posts) -

You're obviously not passionate about development, or you'd be doing it right now instead of sitting on giant bomb asking for outside help. Passion comes from within. The only reason you do something you're passionate about is for yourself, because you love doing it and it makes you happy. If you're trying to do it for someone or something else, you're doing it for the wrong reason, and you're never going to be successful.

Stop holding yourself to goals you know you're not going to put in the work to achieve. Go out and get a job. For right now, any job will do, as your financial situation isn't dire. Work full-time for a while. Take some online classes, pick up some hobbies, find some things you like to do. Maybe you'll find something you're actually passionate about, something where the motivation, the drive, the will to do it comes from inside you.

And if you don't, that's fine. You know what? Millions upon millions of Americans are perfectly happy working boring desk and retail jobs. They earn money and use it to fund the activities they enjoy in their free time. The people who work at google and stay there all day are probably a bit insane. They're not normal. They're so passionate about the job that they do that they don't mind staying for 3 days straight to get stuff finished. But that drive comes from within them, and they'd likely be willing to do that anyways even if they didn't get all the perks.

Some careers are just like that, they're not for people who don't wake up every day with burning desire to go in and make shit happen. Cooking is another great example. Working in a professional kitchen at a good restaurant is kind of a shit job. The hours are long, and the work is hard. The payoff is that you're getting paid to do something you love, but if you don't love cooking, then obviously that kind of job is not for you.

#7 Edited by Gaff (2358 posts) -

This is going to sound nuts but...

I'm going to suggest just talk to your girlfriend about this. And be honest to her.

My impression from your story is that you feel that your girlfriend is doing most of the work in your relationship: she's paying the bills, she's "brilliant, way out of your league" etcetera, etcetera. You feel that you're unworthy and that she could do better. You're pushing yourself to try to make it up to her, bring "balance" in this relationship, maybe provide for yourself in case "she sees you for what you really are and dumps you".

That attitude is probably going to ruin your relationship more than the perceived "imbalance" in your relationship. You're going to be dead set on "pulling your weight", "prove yourself", or whatever and push her away because you have to solve this. That is ultimately going to be more damaging than "her being better than you".

You've been in this relationship for what sounds like a long time. Maybe she knows what you like, what excites you better than you do. She loved you for all this time and has your best interest in mind too. She cares about you and deserves to know about this.

#8 Posted by bellmont42 (341 posts) -

Unity is free and uses C# as mentioned above... Can't go wrong starting there.

#9 Posted by Nick (814 posts) -

If you're serious about programming there's a few things you should know that will help you get a job. There's a lot more out there to know than just programming, and these are small things, but they can affect whether you get a job or not.

1. You need to install linux on your computer, use it, and become familiar with it. A lot of places you will want to work at will expect you to be familiar with linux and not need 2 weeks to set up your work environment. Honestly, you should just dive in deep and install something like Arch Linux. It will be a huuuge pain in the ass, once it's installed you will just have a command line, and you have to set everything up manually. It's not a ready-to-use out-of-the-box software like windows, mac os or even ubuntu, you have to set up your windows manager, drivers, manually mount a usb and everything else yourself, but if you do it you will eventually become a linux wizard. Also familiarize yourself with whatever package manager you have in whatever version of linux you use.

2. Make an account on github, make a small program, make some branches, commit, push, stash, pull, break it and try to figure out what fucked up and why. Git, or any other version control software will be really confusing at first but it is infinitely useful and it will be expected that you know how to use it.

3. If/when you find a job, don't be afraid to ask someone for help even if it's something super small. Trust me when I say it's better to just ask someone and have them show you in a few minutes instead of spending 2 days trying to figure it out yourself so you don't look dumb.

There's a TON of other things I haven't mentioned, like how to write a good commit messages, writing good unit tests, accurately estimating how long tasks will take, writing useful documentation, and a ton of other little things that are part of software development but are on the periphery of programming.

Hopefully some other people here can come up with some other examples.

#10 Edited by iBushido (136 posts) -

Thanks everyone for all the responses. I'll look into the stuff that was mentioned and get back to you. Sorry if I wasn't as clear as I should have been in my first post and gave couple of you the wrong idea. I just didn't want to write something too long and full of detail, because I was more concerned with keeping it short enough that someone would actually read it.

My motivation has been there since I was a kid. As I mentioned in the previous post, my childhood was pretty messed up. I didn't have the opportunity to pursue anything I was passionate about. I've wanted to be involved in making video games as far back as I can remember, and I actually do really enjoy the coding I have done so far. The lower level of motivation was only in comparison to how much more I'd feel if I could kill two birds with one stone by learning a language that is practical for getting a job, but that also allows me to pursue something I am passionate about, rather than just a language that will land me a job, but hold no value to me personally.

Also, as far my girlfriend, we are very close and always on the same page. We have discussed this at great length and we agree that this might be a really good direction for me to take. I want this for myself more than anything, but I also have the added motivation to get my shit together for her sake as well. She deserves the best, and right now I think it's safe to say I'm nowhere near my best. If I was single, I'd still be in the same boat, with the same idea, and hoping to pursue the same goals.

The reason I haven't started anything yet is because, as I said, I worked a job for the last 6 years. I've done the "just get a job and see how it goes" approach and it was terrible and going nowhere. My resume is full of manual labor, security work, and missing any kind of relevant education. Trying to learn a programming language is the best way out for me right now. I enjoy it, I learn it fairly quickly, I have a lot of time to put into it, and I could get a job doing it without an impressive education.

The reason I came on here to ask is because, as I also mentioned, I found a lot of conflicting information online and I thought it would be better to ask some people on here directly who can take my personal situation into account, rather than decide on a language based on the preference of a random blogger.

Anyway, thank you all for reading and replying. I really appreciate it. Any additional info would always be helpful and I'll let you know how things are going once I get it all in motion. Thanks again.