Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. narrow-and-deep or shallow-but-wide .. what is the best strategy ?

narrow-and-deep or shallow-but-wide .. what is the best strategy ?

Scheduled Pinned Locked Moved The Lounge
question
31 Posts 23 Posters 26 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Duncan Edwards Jones

    There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

    L Offline
    L Offline
    Lost User
    wrote on last edited by
    #9

    Duncan Edwards Jones wrote:

    That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

    Most team will have various specialists (more than one field) and multiple generalists. It would depend on which type of narrow field - it might not be the best strategy to specialize in something that is obsolete :)

    Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^][](X-Clacks-Overhead: GNU Terry Pratchett)

    1 Reply Last reply
    0
    • L Lost User

      Wide Wide Wide if you are in it for the long term and the fun of it. Specialise on many different things during your career. If you follow the narrow and deep, you could be lucky, or you could be the equivalent of a bloody brilliant VB6 developer.

      PooperPig - Coming Soon

      D Offline
      D Offline
      Duncan Edwards Jones
      wrote on last edited by
      #10

      I was a bloody brilliant minded VB6 developer... but that was ages ago :-)

      L 1 Reply Last reply
      0
      • D Duncan Edwards Jones

        I was a bloody brilliant minded VB6 developer... but that was ages ago :-)

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #11

        So you've *widened* your horizons - as per my advice ;)

        PooperPig - Coming Soon

        D 1 Reply Last reply
        0
        • R RossMW

          It really depends on your own personal preference. Being a jack of all trade, but a master of none generally means there is a lot more variety on the work you do. But you never become an expert in anything This does give you a broad knowledge base for IT management, if that's what you want Everyone is different. Personally I like the variety of different technology and work as I get bored doing the same thing all the time.

          P Offline
          P Offline
          Pualee
          wrote on last edited by
          #12

          I'm really the opposite. I'd rather be the expert in a given technology and do the same types of things over and over, doing them very well and with confidence. However, it seems my life has turned into shallow but wide... probably because it is far easier to find a job like that. However, I think having a deep knowledge of 1 thing provides a much better salary (as evidence by the hiring process). Nobody values shallow but wide... they just think you have only a shallow understanding of the handful of skills they want.

          1 Reply Last reply
          0
          • L Lost User

            So you've *widened* your horizons - as per my advice ;)

            PooperPig - Coming Soon

            D Offline
            D Offline
            Duncan Edwards Jones
            wrote on last edited by
            #13

            I have indeed. This latest question is related to my trying to decide whether it is worth my while undertaking the (significant) effort to learn the Modelling SDK to do CodeGen and DSL stuff or not...

            1 Reply Last reply
            0
            • D Duncan Edwards Jones

              There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

              M Offline
              M Offline
              Marc Clifton
              wrote on last edited by
              #14

              Duncan Edwards Jones wrote:

              pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

              Neither. If there's a requirement for a particular tech which you don't currently know, then learn it on the job. On the other hand, at my personal leisure, I peruse various techs, check out some of the forums, etc. My basic conclusion is that there is a matrix a multidimensional matrix: 1. lightweight frameworks 2. heavyweight kitchen sink frameworks A. compiled languages B. JIT languages C. script languages X. Windows Y. *Nix Z. Android / iOS / Xamarin and their ilk I like to live in the 1-B-X box, and I really don't like the 2-C-Y box. Everything else is "ok, I'll give that a try and see how it goes." However, the C box is subdivided into things like 1) Javascript (possibly unnecessary evil, still haven't looked at Dart and TypeScript), 2) Python (had a decent experience with it), 3) and Ruby on Rails (refuse to ever code in it again, I'm actually going to take it off my resume, even if it leaves huge gaps.) So, I think it's actually worthwhile to fill out the matrix some more, figure out where you're most comfortable, what things you'd like to learn, and what experiences you've had that you never want to repeat. Marc

              Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project!

              1 Reply Last reply
              0
              • D Duncan Edwards Jones

                There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                N Offline
                N Offline
                newton saber
                wrote on last edited by
                #15

                Both. But here's what I mean. Early on in your career you should: Be narrow and deep. Become an expert so you can get a specific job and get paid. Later on, as you progress in your career you should: Be (more) shallow and extremely wide. Know about a lot of things so you can know things are being done other ways so that when a problem arises you can go out, research it more in depth and make a good decision about whether or not you should incorporate that technology. That's why you really must be both. But give it time.

                1 Reply Last reply
                0
                • D Duncan Edwards Jones

                  There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                  L Offline
                  L Offline
                  Lost User
                  wrote on last edited by
                  #16

                  That depends, will you be a manager?

                  1 Reply Last reply
                  0
                  • D Duncan Edwards Jones

                    There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                    S Offline
                    S Offline
                    Scott Serl
                    wrote on last edited by
                    #17

                    Deep understanding of computer science fundamentals. Wide knowledge of current computer technologies (which you can quickly pick up using your deep understanding of fundamentals).

                    G 1 Reply Last reply
                    0
                    • S Scott Serl

                      Deep understanding of computer science fundamentals. Wide knowledge of current computer technologies (which you can quickly pick up using your deep understanding of fundamentals).

                      G Offline
                      G Offline
                      Gary R Wheeler
                      wrote on last edited by
                      #18

                      Best answer of the lot (says the geezer in the crowd).

                      Software Zen: delete this;

                      1 Reply Last reply
                      0
                      • D Duncan Edwards Jones

                        There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                        K Offline
                        K Offline
                        Kyle Moyer
                        wrote on last edited by
                        #19

                        Shallow but wide. Why? If you only know how to use a hammer..... If you know enough about the various tools you have available to you, you're much more likely to pick the correct one for the job. Then, once you start that job, you can go deeper if you haven't already done so before.

                        1 Reply Last reply
                        0
                        • D Duncan Edwards Jones

                          There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                          I Offline
                          I Offline
                          irneb
                          wrote on last edited by
                          #20

                          Reminds me of a tongue-in-cheek saying in my mother language: "'n Halve verstand verg 'n goeie woord". Literal translation: Half a mind necessitates a good word. One meaning: To get someone to understand something partially, you need to describe it in complete detail.

                          1 Reply Last reply
                          0
                          • D Duncan Edwards Jones

                            There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                            J Offline
                            J Offline
                            JohnLBevan
                            wrote on last edited by
                            #21

                            It depends what size company you'd rather work for. If a small startup then wider is better; i.e. since if there's only 5 of you, you'll be covering more roles. If a big enterprise deeper's better; i.e. there are people covering the other skillsets who you can get advise from (or whose areas you can completely ignore) so you can focus on your expert role. That said, for most people a mix is best; get a strong understanding of your main toolset (so you're highly skilled at your main role), but keep it topped up with knowledge of other areas; that way you're safer (e.g. if your technology goes out of favour), you can see quick wins (e.g. something which would take weeks to write in one language may be a couple of lines in another), and your broader knowledge allows you to gain insights which a narrow knowledge may not.

                            1 Reply Last reply
                            0
                            • D Duncan Edwards Jones

                              There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                              A Offline
                              A Offline
                              agolddog
                              wrote on last edited by
                              #22

                              I think I'm going to go with the 'wide' crowd. a) if job-hunting time comes up, you're not locked into a certain field. b) for most jobs, the really, really, deep knowledge isn't used very much. As others have said, on that rare occasion you need to get deeper, you certainly can. That being said, it's important to understand yourself, and what you like. I enjoy the middle and back-end more, making sure the data is persisted properly. Don't care too much about css, for example. I know enough to get by, and make stylistic changes, but it's neither something I enjoy nor am great at. So pretty shallow there. (Although I am learning more and more about manipulating the document via jquery, that's pretty fun.) I have a pretty deep knowledge on the SQL side, which I like better. I guess the point of this rambling is that being a full-stack developer is best long-term. Most organizations simply don't have the resources to have specialists; you're going to have to figure out each bit anyway.

                              1 Reply Last reply
                              0
                              • D Duncan Edwards Jones

                                There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                                K Offline
                                K Offline
                                kdmote
                                wrote on last edited by
                                #23

                                Depends if you want to be a scholar or a manager. But if you want to be a competent and productive engineer, I'd say you need to shoot the middle. The word is "Balance": avoid the extremes

                                1 Reply Last reply
                                0
                                • D Duncan Edwards Jones

                                  There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                                  P Offline
                                  P Offline
                                  patbob
                                  wrote on last edited by
                                  #24

                                  Just a few observations.. larger companies/teams are skewed toward hiring narrow-deep specialists. Smaller companies need shallow-wide people, but never seem to realize it. They mostly seem to try to hire narrow-deep and end up settling for shallow-wide for a variety of reasons. I've yet to see any company actually looking for a shallow-wide person.

                                  We can program with only 1's, but if all you've got are zeros, you've got nothing.

                                  1 Reply Last reply
                                  0
                                  • D Duncan Edwards Jones

                                    There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                                    K Offline
                                    K Offline
                                    Kirk 10389821
                                    wrote on last edited by
                                    #25

                                    Companies need both, and this is part of the IT Failure rate in my opinion. Management always goes back to the same team, which may have only one view. Then they give them a project which requires both. I am a shallow and wide person (Not just personality and girth either!) :-) But I go DEEP in some areas (e.g. DB optimization) But we build a team that has both. My current team has two PhDs capable of going so deep it scares me. A manager who goes much wider than I do, and always looking for the next piece to sell. My role, in understand the user/company requirements, choosing a metaphor, and putting the right people on the team for implementation. So the question you pose is tough. It is NOT an OR question to me. It is a WHEN question to me. When should I focus on being DEEP on understanding some technology (natural proclivity), and when should I stay shallow. If you think about it, most developers are shallow on DB Architecture (in the truest sense of building a scalable solution for thousands to tens of thousands of users). Sure they can do tables, views, stored procs, and occasionally and indexing approach. But that SHOULD NOT be their job. How many times do you need that skill. Then you have a client who needs to scan thousand of items, and you have developers who jump in (shallow) and throw together the scanning solution that makes the scanners lives miserable. They have deep knowledge on the programming side, but no clue as to what it feels like to scan for 8hrs every day, and how long fixing a dual page feed issue really takes. Or how to make it easy to detect. So my answer is. Be deep enough for every task. Start by being shallow, and staying shallow until you know the entire area you are responsible. Delay all design decisions until you can see the big picture flow (may not be exact), but strive to see the clients actually working the system. Then get deep as required.

                                    1 Reply Last reply
                                    0
                                    • D Duncan Edwards Jones

                                      There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                                      M Offline
                                      M Offline
                                      Member 10707677
                                      wrote on last edited by
                                      #26

                                      In terms of IT, go shallow, allowing you to adapt quickly to changes in technology. But also go deep in some other specialty where IT is applied. My secondary speciaĺty was enterprise resource planning, with a focus on service and make-to-order industries. The combination has kept me going for over 50 years.

                                      The difficult may take time, the impossible a little longer.

                                      1 Reply Last reply
                                      0
                                      • D Duncan Edwards Jones

                                        There is so much in IT these days (so many languages, frameworks, architectures, platforms etc.) that it is unrealistic for a person to have a reasonable knowledge of all of it. That being the case, which is the best strategy to pursue: pick a narrow field and develop a deep knowledge about it or pick a set of fields and develop shallow (but non-zero) knowledge about them all?

                                        S Offline
                                        S Offline
                                        SeattleC
                                        wrote on last edited by
                                        #27

                                        You can't do wide very well. That is, your brain will explode if you try to become even basically proficient with too many divergent fields (AI with Prolog, Stats for Big Data, C++ and OO Programming, and a little COBOL just in case). Doing narrow is fraught with risk. It amounts to predicting the future 45 years in advance. Absolutely nobody is any good at that. You can be a kick-ass VB programmer, but that won't help you when Microsoft decides to build a whole new language to supplant VB. The best you can do is pick an area of concentration that seems sustainable. You can decide to be a business programmer. You learn Windows, C#, Java, and probably some javascript, and keep your eyes on the horizon looking for the next thing. You can be a Linux programmer, which means C and C++ and javascript, and watch out for packagers and virtualization. You can be a systems programmer, which means Windows AND Linux, and C++, but watch out for D and Rust. You can't usefully predict the future out to the end of your career. So you take smaller bites (bytes?) You ask yourself, "How does this job prepare me for the job after that?" and only take jobs for which the answer is good. You spend less of your free time playing Call of Duty XVI and more of it reading dry, technical journals. You learn new things just as soon as they become relevant, like Android programming. And you leave your comfortable job for a job as an Android programmer, because that skillset is modern, and the skills needed for your comfortable job are not absolutely leading edge. Get comfortable for too long, and you wake up one morning to find you're obsolete, with no choice other than staying in your current job until your company decides to downsize.

                                        L 1 Reply Last reply
                                        0
                                        • S SeattleC

                                          You can't do wide very well. That is, your brain will explode if you try to become even basically proficient with too many divergent fields (AI with Prolog, Stats for Big Data, C++ and OO Programming, and a little COBOL just in case). Doing narrow is fraught with risk. It amounts to predicting the future 45 years in advance. Absolutely nobody is any good at that. You can be a kick-ass VB programmer, but that won't help you when Microsoft decides to build a whole new language to supplant VB. The best you can do is pick an area of concentration that seems sustainable. You can decide to be a business programmer. You learn Windows, C#, Java, and probably some javascript, and keep your eyes on the horizon looking for the next thing. You can be a Linux programmer, which means C and C++ and javascript, and watch out for packagers and virtualization. You can be a systems programmer, which means Windows AND Linux, and C++, but watch out for D and Rust. You can't usefully predict the future out to the end of your career. So you take smaller bites (bytes?) You ask yourself, "How does this job prepare me for the job after that?" and only take jobs for which the answer is good. You spend less of your free time playing Call of Duty XVI and more of it reading dry, technical journals. You learn new things just as soon as they become relevant, like Android programming. And you leave your comfortable job for a job as an Android programmer, because that skillset is modern, and the skills needed for your comfortable job are not absolutely leading edge. Get comfortable for too long, and you wake up one morning to find you're obsolete, with no choice other than staying in your current job until your company decides to downsize.

                                          L Offline
                                          L Offline
                                          Luiz Monad
                                          wrote on last edited by
                                          #28

                                          AI with Prolog, Stats for Big Data, C++ and OO Programming

                                          Add to it: C#, C, Rust, Perl, Functional Programming with Haskell, F# and Lisp, a lot of computer science like Compilers, Virtual Machines and theoric things like Lambda Calculus, Type Theory, Category Theory. And a lot of many more languages like Python, Ruby, ES5/6, Lua, Erlang, Scala. I also play with Idris, Coq, Sisal, Clojure and Objective C. Brain still not exploded, must be because I refuse to learn Cobol. I have hobbies like Information Security, Cryptography and Music (that I've just started learning and is fun), and I am a gamer too. All that just leave no time for social life though, that's the price (who need it when I can have all that fun).

                                          S 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups