Specialists or Generalists: Who are best as Developers?

  • MikeAngelastro-571287

    SSCommitted

    Points: 1576

    Comments posted to this topic are about the item Specialists or Generalists: Who are best as Developers?

  • suneesudhyi

    SSC Enthusiast

    Points: 114

    Good Article! I have also experienced the same thing.

    Coding in stored procedure should be encouraged among developers who are handling both front end and back end.

  • peter-757102

    SSCertifiable

    Points: 6877

    The article states this following opinion:

    This experience led me to the notion that organizations are being foolish by looking for developers who can do everything. The knowledge required to create major applications is too great. Companies end up getting jacks of all trades and masters of none, and the resulting applications are not all that great.

    I very much disagree that yours is a case of being a generalist versus being a specialist and that being a generalist implies you have no deep knowledge in any field you operate in. Your statement probably only has some merit to people that have no more than a few years of development experience.

    Take someone that has tens of years worth of generic experience (has done it all). This person might in fact have quite deep knowledge in the fields you would dismiss him from as not being a specialist. Likewise you assume a specialist has deeper knowledge in his field then someone that did not specialize but has more experience. Which in my view would be another erroneous assumption.

    You try to classify people based on an aspect that says little about their capability to perform a task. It reminds me of the view non developers and academics had (and maybe some still do) of software development where you have a analyst, …. , programmer, …. , and finally a coder. While in fact no one in the world just code with fully laid out diagrams as input!

    Now I can argue why a company will want to hire generalists if their qualities and experience cover what is needed. Quite simple they will be more flexible and adaptable and more likely to come with or adopt suggestions that improve the end result. Also hiring is quite a time consuming business and getting a specialist on the payroll is taking a risk, the smaller the company the higher that risk is.

    Don’t get me wrong, there are tasks where a deep specific knowledge is required and any experienced generalist will support hiring an experienced specialist in those situations (even if only to learn from). I like to close by saying that for smaller companies, hiring specialists is risky and costly and that for larger companies is best to have generalists too, supported by a few experienced specialists in various areas. That way you have all the knowledge in-house and you work with people that can assimilate that knowledge and put it to good use. A good blend will improve your workforce over time. The same is true for mixing exeprienced people with less experienced people, you got to blend to be cost effective and keep everyone motivated and intersted in their job!

  • blandry

    SSCarpal Tunnel

    Points: 4761

    An interesting editorial for sure, but as I read it I was struck that the bigger question in what you are describing may be that this project involved a poorly designed, patched together application more than it involved Specialists versus Generalists.

    When I was a much younger developer, one of the best pieces of advice I ever recieved was very simple: "KISS - Keep It Simple Stupid". Now at the tail end of my career I would say that most of the software disasters I have seen have come from two things: Developers running amock trying to be too fancy or complex, and a complete lack of commenting in code.

    No two other things combine to make an apocalypse-in-waiting than some developer doing work years ago and trying to nurture job security by making code overly complex, and ensuring that there is no commenting for a future developer to know what they were thinking.

    As much as I agree that often Specialists can be more helpful than Generalists, if we are talking about what is in fact a software mess, the question becomes somewhat moot.

    This is why today, every week, we do code reviews. Everyone gets together and reviews each other's code. And if you work for me and dont comment your code, you wont be working for me for very long. Software is an asset, and an investment. I have no patience for people who think following some theoretical methodology protects that asset. Eyeballs are what protects the asset - look at the code and do so with an eye toward someone someday having to tinker the code.

    Concerns about Specialists versus Generalists come second - because if the software is well, a piece of crap, it really doesnt matter who is going to work on it - its already a disaster.

    There's no such thing as dumb questions, only poorly thought-out answers...
  • krowley

    Ten Centuries

    Points: 1344

    Where do your page counts come from? Are there a set of books you have that you pulled these from, or are these from some online documentation?

    I am working on moving from being a generalist to being a specialist in SQL Server and keep looking for the best course of study to take me there. If there was a simple well laid out path, even one that was 2000 pages long, this would be very helpful for me and others like me.

    Instead what I often get in conflicting information on where to even start with the most common thread of an answer being "it depends" πŸ™‚ which I understand to be correct but it still not very helpful.

  • chrisfradenburg

    SSCrazy Eights

    Points: 9592

    I don't think reading any number of pages can give you expertise in programming. Doing is where you get the expertise and since you don't get expertise from doing only doing backups and restores you can't put a time frame on how long you need to work with SQL to be considered a specialist. That is touched on in the editorial but I don't think it was stressed enough.

    Generalists still have a very important place in being able to put all the pieces together. I've worked with some developers that could put their hand to pretty much anything. They were key to the company because they could take a big view of the application and weigh in on both DB and compiled code. They also had years and years of experience so it was something that they had gained over time. It certainly takes longer to become a good generalist but the people that do it deserve a lot of respect.

  • peter-757102

    SSCertifiable

    Points: 6877

    krowley (8/29/2011)


    Where do your page counts come from? Are there a set of books you have that you pulled these from, or are these from some online documentation?

    I am working on moving from being a generalist to being a specialist in SQL Server and keep looking for the best course of study to take me there. If there was a simple well laid out path, even one that was 2000 pages long, this would be very helpful for me and others like me.

    Instead what I often get in conflicting information on where to even start with the most common thread of an answer being "it depends" πŸ™‚ which I understand to be correct but it still not very helpful.

    Don't believe there is a series of books/courses that when followed, makes you a good specialist. They will however help with the groundwork and teach you the concepts used in the field. In other words, there exists no quick fix...not to us humans at least. Anyone can read a series of books and most can pass tests after some practice, but applying the gained information effectively requires more and not all of the skill set is technical. Sometimes it is more a matter of asking the right questions at the right time to the right people!

    Some ideas to help you progress faster:

    * Practice a lot, try different solutions to problems and compare these properly (on very large volumes of data);

    * Find a mentor that can help you out when you find yourself blocked on a problem;

    * Forums are a great source of problems, ideas and solutions (always compare them to your own);

    And once you get a job, make sure you are NOT the master on the subject right away. Because once you are and you get a lot of work to do, you will not have a lot of time analyzing various solutions anymore. It is better if you can learn on the job from someone already more experienced IMHO.

  • bcox 9771

    Grasshopper

    Points: 15

    Thank you for your article. I would like to weigh in on the generalist vs. specialist argument. One point that I think is missed in your article is that, in my experience, specialist will sometimes neglect to consider other tools and approaches that are outside of their area of expertise. In your example it is true that a sql specialist would have considered the store procedures as a solution and probably have been able to develop the CTE much more quickly. However, if it had been a VB specialist, they probably would not have even considered the posibilities of using either option. Generalist are more willing to consider other options and more willing to use a tool that they may not be profient in. That is why generalist are valuable to organizations.

    Personally I would prefer to see a team mixed of generalist and specialist on large development projects. That way you can balance the expertise of the people that know their tools intimately, with those people that may not know the tools as deeply, but may bring since balance to the team. That is probably a luxury that most organziations seldom have.

  • emkopp

    Grasshopper

    Points: 19

    I think that both generalists and specialists are useful. I have found that event the most diverse generalist is a specialist in at least 1 category. I am this person, my specialty is in database (design/development) and OO client server coding. I can and have programmed in a plethora of languages also. When my company finds out I can do the other stuff they use me to do these tasks also in addition to DB stuff. I always refer my coding to review to a specialist until I have a handle on the api, and I often differ to the specialist on how to do something in the platform that they are good in.

    I have also found that some specialists are not worth their credentials in all of this. Some people are just better developers than other no matter how specialized their training and experience are.

    Finally, I prefer people with diverse experience to have on my team as long as they have some specialities. The generalists bring a broader view of the whole picture to the table and the specialists bring a more microscopic view in many cases.

    CASE Example:

    Working with a whole bunch of JAVA developers on a project and part of the process was scrubbing data. Since they were all specialists in JAVA they solved the problem in JAVA. When I came along to do some JAVA with them I asked why are you doing this scrubbing in JAVA? I took them an insane amount of time to process this scrub. In a standard SQL proceedure I could scrub the data in about 1/10 the time. They wanted to avoid babel code as much as possible, and I totally understand why they wanted to do that. This type of JAVA only thinking is what eventually sunk the project after 1 year.

  • scH4MMER

    SSC Rookie

    Points: 33

    There's a need for both kinds of professionals. Don't ask a family doctor to perform surgery, but likewise don't ask a surgeon to treat an ear infection. Your argument has a lot of merit, though. Too many companies rely on generalists exclusively. In my opinion, an ideal "generalist" should be able to tell his/her boss when a subject matter expert is needed, at least on a consulting basis, while the rest of the time doing whatever it is the business needs the other 95% of the time.

  • patrickmcginnis59

    SSCertifiable

    Points: 6423

    I pretty much avoid recursion when I write programs. I like to see iterative code as an explicit control structure. I've always thought that this was just a personal preference so I'm surprised to read that there are business cases that "require" recursion as a programming solution. Maybe a programming language requires it (such as those languages implementing functional programming), but a business case?

  • Gail Shaw

    SSC Guru

    Points: 1004446

    krowley (8/29/2011)


    I am working on moving from being a generalist to being a specialist in SQL Server and keep looking for the best course of study to take me there. If there was a simple well laid out path, even one that was 2000 pages long, this would be very helpful for me and others like me.

    2000's a bit on the low side. Maybe 20000...

    http://www.sqlskills.com/T_MCMVideos.asp

    http://www.sqlskills.com/MCM.asp

    40+ hours of video and a long list of blogs and books (and that's just the admin side)

    Edit: oh and a few hundred hours of practice too.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • michael.french 172

    Ten Centuries

    Points: 1362

    There are two sides to this debate. First, should I just be a DBA or should I also learn the other technologies as well and become a generalists or just specialize as a DBA. Second, given that I am a DBA am I already a generalists DBA or am I specialized DBA, i.e. Production DBA, Development DBA, BI Architect. I would contended that the longer you work as a DBA the more general you become simply because you have touched many different types of technologies over the years. Also, you need to generally be aware of the other technologies in order to communicate with developers and managers.

    By definition, a Data Architect is a highly specialized generalist. You had better be a specialist in SQL Server, but a generalist in other RDBMS. You also need to have a high level understanding of current front end development tools. In order to converse with other members of the team, I need to know current Server and Storage Technology. I should be able understand nightly enterprise scheduling and the fact that my application may not be they only one or even the most important platform for a Data Center to care about. I need to understand the business of the company and how to read financial reports and understand C-Level needs and wants.

    … On Second thought, maybe I should just specialize in SQL Servers and only talk to computers … or better yet, mop some floors.

  • Revenant

    SSC-Forever

    Points: 42467

    GilaMonster (8/29/2011)


    . . . Edit: oh and a few hundred hours of practice too.

    Make that a few thousand -- planning year is 1,500 hours and it takes several years...

  • Revenant

    SSC-Forever

    Points: 42467

    Mike, much thanks for a thought-provoking editorial!

Viewing 15 posts - 1 through 15 (of 33 total)

You must be logged in to reply to this topic. Login to reply