I'm working as a software engineer, and I have a total experience of one year and six months. For the first one year, I was working as a Web developer with PHP and JavaScript. With my interest I was working with Java for the past 6 years, like I learned it from my school days.

I thought I should get a job first, and I joined as a Web developer with PHP. This helped me a lot. I really got to know about PHP, JavaScript, HTML and CSS. I even worked on Java at part times with other company. Now at the place where I am currently working, I am used with all the technologies I know (above mentioned), and I learned Android. I am said to learn ActionScript, and its increasing with learning new technologies like iOS. I feel this is too many things! I feel like I am doing wrong.

Now I am really worried about this -- whether it's going to have any bad impact on my career growth. Learning new things is really good, but I really want to go deeper and deeper (especially with Java) in one thing.

I really want to know whether working on different technologies affects my career or not, or is it an advantage. Is it good to continue on this path or change careers and focus on a single technology?

  • 5
    The core question here is generalizable to all technology fields and is in fact a really good question in my opinion. Though, I suppose answers are fairly directed towards software at the moment. – Elysian Fields Jan 8 '13 at 14:42
  • 1
    The question could be generalized to fields outside technology, but as stated it's "localized" to software development. – GreenMatt Jan 8 '13 at 18:55
  • This exchange houses such a bad attitude at times. Ignore these silly comments. – wberry Mar 28 '14 at 17:32
  • 1
    This is a variation of what skills should I learn and thus off topic. – IDrinkandIKnowThings Jun 25 '14 at 13:54
  • My current software projects at work use: ARM assembly, C, C++, Java, Python, Bash, Perl, SQL, JavaScript (Angular+node), GNU Make, and probably a few others. —— That's not including the tooling for my hardware work. —— If projects are broken down into simple components, then learning the "right tool" for the job is quicker and easier than using the wrong tool. —— For team projects, it's important that everyone speaks the same (programming) language, which meant me teaching some GNU Make and Bash to half the team, but for other stuff - use whatever works. —— I'm actually a C/C++ guy. – Mark K Cowan Nov 15 '16 at 18:22
up vote 45 down vote accepted

In my experience working for a company with a startup mentality, focusing too much on one single platform, stack, or technology could be detrimental, and we're always learning new stuff, especially since technologies change so quickly.

There is still the occasional developer I encounter on the Internet who focuses his or her energies on ten year old technologies that are outdated and that are slowly fading away.

Depending on where you're working and what your career goals are, you may find better successes demonstrating that you're capable of quickly acquiring, storing, recalling, and processing knowledge of new technologies and using that knowledge effectively to build great things. Employers that fit this category, such as the startups and small businesses, seem to prefer applicants who are diverse and who possess these traits.

Now, even if you work for a company that focuses on a single technology, whether it be small business or enterprise consider that while Java is a great platform that most likely isn't going away anytime soon, it's still a good idea to diversify for another reason: When you learn other programming languages, you begin to connect the dots together much better and more thoroughly master certain concepts. Now, I'm not a Python developer, but just spending some time playing around with some Django demos helped me understand more about what servlets in Java do, since Django solves this problem in a slightly different way.

In short, if you're knowledge is more diverse, you'll gain more problem solving skills that will help you succeed working with your language of choice. Don't limit yourself by not at least dipping your toe in the water and at least familiarizing yourself with other technologies.

I also want to add that this isn't true just for programming. If you're an automotive technician who specializes in Toyotas, but you've also worked on Ford, Chevrolet, and Honda, you'll probably be a better mechanic, a better problem solver, than someone who just works on one particular Make/Model. Seeing things from a different perspective is key to becoming an expert in your field.

  • 6
    Your answer had made me have a relief for my life. Wish I had a chance to give you +1000.. Thanks a lot @jmort253. – Vinay Jan 8 '13 at 8:58
  • 3
    +1 for "Seeing things from a different perspective is key to becoming an expert in your field." – Md Mahbubur Rahman Mar 3 '13 at 2:35

Your motto should be "Jack of all trades, but master of (at least) ONE".

While it is good to learn various technologies, I think you should also focus on one technology and go deeper into that and master it to the best of your ability.

Once you have a deeper understanding of a technology you will be able to appreciate the advantages and limitations of various technologies. This will make you a more matured technical person who can appreciate why someone chooses a particular technology.

As you get more experience, it would also help you to know more about the various operating systems (OS), the hardware they run on, why a company chooses a particular technology/OS/hardware etc.

Ultimately you will soon realize that a person who is technology agnostic and who can easily pickup new languages/technologies and who can be productive within a lesser time will be the most sought after.

To give a different perspective, let us say for e.g. I am in a restaurant business as a chef who specializes in Chinese cuisine. While I try to excel to the best of my ability to master the various aspects of Chinese cuisine, it would also help me to understand other world cuisines like Italian, Indian, Japanese etc. This would not only help me to be more useful to my restaurant as a versatile cook, it would also help me to experiment with my core skill of Chinese cuisine and make it better or try something completely new. At another level in the same restaurant, I can also try to dabble in working the tables, handling table reservations, handling customers, their egos and their orders, working as a cashier, handling the suppliers etc. The skills learned in these areas could help me go into a completely different role as a restaurant manager or may be start my own restaurant.

  • 1
    thanks a lot. Its really making me feel so happy that I going in the right path. Got to know because of you guys – Vinay Jan 8 '13 at 11:54
  • 1
    Hey seeknew, this is a great answer. +1, but do you think your assessment can apply to other fields as well? If you can edit your post and possibly add a paragraph on that subject, we can use the answers to this question in determining more definitively whether it would be on-topic or off-topic (and a possible candidate for migration to Programmers SE). This isn't required, of course, but if you can add a generalized perspective, I believe it may help us make the argument that the question can stay. :) Good luck! – jmort253 Jan 8 '13 at 15:36

There are mulitple career paths open to every developer and which one you choose is up to you.

There is the Jack of Trades - this person knows the basics in a lot of technoligies and specializes in learning new things quickly. They tend to cluster around the parts of theindustry where change is most rapid and often are found in start-ups.

There is the Expert. This person goes into depth in at least one and sometimes two or more technologies while still gaining at least a basic knowledge of the surrounding technologies. This is the person who will eventually want to write books and do presentations about his chosen technology. They often end up as consultants.

There is the Specialist. This person tends to concentrate on only one technology and one that is less common than what the Expert learns. These are the people who are database programmers, statistical language programmers, etc. They tend to only work for large organizations that can afford to have people who are specialists. Specialists tend to make more money than Jack of All Trades but their job opportunites are more limited.

Then there is the Subject Matter expert. This is person who rather than specializing in one language, specializes in one industry or type of work such as embedded systems or Finance. They learn in depth about their industry as well as whatever programming languages they need for their jobs. They see programming languages as a tool to get a particular job done, not as an end result in itself. They often work in fields where a lot of business knowledge is needed to write good programms such as in accounting software or medical programming.

Some good answers here.

In general, there are multiple tech career paths. Some rely on specialized knowledge, some rely on broad general knowledge.

Which to choose is really an question for you and your own personality. Some people love to spend 20 years focused on a niche area of technology and becoming the experts on it. Provided that niche area doesn't become obsolete, odds are you will always find a job.

Some people (like myself) hate doing the same thing day in and day out and thrive wearing multiple hats. It can be frustrating never having an expertise, but I've found that people are always looking for my type of skill set (generalist) and it's worked out for me.

These are often called T-shaped and I-shaped people. T shaped people have a deep knowledge of one area, but can communicate broadly across other areas of knowledge. I shaped people tend to be experts in one area and one area only, and prefer not to venture out of that.

You say you have a "total experience of one year and six months." You're very new to this field, and therefore my advice would be this: Don't specialize too early!

You may be interested in how Java works in it's internals and may think that this is what you want to do for a long time, but there are two problems:

  • How can you know you want to specialize in something, if you don't get in touch with other technologies?
  • How should you become an expert when you lack of so much contextual knowlegde?

By the latter I mean that computer science is a field where many things are connected togehter: If you really want to understand how the memory management is handled internally in Java, then it's probably good to know how it is handled in C programs. Same with multi threading, servlets, databases and so on. If you want to be a pro at something, make sure to at least get a good understanding of other basic concepts as well. I've learned so much by programming in C and learning what an OS kernel actually does, that it really helped me to become better at anything else computer related; be it networks, programming, security, and so on.

So don't narrow your expertise after only 1.5 years of experience, this is WAY too early.

  • 2
    this seems to merely repeat points made and explained in a prior answer posted more than a year ago. Note one of the rules for answering at this site is: Don't Repeat Others – gnat Jun 25 '14 at 12:29

Your Answer


By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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