Forgot your password?
typodupeerror

Starting an Education in IT? 425

Posted by Cliff
from the where-is-the-best-place-to-begin dept.
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?"
This discussion has been archived. No new comments can be posted.

Starting an Education in IT?

Comments Filter:
  • DIY (Score:3, Informative)

    by nt5matt (794945) on Saturday May 27, 2006 @10:36PM (#15418635)
    Grab a used PC, install Linux on it and play around with MySQL and PHP. It's a cheap and easy way to learn the basics and you can adapt to whatever technologies are in use when you get hired in a development shop.
  • by Speare (84249) on Saturday May 27, 2006 @10:44PM (#15418665) Homepage Journal
    Sure, there are seriously important things to learn in data structures, algorithms, and methodologies, but the fastest way to learn programming (the fastest way to learn ANYTHING) is to try to solve your own problems, not the stock rote example problems you'll find in books.

    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.

  • by Mycroft_514 (701676) on Saturday May 27, 2006 @10:52PM (#15418690) Journal
    Look. Start by learning a procedural language, and then learn the 5 structure diagrams. Then proceed from there to non-procedural languages.

    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)

    by Kr3m3Puff (413047) * <me.kitsonkelly@com> on Saturday May 27, 2006 @10:54PM (#15418693) Homepage Journal
    I would say you are right to assume that things are changing too much and too fast to pick out a plan that includes the latest stuff.

    My suggestion is that (and in this order):
    1. Learn a good procedural programming language (e.g. C or Pascal)
    2. Learn a good Object Oriented Language (e.g. C++, C# or Java)
    3. Learn a good Scripting Language (e.g. Perl, PHP, etc)
    4. Learn Regular Expressions
    5. Learn some variety of XML to get the fundementals down
    6. Learn XHTML


    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)

    by Nicolay77 (258497) <{nicolay.g} {at} {gmail.com}> on Saturday May 27, 2006 @11:13PM (#15418757) Homepage
    And also get a good book about LISP and learn it. Almost every language out there is placed somewhere between C and LISP.

    You can draw a line like C____C++_Java____Python___Ruby_Lisp

    I suggest Common Lisp an Interactive Approach [buffalo.edu].
  • by PKPerson (784484) on Saturday May 27, 2006 @11:19PM (#15418773)
    This is very much my situation. I just finished a Computer Science AP class at my Hich School, and know Java quite well, as well as c++, which I suppose isnt too bad for a high schooler. My suggestion: find someone you know, a teacher or an older friend, who knows something, then learn everything you can from him. I had a great Computer Science teacher in High School. Though it was just a Java class, I also got my feet wet with c++, css, html, bash, and loads of other stuff. The trick to learning something is to use it. You WILL NOT learn c++ without writing a large-ish program in c++, config your enviornment, read books, and get everything running. The same applies to every other language.
    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.
  • by Anonymous Coward on Saturday May 27, 2006 @11:21PM (#15418784)
    Discrete Mathematics (recommended textbook: Discrete Mathematics [amazon.com] by Kenneth A. Ross and Charles R. Wright)

    You ought to write a review at Amazon.com since the others there gave it an average of two stars.
  • by kjh1 (65671) * on Saturday May 27, 2006 @11:32PM (#15418815) Homepage Journal

    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].

  • by reporter (666905) on Sunday May 28, 2006 @12:05AM (#15418908) Homepage
    Among textbooks teaching general (i.e., not highly specialized) discrete mathematics, the Mathematical Association of America [maa.org] assigns a two-star (**) recommendation to Discrete Mathematics [maa.org] by Kenneth A. Ross and Charles R. B. Wright. Two stars means "highly recommended". Only one other textbook on general discrete mathematics received two stars. No textbook on general discrete mathematics received the highest rating: 3 stars.

    The book by Ross and Wright is quite good.

    The mediocre reviews at Amazon are likely at anomaly.

  • More suggestions (Score:5, Informative)

    by ninejaguar (517729) on Sunday May 28, 2006 @01:38AM (#15419175)
    Good suggestion [oreillynet.com]! I would supplement it with the following as well:
    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)

    by tuomoks (246421) <tuomo@descolada.com> on Sunday May 28, 2006 @03:47AM (#15419437) Homepage
    Just tired but after 35+ years programming.. Forget the languages, easy. Try to get some idea what ( and how ) you want to do. Yes - different languages have different schematics - and that's all. The language really isn't the the problem, how and what is (IMHO ). Maybe it is just me but I see no difference in any dialect ( a language term ) except one is more suitable for the task in hand than some other. You can do all you want in 'C' or in COBOL or Python or FORTRAN or DELPHI or C# or REXX or TK/TCL or plain old assembler or ... ( and even in VB. ) Actually a memory address calculation in COBOL is easier than decimal arithmetic in 'C' ( think financial applications, money! ) or that FORTRAN compiler generates much more efficient code for cluster / parallel systems than any other or that LISP is a perfect solution when you need a flexible system that can bootstrap itself - so, it really depends what you want, how fast, and .. - now the problem today is if it can be supported, not too many people know APL, TAL, BAL, Prolog, ... ask about SNOBOL, RGP or if you go to modeling, how about SIMULA ( OO anybody ? ) So - SQL is easy if you know relational algebra, HTML is just a presentation, Javascript is ???, and so on. Unfortunately ( IMHO ) most coding has gone how to use API, not how to solve a problem. Once you learn how to solve a problem the language really can be whatever you select or in worst case whatever you are required to use. So have fun - I have had ( and still do! most of the time.. ) But don't forget - coding is like a data entry or a ghost writer job - someone else tells you what to do. Maybe not what you want in future. Nothing against the very skilled people doing those jobs ( under rated IMHO ) but not for me, hown about you ?
  • Re:Where to start (Score:3, Informative)

    by dubbreak (623656) on Sunday May 28, 2006 @01:03PM (#15420880)
    Excellent point and I agree wholeheartedly. I think assembly should be taught earlier then students would not have such a huge problem understanding pointers in C. Also when one moves onto learning OS's understanding registers, stack allocation and interupts is very helpful and makes concepts much clearer. Plus if you can write clean organized code in assembly then doing the same in high level languages should be trivial.

"One Architecture, One OS" also translates as "One Egg, One Basket".

Working...