Although I have seen many similar questions here, my question is specific to my profile.
I am a CS master's student with pretty good course and internship experience in OOP, UML designing, knowledge of design patterns, version control (Subversion, SourceSafe, TFS) and automated builds (FinalBuilder), bug tracking systems (Trac, JIRA).
I am pretty good at data structures and algorithm coding. During my internships and part-time jobs, I first learned and then worked on PHP-MySQL, Ruby on Rails, .NET(LINQ to XML), some web designing(XHTML, CSS, JavaScript). Currently I am developing win mobile apps using .NET compact framework and OpenNETCF smart device framework. At school, I have developed number of apps on Java SE/ME platform.
I will be graduating soon and I feel that I have become jack-of-many-trades-and-master-of-none. I feel l have learned something in many things, and I should master in some of above mentioned technologies.
For example, I feel I should
- Learn ASP.NET and .NET 3.0/3.5, because I already have pretty good experience with .NET 2.0/compact framework. and focus on learning T-SQL in depth.
- Learn J2EE technologies, and strengthen J2ME skills on mobile platform. Use JUnit extensively, focusing on test-driven-development.
- Learn some scripting languages like Python or Perl.
- Get mobile development experience on iPhone, Android platforms.
- Get better development experience on Linux platform (most of my development work is on windows)
- Focus on PHP-MySQL and Ruby on Rails, CSS, JavaScript (Its been quite some time I have worked on these)
- Just focus on basic algorithms and CS concepts. Know C, C++,Java/C# very well.
Based on my background, which of above mentioned or other skills I should master or develop, to stand out and have more options in job market?
At this point, I feel I am little out-of-touch with web development, and enjoy developing for mobile and desktop platform.
Thanks in advance for your help!
Edit 1:
Hi guys! Thanks so much for your answers, I really appreciate your help. I completely agree with Ed's response that I should focus on what I like. But lot of things depend on current job market.
The problem with me, is whenever I have worked in above mentioned technologies, I did like them a lot. I did things outside work, built some utility programs on those technologies. But then I lost touch with them, and some other work/technology came up.(e.g. first time I learned Ruby on Rails, it really blew my mind. That was probably the first time I really GOT MVC. It was amazing how fast things could be built using RoR). Not keeping touch with those technologies, is definitely an error from my side.
But at this point, considering the fact that I will be graduating soon and I need to focus on some areas, which areas should I focus on to get better/more opportunities, as an entry level developer. (BTW I am residing in Dallas-Fort Worth metrolplex region)
Thanks again for your responses, I would like to hear more from you...