views:

222

answers:

4

as a developer, as new technologies come and go quickly, would you specialize in what you are doing or try something new?

for example, I am more inclined towards PHP/Zend Framework development until recently (not that recent) when there’s a lot of Hype abt ASP.NET MVC and Ruby on Rails. I am quite tempted to try those to see if they are really better or if it can speed up my development or anything like that. After a bit of trying out, I discovered that to know if they really help, I need to learn a lot 1st, which takes time.

Being a web developer, I did some flash, now I feel Flex seems to fit my need better, to build RIAs and there’s still AIR and Silverlight that seems promising also another example is C# both C# 4 and F# are coming out, the advantage of F# seems to be more declarative programming and you just need to tell what you want to do vs. how you want it done. This enables the compiler to optimize the code better.

sometimes when you try new technologies/alternatives, you know advantages of each and know what alternatives are out there that can be used ... but this will take even more time than just trying out ... you need to know quite a bit and practice to be efficient in it.

Will you invest time in trying out these things, which may broaden your skills set and be more aware of your surroundings for continuing specializing in what you are doing?

+1  A: 

There are several factors to consider.

First, specialists have an easier time with the recruitment process. Certain positions may get hundreds of applicants that have to get through several layers before they ever see the development team: recruitment agents, HR drones, hiring managers and line managers. Each of these will have to filter out as much noise as possible and specialists will tend to make it through this more easily than generalists.

Second, knowing more than one technology is not only a plus, it's really a must (imho). If you've only ever done Java (just as an example) you're doing yourself a disservice by not seeing how else things are done.

Third, if you constantly jump onto the latest hyped technology, it's a good recipe for showing a potential employer a lack of commitment and direction as well as ensuring that you know a little about everything but aren't good at anything.

Fourth, you have to be interested in what you're doing and if you're bored of with what you're doing you won't be doing anyone a favour, least of all yourself, so if learning something new keeps you interested, that will pretty much trump all the previous reasons.

You can't know everything about Web development or Java or C# or pretty much any similarly sized slice of software development. You simply can't. There's too much to know so you have to pick and choose. Generally it takes a year to become competent in something and three or more years to become an expert. That's just a rule of thumb not a hard-and-fast rule.

So my advice would be to have your strengths, know something about a few things around that and be aware of a lots of things that you aren't necessarily expert or even competent in.

cletus
actually knowing everything but not good in anything is what i am really abt when trying new stuff ... however i sometimes feel that if i dont try new things to see what they offer, i maybe lossing out on somethings, often different tech or new tech may speed up my development. also i may get to know technologies that may be better for doing some things
iceangel89
+4  A: 

I'd suggest specializing in programming skills that are not language specific - problem solving skills, data structures, prototype analysis, writing specification etc. These are all skills that will be valuable to a developer, no matter what language or technology is requested.

For any programmer I think keeping an open mind about what is happening in the rest of the field is also a pre - trying out new things will not only feed your own curiosity, but it will also show different styles of tackling problems. If it gets you excited, take more time to learn the technology in depth.

Investing time in how things work is never lost - the worst thing that can happen is that you learn something.

ylebre
ahaha learning something is something good! hmm learn something not language specific, hmm thats something i nv thought of...
iceangel89
+1  A: 

There are technologies that are sort of orthogonal. For example, you can't judge PHP vs. Flash, they are meant to do different things. So you can try out and master several such technologies.

With web technologies you have several options, PHP, ASP.NET, JSP, Python etc. Each of them is not just a language but has a vast ecosystem of components, third party libraries and frameworks. It is always a good idea to check out what's there to broaden your experience. I would certainly do this.

If you talk about jumping to a new (to you) technology like learning .NET stack (or something else) from scratch you should know that it takes months to years before your are fluent with it. For this time you will be less productive than working with what you already know.

But honestly, learning new stuff is a natural part of the profession, and I dare to say the natural source of fun! You're curious about something? Go for it! I won't damage and you will know more at the end of the day.

Sure there may be other circumstances like your local job market which shows you what will be needed of you. You can consider those and other criteria before choosing what to learn.

User
thanks for ur response. ya, learning new things can be fun, except after awhile of that, i start to wonder if i am drifting too far away and expect too much (to learn everything). but i guess when u try new stuff u improve, at the cost of drop in productivity for awhile ... something like an investment. but i think i must plan my time well ... arr ... last time i was trying both ASP.NET MVC and Ruby on Rails for days and didnt get much ... zzz
iceangel89
+1  A: 

In a way everyone has to find where in the generalist to specialist spectrum where each has their strengths. In learning new technologies things could go either way as someone may learn new things within their own world and thus get more specialized in a way. I've been a web developer using the Microsoft stack for the past decade and I'm not sure I ever really specialized much beyond that but that does include a lot of things like IIS, MS-SQL, classic ASP in VBScript, ISAPI extensions and filters written in VC++, ASP.Net in VB.Net and C#.Net with versions 1.0, 1.1, 2.0 and now addons in the form of 3.0 and 3.5 frameworks. Then there are tools used on top of this like Visual Studio, Resharper, nUnit, and WatiN; but the bag of tricks doesn't really end there as some mash-ups come along like AJAX that can add their own spin.

Aside from those Microsoft technologies there is other stuff like HTML, JavaScript, and CSS that I use and have to be able to handle as the web keeps evolving. Will the Semantic Web become mainstream? What platforms of RIAs will rule that Adobe and Microsoft have but others could jump in with other things possibly.

Thus, I think most of us are doing a combination of specializing and generalizing as we pick up new tools that make some things easier. New versions of software can be good and bad in my experience.

JB King