I agree with @uhoh that you don't have to an expert, but above-average knowledge of coding is definitely useful, bordering on "a must". Not for writing huge programs with 1000s of lines, but for writing smaller pieces of code that help you in everyday tasks.
As uhoh says, you can very well find your place in a group where other people are in charge of numerical modeling, and focus instead on, for instance,
interpretation of observational results,
or even the technical aspects of telescope operation.
You ask about what software is used: Some of the more popular if you're working with observational data are IRAF for reducing and analyzing the data and SAOImage/ds9 for visualizing. A long list of astronomical software can be found here.
On the other hand, if you're modeling galaxies or the interstellar medium you may want to familiarize yourself with stellar population synthesis codes such as STARBURST99, semi-analytical galaxy formation models such as GALFORM, or radiative transfer codes such as Cloudy.
For coding, if you are constructing large codes that require many hours of computation — possibly on a supercomputer — you will probably want your code to be fast. Then languages like FORTRAN and C are often used. For programs that don't necessarily need to be fast, comprehensive languages such as Python are very popular. For smaller tasks, shell-scripting can be very useful.
Even if you don't run simulations, you will most likely eventually need to automatize your work. For instance, rather than reducing 100 images one by one, you create a pipeline that does all the biasing, flat-fielding, cosmic-ray-removing, etc. in one go. And rather than going through a catalogue of a million galaxies one by one to look for those that match your preferred criteria, you create filtering software that finds them for you.
Not all simulations are run a supercomputer. Huge cosmological simulations, galaxy formation simulations, etc. usually are, because you can usually start a simulation and then let it run for three months without interfering. But if your simulations are smaller, and possibly require that you check the process all the time, it's often sufficient/easier to run it on your local computer.