views:

463

answers:

11

Duplicate of: Is it better to go broad or go deep

Question Brief:

In order to be rich and prosperous, is it a better idea to be niche or sparse? Should I continue to vary my skills, or predict the market and become a master of X next popular technology? (I do recognize that a technology doesn't need to be "popular" to be profitable).

Longer Question/Ramblings:

The obvious answer is "you don't have to do anything!", but that's not what I'm looking for. In order to be successful and rich, do I need to dedicate myself to programming in a certain few languages and master a select set of technologies, or can I be a jack of all trades, 'pretty good in most' programmer?

I'm currently working a coop job, where my tasks vary intensly. I write Php/MySQL/Html/Javascript/CSS to do webpages, Perl/Python/Ruby to do scripting, Java and C++ for some projects (not on the same project mind you), DITA/XML/SQML for documentation.

I enjoy programming in any flavour (I prefer to avoid web programming due to the incompatibility of browsers), so I'd be happy being a C# .Net developer, one of those beard wielding C++ masters, or an OpenGL Guru, etc. I'd even become a master of Turing if it paid the bills. I dabble in cryptography, security, optimization, compilers, interpreters; you name it! If it's in this field, I seem to take an interest in it. I even write programs for AVR Robots.

Summary:

If I don't care about what kind of programming I do because I seem to enjoy it all, what are some of the best ways to make money?

+1  A: 

There are benefits and downsides to either one.

Niche: You specialize in a certain area and if the area is popular (or even an old field needing new handlers) your skillset will be very useful. Downside is that you may get left by the wayside as the world moves on to new and better things.

Sparse: You are a jack of all trades but a master of none. Your job prospects will be higher just from the sheer number of fields you could apply yourself towards, but you may not be an "expert". You may get passed over for positions because another recruit happens to have a more intensive knowledge of the particular subject.

TheTXI
+5  A: 

If you want to do well in the short term, become an expert in one tiny area. However, to be successful long term you need an array of skills and competencies. Cobol programmers were making barrelfuls of money in 1999, but after Y2K the rates dropped. Ruby programmers were all the rage 1-2 years ago, but it's just another tool in the belt now.

If your ultimate goal is to make lots of money, specialize in something that you know will not go away - and keep current. SAP or Oracle App development is a great example. The barriers to entry for such platforms are high, but once you get "in the club", you'll never be without a job (or without a 6-figure+ income).

Jess
There are still companies out there who are in desperate need for COBOL programmers. It's not exactly a rage field by any stretch of the imagination, but one could make a very lucrative living right now saving a company who has lot its long-time COBOLers
TheTXI
The downside of lots of money, of course, would be that you then have to deal with SAP or Oracle Apps for a long, long time. Using them is painful enough, the thought of developing them makes me slightly suicidal.
Greg D
+3  A: 

Choose large niches. Get proficient at some CMSs like Drupal or become a Ruby-on-Rails guru. Learn Flex and wow everyone with your RIA skills. You dont need to know everything, but don't spend your time learning really oddball low-demand stuff like kernel drivers.

Scott Evernden
+2  A: 

Depends on how you define "rich".

If you'd like to be really rich, I'd say don't be a programmer.

There are very few developers who are "rich" (e.g., Gates, Sergey and Brin, etc.). Most make a middle class living working free lance or for companies large and small.

duffymo
I agree. I think you mean "Brin and Page" or "Sergey and Larry" though.
mandaleeka
Correct, thanks for the education. 8)
duffymo
+3  A: 

There is a middle road. I define myself (as of now) as a web-dev (niche?) which means I'm working with dozens of technologies yet I don't feel master-of-none about js,css,C#,xslt,etc.. Syntax is a very easy thing to pick up really moving between languages, it's the generic patterns you need to think in terms of.

You can be master of some, which is a very marketable position.

annakata
+3  A: 

You should always continue to broaden your horizons (learn more technology). I really don't think there is such a thing as a "niche" programmer. No good programmer knows only one thing. I wouldn't hire you for a Java position if all you knew was Java, who knows if I'll need a quick program to parse a billion text files and produce a quick CSV of whatever-the-hell. If all you knew was Java that would potentially take you a lot longer than if you knew perl - even if you were a perl newbie. Knowing multiple programming languages / technologies / apis / etc. not only makes you more valuable to potential employers - it'll make you a better programmer all around. There's a billion ways to tackle a problem, unless you've only got one toolbox.

Brian Dilley
+1  A: 

It's almost always more profitable to specialize but the greatest risk you have when you do that, is becoming obsolete. At that point, it may be too late to recover. Look at COBOL programmers for instance. Being specialized in COBOL around the Y2K fear, meant you could pretty much name your price. Lately though, is there much need for COBOL programmers?

GregD
+3  A: 

The old saying is, "a jack of all trades -- a master of none."

I would say that to command serious respect (which normally translates to healthy salaries), you need to be an expert in a specific area, while having significant enough breadth that you contribute code, to related areas, and keep up wit the conversation on any programming topic (compilers? Yeah I know something about that...)

SquareCog
+2  A: 

There are two general kinds of value you can add to your professional skill set: one is knowing things, and the other is knowing how to find things. The former will get you a quick buck (I've seen examples of someone with specific hard to find knowledge making $250/hour, but situations like that are rare), while the latter will give you a richer career.

IMO, Your best bet is to find some role you are really enthused with and becoming a guru at that. Trying to pick the next 'hot thing' might pay off, but if you're wrong you've wasted a lot of your own time.

Having said that if you are looking to make money, and are willing to work in different conditions than most software houses (i.e. suits required, extremely high pressure, etc.) the financial industry is probably your best bet.

I will say I used to think similar to you, and after chasing the buck for a while I realized money wasn't really that important. You really start hitting diminishing returns in terms of quality of life boosts around the area entry level developers come in. Making 40k vs 30k is a much bigger difference than 120 vs 90.

Andrew Khosravian
+1  A: 

if you want to be successful and rich in programming, there are two obvious paths:

  1. start a company that supplies programmers to other companies; herd and milk the cows until you can sell out

  2. create a product that people will pay for. you don't have to sell a million of them, just enough

Note: it is extremely unlikely that one can get rich programming as an employee of someone else's company. There are some notable exceptions (i.e. start-ups) but these are very rare.

Steven A. Lowe
+1  A: 

Don't focus so closely on the minutia of the LAMP stack, or Rails, or whatever and instead say "Web technologies". Or even a step higher and say "Internet technologies". Be good with your tools but never lose sight that better/different tools come along.

Also, there exists some "timeless knowledge" in our field. Some methods help whether you're coding a platform-specific device driver in assembler or scripting a Web 2.0 app. Know these methods and principles. They separate the "paid amateurs" from the "professionals".

Unless you job hop continuously you will develop some in-depth knowledge, and jobs where you can apply it will pay more. But keep the above ideas in mind and you won't end up as a dinosaur, maintaining some legacy app from your office in the basement.

dwc