I am .NET developer have 4+ years of experience on various MS technologies like C#.NET,ASP.NET,SQL Server, Silverlight,WCF .NET frame work 3.5 SSRS, Reports etc C and C++ also Now my concern is Microsoft is releasing many new technologies for every year or two.so because of this before we get familiar with one version for example .NET framework2.0 , 3.0 is already in market. before we get into that 3.5, PF,WCF,LINQ etc are already there.So I am not becoming proficient in any one.Now I am planning to stick to any one I have couple of Ideas.1.Stick to C# and get involve in Gaming with Direct X using C#.(my priority).As I can become proficient in this.But I need suggestion on this , how will the future and career opportunity.2.Concentrate on silverlight and keep updating you self for all technologies what ever is required(This is 2'nd priority).before taking decision I want to keep 2 things in mind1).Better career.2).Job satisfaction. Please help me.
sainath's Advice on Sunday, November 29, 2009 :
Good question and a difficult one to answer - however, I can relate to it as I also considered becoming a game programmer many years back, the only difference was that I was trying to make a choice between DirectX and OpenGL at the time. Let me try and share my thoughts:What prompted my thinking towards Game programming
- Passion for programming - tremendous creative satisfaction derived from the same
- Difficulty associated with the task (game programming was / is not considered easy)
- A niche area of expertise
- Belief that I could succeed in the area
This is a valid approach towards building your career - if you are truly good in the area and have the mental skills for becoming a top-class game programmer, by all means proceed ahead and excel in the same. At the same time, remember, there are limited number of companies operating in this niche area. Excelling and rising high will depend a lot upon how good your skills are as you are going to encounter elite programmers (geeks) along the way whose only passion lies in this area. The only thing I can think of for succeeding in this area is that you have to be really good at game programming skills which takes precedence over everything else.Why Microsoft keeps releasing new technologies so fast?
- Microsoft cannot be blamed for this as they are just doing their job of responding to rapidly changing business realities. If they don't release faster, newer, better ways of solving business problems using software, someone else will and throw them out of business.
- For example, Sony did not foresee the Mp3 revolution, Apple invented the Ipod and the rest is history.
- Apple repeated this by creating the Iphone and creating a touch-screen interface where there was none, this time it was Nokia that was slow to react. HTC also captured a sizeable chunk of the touch-screen market.
- Companies doing well right now are experts in creating "disruption", creating new market spaces where there was none ( as evidenced by the touch screen usage in the 2 examples above, there was nothing wrong in the quality of cell phones or music systems being manufactured before the Ipod and Iphone hit the market, the only thing these products did was create new options and add tremendous value in existing products for end users.), using the "time to market" concept to strategic advantage (Apple had robust products in place before others could even think of offering such innovative products) and eventually becoming achieving huge business / commercial success
- Think about it - does Microsoft or any company have a choice in the matter? The answer is - an emphatic "No"
- Even game programming companies cannot escape business realities.
What I am trying to emphasize is that you cannot detach yourself from business realities, build a career plan and hope to succeed. How does one plan his career in this chaos and disruption?
A million-dollar question, I don't know the answer but I can share my approach.
- Become extremely strong in the fundamentals - in programming, if you are good at C/C++,OOAD you will not have a tough time adapting to any new language. Nowadays, I hear freshers say "I want to become a Sharepoint expert" without having a complete grasp of the basics, in the long term - this will simply not work. You can specialize in an area, but you have to build it on strong foundation, else it will eventually collapse.
- It is not possible to know everything, but you can surely make it a point to know "enough" about relevant technologies. For example, if you have never worked in the Data Warehousing area, but have a good fundamental understanding of ETL and how the DW tools are finally used you can develop a fair judgement of the scope and span of the technology and the business needs it aims to meet. Using this understanding, you can decide whether you want to be a part of it or consciously choose to work in a different area. What I mean is that "you can take a swim in any technology without choosing to take a deep dive".
- Right now Microsoft and other companies are investing heavily into touch screen technologies which will revolutionize our daily lives. As technologists, we need to already start evaluating how this will impact our careers and what opportunities can be tapped.The most successful employees are ones who think like entrepreneurs.
- Identify areas where the business requirements are consistent and ongoing. For example, the BFSI domain had consistent demand during the current and the last recession. The nature of the domain is such that certain degree of technology investments have to be made. Which means that there will be work and careers will progress despite economic slowdowns.
- Make sure you have a deep level of interest and high passion for the chosen area. This is extremely important in my opinion - you will inevitably face ups and downs in your career but if your interest level is high this will not impact your dedication towards excelling in your craft. For example, Sachin Tendulkar has a bad back, tennis elbow problem, broken fingers (in recent interviews he has revealed that painful fingers at the point of hitting a shot is a normal thing for him). What motivates him - is it new records, money,etc? I don't think so - his sheer passion for the game is so high that he still continues to play.No wonder geniuses are not born everyday.
- Use the disruptive power of change to your advantage. Whenever you spot a change happening - you need to first evaluate its future impact and take a position and commence action. This is the key to adapting to change. Right now Microsoft is aggressively marketing the VSTS 2010(Visual Studio Team System) launch - don't you think programmers who understand the impact of the next VSTS release and how it will impact their careers will be better positioned to handle this change when it gathers momentum? What is smarter - learning a skill after it appears on most Job Descriptions or tapping it when demand is high and supply is low - the same "time to market" concept I discussed earlier.
This discussion has been a slightly heavy one and I hope I have not confused you further. The guidelines provided are intentionally general to encourage you to take a long, hard look at the choices you have made i.e. game programming and Silverlight.The specific response to Silverlight will be given in response to a separate question on the same topic. All I am trying to say, it is not wise to adopt a "pattern oriented" approach towards building your career, as business realities change continuously. Secondly, adapting to change as painful and uncomfortable it is is still the best approach, in my opinion. Coz if you don't seize emerging opportunities, someone else will. In a nutshell - identify a core business need, identify your passion (what gives you maximum creative satisfaction), map this to the business need and build your career. And adapt continuously.
I hope this discussion helps you in evaluating your career options better.
All the best !