I have been working as software developer for past 4 years on a variety of software products (Financial ERP system, Online Web development, Trading software and now a Supply Chain mgmt software). Most of the work has been in Core Java. Lately, I do feel that I should start looking into specific technical "principles" and/or domain such as Parallel Computing and Mobile Computing and not be working for long just on a software solution for the sake of working as a software developer. In short, I want to give a direction to my existing skill set so that I know more than just the programming language.
Can anyone please guide me on how I should go about learning these domains? I am really interested in parallel computing, but I am not much aware of other such domains I can look into.