There are many reasons to want to learn to code. You have to find out why you want to learn how to code in the first place. THis will lead to one of the "levels" of programming languages you should start out with.
There are 4 levels -
1) Machine/Assembly code (they're sublevels, but very lowlevel)
2) Higher level assembly (e.g., C)
3) High level language (C++, Java, C#/.NET)
4) Very High Level Language (Perl, Python, batch/shell scripts)
Levels 1 and 2 are reserved for people who want to know how their machine works internally - how the CPU talks to devices, etc.
Level 3 is reserved for those who have been programming a while and know basically how computers work.
Level 4 is for practically all work that requires quick programming (prototyping), or very high level abstract concepts (e.g., artificial intelligence).
An important decision is how deep you want to go, too. Do you just want to write a quick one-off application? Become a programmer? Become a software developer? A one-off application is best done in a very high level language - they handle a lot of the nitty gritty and give you useful data structures that are practically plug and play. These languages offer a very quick way to develop sophisticated applications and are great for those that need instant gratitication.
A programmer (code monkey), would probably require you to learn the language du jour, which would be C++, Java or C#. You will take a design and algorithm designed by someone else (software architect or developer) and implement it.
A software developer is an extensive undertaking as you will be exposed to *all* levels of programming languages. This is important as though each language is different, deep down, inside they're all the same, and once you figure it out, it becomes a matter of syntax. The reason why you get exposed to all 4 levels is that each has powers that the other doesn't have. Level 4 languages make it easy to do very complex things very simply, but suck at optimizing code for a specific architecture. Level 3 languages give you more power, but then doing complex things requires writing more source code (and thus, more areas to hide a bug). Level 2 languages give you even more power still, but to do mildly complex things can take a *lot* of code (and a lot of it is very tedious code you'll rewrite because the library just doesn't cut it). And level 1 gets you ultimate power, but then it becomes very tedious coding complex things.
For example, let's take something fairly conceptually simple, like a string of characters. Let's say we want to append another string to it. Like we have "Hello" and "World", and we want "Hello World".
In a level 4 language, it's often just "adding" strings together - "Hello" + " " + "World". In a level 3 language, you'll have a string data type, which you'll declare, then you'll append using its built-in string append functions. In a level 2 language, you'll often have to use library functions to do it, because you'll have to allocate memory for the combined string, manually copy every letter from the first string into the buffer, then repeat until you've done it all. In a level 1 language, you'll have to manually get the memory buffer (or call an allocator library, passing the right values in the various registers and stack), then copy the letters around, keeping track of which register holds the current letter, the current position in the buffer, etc. And if you make a call, to save the right registers and restore them afterwards.
If you're not entirely sure why you want to code, start with a level 4 language. A level 3 language is nice, and "hot", but unless you're willing to learn, in a few years it won't be "hot" and you'll have to learn the new "hot" language.