Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?

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?"
This discussion has been archived. No new comments can be posted.

Starting an Education in IT?

Comments Filter:
  • look under the hood (Score:5, Interesting)

    by icepick72 ( 834363 ) on Saturday May 27, 2006 @10:35PM (#15418623)
    There's a lot to look into, but whatever you learn, take the time to figure out what's actually happening under the hood, especially if you use RAD tools. There are two groups of people: those that know how it works underneath, and those that don't. Those that do can output much more wonderful things. Certifications are a good way to make yourself get under the hood and truly understand.
    • by reporter ( 666905 ) on Saturday May 27, 2006 @11:02PM (#15418722) Homepage
      The best approach to learning information technology is to first learn the foundation of the technology. In other words, study the following.

      1. Discrete Mathematics (recommended textbook: Discrete Mathematics [amazon.com] by Kenneth A. Ross and Charles R. Wright)
      2. Finite Automata and Computability (recommended textbook: Introduction to Automata Theory, Languages, and Computation [stanford.edu] by John E. Hopcroft, Rajeev Motwani and Jeffrey D. Ullman)

      Technologists who understand the fundamental theory can generally write more elegant, more efficient computer programs than pseudo-technologists who are ignorant of the science in computer science.

      Once you have trained your mind on the fundamental theory, you will discover that most information technologies are quite simplistic.

      Finally, one often overlooked subject is English. Learn to write and speak well in English. It is the fundamental mode of communication in the world of advanced science and technology. You may have great ideas, but if you cannot them to your English-speaking peers, then you are no better than a pseudo-technologist.

      • Errata (Score:5, Funny)

        by Anonymous Coward on Saturday May 27, 2006 @11:10PM (#15418746)
        The last sentence, " You may have great ideas, but if you cannot them to your English-speaking peers, then you are no better than a pseudo-technologist. ", should read, "You may have great ideas, but if you cannot explain them to your English-speaking peers, then you are no better than a pseudo-technologist."
        • That is perfectly all right. I have Hindi speaking peers, and I can communicate perfectly well with them.
      • by Anonymous Coward
        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 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.

          • Among textbooks teaching general (i.e., not highly specialized) discrete mathematics, the Mathematical Association of America assigns a two-star (**) recommendation to Discrete Mathematics 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.

            I think the truth may be that there is
      • That's pretty much the worst (and really elitist) advice I've seen regarding what to start with in IT!

        If the questioner can't even decide on what technology to learn (not knowing the dependences of AJAX on Javascript on HTML, etc) recommending a Discrete Mathematics book is a complete waste of time. That's telling someone to learn how to drive a car by researching SMELTING. You are assuming they will ever make good use of such high level concepts (as far as American college students are concerned) which is
      • Those are good subjects to learn. There are also many hundreds of other important subjects to learn, so choose carefully. I disagree that theoreticians write the most elegant, efficient code, but there's no point arguing this point here for the zillionth time. Knowing more is better than knowing less, so in addition to the many other things you will need to learn to write good code (the most important of which is the domain in which the code operates, which usually has nothing to do with computer science
      • The best approach to learning information technology is to first learn the foundation of the technology.... Once you have trained your mind on the fundamental theory, you will discover that most information technologies are quite simplistic.

        By your logic, one should begin learning French by studying the history of French linguistics, cataloguing the phonemes/morphemes, and diagramming the inflectional forms. What a wonderful approach, you'll be speaking French in 5-10 years tops. Sure, you could get s

        • Once again illustrating the divide between theory and practice.

          Linguistics is a post-hoc analysis of language, so the example of learning French versus French grammar is not an informative one. In programming, the language was designed, not grown (though some might argue with that in some cases-- hard to imagine anyone actually having designed VB for example). And in a deep technical discipline, practice uninformed by theory is just incompetence.

          The prerequisite to doing non-trivial work in IT is to kno

    • Yeah, I think that is correct. After all, most tools can be used for most jobs. In the beginning, choose the appropriate tools for the job. After a while you should have enough skills to be able to work at any project, provided it's not completely out of your realm of experience. For example, C is a powerful language but not well suited to creating platform independant applications. It can be done though. Eventually it will become easiest to use what you know best.
    • Definitely go a layer deeper and work to understand why you would use Perl in one instance and Java script in another.

      I have seen bad Fortran code written in a wide variety of languages. Strive to move beyond the syntax.

  • 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.
    • Re:DIY (Score:5, Insightful)

      by bobdapunk ( 190639 ) on Saturday May 27, 2006 @11:16PM (#15418766)
      I am so tired of people saying that installing linux is a good way of learning a *insert language/technogloy*. Read a book. Work on a project. Linux is not the greatest tutorial invented to teach - it is an open source source operating system that offers flexible solutions to many problems for people that want to learn the applications and environment.

      The best way to learn a certain language or technology is to work in an environment that you understand and build on your current knwoledge. Jumping into a different environment and leanring it can get you frustrated and distracted from the true goal and I am sure has lead more than one perosn to be discouraged enough to stop pursuit of what they set out to accomplish.

      I am drunk, sorry if I am rude. But being a linux fanboy is not the answer to every f'ing question posted to /.
  • by jdhutchins ( 559010 ) on Saturday May 27, 2006 @10:37PM (#15418639)
    There's a lot out there. You might be able to get a sample of a bit of everything, but ultimately, you should probably pick a field and stick to it. If you have wide-ranging interests, pick a place to start, and let your journey wander from there. Pick a project, learn what you need to do it, and then move on to the next. But there's simply too much out there to "learn it all"
    • by fm6 ( 162816 ) on Saturday May 27, 2006 @11:19PM (#15418774) Homepage Journal
      Perfectly true. But he wasn't asking "how do I learn everything?" He was asking, "Where do I start?" He's wants things laid out for him in orderly progression, like they do with math: arithmetic in elementary school, geometry in middle school, algebra in high school, calculus in college. (No cute comments from you overprivilged types who had calculus in 8th grade.) The aim is not to teach you all of math which is impossible but to give you a grounding in some basic math skills.

      And there are computer curicula that do the same thing. And one possible strategy is to work your way through such a curiculum. But most computer geeks would rather work on their own, and they'd rather study technology they see being used, not what some textbook says are "basics". That's actually the way I learned.

      And if you take that approach, you will constantly run into references to technology you know nothing about. So deal with it. It isn't a mortal sin to skim over the parts you don't understand well. So you're reading that PHP manual and it starts talking about SQL. That doesn't mean you have to drop PHP and start studying SQL. It probably means that SQL is something that you'll have to learn eventually. But for now, the thing to do is just skim the SQL parts and get a vague sense of what it is and how it relates to PHP. Maybe take a little time to Google or Wikipedia SQL — but don't lose your focus on PHP.

      Of course, sometimes you will discover a new topc that's a prerequesite for stuff you don't understand. (Every programmer know aboutbinary encodings and two's complements.) But mostly not. I've been working with computers longer than most Slashdotters have been alive — and I still encounter places where the subject I'm trying to study seems to intersect subject I know little or nothing about.

      • calculus in college. (No cute comments from you overprivilged types who had calculus in 8th grade.)
        How about those at a more normal privilage level that at least had a couple of years of it in high school as part of their states standard curriculum. If you don't touch it until college in the top mathematics stream then there is something seriously wrong with the education system in your state or country.
  • by dave562 ( 969951 ) on Saturday May 27, 2006 @10:39PM (#15418646) Journal
    Take a course in basic programming structure first. You need the foundation of how to properly setup the code. By that I mean declaring variables, setting up functions, properly commenting (gasp) your code so that others can follow what you've done.

    Once you understand the proper structure it is much easier to branch out to the nuiances of the various languages.
  • by bariswheel ( 854806 ) on Saturday May 27, 2006 @10:41PM (#15418650) Homepage
    Studying IT is waay too general.

    Here's a question you might first want to answer: do you want to be a specialist or a generalist? to be a generalist, you probably want to be a specialist at one field, security, database, web design, web programming..etc. The fact of the matter is that there is so much out there, that you have to be a bit disciplines to really get anywhere. Or you can find an IT job doing support or so, then on the side start learning the underpinnings of a certain vertical market. Perl + Unix + C would be very good fundamentals to look at. IT is not a field like medicine, it's hard to draw a path, since there's so much to know and so many options. I would consult with someone who is an IT pro and possibly follow his/her footsteps. But yes it's a challening feat to 'master'.
  • by johndiii ( 229824 ) * on Saturday May 27, 2006 @10:43PM (#15418657) Journal
    You have a whole list of tools. What you need to learn are design skills, how to abstract, how to put together a piece of software. What quality is, and how to go about getting there. As was mentioned, learn how to put together a good UI.

    Yes, you have to learn tools. But be aware that there is more to it than that, that your ultimate success of failure will depend on your vision, not the facility with which you use your tools.

    I am reminded of the amusement of a master carpenter when confronted by an apprentice with a shiny new box of tools. You will, at some point, learn how to use a hammer. But knowing how to use a hammer does not teach you how to build a house.
  • Learn how to learn (Score:2, Insightful)

    by OakDragon ( 885217 )
    That's my best advice, learn how to learn. As others (and you) have said here, there really is too much to even pick from.

    OK, for practical advice, learn 1) an object-oriented language like Java, C# or C++. Nowadays, even PHP is OO, if you want it to be. But with Java, you can't even write "Hello World" without acquainting yourself with classes and objects.

    Learn relational databases, including normalization. You would not believe how far ahead this will get you.

  • DO (Score:5, Insightful)

    by iguana ( 8083 ) * <davep@@@extendsys...com> on Saturday May 27, 2006 @10:44PM (#15418664) Homepage Journal
    Don't just read about stuff. Do stuff.

    Find a pet project, find someone with a pet project, volunteer to help a friend or community organization set up a website. It has to be something you're interested in doing or you'll avoid it and not enjoy it. Pick a target and shoot for it, O'Reilly and Google at your side.

    The only way to really learn anything is to do it. I read a bazillion books about DNS/Bind but none of it sank in until I had to set it up myself. Same with SQL, Perl, Python, Template Toolkit, C++, etc.

    It's annoying, it's painful, it's frustrating, but the only way to really learn anything is to get in there and get your hands dirty.

    • Experience is 90% of the profession. Theory is 50%. (Yeah, yeah, I know, but I was using a Pentium.)

      Seriously, yes, try things out. Write your own mini programs, get involved in projects, try experiments to see what happens. Not everything has to be long and complicated, either - start by writing a Java applet that produces animation by colour cycling, for example, or a simulator for a very primitive, fictional microprocessor. In fact, pick anything that isn't too trivial, but would actually be interesting

    • The above is great advice for you, ariastar, given what you said about your learning style.

      Here's a refinement. After you do a project, write down a few paragraphs about what was awkward, what felt like it took too much time, and what new concepts and tools you would invent to make the job easier. Then pick up a related book, preferably a textbook rather than one of those shovelware man pages between covers. Reading the book will be a much better experience, more fun and more useful.

      Or, conversely, when you
  • 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.

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

      That's the most cogent statement of that princ

    • I totally agree - I had the worst time learning how to skate until I got talked into a game of roller hockey. I obviously got my butt kicked, but I learned to skate better in that hour than the previous 4 trys.

  • by mysidia ( 191772 ) on Saturday May 27, 2006 @10:44PM (#15418666)

    Knowing what to focus on can be taken as a research problem. Before actually trying to learn how to go about using the individual technologies, you need to research what each one is, why it is important, and how it will fit in with other technologies you would like to learn.

    In some cases, the answer may be to learn a little about each technology progressively. Learn a little HTML, then some Javascript, then more HTML, then more javascript, more HTML, the DOM, XML, ...

    When technologies are interrelated you sometimes need to learn a little about all of them before you can really start to master any of them.

    1. Make a checklist of what you are interested in and want to learn. You can't learn everything, and without a checklist, you won't really have a plan.
    2. Try to learn as much as you can about what exactly it is, how it works, what its benefits and drawbacks are, and what the alternatives are.
    3. Make a sublist of associated technologies; do the same for those associated technologies, except ones already on your list.
    4. Make a map of all the items in your list and their interrelations.
    5. Prioritize each technology according to which you are most interested in
    6. Start searching for references for each thing you want to learn about, and write them down -- you need websites or books, both for tutorial purposes, and to help you along.
    7. Start working on a project that uses the technology you are learning. Succeed with the project, and start a more sophisticated one that makes more use of associated technologies. Keep going.. learn by doing as well as by reading..

    Or just start trying to learn the most about what you're most interested, and when you discover another technology is involved -- start learning a little about that other technology too.

  • PHP (Score:5, Interesting)

    by darkain ( 749283 ) on Saturday May 27, 2006 @10:44PM (#15418667) Homepage
    Personally, nowadays I'm giving people PHP as their first language. Well, first PROGRAMMING language. HTML is fairly easy and simple to understand, so giving them basic assignments of doing text output (like number generators for example) in PHP is a nice begining.

    Part of the reason I prefer to give people PHP, is because quite a few web servers support it now. Another reason, is because you don't need a compiler. The next would be the simplicity of string manipulation. And from there, you can get people into basic file handling and other things of that nature which will carry over nicely to other languages.
    • Re:PHP (Score:3, Insightful)

      by Vorondil28 ( 864578 )
      I admittedly haven't done much work in PHP, and quite a bit in Perl, so take the following with a grain of salt.

      I agree that a budding programmer should start with a language that's, simple, not so simple it makes is useless for much more than instructional purposes (my main gripe with BASIC), and widely supported/used. Now, PHP fits those three pretty well, but I'm of the opinion that more general purpose languages like Perl (including Python, Ruby, etc') are going to be more beneficial in the long run
    • Re:PHP (Score:3, Insightful)

      by tehshen ( 794722 )
      PHP, eh? I'm sorry, but PHP has its own set of bizarre quirks, that most people who know PHP can't shake off its bad habits. Inserting code in HTML is nice for web development, but nasty for everything else (most things that a new coder would be doing). Waaaaay too many functions that are very inconsistent that would confuse someone who doesn't know which one to use. Magic quotes are sadly still there, "Why are there \s in my words?". You may think that PHP's nice for web development, but don't start the gu
  • Best way to start... (Score:4, Interesting)

    by citking ( 551907 ) <jay@nOsPam.citking.net> on Saturday May 27, 2006 @10:45PM (#15418671) Homepage
    ...is to work closely with people who already know the stuff. Let me explain:

    I went to college for psychology and criminal justice. Since I was paying my own way, I went around looking for jobs. I tinkered in PCs before and was willing to learn anything, so I applied for and got accepted to a job with our ResNet (Residence Hall Network) department. All I knew at that point was installing Windows, some network stuff, and other odds and ends with computers.

    We had a small team, probably 14 students in total and had a non-techie but very nice and open supervisor. We were given specific areas to work in given our strengths but there was absolutely no problem with teaming up to learn something new.

    When one of the students left, leaving a half-finished VB project, I decided to try and tackle it. Working closely with my friend Sean, we worked out what was done and what needed to be done. Any resources I needed were supplied by other staff members or my gracious supervisor. In the end, I learned a whole new programming language (albeit, not the one that many Slashdot geeks are friends with). I worked with our web dev guy to try and learn PHP and Perl (I failed miserably) and worked with another guy to learn about imaging. I talked with the university's network admin about how routing worked, Novell stuff, whatever.

    In the end I picked up so much that I decided to pursue a career in IT. Now I am a helpdesk manager, I love my job, and I try and emulate my old supervisor as much as possible. I learn a lot from my students (my latest challenge is ASP) and I try and teach them what I know in return.

    Just like the OSS community I feel bound to take what I've been given and pass it on to others. I'm not certain what your particular situation is, but I think surrounding yourself with people who know the technology, languages, or protocols goes a long way to staking out your own learning experince.

    Don't be afraid to hit the local library either. They usually have the latest books (for some reason the latest PHP/MySQL book is always available!) Ask a lot of questions, and don't be afraid to set up a sandbox and just play. Last bit of advice: Don't get frustrated. I can recall many times when I was against a wall with some weird configuration problem or what have you only to find the solution after using Google or taking a walk.

    Good luck!

  • I'd learn Unix first. Download yourself an emulator (I'm not telling you to switch to Unix) and a Linux or FreeBSD distribution (or open up Terminal.app if you have a OS X Mac), get yourself a Unix book or online Unix tutorial, and start learning some basic Unix commands. Once you are bored with ls, grep, and friends, learn how to set up X11 and basic system administration skills. Having a grasp of Unix will help you out in a lot more areas than one would imagine at first.

    Much of computer technology (sc

  • by cookiej ( 136023 ) * on Saturday May 27, 2006 @10:51PM (#15418684)
    To keep from being overwhelmed, start with an idea you have for something that you have a passion for. Think of some idea and lay it out on paper (or visio). I wanted to mess around with Python and we recently had a baby, so I wrote an "I/O" and sleep tracking system for our infant daughter in Python.

    For the most part, all the high-level languages are the same. There are differences and strengths, but at the point you're at most of these would be lost on you anyway. You already know Javascript, so pick another language -- and try to build your project in it. PERL, Python, .NET, Ruby... Pick one and stick with it.

    About 5 years ago I wrote a project for my brother so I could sink my teeth into PHP/MySQL. It's turned into a product we now sell and make (a small amount of) money on each year. The hardest part for me is sticking to the project with no real client to be beholden to -- hence MY need to build something I really want to make, not some example out of a textbook.

    When I decide it's time to learn something new, I generally see what is "up and coming" and learn that so by the time I'm fluent, I'm much more marketable. Right now, Ruby looks like a pretty decent choice.

    Good luck!
  • Work through things, one language or platform at a time. Pick a language, one that will help your learn good programming habits and let you pick things up quickly. I'd recommend not starting with some languages (perl, VB6, asm) under any circumstances, maybe something like python. Then use the language to expand into another area, eg HTML (generated by python), and CSS. Then possibly javascript, expanding in AJAX.

    There are real advantages in learning something thoroughly, and what you learn often applies we
  • 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@k i t s o n k e l ly.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.
  • Python (Score:3, Insightful)

    by SQL Error ( 16383 ) on Saturday May 27, 2006 @10:55PM (#15418695)
    Learn Python. Seriously.
  • by masdog ( 794316 ) <masdog@nOSPAm.gmail.com> on Saturday May 27, 2006 @10:59PM (#15418712)

    First, it doesn't pay to learn programming languages. Programming languages change or are replaced by the next new thing. Who knows what programmers will using in 5-10 years.

    If you want to program, learn how to write algorithms. Once you learn how to write algorithms, you can write in any programming language, even if you have never been trained in it.

    That was the first thing I learned in the programming section of my IT degree. We didn't touch a programming environment until halfway through the semester, and by that point, we could write the algorithm for a PB&J sandwich in pseudocode.

    When you can write algorithms, you can become language portable. If you have a job that requires C#, you can use a desk reference and the help system to implement your code. If your next job requires Delphi, you won't need to completely retrain yourself.

    Finally, give yourself projects. I learned how to develop databases by giving myself personal projects in that field, taking advantage of the MSDNAA to get SQL Server 2000 and Microsoft Access. With a simple SQL refresher, I would feel comfortable sitting down and hand coding a simple DB in Oracle, DB2, or MSSQL (not taking into account differences in each SQL implementation).

  • Good point you're making...it really is much harder for a total newbie to get a solid start from zero knowledge these days. I think it's partially due to the fact that so much of the earlier computing era is hidden behind well-crafted user interfaces designed to keep you out of trouble.

    I'm really dating myself here, but my first exposure to computers was with an inexpensive Commodore home machine that shipped with manuals detailing the entire memory map of the system. With 4K of RAM and all the specs publis
  • feel free to drop me a line at my email. I'm working on a large project using perl and Catalyst (Catalyst is similar to RubyOnAlls). If you are interested in those technologies I can give you a place to start.

    The IT field is huge. You need to find your own way around it. You might like client side development using Javascript and AJAX, or you might prefer to work in the database with languages like PLSQL (Oracle). I always found I learned the most by taking on a tough project and working at it until I
  • by ScentCone ( 795499 ) on Saturday May 27, 2006 @11:10PM (#15418744)
    Yes, you need to learn actual, practical things about the operating systems, DBs, and languages you'll be trading on. But the thing that too many would-be IT people seem to miss is that very few IT careers thrive without some context in the wider world. The programmers, even the server jockeys, that bring some "vertical" awareness to what they're doing, are way more valuable, and their employers are more willing to look past the lack of some particular new skill (and pay to have you go learn it).

    Why? Because experience and an interest in what the organization is actually doing (and which the IT people are there to support) is harder to come by than someone who can remember some bit of API syntax or or write a select statement with a 5-way join right on the first try. Be well rounded in IT, sure, but also take time to understand where money comes from. Why projects fail. How Sarbanes-Oxley impacts database backups. What HIPAA is.

    If you're going to expect an IT paycheck, get hip to what it is that generates the demand for what IT does, and what it means to be worth the money. That sounds rather vague, but if you follow the other advice you're seeing here (about how to get acquainted with various languages, coding structures, etc) you're only partway into a successful scenario. You'll be far more likely to be paid to learn the interesting new things that come along if the organization you're working for sees that you're interested in the bigger picture.
    • To go along with that line, consider checking into publications like Information Week and Network Computing from CMP. You can swing a free 1 year subscription to them, and it will get you inside what is going on in IT.
    • If you're going to expect an IT paycheck, get hip to what it is that generates the demand for what IT does, and what it means to be worth the money. That sounds rather vague, but if you follow the other advice you're seeing here (about how to get acquainted with various languages, coding structures, etc) you're only partway into a successful scenario. You'll be far more likely to be paid to learn the interesting new things that come along if the organization you're working for sees that you're interested in
    • So true. I've worked in several big manufacturing/financial companies which recruited sinificant numbers of graduates each year into there IT department as trainee programmers. Indeed I was one myself and progressed up via programmer/analyst through systems analyst to project manager in that environment before heading off to run my own consultancy.

      A common theme in all of these companies was that they were biased against Computer Science students. Instead they'd recruit from any discipline (the apptitude
  • Mainframes (Score:4, Insightful)

    by DaKrzyGuy ( 25850 ) on Saturday May 27, 2006 @11:10PM (#15418747)
    I know it might sound a little strange but if you can develop mainframe skills in 5 years you will be worth your weight in gold. So many of the current people that are mainframe system programmers will be retired by then and there are not many people learning the skills to fill their places. The one problem is it is hard to learn the skills because you can't just play around with the latest versions of mainframe software on your PC like you can with most windows and unix tools and applications. IBM has a lot of information and free learning modules on their site and several schools are starting programs to teach these skills to fill the knowledge gap. Plus you can learn how to run linux on a mainframe too so that you don't feel totally in the dark ages :)
  • A lot of times knowing the building blocks (e.g. learning the languages) is easy, as you say. But where a lot of people fall down - and I hate to say it, but it's more often on the *nix end - is understanding what it is you're trying to build. Learning SQL is easy, yes; but understanding how a database should be constructed is not always intuitive. Learning JavaScript, HTML, etc. are easy; but knowing how to present information clearly, or how to put together an interface that'll be easy to use, is harder.

  • by oSand ( 880494 ) on Saturday May 27, 2006 @11:15PM (#15418764)
    The general progression for a CS student(with some variation) is: Basic Programming -> Data Structures -> intermediate topics: declarative programming, software engineering, assembly -> more specialized stuff: compilers, concurrency, AI.

    I'd suggest that this is a good path.

    I'd also suggest you avoid php like the plague. It is a language that does not encourage good programming practice among novices. Also, it is terribly designed: you should see the best that IT has to offer, rather than the worst.

    • I'd second following this sort of path - learning structured programming is like learning the Latin of programming languages. Once you understand structured programming constructs, you can pick up languages fairly easily. A loop is a loop is a loop is a loop; learning how to implement one in C/C++, Pascal, PHP, Perl, BASIC, or any other of the myriad of languages out there is just syntax.
    • I would agree, but amend it like this for database stuff:

      "Basic Programming -> Data Structures -> intermediate topics: " Here I would add RDBMS concepts since a huge chunk of the work developers do is SQL/DB related code. Many developers (frighteningly enough) do not understand basic RDBMS and SQL stuff, leaving it to people like me to explain to them why certain things are very, very bad.

  • You may look at the comments and find yourself worse off... But let's take an example:

    You want to learn AJAX. Ok, learn (X)HTML, CSS, JavaScript, some basic XML (XSLT can help, as you can play with it in the browser), and learn the server-side technologies -- PHP, Perl, Python, Ruby, even C/C++/C#/Java -- Perl might be the fastest to get started with, and learn some SQL programming -- MySQL.

    You don't necessarily have to do all of those for basic AJAX programming, but it helps. You also don't have to go a
  • You've just made a huge generalization about what "IT" is. The IT industry has a lot of technical skills involved and is almost impossible to be a master of it all since it evolves so quickly.

    To make a metaphore, it's the same thing as asking people how you could become great at sports. Your goal is to be great at all sports such as baseball to hockey to golf, but you don't know where to start. The most obvious answer is you should start where you are most naturally talented. The other side of the response
  • I would reccommend to start with NIX. It is the root of all OS and you will find many things along your programming career that will harken back to something relating to NIX. Most application servers run a NIX OS and to program for them and administer them a NIX background will be essential. Basic NIX commands (ls, cd, chmod, chown, su/sudo) coupled with VI should be your starting point. Once you master these try tackling your first programming language - I would reccommend BASH / KSH (shell scripting)
  • Formal Education (Score:2, Insightful)

    by n4088832 ( 804146 )
    Get a formal education in software engineering. It doesn't matter how or where you get it, but the fundamental principles you learn will make learning new technologies and languages easy.
  • --for your age and skill level. Out of college, no one should be offering you a senior level job unless you are getting a CS/SWE/CE degree as a formality after years of experience. It's better to take a "Software Engineer I" (out of V-VII) even if it's a little below your skills.

    If you are expecting to be a super-elite code ninja, forget it. If you can handle the basics, and handle them pretty well, you'll be fine. The big thing is STFU and stop complaining if you're like a lot of Americans with learning so
  • 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].

  • structured code (Score:3, Interesting)

    by Borealis ( 84417 ) on Saturday May 27, 2006 @11:35PM (#15418827) Homepage
    I don't truly believe it matters what you wish to learn first. Pick one and learn it, and all the rest will be easier. Much like learning a spoken language, once you know a few it gets to be easier to learn new ones. The analogy is true even to families of languages. Iterative languages tend to have common features that are distinct from recursive languages. Web based languages tend to ignore whole facets that form the bulk of some other languages.

    The one thing I do believe strongly is that once you learn a few of the programming languages, you take the time to learn structured programming and design. You don't truly realize how important it is until you learn it and then have to go back and try to maintain code written by some guy who taught himself Visual Basic and thinks he's uber programmer because of it.

    Seriously. The code you make after you learn structured programming and design will take about half to a quarter of the effort to maintain. The only problem is that you sort of have to learn to do code in the first place before it'll make any sense.
  • Why IT? (Score:5, Interesting)

    by pipingguy ( 566974 ) on Saturday May 27, 2006 @11:52PM (#15418875)

    Consider "real" engineering (mechanical, civil, even electrical). Many old-timers in these professions are retiring/have retired. Based on input from my discussion group, there are not enough people getting into this field to replace the out-goers.

    With the current generation's "pre-installed" computer knowledge, we need more people to get into the traditional engineering disciplines. It's hard and you might not be in an office every day, but this is going to be a booming area soon.

    If you have highly-developed computer/programming skills already, all the better.
    • Re:Why IT? (Score:3, Interesting)

      by ADRA ( 37398 )
      Maybe there's a reason there are shortages in these fields. I have known dozens of engineers that ended up getting jobs in software development.

      I don't know why they didn't take a job in their field. Maybe the jobs are crap, maybe the pay just isn't worth it. Maybe the engineers are so old and wise that there are too few people graduating who can take up the slack?

    • Re:Why IT? (Score:3, Interesting)

      by dbIII ( 701233 )

      Consider "real" engineering (mechanical, civil, even electrical)

      Good point - you can alway move into IT later when your Masters project simulating something just turns into a computationally expensive random number generator run on a supercomputer.

      Oddly enough a mechanical engineering subject based around optimising models of dynamic systems to run on analogue computers gave a surprisingly good insight on how to write code in a lot of different situations. Also after milling machine G codes the hairiest

    • Re:Why IT? (Score:3, Interesting)

      by RPI Geek ( 640282 )
      With the current generation's "pre-installed" computer knowledge, we need more people to get into the traditional engineering disciplines. It's hard and you might not be in an office every day, but this is going to be a booming area soon.

      I graduated from RPI last year with a dual BS in Mechanical Engineering and Computer Science. As such, I looked into the job market for both of these areas. A number of things drove me towards IT rather than engineering, but the two biggest were money and time. Let m
  • One bite at a time.

    It's actually a personality "trait" when you often find things too overwhelming to just dive in and start. I have it, and it's something you should talk to a specialist about if you want to save yourself years of difficulty before you learn to overcome it on your own.

    That said, computer technology and programming is truly one of the most complex systems mankind has ever created. Don't feel bad. Just pick a language and start working on Hello World. You don't have to be able to write y
  • ...and see where it leads. it might lead you to databases, or web apps, or binary apps, who knows. scratch your own itch, as the saying goes. you're right that everything leads to everything else and it's all intermingled. don't worry, just jump in somewhere and learn what you need to as you go.
  • Many will probably disagree with me on this, but I would say one of the first things you should do is learn C. You don't have to learn all the details of it, just enough so that you can look at someone's else's sample code and understand what is going on. There is a lot of sample code out there on the net and a lot of it is in C. (You should at least know what a pointer is and how to use it.)

    In addition, many other languages borrow from C's syntax (prefix operators, for loops, etc). Knowing the syntax will
  • by ThousandStars ( 556222 ) on Sunday May 28, 2006 @12:16AM (#15418931) Homepage
    There is no substitute for motivation and personal interest, but classes can provide direction and orientation. All the buzzwords tossed around like footballs by and large boil down to different ways of applying a relatively small number of basic ideas. They're called computer "languages" for a reason -- once you understand the structure of a spoken/written language and know how nouns, adjectives, verbs and other parts of speech relate, you can construct sentences.

    What you're trying to do is somewhat akin to trying to understand paragraphs before you know how to construct a sentence or before you have an adequate vocabulary. An intro to CS class will provide the grammar and basic concepts that you can then apply to all these high level things.

    I'm sure some anti-school posters will tell you just the opposite, but you should remember that schools are only as good as the teachers and your willingness to learn. CS classes developed to provide structure to what seemed, even in the 80s, like a vast quantity of unregulated knowledge. A year of classes at your local community college may provide more help than three years of wading through newsgroup postings and online tutorials you don't entirely understand.

  • If you want to start with a higher level language like PHP or Ruby, that's fine, but at some point you should go back and learn C/C++ (IMO you can just do C++, but you should do non-OOP C++ first, e.g. no classes). Understanding things like memory management and pointers are key to understanding how your programs work. Truly understanding a high-level language involves knowing partially how that language works under the hood, and the interpreters/run-time environments are almost always written in C.

    The othe
  • Just go for a broad Information Science degree - that'll give you all the foundation you need in order to learn how to program. Luckily I pick up languages easily, to date I've got BASIC, VB, C, C++, COBOL, PHP, and some Python as well as a few dead languages in the mix.

    But the ones I consistently use are VB and PHP. And while you might think SQL is simple - it isn't. It's a very powerful query language. Do a primer in XML too.
  • And by "wheelwright" I mean someone who's training was made obsolete by technology

    First, pick something else you're interested in and use this as a focus for your studies, because the technologies you mention are almost random. If you don't have a reason for doing what you do other than "this stuff is cool" you're never going to learn anything. Like games? Start making games. Like online communities? Make one of those. Whatever, but you've got to have a direction.

    Next you need to learn more meta-techno
  • by l3v1 ( 787564 )
    First you could start by learning the differences between learning languages, libraries, coding techniques and Information Technology knowledge.

  • Programming ? (Score:2, Informative)

    by tuomoks ( 246421 )
    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 p
  • It'll stand you in good stead to learn Smalltalk.

    Now for the Free Database of choice:-

    And the books to study:-

    Get your head around that lot and you will be a very valuable item. Toss in a modicum of accounting knowledge to ice the cake.
    Everything mentioned in the above links is $ free.

Each honest calling, each walk of life, has its own elite, its own aristocracy based on excellence of performance. -- James Bryant Conant