This is a very broad question, but the answer really comes down to what you would like to be doing with your career. There are a few areas you could 'specialize' in when it comes to GIS and programming, but it would be good to know a little of all if you want to be a developer rather than an analyst.
Learning .NET (Visual Basic .NET and/or C#) is a good way to get into writing custom extensions and stand alone programs (with GUIs) for ESRI. .NET is an access route to ArcObjects (it has bindings in .NET and Java), which give you the power to create your own programs/processes with ESRI components. There are other offshoots like the Runtime, etc, but this means you're more into developing desktop applications and extensions. You can ArcObjects to edit and manipulate data, too. I just find the power lies in creating standalone programs or wanting to incorporate the .NET libraries into your GIS processes (e.g. I created an extension because I wanted to read in an Excel spreadsheet via
OleDB because I knew it better than trying to find a python library for a similar thing).
Web Based Solutions
If you want to be an analyst, it is pretty much expected of you to be able to code a little python. This is a great introduction to programming as python reads like English. It makes understanding the flow of a script easier when you can easily read what is going on. E.g.
for item in myList: as opposed to
foreach(String item in myList). Python is great for automation in GIS, and I personally find it invaluable for doing a lot of the mundane GIS work that interns/entry level people get stuck doing. If you don't want to be stuck digitizing all day, I suggest picking up a bit of the language and advancing past your peers who can't code (strangely common). ESRI allows you to write extensions in python now, albeit through a confusing program, but it has expanded power.
Other open source systems support python as well. QGIS, GDAL/OGR, Mapnik, and others usually support python bindings. QGIS allows you to use Qt, which gives you the option to create interfaces with your code. By default, python comes with Tkinter, which is a GUI system. It can be tricky to someone who is used to more WYSIWYG operations.
If you're really into it, you can pick up on languages like C/C++. This would allow you to jump into some open source projects or be better able to manipulate the spatial libraries that many of the python or .NET libraries on built on top of. Plus, in something like QGIS, it is another language to use to create a widget. This realm is probably more useful for people interested in computer science more so than GIS. The only reason I say that is dealing with concepts like memory points usually would be beyond the scope of most GIS people who are used to a system with garbage collection.
The language really depends on what you want to do. If you love analysis work and churning out numbers, you can probably get away with just python. If you want to be able to visualize that information in a web page when you're done, picking up the web side of things would be great in addition. .NET and the other options are more of a GIS developer role where you would be creating custom software for others. I do a blend of it all and am considered a developer. The jobs I qualify for are more along the lines of database management and automation with python or creating custom applications (desktop/web). My analyst co-workers know python and that greatly helps them qualify for analyst jobs, but they would be (mostly) useless in a developer role. This is because their code typically is done in smaller scale, and they are used to scripting toward a single purpose.