aspose file tools*
The moose likes Jobs Discussion and the fly likes Wide & Shallow VS. Narrow & Deep Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Careers » Jobs Discussion
Bookmark "Wide & Shallow VS. Narrow & Deep" Watch "Wide & Shallow VS. Narrow & Deep" New topic
Author

Wide & Shallow VS. Narrow & Deep

Nidhi Sar
Ranch Hand

Joined: Oct 19, 2009
Posts: 252

Hello Jacquie and welcome! I'd be very interested in hearing your and other ranchers' view on this:

In my many years of software development, I have worked in many different technologies (Java, Microsoft, Mainframe, CASE tools, Internet development yada..yada...yada). Having this experience in different types of projects, methinks, leads to a good feel on the way a technology problem should be solved and how best to implement the solution. For example if I decide to build an application in Objective C for i-phone (both technologies that I have zero experience on), it wouldn't be difficult to learn the technologies and implement it - given the many, many times I have started from zero and then implemented the solution successfully.

Unfortunately, the technical recruiters do not share my sunny view of life .
The job descriptions they post out for programmers remind me vaguely of commodities-trading : "8+ years experience in Java", "5 years experience in .Net".

My question: Is it better to choose a technology right at the beginning of your career and then just hang-on to it (and newer versions of it) for life? Or is it better to work on different types of projects and get a big picture idea?

Isn't there value in the latter? The technical recruiters certainly don't seem to think so.

Thanks,
Nidhi


"A problem well stated is a problem half solved.” - Charles F. Kettering
SCJP 6, OCPJWCD
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
Good question. It is better to have a wide variety of experience. This includes software technologies and also includes functional areas.

It sounds like you are not finding the technical recruiters that understand this. They do exist, but are hard to find. Also, many technical recruiters that
I have had discussions with in the past did not have the skillset to accurately assess software skills and related pyschological characteristics for various types of positions. Since many technical recruiters work of a "sales" commission and there are so many "phony" Java programmers in the world, their job is very difficult.

Your best bet, which worked for me many times, is to find positions being handled by the employer's human resources staff. Human Resources personnel typically have a better understanding of the company, the "personality" of the organization, the supervisor and best hiring practices in general.

Human Resources staff = good chance at proper position and fair interview process

Technical Recruiters = slight chance at proper position match and faulty interview process

Keep in mind that technical recruiters are usually individuals that were poor programmers and could not understand the complexities of software design. So, inwardly they probably have a tinge of resentment and envy, either consciously or sub-consciously.

Good luck!
Nidhi Sar
Ranch Hand

Joined: Oct 19, 2009
Posts: 252

James Clarks wrote:
Keep in mind that technical recruiters are usually individuals that were poor programmers and could not understand the complexities of software design. So, inwardly they probably have a tinge of resentment and envy, either consciously or sub-consciously.


Thanks for this James , I will keep repeating this like a mantra if I get rejected by the next recruiter

Seriously though, I really like your idea of working with the HR staff of the comapany instead of a recruiter. The problem is that, unless you have a personal contact within the company, you pretty much HAVE to go through a recruiter. Most companies outsource employee-hunting to the staffing companies... atleast as a first step before you can meet them. I don't blame them, nor the recruiters, for the way things work, but that's the way it is.
Kavita Tipnis
Ranch Hand

Joined: Sep 21, 2008
Posts: 177
Nidhi Sar wrote:

Unfortunately, the technical recruiters do not share my sunny view of life .
The job descriptions they post out for programmers remind me vaguely of commodities-trading : "8+ years experience in Java", "5 years experience in .Net".


+1 I agree, I just have 2 yrs 'on the job' experience but everyday I learn something new.
I don't have to apply everything that's out there in a project,but it's good to know.

James Clarks wrote:
Human Resources staff = good chance at proper position and fair interview process


HR Resources - It's very hard to get noticed by HR from large companies, since they have outsourced that function to staffing companies.

In my opinion, technologies will come and go , but your ability to grasp and learn them is what matters.
Also, you can use your core computing knowledge such as math,algorithms and data structures to create new technologies.

I guess for any profession, if you cease to learn new things, you will cease to exist ;-)
Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
Nidhi,

As with most things, I think there are at least two sides to this question. Personally I prefer someone with a wider variety of skills when I'm interviewing candidates for hire. Like you I've worked in several languages and on multiple platforms over the years. However I will admit that there are times when having someone who is an expert in a particular language, framework, or platform can be a big benefit.

As for the job thing, it's not just the recruiters. Most companies have a list of "ingredients" that they want to have in a new hire and, if you're dealing with recruiters or an HR department, they're going to want to see those ingredients on your resume before you can go any further. That's why it's much easier to get an interview someplace if you know someone working there who can vouch for you, or if you have some other way of meeting the hiring manager. In fact, I met the last manager who hired me when he came back to his "old company" for lunch with some friends that I was working with. I went along on the lunch and when he mentioned that he was looking for Delphi programmers (yeah, it was a looong time ago) I told him I'd been playing with it in my off hours. He invited me for an interview, and I never had to talk to HR until they sent me a job offer.

If you've got a local Java User Group, start attending meetings and talking with people there. You never know which one might be the key to the side door.

Burk


SCJP, SCJD, SCEA 5 "Any sufficiently analyzed magic is indistinguishable from science!" Agatha Heterodyne (Girl Genius)
Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
Kavita Tipnis wrote:+1 I agree, I just have 2 yrs 'on the job' experience but everyday I learn something new.

Kavita,
I've been doing this for decades and I still learn new things - maybe not daily, but it sure seems that way. For me, that's part of the fun and challenge of this field.

Kavita Tipnis wrote:I guess for any profession, if you cease to learn new things, you will cease to exist ;-)

Agreed. However, most professions don't have as many new things showing so often.

Burk
Nidhi Sar
Ranch Hand

Joined: Oct 19, 2009
Posts: 252

Whoa, cool down, brother.

James Clarks wrote:"Most companies"? For how many companies do you have the details of their hiring practices? Do you have a list? How many companies exist in the world? How many companies exist in your country?


Hmmm, I must say, haven't done any data gathering or statistical analysis on the hiring practices of companies. I spoke from the experience of my friends and colleagues - in US job market. I believe that most (ughh that word again ) people here in forums speak from anecdotal experience.

James Clarks wrote:an excuse you keep running through your head to explain why you cannot find a position.

As it so happens, I'm not looking for a position right now. Maybe will so sometime in future. As I mentioned, this was based more on second-hand anecdotes and experience.

James Clarks wrote:This may sound harsh but I am trying to help you.

I know that, James. I acknowledged as much in my post to you. And good advice it is too.
But you really need to soften this tough-love stance, dear!

Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
Nidhi,
Where did those quotes come from? Was one of James' posts deleted?

Burk
Luke Kolin
Ranch Hand

Joined: Sep 04, 2002
Posts: 336
James Clarks wrote:Your best bet, which worked for me many times, is to find positions being handled by the employer's human resources staff. Human Resources personnel typically have a better understanding of the company, the "personality" of the organization, the supervisor and best hiring practices in general.


While that may be true, it's also quite likely that the human resources staff has little to no understanding of the attributes required in a specialized technical position, especially in a company that has a variety of different positions to fill, technical and non-technical. The farther away from the company's core focus, the less likely internal HR is to know what the company needs; whereas a specialized technical recruiter, focusing in a certain area, can develop a good understanding of what makes a successful technical placement and what does not.

Sure there are plenty of useless recruiters. But there are also many, many clueless HR departments who really have no idea how to hire quality; so they try and create a matrix of quantitative attributes (degree, X years of java, Y years of .NET) as a substitute. In a lot of US companies, HR is primarily responsible for keeping the company legally compliant with workplace regulations; recruitment is very much an afterthought. If I was actually interviewed by someone in HR I'd consider that a gigantic red flag.

Clearly, this can vary depending on your country.

Keep in mind that technical recruiters are usually individuals that were poor programmers and could not understand the complexities of software design. So, inwardly they probably have a tinge of resentment and envy, either consciously or sub-consciously.


This really is quite unnecessary, inaccurate and undercuts the credibility of what you say in other areas.

Luke
Nidhi Sar
Ranch Hand

Joined: Oct 19, 2009
Posts: 252

Burk Hufnagel wrote:Nidhi,
Where did those quotes come from? Was one of James' posts deleted?

Burk



Hmmm, you're right, Burk. I don't see James' second post any longer in the thread. I think it was deleted.

Getting back to the crux of the question: Is it better to have a variety of experience in different platforms or deep experience on one (the job descriptions seem to prefer the second one)???
Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
Nidhi Sar wrote:
Burk Hufnagel wrote:Nidhi,
Where did those quotes come from? Was one of James' posts deleted?

Burk



Hmmm, you're right, Burk. I don't see James' second post any longer in the thread. I think it was deleted.

Getting back to the crux of the question: Is it better to have a variety of experience in different platforms or deep experience on one (the job descriptions seem to prefer the second one)???


As I posted earlier, my position is that most of the time, wide is better than narrow. However, I don't think that wide has to equate with shallow. In my experience, most of the developers I interviewed didn't proactively learn about new technology, they go look it up when they get assigned something new at work. If you're the kind who feels blessed because someone is paying you to do what you love, you're probably reading up on new things or playing with interesting tech outside of work - which means you could have the same depth of knowledge as many other developers and have experience in a wider range too.
arulk pillai
Author
Ranch Hand

Joined: May 31, 2007
Posts: 3262
My question: Is it better to choose a technology right at the beginning of your career and then just hang-on to it (and newer versions of it) for life?


No.

Or is it better to work on different types of projects and get a big picture idea?
Isn't there value in the latter?


Yes.

The technical recruiters certainly don't seem to think so.


When you apply for jobs via recruiters, you need to play their game. You need to put yourself in your recruiters' and prospective employers' perspective. They are not interested in what you know, but in what you can offer to meet their immediate needs and requirements.


500+ Java Interview Questions and Answers | Java job hunting know how & Java resumes
Vyas Sanzgiri
Ranch Hand

Joined: Jun 16, 2007
Posts: 686

Burk Hufnagel wrote:Nidhi,
Where did those quotes come from? Was one of James' posts deleted?

Burk


The post was edited


===Vyas Sanzgiri===
My Blog
Vyas Sanzgiri
Ranch Hand

Joined: Jun 16, 2007
Posts: 686

Burk Hufnagel wrote:
Kavita Tipnis wrote:+1 I agree, I just have 2 yrs 'on the job' experience but everyday I learn something new.

Kavita,
I've been doing this for decades and I still learn new things - maybe not daily, but it sure seems that way. For me, that's part of the fun and challenge of this field.

Kavita Tipnis wrote:I guess for any profession, if you cease to learn new things, you will cease to exist ;-)

Agreed. However, most professions don't have as many new things showing so often.

Burk


How long do you keep learning? New languages and frameworks are more frequent now - who knows in the next few yrs we might see new languages/techniques every year.

Most professions having things to build on is a very good plus I believe. I think in programming, new languages and frameworks are shaking my fundamentals
Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
Vyas Sanzgiri wrote:How long do you keep learning? New languages and frameworks are more frequent now - who knows in the next few yrs we might see new languages/techniques every year.

Most professions having things to build on is a very good plus I believe. I think in programming, new languages and frameworks are shaking my fundamentals


How long do you keep learning? Only for as long as you want to do something interesting. I know several developers who decided it wasn't worth the effort to keep up with all the changes and now they're stuck working on legacy systems in maintenance mode. They seem OK with it but I think it would drive me bonkers, so I guess I'm not done learning yet.

Actually, the whole "keep learning" is one of the things I really like about this field - at least most of the time. Learning keeps the mind flexible. Too many people stop learning and their brains seem to solidify - they're stuck thinking the same thoughts they had years ago. It's not something I look forward to...
Vyas Sanzgiri
Ranch Hand

Joined: Jun 16, 2007
Posts: 686

Not for me. I think there are many more things other than work and programming. So "wide and shallow" allows me to use all my skills to "get a job done". That is all I care about work. I know what I am learning or working on right now will have absolutely no use after the next 20 yrs when there will be a new language or framework or technique around. So my take on this topic is learn on "mature techniques" Let all the hype settle down and impt bugs be fixed before you look at the next big thing
Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
Vyas Sanzgiri wrote:Not for me. I think there are many more things other than work and programming. So "wide and shallow" allows me to use all my skills to "get a job done". That is all I care about work. I know what I am learning or working on right now will have absolutely no use after the next 20 yrs when there will be a new language or framework or technique around. So my take on this topic is learn on "mature techniques" Let all the hype settle down and impt bugs be fixed before you look at the next big thing


Wide and shallow isn't bad, though I think it's good to be considered an expert in something. Otherwise it's hard to stand out from the crowd.

As for things you're learning being absolutely no use later, that is almost certainly true for details, but the underlying principles will probably still be useful. For example, I learned C++ back in the mid to late 80's and while I don't do C++ anymore, the Object Oriented principles still apply when I'm programming in Java.

Burk
Vyas Sanzgiri
Ranch Hand

Joined: Jun 16, 2007
Posts: 686

Burk Hufnagel wrote:
As for things you're learning being absolutely no use later, that is almost certainly true for details, but the underlying principles will probably still be useful. For example, I learned C++ back in the mid to late 80's and while I don't do C++ anymore, the Object Oriented principles still apply when I'm programming in Java.

Burk


I think the underlying process is helpful only for mature languages and techniques. C++ is a mature language still used. There are many techniques which were hyped but never got into the mainstream. It is a waste of time learning such stuff.
Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
Vyas Sanzgiri wrote:I think the underlying process is helpful only for mature languages and techniques. C++ is a mature language still used. There are many techniques which were hyped but never got into the mainstream. It is a waste of time learning such stuff.

But it wasn't mature when I learned it, and that's the point I think. You can't necessarily know whether what you learn today will be worth something in five years, but you shouldn't let that stop you from learning.
Jacquie Barker
author
Ranch Hand

Joined: Dec 20, 2000
Posts: 201
Nidhi Sar wrote:Hello Jacquie and welcome! I'd be very interested in hearing your and other ranchers' view on this:

In my many years of software development, I have worked in many different technologies (Java, Microsoft, Mainframe, CASE tools, Internet development yada..yada...yada). Having this experience in different types of projects, methinks, leads to a good feel on the way a technology problem should be solved and how best to implement the solution. For example if I decide to build an application in Objective C for i-phone (both technologies that I have zero experience on), it wouldn't be difficult to learn the technologies and implement it - given the many, many times I have started from zero and then implemented the solution successfully.

Unfortunately, the technical recruiters do not share my sunny view of life .
The job descriptions they post out for programmers remind me vaguely of commodities-trading : "8+ years experience in Java", "5 years experience in .Net".

My question: Is it better to choose a technology right at the beginning of your career and then just hang-on to it (and newer versions of it) for life? Or is it better to work on different types of projects and get a big picture idea?

Isn't there value in the latter? The technical recruiters certainly don't seem to think so.

Thanks,
Nidhi


Sorry for the delayed reply, Nidhi; I see that lots of other folks have already responded, and I haven't yet had the opportunity to look at all of their thoughts, but here are mine:

It would be a mistake to ever think that you can grab onto a single technology and cling to it for your full career -- technologies just aren't that predictable. What you should do is focus on learning new paradigms as they emerge -- really understand the object paradigm; really understand the notion of thin client web-based computing -- and you will be able to easily learn how a given language, or vendor, implements the paradigm.

Resume crafting is both an art and a science -- I believe that virtually anyone's skills can be portrayed in a way that makes that person marketable, without resorting to "skills inflation"! I've helped many folks recraft their resumes -- for example, if you have lots of different language skills, you might sell your ability to "quickly become adept at learning new languages."


Author of Beginning Java Objects, Beginning C# Objects, and Taming the Technology Tidal Wave
Jacquie Barker
author
Ranch Hand

Joined: Dec 20, 2000
Posts: 201
James Clarks wrote:Good question. It is better to have a wide variety of experience. This includes software technologies and also includes functional areas.

It sounds like you are not finding the technical recruiters that understand this. They do exist, but are hard to find. Also, many technical recruiters that
I have had discussions with in the past did not have the skillset to accurately assess software skills and related pyschological characteristics for various types of positions. Since many technical recruiters work of a "sales" commission and there are so many "phony" Java programmers in the world, their job is very difficult.

Your best bet, which worked for me many times, is to find positions being handled by the employer's human resources staff. Human Resources personnel typically have a better understanding of the company, the "personality" of the organization, the supervisor and best hiring practices in general.

Human Resources staff = good chance at proper position and fair interview process

Technical Recruiters = slight chance at proper position match and faulty interview process

Keep in mind that technical recruiters are usually individuals that were poor programmers and could not understand the complexities of software design. So, inwardly they probably have a tinge of resentment and envy, either consciously or sub-consciously.

Good luck!


Great advice, James!

I'd add one more thing: if you can bypass Human Resources and get directly to the hiring manager of an organization, you're in the best shape of all! That's why networking, so as to know who such people are before they resort to hiring a recruiter, really pays off!
Jacquie Barker
author
Ranch Hand

Joined: Dec 20, 2000
Posts: 201
One of the main points of my "Tidal Wave" book is that people get caught up in the frenzy of trying to learn every new thing that comes along -- we'll drive ourselves crazy!

Instead, focus on learning new paradigms when they arise (rarely), and you'll be in fine shape to learn how a particular vendor or language implements that paradigm if and when you need it.

If anyone is interested, I'd be happy to mail out a PDF copy of "Tip 5: Brother, Can You Paradigm?" -- it's so important a concept! Drop me an email at jacquie@objectstart.com with a subject line of "PDF, Please" and I'll shoot you a copy.

Best,

J.
Nidhi Sar
Ranch Hand

Joined: Oct 19, 2009
Posts: 252

Jacquie Barker wrote:[What you should do is focus on learning new paradigms as they emerge -- really understand the object paradigm; really understand the notion of thin client web-based computing -- and you will be able to easily learn how a given language, or vendor, implements the paradigm.



Thanks Jacquie, Burk and all the rest, for your answers to my question. This is certainly good food for thought!

Regards,
- Nidhi
Jimmy Clark
Ranch Hand

Joined: Apr 16, 2008
Posts: 2187
Great advice, James!

I'd add one more thing: if you can bypass Human Resources and get directly to the hiring manager of an organization, you're in the best shape of all! That's why networking, so as to know who such people are before they resort to hiring a recruiter, really pays off!


Thank you. I wouldn't think of it as "bypassing" Human Resources. They are an important part of the process too. Getting the attention of a hiring manager can be looked at as another pathway. And, as mentioned, this is typically strongest route.
chris webster
Bartender

Joined: Mar 01, 2009
Posts: 1851
    
  16

Interesting topic, and interesting posts too!

I'm not entirely convinced by the wide and shallow approach, although I have a lot of sympathy for what others are saying here about this. It's certainly good to have a broad general understanding of current and new technologies, and it's also great fun to keep learning new stuff and trying out new tools/approaches.

But I guess I'm a bit of "narrow" (not sure about "deep"...) IT person. I've spent most of the last 20 years working as an Oracle database developer, plus a year or so of Java, and some time spent on various other technologies. I'm also a freelancer, so I am well aware of the problem with finding technically literate recruiters (let me know if you ever find any!), and of the "buzzword bingo" approach to filtering applicants through arbitrary lists of skills/experience.

Unfortunately - and I hesitate to say this on a Java website as I don't want to get into any silly technology flame wars ! - I think the massive success of the Java bandwagon has actually helped to distort many areas of commercial IT, and I've seen a number of projects in recent years that have suffered from too many Java-oriented generalists and too few specialists. Java is a great technology, but it is in many ways a general purpose tool, like a Swiss Army knife. You can do a lot of things with a Swiss Army knife, but there comes a point where you really need to use the correct tool for the job, and to do that, you need people who really understand how to use those tools: specialists.

In my own field of database development, I have seen several projects wrecked by Java-generalists who deceive themselves that they know enough about enterprise database applications to do the job properly, because they do not realise how "shalllow" their knowledge really is or how much more they need to learn to do the job well. You need to have respect for the complexity and sophistication of the tools we use, and realise when you are out of your depth and need to seek help from specialists. And it can be good to be one of those specialists, so you can help other people to make the best use of a given technology.

Personally, although I'm very interested in Java, I would certainly not claim to know all I need to know about Java in order to implement a complex n-tier J2EE application, for example. But in the current commercial IT market, where Java is probably one of the dominant programming languages and J2EE is one of the dominant platforms, there is a real danger of people who know these things believing they know everything they need to know in all situations.

So I guess my answer to the original question would be:

Keep on learning - and having fun with - different technologies and concepts (or paradigms as Jacquie says), but pick a few key areas where you can become a real expert, offering more than the "generalists" who are also applying for the same jobs.

It's a tough balance to find, but it's probably better to be a master of some trades, than a Jack-of-all-trades and master of none.

Good luck!

No more Blub for me, thank you, Vicar.
Sandeep Awasthi
Ranch Hand

Joined: Oct 23, 2003
Posts: 597
Well explained Chris.

We had similar discussion Specialist or generalist.

Myself is kind of narrow and deep.


Sandeep
Burk Hufnagel
Ranch Hand

Joined: Oct 01, 2001
Posts: 814
    
    3
chris webster wrote:It's a tough balance to find, but it's probably better to be a master of some trades, than a Jack-of-all-trades and master of none.


Agreed. I think that any senior developer needs a wide background, but you also want to have a few areas of expertise. Not only because it's fun to dig in to interesting things and understand them well, but because having that expertise helps you stand out from the crowd - which means you're considered more valuable.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Wide & Shallow VS. Narrow & Deep