If you are really serious to take up programming as career then you need to look into the following areas:
- Procedural/Functional Programming
- Object Oriented Programming
- Data Structures
- Analysis of Algorithms
- Design Patterns
- Software Engineering
A degree course in Software Engineering would greatly help you to strengthen your skills and to outline your career path for the future but to take up a degree course is not mandatory. If you are passionate and dedicated, then all you have to do it to look into the areas above i have outlined. There are many informative books already available on these subjects.
Specify the area in programming where you find yourself comfortable to work. Essentially speaking there are 2 areas:
System Programming
Application Programming.
And do remember one thing, hands on prcatice is what you need on a regular basis apart from study! Join meetup and startup groups of whatever you language you choose to program. Participate in forums and post your questions, issues and also help others with your suggestions and feedback.
You also have to be commiunicative as well to succeed in your career as programmer. When i say communicative, i meant to be paying attention to detail, coming up with precise requirement facts and then conveying them to your team or transforming them into code effectively. Remember, programming is healthy when it is considered a team activity! You cannot and you should not construct every bit of the software yourself and feel good about it. You have to be critical and appreciate other people's criticism about your code or software and must know that there is no such thing as a perfect software. There is a life cycle that makes your software product evolving at every iteration. And then there is something what we call Software Testing which is crucial for a well creafted software.Being a developer, it is your job to atleast Unit Test your code before you go for final testing.