Should the Kid Learn to Program? If So, What?
August 14, 2015 9:04 PM   Subscribe

Kid is interested in training himself to program in order to get a job. Is programming still a good job skill? If so, what programming language should he learn, and how?

In the '90's, first wife taught herself C++ in 6 months or so after getting her unremunerative Ph. D. She's been a successful programmer ever since.

20-year-old is thinking about his job prospects. He is very good at figuring out complex systems. He also does not like to leave his room if he can avoid it. He asked about programming.

Is programming still a viable profession for North Americans, or is it mostly now getting outsourced to India and China? I know top programmers pull down serious bank in Silicon Valley, and I know game programmers have no trouble working, but are they only the best of the best of the best?

What could he teach himself that could most plausibly turn into either part time or full time work in a reasonable amount of time? Should he learn a programming language, or something else?

(And if it is a programming language, is there a good book to learn it from?)
posted by musofire to Computers & Internet (7 answers total) 6 users marked this as a favorite
 
Best answer: Programming is a really good profession right now -- I think this is a good idea.

I would suggest Javascript, since it is the principle language of the web, and it was #1 on the Stack Overflow developer survey.

There are lots of ways to learn Javascript. Codecademy is one.
posted by PercussivePaul at 10:07 PM on August 14, 2015 [5 favorites]


Best answer: As a 40 year professional programmer in North America, I believe there are still plenty of opportunities in IT but the skill levels and pay vary widely.

At the risk of a bad analogy, I suspect being interested in programming is like being interested in the military...what aspect and to what degree and what are you willing to endure to achieve success? If not that, maybe medicine.

To keep this reply short I would say that learning programming is like taking a drink from a fire hose. There is sooooo much to learn and soooo much free information and sooooo much sample code out there.

In the beginning you have to pay your dues and learn enough to be able to create working programs that reliably accomplish specific tasks and which are readable by other programmers and can be changed by you or others as new requirements arise. Even if you can do that you are just a one trick pony.

Then there are all the programming standards and paradigms and tools. Object Oriented Programming and Design, Model View Controller, Relational Databases, source versioning control, User Interfaces and Experience, automated and manual unit testing, multi-phase commit. And personally I wish I knew more numerical analysis, statistics and accounting.

With regard to languages I will defer to others. However you should know that COBOL, which shows up on nobody's "popular" list, is still in demand because of the enormous number of programs that have been written in it. We just hired and trained 12 people at our company in COBOL.

Also note that relational databases have a powerful dedicated language: SQL.

We haven't even talked about operating systems. I work in mainframe, Windows and Linux currently. And then there's mobile platforms.

You asked "in a reasonable amount of time". So that is the kicker. It certainly is possible to do part time work and perhaps full time work as a programmer after learning the basics, but there is a Catch-22 like in most professions...nobody wants to deal with the inexperienced if they can help it. I will also defer to others on that point also.

I think to some extent you need to get "hooked" and get a thrill from learning and creating programs and solving problems, or just using and extending existing systems in new ways. Also a motivational tip: programming tasks find their level, like water. Easy tasks sink to the bottom and are assigned to programmers who can only do easy tasks. So don't be that person for goodness sake! Strive hard to be able to do challenging and complex work.
posted by forthright at 4:33 AM on August 15, 2015 [3 favorites]


on the "what language" front, if this is intended to find a job then it makes sense to look at the jobs available locally - learn whatever is popular where you are.

also, when learning, community support is useful. so whatever language you choose, try to find a supportive community of peers.

so putting those together, find maybe the top two languages in local job offers, then see what resources and support are available for both, and go for the better supported of the two.
posted by andrewcooke at 6:32 AM on August 15, 2015 [1 favorite]


This kid, who is actually a young adult, should probably spend some time thinking about what he might want to build or analyze, and then do the research to pick his own first programming language.

I think Learn Python the Hard Way seems like a good first programming tutorial. But I started trying to program before there was Python.
posted by yarntheory at 4:44 PM on August 15, 2015 [2 favorites]


> He is very good at figuring out complex systems.

Has he considered starting with systems administration? Programming is a fine choice, but demand for Linux admins is hot and it's relatively easy to get started in.
posted by Poldo at 7:37 PM on August 15, 2015


I agree that Javascript and Python are good languages for a beginner to learn. Python will teach some good habits and get him used to object-oriented programming. Javascript is immediately usable for doing web-related stuff, has a huge community of users, and is very practical for getting an entry-level job, but the language itself is more complex and full of weird little gotchas. I'd actually recommend learning both languages, since it can be very instructive to see how their approaches differ.

Programming is a definitely a good job skill to have and there are a lot of openings in places a young person might eventually want to live (ie, big coastal cities). The big Silicon Valley companies pay the most and are famously difficult to get into, but there are still a lot of jobs apart from that and they still pay quite well especially for a young person (also Silicon Valley is a cultureless hell-hole). Programming is also a profession where demonstrated skill tends to be valued above a formal computer science education, in case that's an issue; many of my peers don't have a CS degree and have done quite well.

I can't recommend a book, unfortunately, but both Javascript and Python have tons of them available along with a ton of free online courses. One thing that you might look for are meetup groups in your local area where he could meet other people interested in the same thing, which might be a good way to get recommendations and a bit of on-the-sly mentorship. But really he could learn everything he needs to know to get hired sitting alone in his room, if he's got the internet and some time.
posted by whir at 10:13 PM on August 15, 2015


Programming is a good added skill for other professions beside software developer - i.e. anyone who uses spreadsheets in their work can benefit from programming knowledge for macros and such.
posted by Harald74 at 1:22 PM on August 16, 2015 [1 favorite]


« Older Help me chose a Smart TV (I haven't had one in 15...   |   I'm pitching a special membership card idea at... Newer »
This thread is closed to new comments.