The first thing to be aware of, I think, is that there are some very different aspects to professional software development, and without some idea of what sort of work you are interested in, it can be difficult to know what to concentrate on.
For instance, an immediate distinction would be between developing software intended for sale to customers, such as—say—a word processor or painting program, and software intended for use within an organisation, such as an online shopping-cart system. The former tends to require a good understanding of algorithms and user-interface development, while the latter tends to focus more on inter-application connectivity, such as message-processing and database interactions.
Aside from the technologies involved, there are great differences between these types of work when it comes to the formalities associated with each. I currently work for a company that runs a number of highly available web-based services. This entails updating our software (and underlying databases) on the fly to fix issues and add functionality, with little or no interruption to service. As such, sometimes only 20-30% of the work actually involves writing or updating code; the rest of the time is taken up with writing/reviewing designs, rollout-plans, code-review material, bug reports and release preparation. Code-reviews and release preparation also involve writing and running exhaustive testing for any affected services. A one-character change to our production code can take up to a week from start to finish! However, this does mean that in answer to your question about how well you will need to know the programming language, work like this doesn"t demand code gurus nearly as much as people with the ability to understand how systems work together, and a good sense of risk management.
Since I haven"t written and sold standalone applications for nigh on ten years now, I"ll let someone else speak for that side of the business.
Edit: I"m not superstitious, but thats three 9+11s in two days…