views:

273

answers:

10

I know it is kind of subjective, but as I've seen questions around like "How did you land your first job" etc. I thought it might be suitable. With so many technologies coming out these days and employers asking for specialists in those (no one is looking for generalists), I'm wondering how people here managed to pick one technology (or area) and focus on that. If this question is not suitable here, then where can I ask?

update I'm particularly interested in motivations (money, fun technology, fun projects etc.) and not which has the most chance on a job. Personally I find many technologies interesting but some interesting technologies mainly have boring applications (c# is awesome, but most projects written in c# are not for me). Just looking for inspiration in some of the motivations to see what people seem to enjoy more in a later stage of their career.

+2  A: 

Look at the tags on StackOverflow. See what technologies are most widely in use, and what technologies are up and coming.

From there, you can ascertain that Java and C# are the most sought after technologies at the moment.

Finbarr
There sure must be other motivations. The technologies sought most after are probably not the most fun to work with or have less interesting projects.
Tomh
+2  A: 

I've specialised in areas for two reasons: 1. I was interested in them, or 2. I was required to know them to successfully carry out work given to me.

Examples: I grew up loving the C language as a result of reading K&R and realising I could program close to the hardware. I got to know, and respect, SNMP as a result of my first professional programming role.

Update: It is interesting to note that entering some sectors require you to know a proprietary product that is generally too expensive for you to find or learn at home. Banking is a good example of this: I have a few friends I went to school with, that were not in the same league as me mathematically or technically, yet earning far greater than I because at some stage in their junior career they were introduced to proprietary accounting or banking packages that are frequently desired in high value contracts.

If you want to make good money later in your career you may consider taking a low paid job in a valuable sector to gain access to the software that you could not access elsewhere.

PP
+1  A: 

Try to learn one in detail (I would pick one of the major three: Java, C#, PHP) but don't limit yourself to just one. Learn others after that (or during). It will widen your perspective on things and won't limit the technology scope if you lose your job (you will be able to apply for more jobs if your target isn't limited to Java for example).

Be a generalist, but also specialize in one.

Chad Fowler presents a similar subject in the "Lead or Bleed?" from his Passionate Programmer book:

Make a list of early, middle, and late adoption technologies based on today’s market. Map them out on paper from left to right; the left is bleeding edge, and the right is filled by technologies that are in their sunsets. Push yourself to find as many technologies in each part of the spectrum as possible. Be as granular as possible about where in the curve they fall in relation to one another.

When you have as many technologies mapped out as you can think of, mark the ones that you consider yourself strong in. Then, perhaps in a different color, mark the ones that you have some experience with but aren’t authoritative on. Where are most of your marks on the adoption curve? Do they clump? Are they spread evenly across? Are there any technologies around the far edges that you have some special interest in?

dpb
+5  A: 

I started with PHP, then one day one friend at work started a project with C# .NET, I got more interested each second.

I didn't know about it, I studied Java before it, but I've never liked Java. I was destined to like C# :P

BrunoLM
A: 

My technology choice was made simple, I worked with the technologies of the company that offered me a job straight out of uni. At the time I didn't consider that I could pick and choose. That "choice" landed me with VB6, MS Access 97, and Sql Server 7 (the year was 1998). From there it was a pretty much down the Microsoft path and into C# in 2003. There seemed to be much less choice back then.

Not sure which way I choose, or how I would choose if I had to graduate college and do it all in 2010. Sorry :)

rob_g
+3  A: 

As I was changing vocations into programming, I talked to many friends in IT, and learned that C# and Java were both broadly employable. I very much wanted to choose the city I live in, and stay in that city if I were to lose my job, so a multiplicity of available jobs was an important feature for me.

After I chose Java, and gained a job in Java Web programming, a number of other technologies were necessities. In my case, it has led to Tomcat, JBoss, Maven, Cayenne, Hibernate, MySQL, Struts2, JavaScript, Eclipse, and now EJB3 and Spring. It is worth noting that I don't know any C, C++, VB, Perl, or PHP, and within the Java world, I don't know anything about Java Swing, JavaFX, or JavaME.

Sometimes, of course, you hear about a technology and it intrigues you. I learned Python because I had heard how fun it is. I wasn't disappointed, and I've used it at work for scripting.

You will need to consider carefully what you want to gain from your IT career to narrow the choices. Nobody learns everything, and each technology serves a particular purpose, many of which aren't relevant to your particular interests. As you settle on a programming world, it will be more evident what other tools are desirable.

This article by Joel might be a good read for you.

FarmBoy
And Joel wrote that 7 years ago. It's got far more exciting since then!
Trevor Tippins
+1  A: 

Simple: Pidgeonholed.

When I was at uni I got a summer placement at a company that used C# and .net to develop eCommerce applications, and kept working there for another year.

Now I work at a slightly larger company that uses C# and .net to develop B2B eCommerce applications.

Unfortunately, I get the feeling I will be doing the same thing for the rest of my career, or at least a large portion of it, as experience in a particular language dicates which jobs you can and can not get (I tried to get a C++ job at various companies, and all declined me due to lack of experience).

Ed Woodcock
I am at the same dilemma unfortunately. I started using Java and ever since then I can't get any other jobs because of no "professional" experience (that is for C++/C#). :-(
The Elite Gentleman
A: 
Nitz
+1  A: 

Ask yourself if you want to go down the Microsoft .NET route or "something else". Choosing the .NET makes it far simpler to specialize as there are fewer adjunct technologies that you need to consider vs. the Open Source world. You'll still need to generalize somewhat within the .NET platform (so learn C#, C++, WCF, WPF, WinForms, ASP.NET, ASP MVC, LINQ, etc.) and learn some of the more popular "add-ons" (such as NHibernate and Unity for instance) plus corollary technologies such as DHTML, JavaScript, CSS, JQuery, etc. that make up the presentation layer plus SQL (and maybe Oracle PL/SQL and/or SQL Server T-SQL too) for the data layer. Within these technologies you'd choose to specialize in back-end, front-end, or middle-tier development and generally focus your energies on improving your primary skills there.

If you think that list is bad, try doing it for the Java/JEE, Ruby & LAMP/OPAL worlds.

Remember that technologies & platforms come and go with the wind these days. You're probably actually better to specialize in business facing domain expertise that has more longevity such as GIS, financials, game graphics, etc. and have the more general programming skills to deliver that type of application rather than being just purely technology focused.

Trevor Tippins
A: 

You can get a good impression on the acceptation rates and trends in programming languages by the Tiobe Software Index:

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Arno