Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Possible Duplicate:
Is it better to specialize in a single field I like, or expand into other fields to broaden my horizons?
Do Diversified Skills Foster or Hinder Specialization?


I am seeking some career guidance, as the road seems to be splitting, winding and veering off in many different directions.

It is my desire to be a professional software engineer, focusing (more so) on web applications. My background in web design lead me to php, mysql and minimal javascript (as so many have). From here I'm starting to learn visual studio, C# MS SQL and many tools / scripting languages that I feel would make me a better programmer and asset to a web team (REGEX, HTML5, MSSQL,).

The more I dwell into Visual Studio, ASP.NET aspx syntax ( <% %> ) and now reading the up coming razor syntax. I am starting to get this feeling of cornering, isolation from those who develop in areas that I also find interesting.

I get it, it's just the nature of life when you become specified in any area of expertise, you have to focus somewhere or you'll be a jack of all trades. But at the same time I would love to "reach over" and be able to dab into objective-C or Java, so I can design web applications that are intended for cross-platform use.

It is not my intention to come of whining, I'm just looking to be told "it'll be ok, push hard an any of these directions and you'll be able to do anything you want." Where, my next 4 years of effort in becoming an asset in C# and will no damn me to a life of servitude to Microsoft technology related jobs.

Upon my visit to Google's HQ back in April it really inspired me and opened my eyes a bit. But from what I hear their technological push does not utilize any C# or .NET for that matter.

So I guess a summed up question would be:

Do professional software engineers have the freedom (and time for that matter) to learn, professes and become an asset of other technological sectors? Does one who masters Visual Studio also have a mastery of VIM or EMACS?

share|improve this question

migrated from Dec 21 '11 at 17:58

This question came from our site for professional and enthusiast programmers.

marked as duplicate by Aaronaught, Anna Lear Dec 21 '11 at 18:46

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

What makes you think you need Objective-C or Java to write web applications for cross-platform use? –  Jon Skeet Dec 21 '11 at 17:59
I don't necessarily, I'm breaching into the industry and my ignorance could use some enlightening. :) I understand that the language chosen often depends what is required from the project. But my lack of experience may be making me over think this. –  Ealianis Dec 21 '11 at 18:10
One of the main benefits of web applications is that they're cross-platform: the browser couldn't care less whether the HTML/Javascript was generated by Java, C#, node.js or whatever. –  Jon Skeet Dec 21 '11 at 18:12
Razor is not "up and coming", it's been out there for well over a year. –  Aaronaught Dec 21 '11 at 18:43
I started programming professionally over 20 years ago. What I work with now is quite different from the languages and platforms I was using then. In another 20 years, the computers will be saying "I'll be back" and "By your command". –  jfrankcarr Dec 21 '11 at 19:47

5 Answers 5

up vote 1 down vote accepted

It depends. Some folks are perfectly happy being experts in one area. Others, the real alpha geeks, might specialize in something and dabble in other things. Occasionally you'll even find someone who has mastery over a couple different domains (e.g., Java and .NET).

The trick is finding ways to expand your experiences. A lot of jobs really silo you into one framework or language, e.g., .NET Programmer, or Java Programmer. Some even nail you down to a platform built on a given framework, like Sharepoint. If your title is "Sharepoint Developer," chances are you're going to do pretty much one thing: .NET as it relates to Sharepoint.

If you're comfortable with that type of specialization, there's nothing wrong with it. Lord knows, there are developers out there who ONLY know COBOL and many of them still find steady work. In fact, they're getting harder to find as they all retire.

You sound as if you don't want to be pigeonholed like that, so I would suggest this: You have to start somewhere. The first job is hard. You take whatever entry-level stuff you can get. So look for a job with a language and environment you like, and run with it. Build on the fundamentals: Good design principles, basic architecture, etc. As another poster said, languages come and go, but fundamentals last forever.

As your career progresses, look for areas you can cross-train. Maybe your org has other projects in another language you can help out with. Maybe you could attend some code camps to get exposure to other stuff. And never, ever underestimate the power of open source projects. Those are great opportunities to learn a new language, and they are great experience because they're REAL projects that you can point to and show off.

Good luck!!!

share|improve this answer

I was in your shoes when I was still in school, the thing is that there are so many directions that you could go...
I studied C and Java in the beginning, and then almost exclusively C# at the end of school, and I'm a Senior Java person now. The big thing is to have a good work ethic and know the basics backwards and forwards; SQL, regex, logic, how to architect an app, and how to run a project. Languages come and go, it's these skills that last.

share|improve this answer

Your question is too specific and depends upon the employer and the person. I can answer your question off the top of my personal experience as a Software Developer Intern at Microsoft Bing.

Do professional software engineers have the freedom (and time for that matter) to learn, professes and become an asset of other technological sectors?

Yes, as any professional you have free choice to learn and to improve those areas of your competence which seem to be important to you.

During my work at Microsoft Bing's office -- an open-space office where you can be easily seen from your peers -- I have seen many times that people were watching webcasts, listening to some podcasts etc. while being at work. Nobody has ever prohibited it, nobody even cared what you are doing as long as you deliver your code in time and attend all meetins you are supposed to.

And I was even encouraged to learn some new technologies, including many open-source technologies like, for example, R, to do some statistics and modeling even though there are some propriatary in-house tools for similar tasks -- just to know what tools exist and how one uses them.

Does one who masters Visual Studio also have a mastery of VIM or EMACS?

Again, talking about my internship at Microsoft -- people never cared what IDE I was using. I used VS2010, but the developer just next to me used VIM for writing his code. I know at least two more people who used VIM as well. I saw many MacBooks used for development as well and I suppose they used something like Aquamacs (an Emacs port to Mac OS).

On the other side, there is a VIM key bindings add-on for VS2010 and higher that you can use if you want to use the VIM keystrokes in Visual Studio.

I personally used VIM a lot while working as a developer for embedded systems and devices and still use it as GVim under CygWin on my Windows machine side by side with Notepad++, but I prefer working in Visual Studio enhanced with ReSharper and PowerCommands to get the maximum productivity and personal pleasure.

share|improve this answer

It's not really a giant deal which language you choose at this point for some of the back end stuff: I started in Java wanting to be a software a job as a DBA using SQL skills I had...then got a job that required me to learn C#. Now, because of background I'm learning X++ / Microsoft Dynamics.

The main things is that the principles of most languages are the same, and even if you go down the C# road or the Java road OOP is generally OOP and you can traverse languages without a giant learning curve.

My advice: Learn what you think you want to know, and a lot of what you learn from there will be dependent on the jobs you get. I've found that a lot of companies will hire people for jobs in languages that they know you aren't strong in because you can show examples of similar work that's very strong and they believe you have the foundation to learn what they need.

share|improve this answer

The important thing to remember is that all of these languages, IDEs, etc, are just tools in software engineering. Your primary skill is knowing how to use the tools to solve problems.

So, the important thing is to learn one tool at a time, and learn them well. Then take opportunities to learn new tools as you go on.

I interview software engineers, and I would hire a well skilled C# programmer to write Java and vice versa. The reason? Code is code and you can learn to write just about anything if you have the aptitude. The proper focus is on the ability to use code to solve problems. Learning new languages is just a matter of learning syntax.

In the last year I've written apps in Java, C#, C++, PHP, Perl, and now I'm back in Java again.

share|improve this answer

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