Hmm... you wouldn't happen to have any advice for deciding on personal projects? I'm having something of a programmers block and my only new idea, at this time, of creating an internet browser seems to be a bit much...
- write an IRC client
- write a jabber server
- set up your own webserver with php / sql and host a couple of pages on it
- write a mp3 streaming server in java (upnp)
- write a tool to parse the galciv2 xml files using c#
Personally, I would concentrate either on Java oder C#. I learned Java at university and am now working as C# developer. Both languages are similar enough that you can easily pick up both.
The best way to become a better programmer is to program. Challenge yourself. Try to do things you haven't done before and research how to do them. Then try it. Then debug it
You'll be surprised how quickly the things you already know come together with the things you do. I know that sounds generic, but it's true.
It also helps to look at code examples. Don't copy code, but look at what functions are being used and what they are used for. If you see something you don't know, look it up. MSDN has a huge library of functions and their documentation. If you can't find it in there, try google.
I've learned a lot in my years of programming just by looking up functions and studying their parameters. (What happens if I change this parameter... I wonder what else this function can do? )
Personal projects will keep you coding and push your limits, so I definitely recommend working on some sort of project.
Keep a positive attitude and you'll be fine. 
Don't copy code, but look at what functions are being used and what they are used for.
Oh god, PLEASE, take that advice. I had to 'add' functionality to an already existing application lately, and it was clear that the original coder had just c&p'ed 75% of the code without thinking, while leaving the rest undocumented. Fun times, really... /sarcasm
I do tend to keep a positive attitude. Unfortunately, there are days when something doesn't work after reading a tutorial, or I'm told to do something that wasn't previously explained.
I do try to thoroughly document my stuff, so I already follow your advice.
________________
Thanks for the help thus far.
________________
Borland C++ builderX: It can't seem to compile individual files, instead it seems to want them in a project, and even then, it seems to compile the wrong one.
Microsoft Visual Studio 2005: I'm not sure how to use it. It seems to use also use projects, and I've been able to follow its instructions to compile the "Mech commander 2 game" source code (it was opened sourced). It also has a bad habbit of making the computer freeze when GalCiv 2 crashes with its "just in time debugger".
Various freeware compilers: Either it turns out that I have the wrong OS to use it, its poorly programed, or I don't have enough computer knowledge to make use of it. This stuff makes it difficult keep a positive attitude some days.
Bloodshed Dev-C++: Its the only compiler that I have thus far been able to use with my limited knowledge of compilers. It can compile individual files WITHOUT the need for it to be in a project, which is why I have been using it.
Windows C#/XNA thing: I hadn't used it much. It expected me to register with Microsoft after 30 days after installing it. I never touched it a second time within the 30 day time frame, so I had it uninstalled.
________________
Anyhow, I have two questions.
1. What are projects? What are they for? How do you use them?
2. Which compiler is do you think is best and why? Where do you go to learn how to use them?
Re 1:
Projects, in term of VS, are several files (classes, XML dataset definitions, documentation, image files, resources in general) that are all necessary to compile and run a given application. All these get packaged together when you compile an executable or library. VS also has the concept of Solutions, composed of multiple projects. One project usually would be the executable and several other would be libraries or webservices. Note that you can mix different languages in the same solution, i.e. programming an application in VB and have it using a webservices written in C#.
Re 2:
I would not start in C++. Sure, it's popular NOW. But it's not the easiest language to begin with (although, and that is a big argument FOR C++, it forces you to learn to program cleaner, because you have much mor work to do yourself, that Java/C# have automated, like memory allocation etc.). Start with Java (Sun, either Netbeans or Eclipse) or C# (VS2005). VS has the 'Express' version that comes free, or you could try and get a students (MSDNAA) license.
How do you turn it off?
I suppose that clears up a few things. I've figured out how to make a blank project with Dev-C++, so I should be able to learn about them just fine now.
I would not start in C++.
I guess I've should of mentioned that I also know Python. I'm trying to learn C++ because Python is a scripting lanuage, and Python doesn't normally compile to .exe files and such.
________________
Anyhow, thanks for the help. I might ask a few questions later though.
If you've just graduated and are going off to college, be sure to sign up for programming courses there as well. Of course, studying during the summer is also a good way to start leaning some basic things.

What language you start with doesn't matter, in each and every language you can write horrible code.
First task is to learn the language, read a couple of books about it till you know the language syntax. Concerning the language, everything is allowed. I think Python is a quite nice language to begin with. Also, C/C++ is a nice language since you'll really learn how things work on a rather low level, i.e. things like memory management. Makes you appreciate and understand higher-level languages more.
The next task is finding something to work on. Look for something you are missing in your computing environment. For example a friend of mine started with an ID3 tag editor for his MP3 collection.
Whatever you choose, the most important thing to remember is to keep it plain and simple:
Do not use IDEs, code generators and the likes. If you use them, you'll never learn the basics. Only if you know inside out how things work, you can use IDEs, code generators and the likes to speed up development.
Also, don't start with GUI programming, start with a simple text based console application. After all you want to learn programming, not how to click together a simple dialog in some IDE.
My advise:
- Install Linux, a completely new and different work environment opens up your mind
- Chose a programming language
- Get a simple text editor, shouldn't offer much more than syntax-highlighting
- Write your own build scripts
That way you'll learn the programming language of your choice, you'll learn how the source gets compiled and you'll learn how the basics work.
It does not matter if the code you write is the most sophisticated, clever piece of programming ever done by man (or woman!) if it doesn't look and feel good to the user, or doesn't actually do what they want it to do.
The above may seem obvious but so many developers get this completely wrong.
So, for your project, find a user. Look for friends or family that need or want something that isn't readily (or cheaply) available - maybe something that brings them together.
Once you have your user(s) don't just ask them what they want and then disappear for a few months and go "hey presto! look what I've done". Involve them in the process and get their input throughout - use prototypes.
Prototypes are just mock ups. They could be on paper to start with and build up through non and partly functional versions all the way through to the finished project. Get the users feedback on these to make sure you don't veer off track.
Have fun.
That's the other main thing a lot of people forget to do, and it is very, very important! You can't do a good job unless you are, on the whole, enjoying it.
Like Raknor said, don't use an IDE at first. Do it the hard way so you really know whats going on in the code. I suggest using Java and TextPad (or some other VATE).
Do a console program or three, just simple ones. Then you should build atleast one windowed application. Doing so by hand lets you appreciate the code generators in IDEs.
After that I suggest C#, its so easy to use and its incredibly easy to transition from Java to C#.
God, I hate Java...
Welcome Guest! Please take the time to register with us.
- Richer content, access to many features that are disabled for guests like commenting and posting on the forums.
- Access to a great community, with a massive database of many, many areas of interest.
- Access to contests & subscription offers like exclusive emails.
- It's simple, and FREE!