It depends a lot. This is opinion, but I would say that there are three big categories of software development skills. Of course most jobs are a mixture of these.
1. Web development (transport-level and higher networking, HTML/JS/CSS, PHP/Perl/Python/Ruby, using databases, etc.)
3. High performance (algorithms, advanced data structures, C/C++, memory management, DB internals, internet-layer and below networking, cryptography)
It sounds like you want to get into 3. A good way to start is algos/data structures. Almost all the fields the parent listed benefit from a very strong foundation in computer science: discrete math, linear algebra, algorithms, advanced data structures, etc.
Data analysis with python/R is more for scientists and mathematicians, not software developers. If you are being paid to analyze data as a programmer, usually you are analyzing very large data sets and you will be using a much more performant language or possibly even a highly parallelizable paradigm like MapReduce.
The easiest path into a nr 3 job here is to find a job with an engineering product company, ie a company that sells a high-tech product that is not software.
My current job mixes those three categories nicely and I love it :)
1. Web development (transport-level and higher networking, HTML/JS/CSS, PHP/Perl/Python/Ruby, using databases, etc.)
2. Enterprise software design (domain modeling, OO programming, system architecture, scaling, security)
3. High performance (algorithms, advanced data structures, C/C++, memory management, DB internals, internet-layer and below networking, cryptography)
It sounds like you want to get into 3. A good way to start is algos/data structures. Almost all the fields the parent listed benefit from a very strong foundation in computer science: discrete math, linear algebra, algorithms, advanced data structures, etc.
Data analysis with python/R is more for scientists and mathematicians, not software developers. If you are being paid to analyze data as a programmer, usually you are analyzing very large data sets and you will be using a much more performant language or possibly even a highly parallelizable paradigm like MapReduce.