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:
  • by Anonymous Coward on Saturday May 27, 2006 @10:35PM (#15418627)
    Easy. Pick something you are interested in and can hold you attention for a few minutes. Then figure out whether you are in it for the short-term or long-run. The start reading up on the classics like http://www.norvig.com/21-days.html [norvig.com], the Mythical-Man Month, and Peopleware.

    Cheers.
  • 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 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.
  • Re:Where to start (Score:4, Insightful)

    by Marcion (876801) on Saturday May 27, 2006 @10:43PM (#15418658) Homepage Journal
    Well my point was not to get overwhelmed. Just start where you can. You end up going around the hermeneutical circle several times anyway.

    I agree that in IT there is nothing to fear but fear itself. So be technologically independent, get your hands dirty, get the hard stuff out of the way first then enjoy the ride back down, set yourself up an Apache server or install Gentoo. Compile "Hello World" with GCC. Try to use Emacs or Vi.

    While graphical IDEs are all well and good, if you can put up with the command line, text-only way of doing things then you are a bit more future proof, know a bit more how it works and are ready when the brown stuff hits the fan.
  • Learn how to learn (Score:2, Insightful)

    by OakDragon (885217) on Saturday May 27, 2006 @10:43PM (#15418661) Journal
    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.

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

  • 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!
  • Python (Score:3, Insightful)

    by SQL Error (16383) on Saturday May 27, 2006 @10:55PM (#15418695)
    Learn Python. Seriously.
  • by masdog (794316) <masdog&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).

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

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

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

  • Formal Education (Score:2, Insightful)

    by n4088832 (804146) on Saturday May 27, 2006 @11:27PM (#15418806)
    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.
  • Re:DIY (Score:1, Insightful)

    by alfs boner (963844) on Saturday May 27, 2006 @11:51PM (#15418873) Homepage Journal
    Also, I'd avoid relying on advice from toxic communities [slashdot.org] for the naysaying unwashed masses [slashdot.org]. A majority of the people here are socially retarded high-schoolers or best-buy wage slaves who think Indians are the reason they don't have $75,000/yr programming jobs. The prevailing attitude in this forum is: "my life is shit. why should you have it any better?" Make sure you're casting a wider net.

    Also, make friends and NETWORK. Be a person that other people want to spend time with. Four years ago, all I knew was a little html and I got an awesome programming job because I knew someone. You can buy those o'reilly books AFTER you've landed the job.

    Good luck :)

  • by rolfwind (528248) on Sunday May 28, 2006 @12:15AM (#15418928)
    You left out a language like Lisp.

    I recommend the free book Common Lisp: A Gentle Guide to Symbolic Computation.

    http://www-cgi.cs.cmu.edu/afs/cs.cmu.edu/user/dst/ www/LispBook/index.html [cmu.edu]

    After that, Practical Common Lisp by Peter Seibel.

    The reason I recommend lisp is this: I started on C/C++ and those languages were always a pain to program in, I was wrestling them to translate the ideas in my head to the screen. Lisp is pretty easy once learned (easier than most languages I find), especially when you have to learn about Algorithms and Data Structures, a language like lisp is a godsend compared to C or C++ (as lists are a built in type, you can concentrate on the algorith, not the code, mallocing or free correctly, etcetera).

    The same goes for scheme (different dialent still lisp) or dylan (though I prefer prefix notation.)
  • 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.

  • by Jack9 (11421) on Sunday May 28, 2006 @12:23AM (#15418944)
    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 a very small % of the population...even IF they are interested in learning IT.
  • 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), you may as well learn discrete math and automata theory, among a dozen or so other core topics in computer science and numerous important topics outside the field.

    The advice about English is also important (although it probably wasn't a good idea to lead into that point by misusing the word "simplistic"). If you can write a coherent, accurate paragraph on anything remotely complex, then people with money will fund your projects, and not those of the 90% of your colleagues who are borderline illiterate. (This is not specific to computer science.)

  • Re:PHP (Score:3, Insightful)

    by Vorondil28 (864578) on Sunday May 28, 2006 @12:46AM (#15419021) Journal
    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. Perl not only can do everything PHP can do (the CGI stuff) but lots of other not-necessarily-web-related things. There are so many ways you can go once you know the basics of it. Why limit yourself early on?

    Now, I don't want to trash PHP. I'm sure it's a lovely language and I'm sure it may do x far better than Perl and others can, but when you're implementing your first bubble-sort, those kind of language-specific pros/cons are a long way down the road.

    Eh, just my $0.02.
  • Re:Where to start (Score:5, Insightful)

    by menace3society (768451) on Sunday May 28, 2006 @12:51AM (#15419044)
    Also, write at least one non-trivial assembly program. You may never use it ever again for anything real, but it will change forever the way you approach programming.
  • Re:Where to start (Score:4, Insightful)

    by Retric (704075) on Sunday May 28, 2006 @12:55AM (#15419056)
    I think it's a good idea to start by focusing on one area and then branching out. Once you have a good understanding of one area you can safely move on to other areas of computing to help you understand how this works.

    If you want to become a good programmer I would suggest doing something like this:

    Start with C.

    A) Write a program to open a file and display it to your screen.
    B) Expand that to make a copy of the file backwards.
    C) Make a new program that gets 2 numbers from a file (A and B) and prints A + B.

    Move on to C++ I would read Ivan Horton's beginning C++
    A) Start with a program that opens a file, reads a list of numbers, and sorts them.
    B) Extend that so you can work with 10+GB files quickly. (This would be a good time to pick up a book on computer algorithms and learn how your operating system handles memory.)

    Learn enough ASM to replace 2 functions in the above project with ASM

    I would stick with java for a while.
    A) All the above projects
    B) A simple web server.
    C) Extend the web server so it returns the contents of a small Database.

    Learn enough LISP and Pearl to parse a java file and find all the variable names for each function.

    At this point you should pick complex project you want to work on and using the best language for that task get it to work.

    PS: Have fun.
  • Re:Where to start (Score:5, Insightful)

    by maxwell demon (590494) on Sunday May 28, 2006 @02:20AM (#15419258) Journal
    It is IMHO a bad idea to learn C directly before C++. Good style C programs are usually bad style C++ programs, so you'll have to "unlearn" a lot of habits from C. OTOH, when learning C++ first, then it will be easier to go to C, because the compiler will usually complain if you use C++-typical idioms.

    If you insist on learning C first, it's probably a good idea to learn Java before C++, because that way I think it's easier to get into OO habits.

    It may even be a good idea to have some LISP experience before going to C++, because some advanced template techniques are basically functional style (I guess that's why many people shy away from those).

    BTW, I guess you meant Perl [perl.com], not Pearl [uni-hannover.de].
  • Re:Where to start (Score:1, Insightful)

    by Anonymous Coward on Sunday May 28, 2006 @02:25AM (#15419264)
    Stay away from I.T. Let the Indians in Bombay and Calcutta do this. The tech changes too fast, your company will not train you and you'll be obsolete and irrelevant in the market before you're 30 y.o. Instead, go into I.T. sales, make a ton of money and avoid the geek trap. No matter how smart you are, I.T. is for the young. How many 48 y.o. s/w engineers do you see ??

    Former I.T. geek, turned I.I salesman.
  • Re:Where to start (Score:5, Insightful)

    by 3770 (560838) on Sunday May 28, 2006 @02:43AM (#15419303) Homepage
    Here's my tip. Ignore anyone that suggests that you learn assembly.

    It's like telling an architect that he needs to learn how to make bricks to be a good architect.

    You can learn only so much in a given period of time. Don't waste it on something you can't use. I understand assembly, and it is at times a comforting feeling, but in all honesty I belive the time I spent learning assembly would have been better spent learning design patterns.
  • Re:Where to start (Score:4, Insightful)

    by grammar fascist (239789) on Sunday May 28, 2006 @03:05AM (#15419351) Homepage
    It may even be a good idea to have some LISP experience before going to C++, because some advanced template techniques are basically functional style (I guess that's why many people shy away from those).

    Naw, it's because C++'s template syntax is crufty and stupid, and the error messages are totally opaque.

    I'd say Java (or C# - same thing, really, except C#'s libraries suck more), C++, Lisp, C++.
  • Re:Where to start (Score:4, Insightful)

    by Mycroft_514 (701676) on Sunday May 28, 2006 @03:17AM (#15419374) Journal
    >It's like telling an architect that he needs to learn how to make bricks to be a good architect.

    No, it's suggesting that you have to know how strong bricks are to build a building that won't collapse. And the Dean of the school of architecture where I went to school was there because a building he designed collapsed.

    Anyone that suggests that you DON't need assembler is fooling themselves.
  • Re:Where to start (Score:2, Insightful)

    by holy zarquon's singi (640532) <abuseNO@SPAMtotaldatasolution.com> on Sunday May 28, 2006 @04:16AM (#15419506) Homepage
    yeah, buy a mac. Good idea unix without any pain whatsoever. Just make sure terminal is in your dock and opened at startup. However, by going the unix route you will learn the basics of how to do scaleable IT. Get a good $EDITOR and learn how to use it. For the next 5 years or so you will meet political resistance from windows zealots. use cygwin and explain to management how a real unix environment would be much easier to cope with. Make yourself more valueable than the SharePoint jockeys in less time with fewer resources. Tolerate javascript, (barely) tolerate IE (and try to deprecate its use). Deploy everything over the web unless you make a can make business case for console only. Jifty and Catalyst. Give people with problems rescue cds. ...
  • Re:PHP (Score:3, Insightful)

    by tehshen (794722) <tehshen@gmail.com> on Sunday May 28, 2006 @04:24AM (#15419520)
    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 guy off on the wrong foot.

    I would learn something like Perl or Ruby or Python, which still have your advantages {interpreted, string manipulation, file handling, and not overly complicated}, and the added advantage of being good.
  • Re:Mainframes (Score:1, Insightful)

    by Anonymous Coward on Sunday May 28, 2006 @05:45AM (#15419675)
    As someone who was trapped in mainframe hell for over a decade before managing to dig an escape tunnel into the modern world, can I just say that learning mainframe is the WORST ADVICE EVER...

    The work is well-paid if you're a contractor) and poorly paid if you're not. And it's a terrible place to be. The work is uninspiring, the tools and languages are simultaneously over-complex and under-powered, and worst of all if you try to go someplace else and tell an employer "but i know COBOL! and PL/1! and Job Control Language" then they will laugh you right out of the door. The only way I managed to get out was to spend my own time and money learning C and UNIX and then taking a massive pay cut to go and work on Embedded tools (which is the next worst place to be BTW).

    You want a high-paid job ? Learn Java.
    You want interesting and challenging work ? Learn C++.
    You want an easy life ? Learn Python!

    Sadly, the *best* programming environment ever (Obj-C and Cocoa on OS X) has even less programming positions available than Mainframe. So probably a waste of time, but nice to learn.

  • Re:Where to start (Score:4, Insightful)

    by donaldm (919619) on Sunday May 28, 2006 @06:15AM (#15419727)
    Actually you are dead right on this. I find it is better to be a generalist (you normally earn more for a start) than a specialist because you have the ability to actually think outside the square. In my job if there is a need to learn a specific language I just learn it (may take a week or two) since as far as I am concerned most Programming languages are similar.

    Basically from a programming perspective I would not be as good as a specialist, however I don't normally program for a living and actually design at a much higher level so I normally tell programmers what is required.

    Not sure about the Mac. I find Linux with some good stats packages work for me and If you want a serious document preparation package use LaTeX (it's free and surprisingly easy to use).
  • Re:Where to start (Score:3, Insightful)

    by CastrTroy (595695) on Sunday May 28, 2006 @07:11AM (#15419829) Homepage
    I think the only good programmers, and the only programmers I like to work with, are those who are passionate about programming. The people who see it as a job, or a way to get money, are not the kind of people that I enjoy working with. Most of the time they know less, because programming is work, so they don't do as much on their spare time, and didn't spend every spare second in high school (where there are the most spare seconds, and your brain is a sponge) learning about computers. Sports professionals are the same way. You don't get to the NBA by cheating through 4 years of college, and lying on a resume. You get to the NBA by practising every day of your life from the time you are 5, and knowing that this is what you really want to do with your life.
  • Re:Where to start (Score:2, Insightful)

    by Poltras (680608) on Sunday May 28, 2006 @08:54AM (#15420051) Homepage
    Depends. If you cannot be a real solid expert on something, then it doesn't pay up. Look at the COBOL people who couldn't do anything else than COBOL. How many assembly expert do we really need in this world?

    What I was saying is tat being an expert doesn't pay up because technology change really often. How long before any serious project will be changed to Java (or even .Net)? If you work for that company, and you're the C expert and don't know anything about java, what of your job? How long Ajax will be the new hype? What will we do if the experts don't want to learn any other thing because they are too old? How many experts and specialist already don't want to learn something different? And btw, I've met a lot of those guys that were working in dark closet because they did not want to "spoil their brain" and learn .net...

    Generalist is not about knowing _everything_. Generalists should not be whining about learning new things. They should be interested in everything, and particularly at solving problems using new and revolutionnary ways. They are the real kind of hackers. Hell, that's how civilization advances at all.

  • Re:Where to start (Score:2, Insightful)

    by tootlemonde (579170) on Sunday May 28, 2006 @10:44AM (#15420394)

    There may be a better case [slashdot.org] for learning assembly as a first language than there is for learning any other language first if you are going to pursue a career in programming.

    There's no other single place where you encounter all the fundmentals of programming and machine architecture in order to write the simplest program.

    I've forgotten the syntax of assembly years ago and couldn't write anything in it today. Yet, I think it was the most valuable single course I ever took.

    In fact, if you take a course in assembly and wind up hating it, you might question whether you ought to be a professional programmer all. Consider network administration [slashdot.org].

  • Re:Mainframes (Score:2, Insightful)

    by id09542 (635670) on Sunday May 28, 2006 @10:58AM (#15420442)
    I've been a mainframe systems programmer for 20 years now. Definately a "fun" and secure job. We code in Assembler, C, Java, multiple scriping languages, REXX, Perl, run Websphere and the such. I have not touched COBOL for 15 years, nver used PL/I and I am seing a increase of students coming out of college wanting to start back in the Mainframe arena. I am seeing some of the mindset of Mainframes being archaic finally getting past what the Windows/UNIX "trade" rags have been preaching. I concede the fact it is easy for someone to "Play" on a Windows/UNIX machine in their home as most people don't have a Mainframe in their bsmt. Intersting thing I have seen over the last few years, the physical size of the mainframes are now smaller than the Unix/Windows machines and use less environmentals ... funny how that has come around.

Power corrupts. And atomic power corrupts atomically.

Working...