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.

It seems like to become a successful programmer one should choose a single language, technology, platform, field and focus on it. The problem is there are so many interesting things in this area I can't stop choosing, I found myself learning basics of a lot of programming languages/technologies and immediately moving to something else. So I'm spending a lot of time with such a little use. I've been .NET/C#/WPF developer for more than a year now, I'm not a bad programmer, but I could be so much better if I were more focused on my current technology stack though I feel like I'll be stuck with making meaningless business application and GUI this case. May be getting a fulfilling job making something useful would help me, but to get this kind of job one should already be proficient in some field. So I desperately need an advice. How to choose your way and be sure you're not making a mistake? How to stop worrying and start programming?

share|improve this question

closed as off topic by Justin Cave, Mark Trapp, thorsten müller, Yannis Rizos May 7 '12 at 8:16

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Career advice is off topic, please read our FAQ thoroughly. –  Yannis Rizos May 7 '12 at 8:18
add comment

3 Answers 3

up vote 3 down vote accepted

First off your premise that

to become a successful programmer one should choose a single language, technology, platform, field and focus on it.

is incorrect; language, technology and to a lesser degree platform change all the time so certainly some people will see it is an advantage if you know more than one.

The field/business domain is what you need to understand to become really successful. If you don't understand and get excited about the business domain then every solution is going to feel somewhat pointless.

Don't be afraid to change fields, while it is definitely harder to get a job in a new field it is possible, also I don't believe it is possible to know what field will really interest you until you have actually worked in it 6 months anyway (same goes for specific jobs)

share|improve this answer
add comment

I feel like I'll be stuck with making meaningless business application and GUI this case.

If you feel you are capable to understand and excel in other technologies you should leave what you are doing and do those exciting things you like. However, one has to draw the line between a job for living and a hobby. Most need to make sure that they get paid and would put a higher priority on this aspect of a job than enjoying the job. The applications world will keep on changing and the feeling that there is something new will not end soon. I would personally suggest that you keep building experience in technologies where you could realistically be considered as a job candidate for. If you keep switching between technologies, you may be at the danger of showing nothing but shallow expertise. Many employers look for deep expertise, and I can't blame them. One major advice is to make sure you can do the other thing you want to do before you leave the good ride you are having.

The real challenging question for many developers is what they do when their mastered skills become no longer attractive to employers. Being 40 and all what you know is a set of not-so-wanted technologies is not a good thing. Specially if you have a family and can't spend 18 hours reading books. This may be a problem you need to consider a solution for. It is more important than not being challenged enough today, in my opinion.

How to choose your way and be sure you're not making a mistake?

You choose your way based on your capabilities and circumstances. I'd focus on my goals first. As you can see I care about having a job, so I focus on doing a good job and try to see what could make me valuable on the short term. For the long term, you need to be with a company that could support your ambition and could provide you the necessary training so that you could stay up-to-date in your career. That usually happens only if you were attractive enough to be picked by such a company.

There is no way you can guarantee you will not make a mistake though! The process is kind of iterative.

share|improve this answer
add comment

Choosing the right tool for a given task may take time. It's actually better to spend some time experimenting with various technologies to find the best fit rather than rush on an arbitrary one which may lead to a much lower productivity in the long run.

Therefore, knowing the basics of many languages/technologies is as useful and required as deeper knowledge of them. Either takes time. You'll also notice that a lot of know-how is language/technology independent.

As for programming per-se: http://norvig.com/21-days.html

share|improve this answer
add comment

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