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. Learning a big new codebase

Learning a big new codebase

Scheduled Pinned Locked Moved The Lounge
asp-netjavascriptlearningcsharpdotnet
40 Posts 29 Posters 0 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.
  • T Offline
    T Offline
    TheOnlyRealTodd
    wrote on last edited by
    #1

    Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

    S W Sander RosselS S A 19 Replies Last reply
    0
    • T TheOnlyRealTodd

      Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

      S Offline
      S Offline
      S Houghtelin
      wrote on last edited by
      #2

      If you are lucky to work at a company that has decent documentation practices, read the project documents. To get an overall idea of what a project is about read the specification document. Then read the code description, if there is one. Also, try to follow the flow charts. These are standard documents in medical device design and manufacturing. If you are into database or web design, good luck! :laugh:

      It was broke, so I fixed it.

      D K 2 Replies Last reply
      0
      • T TheOnlyRealTodd

        Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

        W Offline
        W Offline
        Wastedtalent
        wrote on last edited by
        #3

        It's admirable wanting to get involved and commit to an open source project, but my suggestion would be only get involved in a project if it's something you use/reference as part of some other development project you are working on, and there are improvements or fixes that would benefit your own project that you believe would also be of benefit to others.

        K 1 Reply Last reply
        0
        • T TheOnlyRealTodd

          Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

          Sander RosselS Online
          Sander RosselS Online
          Sander Rossel
          wrote on last edited by
          #4

          Do you know WHAT you want to contribute? If you're just thinking about making some contribution or another you're going to have a difficult time, but if you have something specific in mind try to find just that place where it should be implemented. For example, let's say your contribution is going to be that NodeJS always logs to the console when starting a server. Now you want to find where it is that Node finds your file and runs it. Since it's a command tool try looking for that point of entry, perhaps by searching for some optional parameters. From there find where Node is loading your file, you can do this by following the code in your editor or debugger (I tend to use the debugger as I want to know for sure the code actually runs). You should now be close to where you want to insert your code. When working like that you can make contributions, add to the code, fix bugs, etc. without having to know everything that's going on. I've never actually looked at the NodeJS code, let alone contribute to it, but that's what I would do. P.S. Just for the record, my suggested contribution isn't exactly one we'd want (as we can optionally add it with a single line of code). It's just an example.

          Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.

          Simplicity is prerequisite for reliability. — Edsger W. Dijkstra

          Regards, Sander

          1 Reply Last reply
          0
          • T TheOnlyRealTodd

            Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

            S Offline
            S Offline
            Slacker007
            wrote on last edited by
            #5

            Go small at first. Follow the code paths from UI to the finish line for that particular path. I cannot stress this technique enough. Pick a path that is relevant to your current task or project. Don't try to learn the entire system at one time.

            U 2 Replies Last reply
            0
            • T TheOnlyRealTodd

              Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

              A Offline
              A Offline
              Amarnath S
              wrote on last edited by
              #6

              If a debugger is available, use it to see the call stack, for the functionality you're currently working on. This will give you an idea of the control flow for that functionality. Once the first functionality is reasonably well understood, go to the next functionality, and so on.

              1 Reply Last reply
              0
              • S S Houghtelin

                If you are lucky to work at a company that has decent documentation practices, read the project documents. To get an overall idea of what a project is about read the specification document. Then read the code description, if there is one. Also, try to follow the flow charts. These are standard documents in medical device design and manufacturing. If you are into database or web design, good luck! :laugh:

                It was broke, so I fixed it.

                D Offline
                D Offline
                dandy72
                wrote on last edited by
                #7

                S Houghtelin wrote:

                read the project documents

                ...while keeping in mind that the actual product probably deviates substantially from the original documentation.

                S J 2 Replies Last reply
                0
                • T TheOnlyRealTodd

                  Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

                  D Offline
                  D Offline
                  Dan Neely
                  wrote on last edited by
                  #8

                  Try reaching out to the dev community, and see if they can suggest easy items for a newcomer to the codebase. I know Mozilla has a list of them, but doubt they're the only project to do so.

                  Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

                  1 Reply Last reply
                  0
                  • T TheOnlyRealTodd

                    Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

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

                    TheOnlyRealTodd wrote:

                    when I open the project file for these, it can be tough trying to figure out where to even start.

                    Getting them to compile is the hardest step! :-D

                    TheOnlyRealTodd wrote:

                    and also looking at the unit tests to get an idea of whats happening

                    That's a good approach, especially single stepping through the tests. And write down everything you learn, and your questions for what you don't understand yet. Personally, I think most of these open source sites could benefit greatly from writing some "programmer documentation", as you're not the only one with "how the elephant does this stuff work?" question. And that might be the most useful contribution at first! Marc

                    Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                    1 Reply Last reply
                    0
                    • D dandy72

                      S Houghtelin wrote:

                      read the project documents

                      ...while keeping in mind that the actual product probably deviates substantially from the original documentation.

                      S Offline
                      S Offline
                      S Houghtelin
                      wrote on last edited by
                      #10

                      dandy72 wrote:

                      ..while keeping in mind that the actual product probably deviates substantially from the original documentation.

                      Hence the "If you are lucky to work at a company that has decent documentation practices."

                      It was broke, so I fixed it.

                      D C 2 Replies Last reply
                      0
                      • S S Houghtelin

                        dandy72 wrote:

                        ..while keeping in mind that the actual product probably deviates substantially from the original documentation.

                        Hence the "If you are lucky to work at a company that has decent documentation practices."

                        It was broke, so I fixed it.

                        D Offline
                        D Offline
                        dandy72
                        wrote on last edited by
                        #11

                        I think it takes more than "decent documentation practices" just to ensure documentation is kept up to date, unfortunately.

                        1 Reply Last reply
                        0
                        • T TheOnlyRealTodd

                          Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

                          M Offline
                          M Offline
                          Mark_Wallace
                          wrote on last edited by
                          #12

                          Play with it without looking at the code, first -- get the grand view, and get to know the whys and wherefores.

                          I wanna be a eunuchs developer! Pass me a bread knife!

                          1 Reply Last reply
                          0
                          • T TheOnlyRealTodd

                            Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

                            Z Offline
                            Z Offline
                            Zebedee Mason
                            wrote on last edited by
                            #13

                            To analyse a large code base you could try running a dependency tool such as DeepEnds

                            S 1 Reply Last reply
                            0
                            • S S Houghtelin

                              If you are lucky to work at a company that has decent documentation practices, read the project documents. To get an overall idea of what a project is about read the specification document. Then read the code description, if there is one. Also, try to follow the flow charts. These are standard documents in medical device design and manufacturing. If you are into database or web design, good luck! :laugh:

                              It was broke, so I fixed it.

                              K Offline
                              K Offline
                              kalberts
                              wrote on last edited by
                              #14

                              Geek And Poke: The New Developer[^]

                              1 Reply Last reply
                              0
                              • Z Zebedee Mason

                                To analyse a large code base you could try running a dependency tool such as DeepEnds

                                S Offline
                                S Offline
                                Slacker007
                                wrote on last edited by
                                #15

                                Not to be confused with these Depends: Free Incontinence Samples For Men & Women in 2016 | Depend®[^] :)

                                1 Reply Last reply
                                0
                                • T TheOnlyRealTodd

                                  Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

                                  R Offline
                                  R Offline
                                  rtischer8277
                                  wrote on last edited by
                                  #16

                                  The essence of your learning question is advice as to how you can most efficiently organize and sequence your code-reading-and-understanding learning tasks so as to attain a reasonable level of proficiency in the time you have allotted and at the same time reduce the time you will spend on the study of code without merit, which frankly is not possible until you have already learned it. My suggestion is to, at the outset, refuse to learn and study code written in throw-away computer languages.

                                  1 Reply Last reply
                                  0
                                  • S S Houghtelin

                                    dandy72 wrote:

                                    ..while keeping in mind that the actual product probably deviates substantially from the original documentation.

                                    Hence the "If you are lucky to work at a company that has decent documentation practices."

                                    It was broke, so I fixed it.

                                    C Offline
                                    C Offline
                                    ClockMeister
                                    wrote on last edited by
                                    #17

                                    I've been at this for 40 years and have yet to find a company that had more than completely minimal documentation at a level that could help a developer. It has always been a learn-as-you-go process. Most developers do NOT document their work.

                                    S 1 Reply Last reply
                                    0
                                    • T TheOnlyRealTodd

                                      Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

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

                                      As always, working backwards is a good approach. You can find previously FIXED Items, and review the posted code changes that fixed the item. I would recommend being able to build/test the previous version, and verify the bug. Apply the fix. Verify the bug is gone. If you get decent at that. Then get realistic. It takes approximately 5,000hrs to master a new skill. Assuming you have mastered programming in general, lets assume a large code base will take you about 1,000hrs for a solid basic understanding. (Half a work year). Yeah, it is easy to jump in and hack away. But actually mastering a code base. This gets to the REASON others suggest you support a code base that you already use, like, and would like to extend. BTW, as you setup your environment to test/validate prior updates. Considering reviewing and enhancing the documentation that helps others get to where you got to.

                                      1 Reply Last reply
                                      0
                                      • T TheOnlyRealTodd

                                        Do you have any recommended strategies for a junior developer when attempting to learn a large new codebase? One of my goals is to make some commits on something like ASP.NET MVC (.NET Core now), Entity Framework, Node.js, or some other major project on GitHub. Not surprisingly however, when I open the project file for these, it can be tough trying to figure out where to even start. Of course I can view the issues and try my hand at solving one, but I found that even that often requires a general idea of the project's moving parts. Do you have any suggestions or resources on breaking down a big project like this to bite-sized chunks that can be learned over time in hopes of a serious contribution? One strategy I've tried is looking at the classes that I am familiar with from using the software and also looking at the unit tests to get an idea of whats happening. Thanks.

                                        E Offline
                                        E Offline
                                        englebart
                                        wrote on last edited by
                                        #19

                                        If you can find an issue that does not have a UnitTest, contribute a UnitTest that reproduces the issue.

                                        W 1 Reply Last reply
                                        0
                                        • C ClockMeister

                                          I've been at this for 40 years and have yet to find a company that had more than completely minimal documentation at a level that could help a developer. It has always been a learn-as-you-go process. Most developers do NOT document their work.

                                          S Offline
                                          S Offline
                                          S Houghtelin
                                          wrote on last edited by
                                          #20

                                          In the medical device industry if we do not have documentation, you will not be able to sell your device. It is a requirement and for good reason. Would you want to be on the operating table being monitored by devices with software of unknown provenance? "Most developers do NOT document their work." and we wonder why the quality of the software out there sucks. That's called winging it and in my opinion it is unprofessional and if a developer is unable or unwilling to maintain at least some level of documentation I would not be inclined to hire them or to keep them in my employ.

                                          It was broke, so I fixed it.

                                          C D 2 Replies 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