• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Specialist/Generalist

 
Ranch Hand
Posts: 141
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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
 
Author
Posts: 38
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.
 
Paras Jain
Ranch Hand
Posts: 141
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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
Posts: 38
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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.
 
author & internet detective
Posts: 41860
908
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

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!
 
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
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.


 
Author
Posts: 3473
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I like that too.
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic