What should a programmer learn other than a programming language? And what does it offer.
There are several skills that you will need to be an effective programmer:
Data Structures (Arrays, Linked Lists) - Understanding the fundamental principles behind how data is organized and manipulated in computer programs. 
Algorithm Analysis & Design - Being able to identify patterns within algorithms, determining which approach performs best, and creating new approaches when needed.
Software Development Lifecycle Management - Understanding how to plan and execute projects from start to finish.
Problem Solving - The ability to find solutions for problems that have not yet been encountered, by analyzing them through different lenses until reaching a conclusion or making progress towards one. 

The field of programming offers many opportunities to explore and apply these various concepts as part of your day-to-day work life. Learning any given programming language provides access to tools like syntax coloring, code completion, etc., but those aren't sufficient on their own. The languages also expose unique features and techniques, allowing developers to customize and optimize workflows specific to individual needs and situations. Ultimately though, all of this depends greatly upon the context, task, requirements, constraints, etc.. That being said, I think that if you can grasp basic math/algebraic notation and algorithm analysis, you'll already get far enough into the discipline without too much extra training upfront!