Beta

Slashdot: News for Nerds

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Starting an Education in IT?

Cliff posted more than 8 years ago | from the where-is-the-best-place-to-begin dept.

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?"

cancel ×

425 comments

Where to start (1, Funny)

Marcion (876801) | more than 8 years ago | (#15418610)

man ls

After that just follow your nose and interests.

Re:Where to start (1)

Poltras (680608) | more than 8 years ago | (#15418624)

man man is still better to start learning :)

Seriously though, what you want to do? There is sooooo much out there that we cannot just point at something and say "that's the thing to learn". But if you want one trick here: don't be a specialist, be a generalist. Learn different things, and think about different way to do them. Think different! (and buy a mac)

Re:Where to start (4, Insightful)

Marcion (876801) | more than 8 years ago | (#15418658)

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.

Start not; do or do not. Powertools kick butt too (1)

Solitonjoy (690420) | more than 8 years ago | (#15418709)

So then, it certainly helps to have a well-maintained copy of tcsh around along with bash and vim; you kind of learn a bit of those, then you either have ideas for some cool ways for things to be and work to make them happen, or you run out of interest and maybe eke out a living repairing XBox remotes and renewing catalysts, I dunno.
        The thing is, if you are going to plot out the things you think you can learn and do, go ahead and map them together so that even if you end up rerouted, your stuff gets done and interests served. If instead you plot things out that you develop a hairy kolgomorov plot of what you may have been interested in, you are becoming some kind of tortured historian rather than an Electrical or Mechanical Engineer or Computista or Web Linguist.
          Mathematica running in the background, use of User Mode Linux, a certain caprice with the pinout of your PS2, genuine distaste for having the same book loaf around more than a week, and a rabid pursuit of the journals and apocrypha particular to your interests might help.

          You may need to leave periodic reminders to use a tennis racket (juggle a ball while running, etc.) and some hippie kryptonite.
          Once you know how it works, you can always repurpose things attached to your body like EKGs, BVO2Ms, etc.

Re:Start not; do or do not. Powertools kick butt t (3, Informative)

PKPerson (784484) | more than 8 years ago | (#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.

missed one step though... (0)

Anonymous Coward | more than 8 years ago | (#15418626)

man man

:)

Re:missed one step though... (0)

Anonymous Coward | more than 8 years ago | (#15418641)

And for the gay hopefuls:

man mount

Re:missed one step though... (1)

toadlife (301863) | more than 8 years ago | (#15418729)

man hier is good one too in *BSD. Do they have that in linux distros, and more importantly, if they do, are they up to date/accurate?

Re:Where to start (1)

xTantrum (919048) | more than 8 years ago | (#15418700)

Get a good book on C and learn it. I suggest the books by stephen prata C primer plus. its in its fifth edition. IMHO, C is the mother of All invention. well at least on the software side. Serioulsy its a really good book.

Re:Where to start (4, Informative)

Nicolay77 (258497) | more than 8 years ago | (#15418757)

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

Re:Where to start (1, Interesting)

Marxist Hacker 42 (638312) | more than 8 years ago | (#15418909)

I still say assembly- there's a darn good bit of understanding you get when you're programming every memory location manually.

Learn by doing. (0)

Anonymous Coward | more than 8 years ago | (#15418618)

Start a complex project. And read some computer science books. And learn how to design a good user interface, we can never have too many of you guys!

Best place to start (0)

Anonymous Coward | more than 8 years ago | (#15418621)

The best place to start is in your youth.

look under the hood (4, Interesting)

icepick72 (834363) | more than 8 years ago | (#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.

Discrete Math: Foundation of Computer Science (4, Insightful)

reporter (666905) | more than 8 years ago | (#15418722)

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 (5, Funny)

Anonymous Coward | more than 8 years ago | (#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."

Re:Discrete Math: Foundation of Computer Science (3, Informative)

Anonymous Coward | more than 8 years ago | (#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.

Re:Discrete Math: Foundation of Computer Science (1)

Korin43 (881732) | more than 8 years ago | (#15418887)

You're giving it too much credit. Every review I saw contained the phrase "worst math book ever".

Mathematical Association of America (4, Informative)

reporter (666905) | more than 8 years ago | (#15418908)

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.

Re:look under the hood (1)

tezbobobo (879983) | more than 8 years ago | (#15418856)

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.

Pick something you are interested in (1, Insightful)

Anonymous Coward | more than 8 years ago | (#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.

Learn the basics (0)

Anonymous Coward | more than 8 years ago | (#15418634)

Learn the basics of a couple of programming languages and then get experience. Being a programmer or an IT specialist are both like being an auto mechanic. You can learn a lot from the books, but you'll learn a lot more from experience--especially if you have a good mentor.

Your goal at this point in time should be to have enough knowledge to at least get in the front door. And if possible, work at a non-Windows shop that makes custom applications. You'll learn more.

Oh, and I forgot, if you have time, learn electronics and assembler. Both of those will help out way down the road once you have to deal with many subtleties in the world of computers (of which there are many).

DIY (3, Informative)

nt5matt (794945) | more than 8 years ago | (#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 (0, Troll)

FeSceptre (956351) | more than 8 years ago | (#15418745)

It is far, far too late for you. Get prepared for a mediocre middle-management IT job that barely relates to IT. Every successful bloke in the true IT community has already dedicated himself to his dream, his passions, and therefore creates his future path. If you've done nothing, no demos, no experiments, no anything... give it up to a life of mediocrity.. THere are far more well dedicated with the obsession for creativity and desire for knowledge that blokes who ask questions like yours never will understand.

Re:DIY (1, Insightful)

alfs boner (963844) | more than 8 years ago | (#15418873)

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

Re:DIY (5, Insightful)

bobdapunk (190639) | more than 8 years ago | (#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 /.

Re:DIY (0)

Anonymous Coward | more than 8 years ago | (#15418768)

MySQL is not a real database (just read the manual and if you still don't get it you never will). PHP is for script kiddies.

You can't learn everything (4, Insightful)

jdhutchins (559010) | more than 8 years ago | (#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"

It isn't about "everything" (4, Insightful)

fm6 (162816) | more than 8 years ago | (#15418774)

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.

Programtic structure (5, Insightful)

dave562 (969951) | more than 8 years ago | (#15418646)

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.

Re:Programtic structure (1)

SilverJets (131916) | more than 8 years ago | (#15418839)

Absolutely. Learn the theory first. Once you know the theory it can be applied in practically every language out there. The language doesn't (always) matter, the *idea* is what matters.

Learn a little about everything (1)

m-wielgo (858054) | more than 8 years ago | (#15418648)

Learn about different interest areas and use them to your advantage. You do not always need to know the inner-workings of something to use it effectively, saving you time and money.

Generalist, or specialist? (4, Insightful)

bariswheel (854806) | more than 8 years ago | (#15418650)

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

Re:Generalist, or specialist? (0)

Anonymous Coward | more than 8 years ago | (#15418867)

I want to be a Nigerian specialist-generalist who organizes multi-conferences on epistemological paradigms and interdisciplinary approaches to cybernetics, systemics, and informatics.

Start with HTML (0)

Anonymous Coward | more than 8 years ago | (#15418652)

As a college student working toward a BS in Computer Science and sneaking in an AAS in Web Design, here is my suggestion.

If you want to do web technologies primarily, then start with HTML. Since you will use this in almost every other area which you want to learn, become comfortable with hand coding html.

Second, setup a Linux box to act as a development server. This will force you to learn how to work within the *nix world. In the interum you can use XAMMP for a nice bundled Windows package with Apache, PHP, MySQL, etc.

Next, learn some foundational OO language. The two staples are C++ and Java, though there are many others. Once you become comfortable with one language you will find that most other languages are pretty much the same.

Finally, go learn one dynamic web programming language then when you are comfortable with it learn others.

Wrong focus, perhaps (2, Insightful)

johndiii (229824) | more than 8 years ago | (#15418657)

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:Wrong focus, perhaps (1)

cubicledrone (681598) | more than 8 years ago | (#15418708)

I am reminded of the amusement of a master carpenter when confronted by an apprentice with a shiny new box of tools.

I'm amused that people still remember apprentices, since business has turned its back on the entire concept. There is no such thing as an "apprentice" any more except as a gimmick for a television show that makes sport out of the suffering of others. Businesses have no use for apprentices, because they expect someone else to pay for training their experts.

Having a purpose of end product... (1)

bucktug (306690) | more than 8 years ago | (#15418660)

For me it has never been enought to know the technology... I had to have a project to work on. So the place to start is to define what you want to do.

Everything is built on top of something else. Every idea comes from someplace. And if you know what you want to do then you can investigate stuff that is at its base what it is you want to accomplish.

Best places to start W3 Schools [w3schools.com] ...

That covers the basics of everything.
I work in Flash quite a bit and people ask me where to start learning flash. With the project learning method I send them to http://gotoandlearn.com [gotoandlearn.com] . The tutorials on that site use some of the industry proven Actionscipt methods and give a good base level knowledge.

So find a project and get cracking.

--Chris

Learn how to learn (2, Insightful)

OakDragon (885217) | more than 8 years ago | (#15418661)

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.

Re:Learn how to learn (1)

newt0311 (973957) | more than 8 years ago | (#15418853)

I would have to disagree with trying to learn java for a starting language. It si too limited in ficus and there is nothing special about objects. They are just records: things people had back in the 1985 but never used until 1990 in c++. Objects only became popular with java because they were an easy marketing tool.

The basics of programing are not in objects or syntactical structures but that is what java will try to teach you. The basics of programming are in telling the computer what to do in a simple and organized manner. The forced object oriented nature of java and the variable typing just get in the way and cause a headache. In a corparate environment, this is a secondary concern and the way java forced inept programmers of write decent code is more important (that and the fact that it already is popular helps minimize feature copies and ensures that you won't be fired if you suggest java no matter how stupid a decision it is) but for learning, it is possibly the worst language you can think of.

For example: java does not have several useful capabilities like function pointers, advanced types (think python dictionaries) and most of the reflection capabilities are locked up in the obscure reflection libraries which are not even supposed to be used by anybody other than java IDEs and debuggers etc. even though these techniques are very useful. (if anybody thinks function pointers are not useful, just try writting a GUI program in JAVA and you will suddenly wish that you had them).

Start with an advanced language like Python and LISP. Both these languages have interactive interpretters which means that you can try out your code on the fly, are well documented, and come with every Linux distribution out there. These languages also have very advanced capabilities and do not force the programmer to use a certain style and let the programmer do what suits them best.

DO (5, Insightful)

iguana (8083) | more than 8 years ago | (#15418664)

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.

learn by solving *your* problems (5, Informative)

Speare (84249) | more than 8 years ago | (#15418665)

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.

Re:learn by solving *your* problems (1)

jthill (303417) | more than 8 years ago | (#15418685)

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 principle I've ever encountered.

Re:learn by solving *your* problems (0, Offtopic)

SamBeckett (96685) | more than 8 years ago | (#15418866)

My momma says aligators or ornary 'cause they've got all them teeth and no toothbrush.

Re:learn by solving *your* problems (1)

WinterSolstice (223271) | more than 8 years ago | (#15418872)

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.

-WS

Re:learn by solving *your* problems (1)

slapout (93640) | more than 8 years ago | (#15418896)

Well said.

Knowing what to learn (3, Insightful)

mysidia (191772) | more than 8 years ago | (#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 (4, Interesting)

darkain (749283) | more than 8 years ago | (#15418667)

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 (0)

Anonymous Coward | more than 8 years ago | (#15418769)

I've also been suggesting the PHP approach. It's an easy language, and once you kow how to do PHP loops/conditions/functions/etc, you also mostly know how to do it in C/C++, Java, VB, etc.

Plus it's easy to put up a simple interactive web site.

I would also recommend going to Sourceforge and downloading the code for various programs and trying to figure out how they work!

Best way to start... (3, Interesting)

citking (551907) | more than 8 years ago | (#15418671)

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

Unix (1)

linguae (763922) | more than 8 years ago | (#15418673)

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 (scripting languages, web development, etc.) seems to revolve around the ideas of Unix, even if you're doing all of this stuff on a Windows box. Learning Unix is very beneficial, even if you end up hating it and stick to Windows as your desktop OS. Learning Perl will also be much easier coming from a Unix perspective rather than coming from a Windows perspective.

where to start (0)

Anonymous Coward | more than 8 years ago | (#15418677)

$man man

Don't start with the tools, start with the concept (4, Insightful)

cookiej (136023) | more than 8 years ago | (#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!

One language/platform at a time (1)

dcam (615646) | more than 8 years ago | (#15418687)

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 well to other things you learn.

If there are some things that would be well worth learning:
- C
- C++ (particularly the STL)
- a scripting language
- HTML/CSS/Javascript

So many responses, so much BS (3, Informative)

Mycroft_514 (701676) | more than 8 years ago | (#15418690)

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.

Re:So many responses, so much BS (0)

Anonymous Coward | more than 8 years ago | (#15418781)

assembler? why not start out with maths and physics first? them move up to electronics and the such. and dont't forget the holy scriptures and valium in between for soul nourishment.

no, really... my thoughs are that the man should pick a project and get it done using the good old try and error method. then move on to the next project and repeat...

A Good Foundation... (4, Informative)

Kr3m3Puff (413047) | more than 8 years ago | (#15418693)

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.

It doesn't matter (0)

cubicledrone (681598) | more than 8 years ago | (#15418694)

1. No matter what you know you can't find a job anyway
2. If you can find a job, you can't keep it.
3. If you can keep it, it doesn't pay enough.
4. If it pays enough, it's miserable work and your boss is a rat fuck liar cheat blow-dried phone-flipping asscrack.

Business has turned its back on its neighbors. They are interested in nothing except your money. You could have three PhDs in Computer Science and they'd still find a reason to disqualify you from any job.

They aren't happy with their share. They want your share and the other guy's share too, and they'll fuck over everything and everyone else to get it.

Cue Slashdot apologists for the Neo-Darwinist "screw everyone else" Faux-Capitalist game show economy.

Re:It doesn't matter (1)

cookiej (136023) | more than 8 years ago | (#15418711)

"It looks like someone has a bad case of the Mondays...!"

Seriously -- you should write childrens' books.

Re:It doesn't matter (0)

Anonymous Coward | more than 8 years ago | (#15418719)

Business has turned its back on its neighbors. They are interested in nothing except your money. You could have three PhDs in Computer Science and they'd still find a reason to disqualify you from any job.

They aren't happy with their share. They want your share and the other guy's share too, and they'll fuck over everything and everyone else to get it.

Cue Slashdot apologists for the Neo-Darwinist "screw everyone else" Faux-Capitalist game show economy.


No apologies here, but I think you're a bit extreme.

Faux-Capitalist game show economy


This is so dead-on it's not funny.

Anyway...

My sugggestion: get a BS in Nursing or go pull an apprenticeship in plumbing. If you have a small penis and/or like to beat people's ass semi-legally go into law enforcement.

Re:It doesn't matter (0, Offtopic)

Irish_Samurai (224931) | more than 8 years ago | (#15418830)

My sugggestion: get a BS in Nursing

Actually, an even easier and more profitable path would be to get an education as a pharmacy tech. Pharmacist techs make more and are in an equal demand to nurses.

Re:It doesn't matter (0)

Anonymous Coward | more than 8 years ago | (#15418735)

I agree, dont walk but run from IT... All the jobs are in India. I should have got out of this 20years ago.

Re:It doesn't matter (0)

Anonymous Coward | more than 8 years ago | (#15418847)

Or you could become a motivational speaker like this guy.

Python (2, Insightful)

SQL Error (16383) | more than 8 years ago | (#15418695)

Learn Python. Seriously.

Re:Python (1)

newt0311 (973957) | more than 8 years ago | (#15418882)

Amen to that. Especially with the intrepretter, learning this language is a breaze.

My List (1)

Tablizer (95088) | more than 8 years ago | (#15418703)

Here is my list of "musts":

* HTML
* Java
* Php
* SQL and relational theory
* JavaScript
* Lisp (not used much in practice, but has interesting concepts)

Note that this is not necessarily an endorsement of these languages, only a practical suggestion.

Don't Worry About It, It'll Change (1)

kidventus (649548) | more than 8 years ago | (#15418705)

My best advice is: Stop worrying about the tress. They change. Focus on the forest

You've named a lot of high-level and low level technologies together (i.e. Visual Basic, AJAX). What you need to do is learn the basics, a good language to start with is Java, as well as read design patterns, OO design, algorithms, ect.

The technologies you just named today will seem very old on your resume just two years from now. You'll find that once you pick a field, your list of things to learn will be very different.

Java Enterprise? EJB, IoC, SDO, Ant, Spring, Hibernate, REST, ect.
Microsoft? C#, ADO.Net, WinForms, Avalon, ect.
Web: AJAX, JavaScript, CSS, XHTML, PHP, ect.

You need to worry about all the trees after you pick what forest appeals to you.

Finally, Avoid tech ego; do your best; Always think in concepts, not code; always think of the use case; never forget they count on you to tell them what is best, like you count on a doctor. That's a real responsibility. Lives have been ruined and millions wasted because people didn't think they had the responsibility in IT they do.

Re:Don't Worry About It, It'll Change (1)

Irish_Samurai (224931) | more than 8 years ago | (#15418880)

Nicely put.

You HAVE to choose an area of interest. Also, learn the business environment that your interest rests in. If you are going to be skilled AND revenue generating in an area of expertise this is a must. Once you understand the underlying concepts of a field and its diciplines - you will need to be vigilant on where they are going in order to apply your knowledge to maintain your revenue. If you can maintain your revenue in this manner, it effectively co-opts business to fund your learning.

Finally, Avoid tech ego; do your best

I would like to add to this with my own philosophy. If you run into tech ego - try to cater to it initially. There are those that will tell you that you suck, that you are a newb, and that you have no business doing what you are doing. These people tend to have some piece of knowledge you can garner from them. Explain what you are trying to do and they will undoubtably explain how you should do it and why.

THEN GO HOME, DO IT THEIR WAY, AND TRY TO BREAK IT.

These types will always give up the "inside info" so they can look smarter than you. Take it and run with it - you should be in this for the knowledge, not the noteriety. Their hubris will give you a great bit of information to build your skills on.

never forget they count on you to tell them what is best, like you count on a doctor. That's a real responsibility.

I wish more people understood this instead of assuming it.

Not the best advice...but a good starting point... (2, Insightful)

masdog (794316) | more than 8 years ago | (#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).

Knuth's Literate Programming. (1)

sidles (735901) | more than 8 years ago | (#15418723)

Before all else, learn Literature Programming [literateprogramming.com] , in the style invented by Don Knuth [stanford.edu] .

We use nuweb [sourceforge.net] ---it works with any language.

Assembly Language (1)

kmsigel (306018) | more than 8 years ago | (#15418726)

Seriously, learn some assembly. Read the handbook. (Intel IA-32 Software Development Manual or equivalent for other processors.) There is no substitute for knowing what the processor is actually capable of doing. Then you can appreciate what a high level language is doing (and not doing) for you. Look at the assembly that the compiler produces. This is all fun stuff. Enjoy it. (If it isn't fun, move on to some other profession.)

Then you can move up to C, C++, whatever. Just realize that there is nothing magical about high level languages. The processor can still only do what you read about in the handbook. Personally, I've never gotten past using Assembly, C, and C++. I've never had any use for any other languages. None of them do anything fundamentally different from what I use.

This may not be the right path for you, but it has worked very well for me.

Lots of different paths are available! (1)

ErichTheRed (39327) | more than 8 years ago | (#15418727)

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 published, it would be very easy to write your own software, which was probably the point. Fast forward to today, and you get way too much to deal with when you get a computer. It used to be really simple to create a "Hello world" or even something more complex in BASIC or some other language. Now, at least on the Windows side, you have a development environment that, to me, is very hard to get going with in anything but Visual Basic. The document object model for web development makes sense to me, but Windows forms programming seems like way too much effort to learn. Besides, grunt coding work is all going to be overseas soon anyway...

Since computing is so pervasive now, you really have to pick a branch to learn more about and do as much hands-on research as you can. As an IT professional (sysadmin, non-developer type,) I could never possibly keep my focus on every single new system, new trend, etc. There's just too much information to digest and still have a life.

The way I always pick up something new is find a neat project online, or start from the perspective of solving an existing problem I have. It's a fun, challenging and often really frustrating way to learn stuff. THe fun thing is going back after a few years and shaking your head about the crazy, inelegant way you learned Technology X.

One other important thing...in the computing / IT world, you're always learning. Even if you end up doing the same type of thing, the way you do that type of thing can and does change overnight. Just ask anyone who's worked in corporate IT from the mainframe era to the PC era to the client/server era and now back to the mainframe-style centralized computing era. If constant change is what you're looking for, welcome!!

Good luck!

Focus (0)

Anonymous Coward | more than 8 years ago | (#15418736)

I'm not sure about the rhetoric in your question - I wouldn't write off Javascript and SQL as "basic."

It seems to me you should focus on learning how to program - languages and other "technologies" will fall into place reasonably quickly after that. Try Python, or Ruby - they're nice languages, with good documentation and strong communities. Avoid C++ for now.

Further, focus your interest - what aspect of working with computers excites you the most? Even if you reply "everything," select something and pursue it so that you have a framework for learning.

And for some perspective - I'm an applications programmer, mostly Objective-C, and I couldn't tell you the first thing about AJAX or Perl or a host of other acronyms. In other words, not knowing "all the different technologies" hasn't hurt me yet, AFAICT.

Best of luck.

If you are interested in web applications (1)

jjn1056 (85209) | more than 8 years ago | (#15418738)

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 made it work. Your results might vary.

IT (and programming) does not happen in a vacuum (2, Insightful)

ScentCone (795499) | more than 8 years ago | (#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.

Re:IT (and programming) does not happen in a vacuu (1)

masdog (794316) | more than 8 years ago | (#15418755)

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.

Re:IT (and programming) does not happen in a vacuu (1)

ErichTheRed (39327) | more than 8 years ago | (#15418790)

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.

Very important, and often overlooked. The way I often summarize this is "They're not really paying you to play with computers all day." You have to be smart on both the technology and the business side of the fence. I see great techies coming into the field I work in (transportation) and get frustrated because they really don't know what goes on behind the ticket counter and how they're connected to it. Consequently, IT departments get a bad reputation because they're just perceived as a necessary evil to keep the business running.

Mainframes (4, Insightful)

DaKrzyGuy (25850) | more than 8 years ago | (#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 :)

Get a well rounded education (1)

Tog Klim (909717) | more than 8 years ago | (#15418748)

Go to a university with an accredited CS department and get yourself a BS degree. The technology and buzzwords change every few years, but the theory still applies. Learn the theory and then use the tools to apply it. As the tools improve you will still use the theory. If you go learn tools, then when the tool changes in a few years, you will be lacking.

You've missed something (1)

93 Escort Wagon (326346) | more than 8 years ago | (#15418759)

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.

Once you learn the principles of one language, you can pretty much intuit the others from there. So learn a language or two, but then take a course on database theory or interface design. Figure out what you like, and then focus on that.

Look at your local university's curriculum (3, Insightful)

oSand (880494) | more than 8 years ago | (#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:Look at your local university's curriculum (1)

hendersj (720767) | more than 8 years ago | (#15418795)

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.

Re:Look at your local university's curriculum (1)

WinterSolstice (223271) | more than 8 years ago | (#15418901)

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.

-WS

Commitment (1)

Galactic Dominator (944134) | more than 8 years ago | (#15418775)

Many people have the ablility to learn quickly and are interested in wide variety of fields. In my experience, it's better to not think of those abilities as an asset. Interest and ability are a dime a dozen. It's the ones who have commitment and discipline to their respective fields who are truly valuable. Don't *ask* what you should be interested in. Find something you like, integrate yourself in the community, and don't get distracted by philosophical ruminations or side projects.

Just start. (1)

SanityInAnarchy (655584) | more than 8 years ago | (#15418783)

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 at all in the order I described, but it can help to start with something that gives you immediate results, like HTML, instead of something that'll be abstract and arcane until you combine it with other tech, like MySQL.

But, the important point is, even if that's too much, if you just pick one of them -- say, HTML -- you're getting somewhere.

Specialist or Generalist? Try both. (1)

cwcowell (443546) | more than 8 years ago | (#15418786)

My old college's motto applies well to anyone trying to "learn IT": learn a little about a lot of areas, and a lot within a few areas. That way you can experience what it's like to be both a generalist and a specialist. Decide which approach you like better, and follow that path as a career. Yes, it takes some time to experience both sides of the fence, but if you can afford that time, it will be very well spent. Personally, I'm a generalist who wishes he had become a specialist, but different temperaments lend themselves to different types of careers, and you may discover that you lean the other way.

Avoid programming suites. (1)

Mister Jimm (976730) | more than 8 years ago | (#15418794)

Visual Studios and WYSIWYG-majigs can provide huge conveniences (most of the time) to the experienced developer, and as such you will probably want to learn them someday, but when you're learning a language they will tend to leave you with that "I don't really feel like I get it because too much was done for me" feeling. Try to do all your work using a command line (learn to use GNU's Make or some scripts when commands get long) and a text editor (vi, emacs, notepad++, something that doesn't put too many buttons and graphical "helpers" in your face). I say that mostly as an aside -- I too have the urge to go on for a few paragraphs about the importance of staying problem-oriented and understanding what's really going on backstage, but it's been said and said well. :E

there is an order (1)

moochfish (822730) | more than 8 years ago | (#15418796)

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 is that people will tell you if you want to do it for a living, you can't start out trying to master everything. In fact, it's probably a disadvantageous to start off so broad.

To address another part of your question, while the technologies may seem interrelated, there is definitely NOT a full circle in terms of requirements. For example, a programming language rarely requires a deep understanding of another technology to pick up. And if you want to be safe, start at the basics. Don't start off trying to program in AJAX, which is a mashup of various programming languages and methodologies. First you start with HTML, then you work on learning server-side programming such as perl, python, or php. Then you learn client-side programming (Javascript). Then you learn XML. Finally, you put it together and you are ready to play with AJAX.

So to sum it up, I'd say you need to really investigate where you want to focus your efforts. A very clear path will emerge if you actually stop to read up on each technology and if it is built upon others (which you would then have to learn first).

Just my .02 (1)

nege (263655) | more than 8 years ago | (#15418797)

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) or PERL, but pick something somewhat relevant to what you are trying to accomplish and something that looks fun. Also, don't take too much stock in what someone says about learning this or that language versus another. Most of them have very similar constructs anyway. Remember that opinions are like belly-buttons. Everyone has one!!

Republican WAR on IT (1)

B_SharpC (698293) | more than 8 years ago | (#15418802)

REPUBLICAN WAR on IT Republican Party has declared War on IT. Do not walk away, rather run away from IT. Republicans have selectively targeted IT & Computer Science for massive immigration foriegner visas. Proof? Google h1-b visa database. Funny how Medical Doctors are not targeted even though it would lower the high cost of medical care. Nursing industry is also targeted. IT and Nursing have a bulleye from the Rebublican party. Managed markets are not free markets. Run away from IT and do not look back. :)

Formal Education (2, Insightful)

n4088832 (804146) | more than 8 years ago | (#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.

Learn a few things, and learn them well (1)

MikeRT (947531) | more than 8 years ago | (#15418808)

--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 something on your own. Nothing says you're not fit to be a software developer or engineer more clearly than complaining about having to teach yourself new things.

Learn one statically-typed, major language like Java, C#, C++ or C well, then learn a scripting language decently. Get familiarity with build tools beyond bullshit like notepad and manually running the compiler ever compile. You'll be using full-blown IDEs or build scripts. Learn all of the basics about databases and networking that you can.

What Does Your Job Require? (2, Informative)

kjh1 (65671) | more than 8 years ago | (#15418815)

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 (2, Interesting)

Borealis (84417) | more than 8 years ago | (#15418827)

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.

Ummm.... go to school? (0)

tynman (544474) | more than 8 years ago | (#15418829)

I find it interesting that nobody seems to have mentioned the idea of going to school to learn how to program. We geeks are a self-taught breed by nature, but there are some things that you simply might never be exposed to if you tackle it all on your own. I just finished my BSCS, and the classes I had were way better than teaching myself.

You have to ask yourself why you want to learn how to program. Are you going for a career in software engineering, or do you want to write a database to keep track of your grocery list? It's a question of orders of magnitude-- anybody can learn how to cobble together a dog house. With a bit of study, some experience and maybe a mentor or two you can probably learn how to build your own house. But you're going to have to get some education from an external source if you want to architect skyscrapers.

I [neumont.edu] just graduated from Neumont University [neumont.edu] and happen to be very happy with the job I landed right out of school! Could I have learned it all on my own? Possibly, but I seriously doubt it because there were so many things my teachers brought up that I wouldn't have gone into on my own. Plus, to get to the level that I'm at now would have taken way longer than 2 years.

But again, this doesn't matter if you're just wanting to do a couple of fancy tricks on your home page. Or if you just want to run Linux because you feel it's the cool thing to do. I have absolutely nothing against recreational CS-- that's where I started too. But if you want a real career out of it, take the time and get a real education.

Get some hard math (1)

ingo23 (848315) | more than 8 years ago | (#15418838)

You can learn Unix/Linux as a hobby. The hot stuff (e.g. Ajax) will be like COBOL when you will graduate.

Use your first 2-3 years, while you still have some time, to train your brain. Get a tough course in math. Something like group theory. Seriously. If you can get through it, you can learn PHP or Ajax or whatever will be hot in 4-5 years.

I am not saying that you should neglect the regular IT curriculum, but you need to learn how to learn new things. Math is pretty good for it.

best way to start... step by step (1)

PostComment() (976797) | more than 8 years ago | (#15418849)

Well, based on your post it looks like you want to build web based applications probably on unix platforms if you are interested in Unix and Perl. Where to start... well yes it is overwhelming, but with a little time and patience you can get there.

I read the other comments and felt that they did not provide enough information to get you started, or were perhaps to vague or abstract for a person to understand -especially if they are not programmers yet.

This is what you need to do if you want to be really good at these technologies:

First of all, you need to understand basic program theory before you can begin. The best way to learn (without having to take discreet math courses and classes on logic) is to learn a contemporary object oriented programming language.

I personally recommend learning C++. By default, it is very simple but grows in complexity is you start to progress. In addition to this there are many great simple programs to write and algorithms to study as you go along. It is strongly recommended to purchase a thorough in depth book on C++ with small exercises. One book that I am not overly fond of but does do the trick is the Deitel books.

I prefer C++ over Java (for learning btw) because it is more strict, involves more micromanagement, and clearly indicates and teaches you about memory management and pointers and so forth later on. C++ uses explicit ways about this versus C# and Java has some implied rules. In addition to this, your first tutorial will not all of a sudden force you to define your own class and merely focuses on the basics. C++ also forces you to learn and understand scope issues, referencing, creating dynamic data structures and so forth without using prebuilt containers. (yes, there are prebuilt containers using STL, but once again, this is for tutorial reasons so please don't bash me here) Also try building your own data structures, sort algorithms, graphs, recursion, and hashes as these will help you to understand more advanced container classes later on in your programming career.

Once you fully understand C++, you can then proceed to higher more easier languages and you will be able to understand and learn them with great ease, since c++ was perhaps the most difficult way (unless you were using assembler or writing your own microcode and working with control stores).

After learning C++/Java/C# whichever you did choose, I would recommend reading up on relational database theory. This is a very important staple for any new technology that you would pursue and it would be in your best interest not to gaff this topic. Then start writing some sample app using your c++/java/c# skills to interface with some kind of SQL server whether it is mySQL, Oracle, or MS-SQL, it really does not matter for learning purposes. Please, try to stay away from Access when you are learning, this program teaches you bad habits on using relational databases as its wizards help to try to make things easier and ends up screwing you over in the long run. Seriously though, you need to have a very strong understanding of relational database theory, the use of joins, foreign keys, primary keys and what not.

During that time you have been taking breaks or trying to figure out how to compile code and use IDEs, try working on Unix or Windows and understand the command line and some scripting including shell scripting and the mighty PERL scripting language. (Perl is great btw) For windows, I would still recommend using Perl or VBScript (you can download PERL for windows at activestate.com)

Why do I recommend Perl? Perl is a very simple easy and powerful text parsing language and can be used for CGI. Also, later on you will have to make a choice between using PHP and ASP/ASP/NET this is largely going to be decided on your OS of choice, but if you choose PHP, you will find that it is very similar to the PERL language.

After mastering rdbms and your contemporary OOP language, you can either try to learn PHP or ASP/.NET. Be sure to learn HTML and CSS (you can do this in a matter of a days. If you do choose ASP.NET be sure to have a strong understanding of OOP.

Later on as you progress writing basic web applications you will find yourself using more and more javascript related functions to help eliminate postback operations, promote richer client side interactivity and the such. If you started to learn programming with one of my recommended languages above you should learn JavaScript in a day. Also if you followed my advice and learned CSS, you will find using Javascript with DOM very easy to do with CSS.

By this point you pretty much can write your own web application using either ASP or PHP (or both) and should be able to write your own controls whether it is a java applet or activeX. You might have to speed yourself up on some Microsoft related technologies such as win32/mfc/.NET/ and COM. This is some nasty stuff, so you better have a very strong understanding of OOP including polymorphism, threads, pointers , well... just learn it all. Do NOT skip a chapter when learning your mainstream contemporary language.

For ajax, well it is easy to learn at this point.

Really though, most importantly, learn C++/Java/C# and then learn relational database theory and use some kind of SQL platform. After that, you can learn HTML and CSS for web stuff, but you are free to pursue in whatever direction you like.

I personally don't believe it is overwhelming, I see it as very exciting as many doors and programming paths can be taken and mastered from your starting language. I have taken many paths, from Perl to Tcl /TK to sockets to winsock, mfc/win32, directX, ASP, ASP.NET, PHP, Perl for CGI, my own custom CGIs, and well, it is too much fun. And if you get tired in one area, you can switch to another and have fun!

If you do see it as very intimidating and not fun I suggest you to not pursue it since it is a very long term goal and not very rewarding if you don't find it amusing. You will hit lots of roadblocks and barriers and frustration while programming, and the only thing that will drive you is your love for the computer.

I hope this helps.

There are many other readings listed below, but I don't really consider them that important for web applications, but they do help alot in learning new technologies and working with different languages and APIs.

Core fundamentals kind of books:

Read these later when you get the chance:

Discreet Mathematics
Algorithms
Data Structures
Hardware Theory
Assembler
Computer Data Networking (low level stuff, not the "plug ethernet here")
Operating Systems Theory

Why IT? (4, Interesting)

pipingguy (566974) | more than 8 years ago | (#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.

What's The Best Way To Eat An Elephant? (1)

porkface (562081) | more than 8 years ago | (#15418894)

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 your own Sockets interface right away.

just follow what interests you... (1)

sootman (158191) | more than 8 years ago | (#15418895)

...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.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account

Loading...