Find out what is hot in your market, as that skill is most likely to get you
a job. Then, figure out the niches that pay the best and determine if you
like them. If so, learn the niches and you will be both employed and well
compensated.
Learning languages/techs for the purpose of expansion has some value, but it
can be a rat race if you are learning things that are not used in your
market. Perhaps your town (or the town you want to live in) is very hot on
Java. If so, then Java is a smarter focus than .NET, unless there is enough
..NET work and not enough talent (then you fetch a premium).
Unless you know your market (or the market you wish to live in), you are
simply learning without a direction. You might luck out, but you might just
waste a lot of time on technology that does not help you in any way.
I, personally, have focused on .NET. Nashville, TN is a Microsoft town, so
learning Java is not the best use of my time (I have worked on Java in the
past, but have not kept up my skill). It is very useful to know SQL Server
here, although many shops use Oracle (I have worked on both skills and kept
the coding aspects up to date in both -- more proficient in SQL Server,
however). I have no interest in learning PHP (at least not for the moment),
as it takes away from my time to learn something that enhances my career.
My suggestion is you do the same thing. Understand your market (or the
market you want to move into). Investigate the job boards and see what is
hot. As much as you can, figure out which additional specialty skills will
improve your pay scale, but only choose those you are interested in (life is
too short to work on skills that piss you off). Then, study and become the
best you can be at those skills.
Other suggestions:
1. Buy beta books to get info on new technology and not to learn the right
way to do things. Most authors of early books are experimenting themselves,
so the methodologies generally suck. You can still get great information out
of them, but do not focus on the methodologies (the "mental masturbation"
portions of these books).
2. Spend money and time to improve your skill. If you get one great idea out
of a book, it is worth it. Do not shy away from spending your money on your
education. The world is full of developers that wait for their company to
train them. Many developers get paid very well to clean up their messes. Be a
well compensated janitor, not the drooling kid.
3. Be flexible enough to adjust your direction when you see trends in the
marketplace. You will make mistakes and choose wrong directions, but each can
be a wonderful learning opportunity.
4. Don't be afraid to join betas, but make it a calculated risk. YOu can get
burned by jumping on technology that goes nowhere, so be careful with your
time. Spend enough time to be ready if you see a move on technologies you are
not sure of. This guarantees a foundation if it goes somewhere, but does not
completely waste your time. On technologies you are fairly sure will go,
spend more time (SQL Server 2005, .NET Framework 2.0, etc.).
5. Don't try to learn everything. You can't do it. This is not a challenge,
it is just reality. You cannot master everything with technology advancing at
such a high rate.
6. Learn the fundamentals. Pick up books like Code Complete or take courses.
Too many programmers do not know the fundamentals, which is a crying shame.
--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA
***************************
Think Outside the Box!
***************************