One of the things mentioned recently maybe in the SO podcast or Joel was that the best way to succeed at business when you start out is to start specialised and concentrate on one thing only.
If you say you're the jack of all trades; you're just another jack! If you say you're a specialist in - I think joels example was some type of faucets - then even though you think you've just removed most of your market; you've actually increased the odds of getting business in a specific marked as you'll stand out more against the rest; somebody somewhere will want what you more than if you just say you do everything.
So anyway, my question is; I'd like to specialise myself in something. I've been doing C/C++ for a long time but never really pegged myself as either win32, mfc, directx, wxWidgets, qt, boost, sdl, allegro, etc etc. I've tried everything and done different things in each; I've also started moving into actually writing for linux (and now osx) as apposed to just using it so my opportunities have grown even further.
My view was that the more I know the less likely I am to become stagnant and stuck; if I know bits of each I can get a job anywhere and then learn more as I need it.
Over the last couple years I also took on .NET and then PHP/LAMP; I feel quite comfortable in either but I guess in my heart I'm still a C++ guy (although I think I've learned more commercial things in PHP than I have done with c++).
The other issue I feel is that the world is becoming highly web-based, and technologies such as C++ are becoming less and less used (ignoring Google's new tool - can't remember the name) and other things like flash and flex are becoming more popular. I do agree that the tools we use to view the web are written in C++/like but in terms of market share I think all the bases are already covered.
I was wondering how people decide what peg to eventually pick and why; and is this for business reasons (i.e. it makes more money) or for selfish reasons (i.e. I feel complete by writing things in C++ as apposed to PHP).
Maybe i'm asking the wrong question; maybe I should by specialising in a specific product rather than a language as a service; Didn't think of that...