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 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
                          • D dandy72

                            S Houghtelin wrote:

                            read the project documents

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

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

                            The sad part in all the comments on this topic is that not one suggested writing some documentation for the project. Documentation is always someone else's responsibility. Two years ago I was handed 100KLOC of undocumented but production critical cowboy code. Programmer who wrote it was adamant that "the code is self documenting". It wasn't. It took 18 months to document it to the point where it could be maintained...barely. If you REALLY want to contribute to a project, write something other than code. "Everyone complains about the weather, but no one does anything about it."

                            R 1 Reply Last reply
                            0
                            • E englebart

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

                              W Offline
                              W Offline
                              William Peets
                              wrote on last edited by
                              #22

                              I found the doxygen tool to be very helpful. I can show some call traces and is very convenient for navigating objects.

                              1 Reply Last reply
                              0
                              • W Wastedtalent

                                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 Offline
                                K Offline
                                kdmote
                                wrote on last edited by
                                #23

                                Wastedtalent wrote:

                                only get involved in a project if ...

                                I disagree. There is great value in studying large, commercial-grade software for its own sake. Even if the OP never commits but just spends hours or days spelunking one of the codebases he mentions, he is bound to be enriched by the process. Many of the techniques of enterprise-scale coding can't be taught in books.

                                W 1 Reply Last reply
                                0
                                • S S Houghtelin

                                  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 Offline
                                  C Offline
                                  ClockMeister
                                  wrote on last edited by
                                  #24

                                  That's certainly good to know. I wasn't talking about end-user documentation, though, I was talking about the documentation that would help a developer. I wonder if the code behind those medical devices is documented any better than what I've seen in a dozen or so other industries?

                                  S 1 Reply Last reply
                                  0
                                  • K kdmote

                                    Wastedtalent wrote:

                                    only get involved in a project if ...

                                    I disagree. There is great value in studying large, commercial-grade software for its own sake. Even if the OP never commits but just spends hours or days spelunking one of the codebases he mentions, he is bound to be enriched by the process. Many of the techniques of enterprise-scale coding can't be taught in books.

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

                                    I agree, I also think studying and getting involved in are two very different things, and the OP was talking about making commits.

                                    R 1 Reply Last reply
                                    0
                                    • C ClockMeister

                                      That's certainly good to know. I wasn't talking about end-user documentation, though, I was talking about the documentation that would help a developer. I wonder if the code behind those medical devices is documented any better than what I've seen in a dozen or so other industries?

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

                                      We have to comply with GMP, UL, ISO, FDA, CE and EU standards among others. We are required to have our documentation internally and externally reviewed and accepted by the regulatory bodies. Every aspect of the product needs to go through risk and hazard analysis and QA tested using the very documents the software developer wrote. If the software and document do not match, it needs to be corrected and retested. This doesn't mean bugs can't get through, but certainly the obvious glaring stuff rarely does. This is why it takes forever and a massive amount of $₤€ to get a new product out. End user documentation is also very regulated, but thankfully I don't have to deal with that aspect.

                                      It was broke, so I fixed it.

                                      C 1 Reply Last reply
                                      0
                                      • S S Houghtelin

                                        We have to comply with GMP, UL, ISO, FDA, CE and EU standards among others. We are required to have our documentation internally and externally reviewed and accepted by the regulatory bodies. Every aspect of the product needs to go through risk and hazard analysis and QA tested using the very documents the software developer wrote. If the software and document do not match, it needs to be corrected and retested. This doesn't mean bugs can't get through, but certainly the obvious glaring stuff rarely does. This is why it takes forever and a massive amount of $₤€ to get a new product out. End user documentation is also very regulated, but thankfully I don't have to deal with that aspect.

                                        It was broke, so I fixed it.

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

                                        Good to hear, and also makes a lot of sense. Most of the organizations I worked with were not producing software that could wind up being "life critical" like that. Glad to hear that someone does it.

                                        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
                                          Shmoken99
                                          wrote on last edited by
                                          #28

                                          In GREP we trust. Use GREP, find in files, or find usages to see all the references to a particular class and it's public methods. Start the new dev with a small task - a bug fix or minor enhancement. Then have the new dev document every class and method that contributes in some way to the scenario. Have the new dev document every other class and method that depends on the code that is changed, all the way up to the UI or interface. Also, I absolutely concur with the idea of debugging and examining the stack. If unit tests and integration tests are available then run these in the debugger. If a developer went to the trouble to write unit tests, then it must be important.

                                          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