Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
Corvid1692
Mar 6, 2014
I want to ask for encouragement and support. I have a goal to become a proficient programmer. I’ve studied computer science while in college, but never felt I became very good at programming, and eventually switched to an arts and technology degree. I have a history of mental health problems, including depression, and had a major mental breakdown a few years ago, and had to quit school. When I tried to go back, I was told I couldn’t take classes anymore without paying out of state tuition, which I’m unable to do. Because of that, I’m unlikely to be able to go back any time soon (I have the equivalent of an Associates in CS, and could probably get the degree on paper if I got my UTD transcript to the community college I was at before).

I'd like to get a job programming, but even if I can't, t’s awesome and fun, and I should be better at it than I am. Learning to code can't not be worth it. But I have some pretty big self-esteem and depression problems, so motivating myself to follow through on this is difficult. I’m getting mental health counseling through the VA, which helps. But I wanted to post my situation and goals here to help me focus on them, and hopefully get some encouragement. Maybe it’s pointless and egotistical, but I could use a little more ego.

I’ve been working low end jobs for a few years since I dropped out, and hate it. I’d much much rather have a job making something neat than selling storage or hardware or whatever, for minimum wage. I studied C++ in high school (twenty years ago, I’m old), and my college courses all used Java. I’ve also taken an assembly course, and it was extremely fun. I feel familiar enough with how programming works that I could quickly grasp the basic syntax of any higher level object oriented or procedural language. I’d be frequently referencing documentation, at least at first, but just because I could learn the syntax doesn’t mean I’d know how to apply the language. How to structure code, how to make elegant and useful code are (largely) independent of language, and knowing the syntax of a language doesn’t give you a toolkit of useful tricks, or an familiarity with whatever traps lie in the language. But I think how to program is more important than what language.

I feel like I could write a program to process groceries at checkout, but that’s about it. The most complicated program I’ve written was a calculator with a gui, in Java. I’m not proficient at data structures, or graphics programming. I don’t know how very large programs are structured. I don’t know how to be part of a programming team. Other than that, I don’t know enough to know what I don’t know.

But I should be capable of this. The biggest obstacle to me succeeding (besides being old, poor, and not having a degree), is my ability to work hard on it and do well. Depression makes that really hard, and I’m sick and tired of it kicking my rear end. Has anyone else been in a similar situation? How did you get through it? I really want to do this, but am honestly afraid I won’t be able to go anywhere, and will be stuck in bad jobs.

I do kinda have specific questions, but they’re boring stuff like how do you get on projects, or how good do you have to be before applying for a job, and there’s faqs with answers to that all over the place.

Thanks for any thoughts or responses, sorry if it’s out of place or inappropriate here. I almost posted on Reddit, but they seemed to only want people asking for help debugging code, and you guys are cooler.

Adbot
ADBOT LOVES YOU

xpander
Sep 2, 2004
Hi. I dropped out of not one, but two post-secondary computer-sciencey programs after high school and now freelance for a living, making a pretty decent wage($40+/hr) without any real issue. I say this to instantiate and then reinforce the torrent of supporting opinions that are surely about to arrive in this thread.

First of all, check out the Newbie Programming thread if you haven't already. Your exact situation comes up every 10 pages or so, and it's definitely not an unsolvable conundrum. The general advice is thus: code a hell of a lot in your spare time. Build some dumb poo poo that shows you can take a concept, no matter how simple, and execute/iterate on it. Make it public on github or a personal website so that it's visible. Prospective employers want to see that you can learn on your own, think through problems, and generally fulfill their development needs on a basic level. Learn version control(probably git/mercurial) if you're unfamiliar. Pick a language that you like working in, so that you're productive - a lot of what you'll learn there will carry over in some way. If you want to get a job quickly with the least amount of work, your chosen path is probably that of the Javascript/frontend developer - Angular is hot right now, with other JS frameworks following in its wake.

Check out https://codeacademy.com for some great overviews of web languages - there's lots of tutorials for the web application world, and it has the benefit of giving you "instant feedback" so that you can see what you're building, and how it's changing. That can be valuable for motivation, if that's an issue for you.

You are correct that "knowing how to program" is more important than the language chosen. But you may want to narrow your focus until you've written a bunch of stuff and feel comfortable with a lot of the basics that will carry across - variables and what they do(in your language of choice), logic flow and how it's best executed(in your language of choice), etc. Solve a problem you have in real life with software. Have a ton of DVDs that need cataloguing? Make something to track them all. Lend them out to friends often? Add a feature to note who has what. Like to cook? Make your own simple recipe app. Really into sports? Make some fantasy team garbage to fulfill your pigskin roleplaying needs. Projects like these are the best ones to work on - you have some intrinsic motivation to push on past where you might normally stop if you're following someone else's tutorial.

Lastly, it's never too early to be applying for a job if you think you can do it. I realize it may be difficult to judge that correctly, but start soon and try getting feedback from the places where you apply. You might want to wait until you've got a few personal projects under your belt, even trivial ones, but you'd be surprised what kind of schlubs apply for entry-level work. You just need to look better than them.

let i hug
Dec 25, 2011

Mental health problems are pretty common in the software industry from what I can tell, honestly. A lot of people have pushed through it and done amazing things, you can too. I think the biggest part of it is that coding is legitimately enjoyable for some people (including, it sounds like, yourself) and so you can use that to counter-act some of the lethargy and depression you feel in general. Make sure you're always enjoying what you're doing -- don't embark on a really tedious project you hate "for the experience" -- and you'll find that the motivation to code comes easy even when everything else is hard.

xpander said everything about the need to code as much as possible, and his point that entry-level work can be a low bar is a good one. There's an industry-wide shortage of programmers that's actually projected to get worse as time goes on. With some effort and diligence you'll find a place soon enough.

One note that I think is important for a beginner: there are a lot of ways to do things, but only some of them really make sense. It's easy to get caught up worrying about languages/IDEs/frameworks/environments/etc. but when you're starting out it's best to just work on doing one thing well. You're right that the choice of programming language isn't really important in the end, but don't let that be an excuse to hop around and never really gain in-depth knowledge of any of them. I think everybody should have a "safety" language that they can code anything in, even if it's a pain in the rear end and maybe not the best tool in the universe for that job. For me, that language is Java, and even though I enjoy, e.g., Python, and Python if better for certain things than Java, I could always trudge my way through any problem using Java. This kind of safety net is important because it becomes a base that you can build on top of. When I need to learn a new algorithm or concept, I can always just do it in Java and focus on the concept rather than the mechanics of writing runnable code.

FWIW I would recommend you stay with Java since you said you know some of it already. A lot of the time it's the lowest common denominator for different teams and so there's a library for everything under the sun and tools to get you working on any kind of application outside of, like, embedded programming or something. It's also a really in-demand language at the "real" software development shops that would make really good entry-level experiences for you.

Good luck!

First Time Caller
Nov 1, 2004

My wife has just been doing online learning with https://www.teamtreehouse.com. In about a year of self-paced study she is a front-end web developer for a startup in San Francisco. Might be something you'd be interested in.

DONT THREAD ON ME
Oct 1, 2002

by Nyc_Tattoo
Floss Finder
Just remember that a single return is acceptable, but if you attempt multiple returns, other programmers will probably give you a hard time.

Vulture Culture
Jul 14, 2003

I was never enjoying it. I only eat it for the nutrients.

Corvid1692 posted:

I'd like to get a job programming, but even if I can't, t’s awesome and fun, and I should be better at it than I am. Learning to code can't not be worth it. But I have some pretty big self-esteem and depression problems, so motivating myself to follow through on this is difficult. I’m getting mental health counseling through the VA, which helps. But I wanted to post my situation and goals here to help me focus on them, and hopefully get some encouragement. Maybe it’s pointless and egotistical, but I could use a little more ego.
Are you family of a veteran, or are you a veteran yourself? If the latter, do you have any options under the GI bill?

Corvid1692 posted:

I’ve been working low end jobs for a few years since I dropped out, and hate it. I’d much much rather have a job making something neat than selling storage or hardware or whatever, for minimum wage. I studied C++ in high school (twenty years ago, I’m old), and my college courses all used Java. I’ve also taken an assembly course, and it was extremely fun. I feel familiar enough with how programming works that I could quickly grasp the basic syntax of any higher level object oriented or procedural language. I’d be frequently referencing documentation, at least at first, but just because I could learn the syntax doesn’t mean I’d know how to apply the language. How to structure code, how to make elegant and useful code are (largely) independent of language, and knowing the syntax of a language doesn’t give you a toolkit of useful tricks, or an familiarity with whatever traps lie in the language. But I think how to program is more important than what language.
Here's a few books you might find useful:
Clean Code
The Pragmatic Programmer
Code Complete (somewhat dated, but still a great read)

If you're not strong with algorithms and data structures, I'd recommend taking a community college course. You might even be able to audit for the cost of a textbook. Otherwise, there's plenty of free MOOCs through Coursera or Udacity that can help add some structure to the learning format.

Corvid1692 posted:

I feel like I could write a program to process groceries at checkout, but that’s about it. The most complicated program I’ve written was a calculator with a gui, in Java. I’m not proficient at data structures, or graphics programming. I don’t know how very large programs are structured. I don’t know how to be part of a programming team. Other than that, I don’t know enough to know what I don’t know.
Most programs aren't very large programs. Most programming teams aren't large either. Reading code is harder than writing it, IMO. Maybe find a small piece of open-source software you like and start reading through it to see how it's structured, and see if you can figure out why the developers made certain decisions about why to do things a certain way?

Corvid1692 posted:

But I should be capable of this. The biggest obstacle to me succeeding (besides being old, poor, and not having a degree), is my ability to work hard on it and do well. Depression makes that really hard, and I’m sick and tired of it kicking my rear end. Has anyone else been in a similar situation? How did you get through it? I really want to do this, but am honestly afraid I won’t be able to go anywhere, and will be stuck in bad jobs.
This is a mental health question rather than a motivation question, and you're probably better off talking to a qualified professional about that. But I do have seasonal affective disorder, and I find that routine is really helpful with helping me get through that and actually get things done. Maybe also find someone to do it with you, if you can?

Corvid1692 posted:

I do kinda have specific questions, but they’re boring stuff like how do you get on projects, or how good do you have to be before applying for a job, and there’s faqs with answers to that all over the place.
Good enough to get the job. There's all kinds of programming jobs with all kinds of companies, and all of them want different things.

Ferdinand the Bull
Jul 30, 2006

Vulture Culture posted:

Are you family of a veteran, or are you a veteran yourself? If the latter, do you have any options under the GI bill?

Here's a few books you might find useful:
Clean Code
The Pragmatic Programmer
Code Complete (somewhat dated, but still a great read)

If you're not strong with algorithms and data structures, I'd recommend taking a community college course. You might even be able to audit for the cost of a textbook. Otherwise, there's plenty of free MOOCs through Coursera or Udacity that can help add some structure to the learning format.

Most programs aren't very large programs. Most programming teams aren't large either. Reading code is harder than writing it, IMO. Maybe find a small piece of open-source software you like and start reading through it to see how it's structured, and see if you can figure out why the developers made certain decisions about why to do things a certain way?

This is a mental health question rather than a motivation question, and you're probably better off talking to a qualified professional about that. But I do have seasonal affective disorder, and I find that routine is really helpful with helping me get through that and actually get things done. Maybe also find someone to do it with you, if you can?

Good enough to get the job. There's all kinds of programming jobs with all kinds of companies, and all of them want different things.

I would say the best thing to do to be a web developer is
1:) get to where you cursorily understand how a modern website works, top to bottom. Just enough to know it at a high level, not much more is needed.
Things like the database, how data is sent to it, how the data is called, stored, sent, and received, how the data is prepared, and how the data is input.

2:) get really good in one particular kind of programming job. A good one to start out with, for multiple reasons, would be getting really good at using JavaScript to display and prepare data in a nice way, eg a cookie cutter front end developer. It's a good way to get started thinking like a good programmer.

I would really just build real dumb terminal applications to start out with. I began doing Ruby koans for a couple weeks, then I moved onto Ruby on Rails, then Angular on top of Rails, then a brief stint in Java and PHP, then node, then the MEAN stack. Now I'm working with React and Node with a Mongo database. It's all gradual. Just make stuff all the time because it will make you get good real fast.

My Rhythmic Crotch
Jan 13, 2011

Hey Corvid,

My recommendation to you is to try Python. It is such a fun language because it lets you easily do things that would be quite difficult in other languages. It's easy to learn, difficult to master, so it can grow with you. You can start by writing "functional" code, and progress to object oriented as you get more comfortable. It's a language well suited for doing backend/system/linux type stuff, tinkering with games, learning web development, or learning data structures and algorithms. There are also lots and lots of Python jobs out there.

Make yourself a github account and put your projects out there. Get a LinkedIn account and talk about how your passion is to develop. The recruiters will find you once you do. You can do it :)

Ferdinand the Bull
Jul 30, 2006

My Rhythmic Crotch posted:

Hey Corvid,

My recommendation to you is to try Python. It is such a fun language because it lets you easily do things that would be quite difficult in other languages. It's easy to learn, difficult to master, so it can grow with you. You can start by writing "functional" code, and progress to object oriented as you get more comfortable. It's a language well suited for doing backend/system/linux type stuff, tinkering with games, learning web development, or learning data structures and algorithms. There are also lots and lots of Python jobs out there.

Make yourself a github account and put your projects out there. Get a LinkedIn account and talk about how your passion is to develop. The recruiters will find you once you do. You can do it :)

Python and Ruby are both super simple languages to learn in. The one caveat is that Ruby has Ruby on Rails, which will teach you MVC architecture, and will get you a working website up fairly quickly.

let i hug
Dec 25, 2011

Ferdinand the Bull posted:

Python and Ruby are both super simple languages to learn in. The one caveat is that Ruby has Ruby on Rails, which will teach you MVC architecture, and will get you a working website up fairly quickly.

Do you even Django???

Ferdinand the Bull
Jul 30, 2006

let i hug posted:

Do you even Django???

Like I said, I haven't really touched Python, so I don't know much about that side of programming. Django looks nice, but it has less of a community to fall back on if things go tits up in his project.

Python has a bunch more jobs than Ruby, but I doubt many of these are in web dev.

It all matters what he really wants to do. I learned on Ruby, so I'm biased towards Ruby. Learning on Python is a perfectly reasonable choice, however.

Adbot
ADBOT LOVES YOU

let i hug
Dec 25, 2011

Ferdinand the Bull posted:

Like I said, I haven't really touched Python, so I don't know much about that side of programming. Django looks nice, but it has less of a community to fall back on if things go tits up in his project.

Python has a bunch more jobs than Ruby, but I doubt many of these are in web dev.

It all matters what he really wants to do. I learned on Ruby, so I'm biased towards Ruby. Learning on Python is a perfectly reasonable choice, however.

I would say there's jobs in both and they're essentially equivalent languages in many ways but I would say Python of the two both because its star is rising in web dev and more than anything it has enormous support in APIs for all kinds of systems from AI to scientific stuff to big data. In the US at least, Python has been picked up as the standard glue language, even though many scripting languages (including Ruby) could rightfully fill that role. Just having that momentum is nice when you're learning new things and exploring though. Since Rails, Ruby has always had a solid web dev install base but I haven't seen it branch out like Python has.

e: Python is my baby and if you talk about Ruby I will cut you

  • Locked thread