14 votes

Any resources exploring the gap between beginner and top 5% expert in various tech fields?

I am looking for any resource that could tell me how much knowledge and training is needed to go from a beginner to expert, in let's say application software development for example. Or in artificial intelligence.

If there isn't any one source, are there any general type of sources I can use to piece together one mega-source?

22 comments

  1. [6]
    meghan
    Link
    I would check out this website http://www.techladder.io/. It was recently made on https://dev.to/ for Hacktoberfest and walks you through from 5% to expert. It's on GitHub, and while only 3 topics...

    I would check out this website http://www.techladder.io/. It was recently made on https://dev.to/ for Hacktoberfest and walks you through from 5% to expert. It's on GitHub, and while only 3 topics are public on the site 16 are WIP on github

    4 votes
    1. [2]
      natdempk
      Link Parent
      Is there any easy place to track the WIP ones? For example say I wanted to contribute to the Java one, where could I find it besides manually going through all the forks?

      Is there any easy place to track the WIP ones? For example say I wanted to contribute to the Java one, where could I find it besides manually going through all the forks?

      1 vote
    2. [3]
      Wolf
      Link Parent
      I seem to be having trouble loading the site, but from your description this sounds like a good start.

      I seem to be having trouble loading the site, but from your description this sounds like a good start.

      1. [2]
        meghan
        Link Parent
        Hmm... that's odd. Here's the direct link to the GitHub. https://github.com/remojansen/TechLadderIO

        Hmm... that's odd. Here's the direct link to the GitHub. https://github.com/remojansen/TechLadderIO

        2 votes
        1. Wolf
          Link Parent
          The site works now, it seems it was a problem on my end. But again thank you for the resource!

          The site works now, it seems it was a problem on my end. But again thank you for the resource!

          1 vote
  2. [5]
    cfabbro
    Link
    If I am reading this question right, this would probably be better asked in ~tech or actually even ~comp, given the highly technical nature of the fields that you're asking about... especially...

    If I am reading this question right, this would probably be better asked in ~tech or actually even ~comp, given the highly technical nature of the fields that you're asking about... especially since I imagine a decent amount of people who are subbed to those groups and can answer this question may have unsubbed from ~talk because of its casual nature. If you want me to I can move it there for you, @Wolf. So just let me know. :)

    2 votes
    1. [4]
      Wolf
      Link Parent
      Would you move it there? Thanks!

      Would you move it there? Thanks!

      1 vote
      1. [3]
        cfabbro
        (edited )
        Link Parent
        Sure thing. Done. Hopefully you get a bit better response in ~comp than ~talk.

        Sure thing. Done. Hopefully you get a bit better response in ~comp than ~talk.

        1. [2]
          Wolf
          Link Parent
          Hopefully. I really want to create a pathway for myself and others.

          Hopefully. I really want to create a pathway for myself and others.

          1 vote
          1. cfabbro
            Link Parent
            Yeah, it's a pretty interesting but probably quite tough to answer question, IMO... and I certainly don't feel nearly qualified enough to even try. Hopefully someone else who sees this does though. :)

            Yeah, it's a pretty interesting but probably quite tough to answer question, IMO... and I certainly don't feel nearly qualified enough to even try. Hopefully someone else who sees this does though. :)

  3. [10]
    Emerald_Knight
    (edited )
    Link
    This is an incredibly abstract concept to try to quantify. I don't think you're going to find anything more than perhaps some literature touching upon the subject without an actual scientific...

    This is an incredibly abstract concept to try to quantify. I don't think you're going to find anything more than perhaps some literature touching upon the subject without an actual scientific backing. If you want some food for thought, however, here's a paper written in 1980 on the subject of a model for skill acquisition. This could be a good starting place for your research into the subject at large :)

    Edit: Here is a much better version, which goes into greater detail and isn't so obviously from 1980.

    1 vote
    1. [9]
      Wolf
      Link Parent
      I wasn't really looking to quantify skills so much as find a syllabus of sorts to get from beginner to expert. I hope that clears things up. I will check out the paper.

      I wasn't really looking to quantify skills so much as find a syllabus of sorts to get from beginner to expert. I hope that clears things up. I will check out the paper.

      1 vote
      1. [8]
        Emerald_Knight
        Link Parent
        Ah, gotcha. In that case, you're going to have an even more difficult time finding a solid answer. If we go the syllabus route, the only thing you're actually going to get is a measure of a base...

        Ah, gotcha. In that case, you're going to have an even more difficult time finding a solid answer. If we go the syllabus route, the only thing you're actually going to get is a measure of a base level of competence with the fundamentals. There are far too many things that you simply won't learn by checking another box on a list of things to learn, unless your goal is to become an expert with a set of very specific technologies. Ultimately general expertise in an area of tech (and really any field, for that matter) is something that comes with first-hand experience and lots of practice.

        If you want a checklist of basics, then great, we can get started with a pretty good list pretty easily. But there's just no way to become an expert without breaking away from that list.

        3 votes
        1. [7]
          Wolf
          Link Parent
          I did have fears that I wouldn't get much on general expertise, just because of the nature of general expertise. Why don't we get started with basics? Do you think there's enough information on...

          I did have fears that I wouldn't get much on general expertise, just because of the nature of general expertise.

          Why don't we get started with basics? Do you think there's enough information on the various fields in tech? I think @meghan has a good start.

          2 votes
          1. [5]
            Emerald_Knight
            Link Parent
            Alright, here's a quick syllabus for programming: Intro Variables: Assignment, accessing values, swapping values between two variables. Data types: Overview of the general concept of different...
            • Exemplary

            Alright, here's a quick syllabus for programming:


            Intro

            • Variables: Assignment, accessing values, swapping values between two variables.
            • Data types: Overview of the general concept of different types of data.
            • Numbers: Arithmetic operations, difference between int and float.
            • Conditionals: If/else statements and logical operators (AND, OR, NOT, etc.).
            • Repetition: For loops and while loops.
            • Strings: Simple string manipulation, comparing strings.
            • Arrays: Creating, assigning values, retrieving values, iteration.
            • I/O: Accepting and processing input, producing output.
            • Variable scope.
            • Functions: Defining, passing values, returning values.
            • Algorithms: Basic sorting, searching, counting, accumulation, other simple and common tasks.
            • Common errors: Infinite loops, exceeding array boundaries, comparing strings (lexicographical order, string stored as an object, etc.), logical vs. bitwise operators (e.g. using & instead of &&).

            Basics

            • Recursion: Base and recursive cases, concept of the call stack, simple algorithms like recursive Fibonacci.
            • File processing.
            • Determining algorithmic complexity (big-O notation).
            • Objects: Defining, instantiation, methods vs. functions, storing data, private vs. public properties/methods, comparing objects.
            • Algorithms: More advanced topics e.g. recursive sorting and searching (e.g. binary search).
            • Data structures: Binary tree, dictionary, linked list, queue, stack, etc.
            • Databases: Basics about relational databases, joining tables, columns and rows, foreign keys, performing simple queries.
            • Regular expressions: Understanding pattern matching.
            • Binary: Basics of binary representation, bitwise operations, simple conversion of integers to binary and vice versa.

            Intermediate

            • Memory management: allocating and freeing, pointers vs. addresses, memory leaks.
            • Basic architecture: understanding CPU operations and assembly, pipeline stalls, basics of optimization (e.g. loop unrolling), caching, registers, Moore's law, architectural hierarchy, relative speeds of storage mediums, etc.
            • Data types: Lower level representations, e.g. strings as pointers to multiple characters.
            • Binary: More advanced subjects e.g. bit shifting, IEEE representation, floating point representation, negative bit, etc.
            • Recursion: More advanced recursive algorithms e.g. depth-first and breadth-first searches, traversing general tree and graph structures.
            • Concurrency: Threads, synchronous vs. asynchronous, mutex locks, synchronous data structures, race conditions.
            • Compilers: Stages of program compilation, static vs. dynamic linking, optimization levels, etc.
            • Program state transitions.

            Advanced

            • Operating systems: Software layers, task scheduling and different strategies, paging, thrashing, segmentation, processes, inter-process communication, process forking, interrupts, signals, deadlock, producer vs. consumer, semaphores, critical regions, address mapping, user vs. kernel mode, context switching, IO-bound vs. CPU-bound processing, etc.
            • Algorithms: More advanced subjects e.g. Dijkstra's algorithm, dynamic programming.
            • Data structures: Much more advanced structures e.g. auto-balancing tree structures.
            • Grammars: Differences between regular, context-free, and context-sensitive grammars (allows you to e.g. determine whether or not you can use a regular expression to find a pattern or if you need to utilize a stack structure and perform more complex parsing).
            • Networking: Basics of IP addressing, DNS, packet switching networks, protocols, request methods, ports, NAT.
            • Security: Basics of SSL/TLS, encryption, hashing, firewalls.

            Most people are fine after the Intermediate section. That's enough to give you a pretty solid foundation and make you a fairly decent intro level programmer. The Advanced section, however, is highly recommended for anyone. Understanding how your operating system works in particular can help you unearth the root cause of a problem with some tool that's malfunctioning. Even the largely academic parts like auto-balancing tree data structures still help to provide valuable insights into different approaches and tools that are available for solving problems you may end up running into.

            I've likely missed some pretty important topics here. I may have even miss-categorized some of them. I've kept subjects of purely academic value down to a minimum. I've tried to avoid domain-specific subjects as much as possible (e.g. nothing specific to web programming). More than anything, I highly doubt there will be universal agreement with this list overall. This is based largely on my own personal experiences as both an academic and as a professional and is thus subject to bias. Still, I feel that it gives a fairly powerful set of fundamental subjects that a programmer can make use of in a variety of situations and that the skills you develop learning these subjects are the most transferable between programming languages and problem spaces.

            If anyone has any feedback on this list, I'll be sure to hear you out and make any changes where appropriate.

            8 votes
            1. [2]
              meghan
              Link Parent
              @Emerald_Knight have you seen https://tls.ulfheim.net/ ?
              3 votes
              1. Emerald_Knight
                Link Parent
                Nice resource! I really wish I'd had this when I first had to learn about SSL/TLS a couple years ago. Perhaps a bit more verbose than is needed for grasping the basic mechanics, but perfect for...

                Nice resource! I really wish I'd had this when I first had to learn about SSL/TLS a couple years ago. Perhaps a bit more verbose than is needed for grasping the basic mechanics, but perfect for ironing out the details :)

                1 vote
            2. [2]
              Wolf
              Link Parent
              This was way more than I expected, but holy crap thanks! With this and what @meghan posted, I already have a solid path.

              This was way more than I expected, but holy crap thanks! With this and what @meghan posted, I already have a solid path.

              2 votes
              1. Emerald_Knight
                Link Parent
                No problem! I'm glad that you find it helpful :)

                No problem! I'm glad that you find it helpful :)

                1 vote
          2. Emerald_Knight
            Link Parent
            Oh, absolutely. There's more than enough information for any given field in tech for gaining a base level of competence. Personally, I believe that meghan's resource works more for gaining that...

            Oh, absolutely. There's more than enough information for any given field in tech for gaining a base level of competence.

            Personally, I believe that meghan's resource works more for gaining that base level of competence for a specific programming technology (and right now there are only a few languages listed). If you want a general syllabus for gaining competence in programming specifically beyond simply competence in a given language, I'll look into writing something up when I have a little more time :)

            1 vote
  4. Staross
    Link
    You could look at curriculum's duration, and add a few years of experience on top of that. For example for machine learning you need a master or some sort, a PhD in the field or a few years of...

    You could look at curriculum's duration, and add a few years of experience on top of that. For example for machine learning you need a master or some sort, a PhD in the field or a few years of work, so about 10 years, for baker you need 2-3 years of studies + a few years of work, etc.

    1 vote