Developing software is both an art and a science. Computers are not intelligent despite what some AI folks would have you believe. You need to be logical to deal with computers, and computer languages, the compilers that turn source code into machine language, etc. Every language cannot solve every problem. It is possible to write a compiler in COBOL, but probably not very convenient. Start with one language. I learned FORTRAN first, then I learned assembler language to get a real feel for stepping through the sequence of operations a computer experiences - nothing like being in control of a machine. Then I learned data structures which without there would be no organization to developing programs - especially with abstraction. Learn C, C++, object-oriented computing, Java, and the difference between application and system software programming.
If you choose application development, remember to interact with the users and develop a specification that differentiates between their wants and needs - they always have insatiable wants, but just never seem to know what they need. They probably will not even be aware of either unless they are very computer savy. On the other hand, if you become involved in a system software career, learn all about theory because there is nothing like running into a problem where there is an applicable theory available to solve it - works for application level development too!
The CACM (Communications Association of Computing Machinery) has been around for a long time, and have published lots of algorithms. They have a lot of journals that lead to other journals. Spend some time at a really good library like I did. When I got my MSCS at Boston University, I spent a lot of my time over at MIT's Barker Engineering Library - a journal rat's dream (I was and still am a journal rat!) I just don't live as close to get down there much anymore - so, I compensate, by searching for information online.
Good Luck Kevin - its a zoo out there in both the job market finding work - that a bit of new schooling would help, and then again there is the unacknowledged degree in psychology you get working with other people that goes unnoticed when you happen to work with people that are very practiced at being a major pain-in-the-you-know-what!
-- Tom
