Starting an Education in IT? 425
AriaStar asks: "It's overwhelming to start trying to learn all the different technologies needed to go into programming. It seems that every type of technology assumes knowledge of a different one, which in turn requires knowledge of another, until it's gone full circle. I am interested in everything from Unix to AJAX to Perl. Things like HTML, Javascript, and SQL are like English, but then again, they're basic. Where is the best place to start? What is a good path for someone who learns quickly and easily, but who is simply too overwhelmed, to take?"
DIY (Score:3, Informative)
learn by solving *your* problems (Score:5, Informative)
If you want to learn how to skate, take a tennis ball and chase it around a parking lot while having skates strapped to your feet. Don't spend more than a few minutes trying to consciously learn how to stand, roll forward, brake, or fall. Chase the ball. Do something OTHER than learn how to skate, but do something that requires skating. Your medulla oblongata will do the job far faster if it's allowed to do it without micromanagement from your conscious mind.
Same goes for programming. You won't learn how recursion works by typing in a fibonacci example. You'll learn how recursion works when you want to make a gallery thingy and find yourself needing to catalogue all *.jpg files below a certain directory. You won't learn how object oriented programming works by re-reading the wikipedia article on polymorphism, you'll learn more valuable lessons when you decide it's insane to be writing almost identical code in so many places and realize that's what a parent class is for.
Solve YOUR problems, not the book's, and you will develop a passion for problem solving. Almost all of the "programmers" out there who succeed have one thing in common: they wanted something implemented so they got it working on their own.
So many responses, so much BS (Score:4, Informative)
Finally, learn Assembler. Yes, Assembler. It will teach you how things work. NOW you can learn ANY programming.
Next a course in Data Structures is good. Follow up with a course in database management. Especially if you can get a good one that teaches Network DBMS structure, not just Relational.
Operating systems are LAST, and only if you want to be systems programmer.
A Good Foundation... (Score:5, Informative)
My suggestion is that (and in this order):
Now you should have a solid good base to learn just about anything. I would stay away from IDE's as much as possible and try to learn by hand, it is sort of doing division long hand before using the calculator.
Be aware that most technolgies like LAMP, AJAX, DHTML, etc are just applications and combinations of technologies that will be super easy to undertsand if you have a good grounding in the basics.
Re:Where to start (Score:5, Informative)
You can draw a line like C____C++_Java____Python___Ruby_Lisp
I suggest Common Lisp an Interactive Approach [buffalo.edu].
Re:Start not; do or do not. Powertools kick butt t (Score:3, Informative)
Youo want to generalize yourself, so my strategy is to learn one language that you like pretty well (java would be a good choice), and at the same time, poke around in python and c++. That way, you can learn advanced programming ideas and dont have to worrb about the language, and learn fun programs. Have some fun and experiment: Write a network program - you learn a lot about networks. Get your program working on linux - learn about portability and the linux shell. Write a good game engine - learn how to use enginges. The key is to just jump in.
This is all applying to learning oo languages, but it applies to everything.
Re:Discrete Math: Foundation of Computer Science (Score:3, Informative)
You ought to write a review at Amazon.com since the others there gave it an average of two stars.
What Does Your Job Require? (Score:3, Informative)
There is another angle that you can take in looking at this question: what does your job require you to know? Or perhaps, what do you need to know in order to qualify for a particular position?
I've been in the IT industry for a long time, including as a consultant and I've seen companies of various sizes. I'll never forget one huge financial services firm, which of course had a correspondingly huge IT department (on the order of 1,000 people), had a guy who was in charge of DNS. That's it. This guy probably got paid 6 figures just to manage their DNS. I'm not saying DNS isn't important, but I can't believe it took up 40 hours of work a week. Anyway, that was just an example of one extreme. On the other hand, you could work for a small company that has lots of IT demands like I do, and they need me to know stuff ranging from managing the computers/network/security to the PBX and phone lines.
So if you're not currently employed in IT, do a little research. Find out what kind of company you'd like to work for, and what they want in an IT guy.
PS> If you're in England or at least get Channel 4, check out the IT crowd [youtube.com]. It's a pretty funny sitcom on life in IT. If not, you can find episodes on the show's website [channel4.com] or on YouTube [youtube.com].
Mathematical Association of America (Score:5, Informative)
The book by Ross and Wright is quite good.
The mediocre reviews at Amazon are likely at anomaly.
More suggestions (Score:5, Informative)
1. Episodic Learner Model/An online Lisp tutorial [uni-trier.de]
2. Common Lisp: A Gentle Introduction to Symbolic Computation [cmu.edu]
3. How to Design Programs [htdp.org]
4. Practical Common Lisp [gigamonkeys.com]
5a. The book - Structure and Interpretation of Computer Programs [mit.edu]
5b. The movies - Structure and Interpretation of Computer Programs [mit.edu]
6. Loving Lisp - the Savvy Programmer's Secret Weapon [markwatson.com]
7. Common Lisp the Language, 2nd Edition [cmu.edu]
8. On Lisp [paulgraham.com]
9. common lisp: a web application tutorial for beginners [blogspot.com]
10. JavaScript: The World's Most Misunderstood Programming Language [crockford.com]
11. Free JavaScript Learning Center [javascriptmall.com]
12. JavaScript for Scared People [anaesthetist.com]
13. JavaScript Closures [jibbering.com]
14. Why's (Poignant) Guide to Ruby [poignantguide.net]
= 9J =
Programming ? (Score:2, Informative)
Re:Where to start (Score:3, Informative)