Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question
1  
Be sure whether you want to be technically proficient or functionally proficient. You are already in a real good domain and can build on it by expanding your knowledge in your domain. After all, its business logic and problem solving is all that matters in software. Have you made up your mind for this paradigm shift? –  Ubermensch Jan 9 '12 at 5:46
add comment

2 Answers

Mobile Development:

You'll want to wrap your head around android. A few years back java has been supported on almost all mobile phones but now that the market is dominated by "smartphones" things have changed. The three most important infrastructures are: IOs, Android and Windows Phone 7. Note that I've excluded Symbian for Nokia has already announced that it's going to stop active development by I think it was 2015. Windows Phone 7 has still not been established and struggles for its share of the market. IOs development is driven by Objective-C and Android Apps rely on Java. THe Android SDK will let you be productive in a language you already now and you'll probably won't have any problems to get going.

Parallel Development:

Of course Java supports parallel computing but Java's threading system is arguably not very comfortable. I would recommend Scala as it has builtin support for message driven multithreading via actors. Scala compiles to .class files and runs on the JVM. That means you can reuse your existing knowledge of Java libraries. Naturally there are many other choices and depending on what you want to do one of them might be more appropriate. I've recently tried google go and it's very innovative.

share|improve this answer
add comment

If i am interpreting your words right

so that I know more than just the programming language

You want to move away from vertical (application/business specific) domain work because you feel it is not quite technical!

My first advice for you is -if you don't think it is not too late - apply for a post graduation in computer science from a repute institute.

Alternatively, if that sounds difficult or not possible, try to get yourself employed in companies whom you think are in the forefront of such technologies. You can find great companies in this area (or similar domain you may like).

While you may be searching for such an opportunity - you might begin to gain knowledge by actively participating a more appropriate Open source project that excites you. If you are an identified contributor, your chances of getting in above profiles/companies might just improve.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.