This week's book giveaway is in the Mac OS forum.
We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line!
See this thread for details.
The moose likes Jobs Discussion and the fly likes Specialist/Generalist Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Careers » Jobs Discussion
Bookmark "Specialist/Generalist" Watch "Specialist/Generalist" New topic
Author

Specialist/Generalist

Paras Jain
Ranch Hand

Joined: Feb 26, 2005
Posts: 137
Hi Chad,

You have two chapters in the book i) Become a Generalist ii) Become a specialist.

What are the basic philosophy behind these? What is the message coming from these topics.

I know about some of the sayings - "Jack of all trade and master of none" or "Know everything about something and something about everything". But these are just what they are - "sayings". In practical life we find it hard where the generalization ends and specialization begins. It all depends on context and with whom you compare....

What I have found is that lthe tech world has become very "experimental" in past few years. Every month there would be some new framework or technology in the market. You have to learn, do PoCs or at least know what all those technologies are. In the process you end up knowing many things, but hardly deep dive in one of them.

Even in one technology say Java or C you hardly become master or know everything. Does anyone know everything about Java, Hibernate, Spring, C ....

Your opinions/suggestions/advice?

Regards,
Paras


Paras Jain
SCJP 5.0
Chad Fowler
Author
Ranch Hand

Joined: May 19, 2009
Posts: 38
Hi Paras.

I wrote those two chapters with intentionally conflicting titles on purpose. I wanted to make the point that it's important to go both deep and wide in knowledge. Here's a summary of how I feel about each:

Being a generalist:

I've had the misfortune of working with a great many developers who have learned the trade of programming but don't understand how what they do fits into the whole picture. They don't know, for example, how operating systems work, how to set up a web server, how different configuration settings can change database performance, and so on. They can write code but don't intimately know how code is deployed in production.

The best developers I've known, however, know their way around system administration, understand the fundamentals of TCP/IP networking, really get how databases working, etc. So when something is wrong, they really know how to fix it. Or when something has to be deployed in an emergency, they can handle that. That "jack of all trades" quote leads a lot of people astray, in my opinion. It's definitely possible to be "jack of all trades; master of some". That's what I recommend.

And that brings me to being a specialist:

Being a specialist:

I've found that a lot of people consider themselves to be specialists in technology because they only know one. That is not being a specialist. That's being limited and myopic.

To me, a specialist is someone who knows a technology up and down the stack. A specialist in Java web technology would know at least one framework intimately, as well as the servlet container, servlet and JSP/tags APIs, application server, Java language, virtual machine technology, etc.

A Java specialist should work to fully understand not just that Java supports a certain type of garbage collection but actually how the garbage collector works---how it's implemented. How different JVM settings affect performance, memory utilization, etc. and when to choose different modes of operation or even different alternate JVM implementations.

One example I give in the book is of interviewing candidates and asking them: "how would you write a program in java that would make the JVM crash". Many of the Java "specialist" candidates I was interviewing had absolutely no answer to that question. Not even a guess. Those people were not java specialists.

How do you do both?

You're right that it's hard to find the time to do it all. So the answer to this question is partially that it just takes time. You can't be well rounded and deep over night. But if you set your sights on it, you can work up to it over time. Remember that 20 minutes of learning per day can get you a long way. Don't be afraid to experiment. Use down time between meetings, etc. to fit in learning when you can. You'll find that the typical work day has a lot of wasted time. You can also take time during the work day to improve yourself. Spend 20 minutes learning about a functional programming language so you can see how those paradigms work. Or 20 minutes learning about Erlang or Scala to see how multi-processing-focused languages cause you to think about problems differently. You don't have to dedicate every waking hour to technology to make these changes if you are patient and committed.


The Passionate Programmer: Creating a Remarkable Career in Software Development
http://www.pragprog.com/titles/cfcar2/the-passionate-programmer
http://chadfowler.com
Paras Jain
Ranch Hand

Joined: Feb 26, 2005
Posts: 137
Thanks Chad for the detailed answer.
Yes it is very imperative to know the fundamentals. As per my recent interview experiences I can tell that not many interviewer thinks the same way.
I really enjoy the interviews where Servlet fundamentals, algorithms, Caching, OS questions are asked, rather than academic questions like how to write for loop in jsp using struts tag. For such syntactical questions we already have Google and most of the time it gives you the answer.

Another question, do certification make someone certified specialist? At least I think so.. What do you think? Someone having SCWCD proves that he knows underlying fundamentals, right?
Chad Fowler
Author
Ranch Hand

Joined: May 19, 2009
Posts: 38
Paras Jain wrote:
Another question, do certification make someone certified specialist? At least I think so.. What do you think? Someone having SCWCD proves that he knows underlying fundamentals, right?


I think certifications just prove basic knowledge. So I would say, no, certifications don't prove that someone is a specialist int he sense that I think of a specialist. It would probably be possible to create a certification that did, but I'd never trust a certification to be the sole measurement of someone's ability if hiring.
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 30580
    
154

Chad Fowler wrote:I've found that a lot of people consider themselves to be specialists in technology because they only know one. That is not being a specialist. That's being limited and myopic.

Well said!


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
I like the concept of a "generalizing specialist":

from http://www.agilemodeling.com/essays/generalizingSpecialists.htm

A generalizing specialist is someone who:

1. Has one or more technical specialties (e.g. Java programming, Project Management, Database Administration, ...).
2. Has at least a general knowledge of software development.
3. Has at least a general knowledge of the business domain in which they work.
4. Actively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas.



The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
arulk pillai
Author
Ranch Hand

Joined: May 31, 2007
Posts: 3220
I like that too.


Java Interview Questions and Answers Blog | Amazon.com profile | Java Interview Books
 
GeeCON Prague 2014
 
subject: Specialist/Generalist