Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Some background first: I am new to programming and have discovered it rather late in life; Like many hobbyists, my introduction to the subject has been through PHP/jQuery (yes, I know the popular mood around here... they-are-not-real-programminng-languages ;-) ). I like to believe that I am reasonably competent at what I do in my other life and this developing addiction to coding has taken a very heavy toll on my professional prospects.

This is the question:

  • What programming languages next? (No plans to ditch PHP in the immediate future, that will involve rewriting much of my code.)
  • Any absolutely essential books I must read?
  • Is it necessary to join a college/university course?
  • Do I need to ditch my other profession to continue serious learning?

My goals are:

  • Develop a solid understanding of the science and art of programming.
  • Continue to work on my own web application. (Hands on learning suits me best.)

I am something of a generalist interested in everything from UI to database performance.

share|improve this question

closed as not constructive by MichaelT, GlenH7, Walter, gnat, Martijn Pieters Feb 17 '13 at 9:04

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Don't have time to give a detailed answer now, but there is no necessity of college/university. –  Eric Wilson Dec 5 '10 at 1:26
To answer this it is necessary to determine what is your end goal as programming is a vat field, if you to learn it to use in some project then start according to that project's requirement. If you are doing it as hobby then too whatever specific area that strikes your fancy, web, gaming, simulations, the possibilities are endless. –  Gaurav Dec 5 '10 at 5:12
PHP is definitely a programming language, and quite popular, too. jQuery may be joked about a slight bit, but it is a Godsend to those who work on Javascript-heavy web applications. You're thinking of HTML, which most programmers would say is not a language. –  Corey Dec 5 '10 at 5:13
@Corey: JQuery definitely isn't a programming language, it's a library. –  Javier Dec 5 '10 at 6:22
@Corey, "PHP isn't so much a language as a random collection of arbitrary stuff, a virtual explosion at the keyword and function factory." - Jeff Atwood –  Jason Lewis Jan 25 '12 at 21:25

4 Answers 4

You would do yourself a lot of good if you switch to good old fashioned reading instead of trying to learn about the subject by figuring out the next cool PHP construct. Yeah, knowing that construct does count, but it's not for starters.

Here's my list of mostly language agnostic must read books:

  1. Algorithms + Data Structures = Programs by Wirth
  2. The Algorithm Design Manual by Skiena
  3. Operating System Concepts by Galvin & Silberschatz
  4. Design Patterns by Gamma et al
  5. Pragmatic Programmer by Hunt & Thomas
share|improve this answer
At what 'stage' should I read them?? –  user9145 Dec 5 '10 at 12:18
@RisingSun: I think there's no pre-requisite except for some high school maths and good logical and analytical skills. For the books themselves, you could follow the order I mentioned. –  Fanatic23 Feb 13 '11 at 11:49
+1 for Design Patterns and PragProg... probably the most important two books out there... though maybe after you're proficient in at least one language. –  Jason Lewis Jan 25 '12 at 21:27
I view Design Patterns as largely a collection of workarounds for compile-time method-binding OO languages like C++ and Java. Most of the 'problems' that those patterns solve simply don't arise in languages with run-time method dispatch. –  kevin cline Feb 1 '12 at 16:21

It is not necessary to go to university to learn programming. In fact, because technology changes so rapidly, most of the technical knowledge you learn will be obsolete by the time you graduate.

Compilers, runtime environments and libraries are updated, hardware is more powerful, software becomes more complex, so on and so forth. What you should gain from working in university is technique and factors outside of actual programming. Things like working in a team, meeting deadlines, and how to stay on top of emerging technologies.

However, some people do tend to learn best when they're being taught, and not just from reading. If you want to learn in this fashion, you could look into OpenCourseWare classes. Schools like Yale and MIT have quite a few courses online.

For example, here's a series of lectures from MIT from an Intro to Computer Science course of theirs.

If you plan on getting into programming as a career, though, you will want to have a degree. It's getting more and more difficult to get a job in any field without a college education. You might be the best self-taught programmer in the world, able to reverse engineer Microsoft Windows from scratch in two days, but many potential employers won't even glance in your general direction if your education is lacking.

Note that programming is an odd field in which somebody could self-teach far better than any school ever could. There are people who have been good enough, or lucky enough, to get employed sans degree. However, this is the exception, not the rule.

share|improve this answer
I have been thinking about a career switch, but I feel that I can best do it with a 'transition period' of a few years (I happen to be very interested in my current job too!). Looked into your links, found them quite enlightening; thanks. –  user9145 Dec 5 '10 at 12:17

spend as much time learning as you can, and not just the things you see on job ads. Go learn functional programming, new languages etc. One book that has me totally jazzed right now is "7 Languages in 7 weeks" from the Pragmatic programmer series. If I heard someone had really loved that book it would impress me. If you can tell someone why you think say clojure or erlang is worth paying attention to it will count in your favor, or at least it should.

share|improve this answer

Programming is one of those fields where it is possible for a person to be self taught. There are plenty of good resources to learn... listing a few

Disclaimer: I am the founder of Do It Yourself Computer Science, but I honestly do think it is a great resource for learning Computer Science and programming, especially the Elements of Computing Systems course.

Along with these resources, try and follow a personal learning process. I would suggest learning one or two things at a time. Also try and use the principles of deliberate practice (see here and here) and the Feynman technique for learning.

share|improve this answer