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. Actual Coding - Learning Curve

Actual Coding - Learning Curve

Scheduled Pinned Locked Moved The Lounge
38 Posts 30 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

    So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

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

    If I understand what you're saying correctly, the issue is the "impedance mismatch" between knowing what you want to do and knowing how to do it. It can be very impeding! For example, when doing Python programming, I know various basic things about the language and its syntax, but I don't know hardly anything about useful 3rd party utilities (or even the ones built into Python!) and I certainly don't know the Pythonic way of doing things. So, for example, in C#, if I want to iterate over an IEnumerable, I have a couple options that are well known to me: for (var foo in bunchAFoos) {...} or bunchAFoos.ForEach((f)=>...); But how do I even write a loop in Python? Is: for foo in bunchAFoos: The best way? What if I want an index? Well, I use an extension method in C#: bunchAFoos.ForEachWithIndex((idx, foo) => ...); I have google the answer for Python: for index, foo in enumerate(self.buncAFoos): And is that the best way? It gets worse -- do I wrap my Python functions in a class (their called "methods" then)? How do create a static singleton of the class? How do I derive from a class? How do I call the base method? Discovering that I have to explicitly call the base class constructor was a WTF is going wrong debugging session. And then there's the debugger (using Visual Studio Python plugin). Why can't I step over the code>if statement? On a fluke, I changed: if self.state == AppState.performing: to: if (self.state == AppState.performing): and weirdly, I can now step over the if statement in the debugger. Why? How do enums work in Python? (Answer: use the "enum" module and write it like non-member assignments, like this:

    class AppState(Enum):
    offline = 1
    online = 2
    unconfigured = 3
    waiting = 4
    performing = 5

    TheOnlyRealTodd wrote:

    Is this pretty typical for a new coder or coders in general?

    It's typical of coders with a new language/framework/platform. Don't even get me started on the lunacy of trying to launch an app at startup in Debian (or any *nix OS.) So, to re-iterate, the impedance mismatch between knowing something because I've read a book or watched a few videos, vs. knowing how to do a thing, well, that can be *cough* shocking. Marc

    B 1 Reply Last reply
    0
    • M Marc Clifton

      If I understand what you're saying correctly, the issue is the "impedance mismatch" between knowing what you want to do and knowing how to do it. It can be very impeding! For example, when doing Python programming, I know various basic things about the language and its syntax, but I don't know hardly anything about useful 3rd party utilities (or even the ones built into Python!) and I certainly don't know the Pythonic way of doing things. So, for example, in C#, if I want to iterate over an IEnumerable, I have a couple options that are well known to me: for (var foo in bunchAFoos) {...} or bunchAFoos.ForEach((f)=>...); But how do I even write a loop in Python? Is: for foo in bunchAFoos: The best way? What if I want an index? Well, I use an extension method in C#: bunchAFoos.ForEachWithIndex((idx, foo) => ...); I have google the answer for Python: for index, foo in enumerate(self.buncAFoos): And is that the best way? It gets worse -- do I wrap my Python functions in a class (their called "methods" then)? How do create a static singleton of the class? How do I derive from a class? How do I call the base method? Discovering that I have to explicitly call the base class constructor was a WTF is going wrong debugging session. And then there's the debugger (using Visual Studio Python plugin). Why can't I step over the code>if statement? On a fluke, I changed: if self.state == AppState.performing: to: if (self.state == AppState.performing): and weirdly, I can now step over the if statement in the debugger. Why? How do enums work in Python? (Answer: use the "enum" module and write it like non-member assignments, like this:

      class AppState(Enum):
      offline = 1
      online = 2
      unconfigured = 3
      waiting = 4
      performing = 5

      TheOnlyRealTodd wrote:

      Is this pretty typical for a new coder or coders in general?

      It's typical of coders with a new language/framework/platform. Don't even get me started on the lunacy of trying to launch an app at startup in Debian (or any *nix OS.) So, to re-iterate, the impedance mismatch between knowing something because I've read a book or watched a few videos, vs. knowing how to do a thing, well, that can be *cough* shocking. Marc

      B Offline
      B Offline
      BillWoodruff
      wrote on last edited by
      #22

      Marc Clifton wrote:

      the impedance mismatch between knowing something because I've read a book or watched a few videos, vs. knowing how to do a thing

      I call that "eloquent," and I speak from direct experience of a life-time of swimming upstream all-too-slowly against the flux of mis-matched impediments, kept afloat only by some talents in rationalization and denail :) cheers, Bill

      «There is a spectrum, from "clearly desirable behaviour," to "possibly dodgy behavior that still makes some sense," to "clearly undesirable behavior." We try to make the latter into warnings or, better, errors. But stuff that is in the middle category you don’t want to restrict unless there is a clear way to work around it.» Eric Lippert, May 14, 2008

      K 1 Reply Last reply
      0
      • T TheOnlyRealTodd

        So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

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

        I've once spent 9 hours (starting at 21:12) trying to solve a problem and after I went to bed and got up, I found the easy solution that I simply missed because I was running head first into a wall instead of simply turning back and bypass the wall.

        1 Reply Last reply
        0
        • T TheOnlyRealTodd

          So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

          H Offline
          H Offline
          Harrison Pratt
          wrote on last edited by
          #24

          See this: Rubber Duck Problem Solving[^]

          1 Reply Last reply
          0
          • T TheOnlyRealTodd

            So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

            H Offline
            H Offline
            Harrison Pratt
            wrote on last edited by
            #25

            See this: Rubber Duck Problem Solving[^]

            1 Reply Last reply
            0
            • T TheOnlyRealTodd

              So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

              E Offline
              E Offline
              Eng Boniphace Udoya
              wrote on last edited by
              #26

              You are not alone bro! I also had the same problem and I am still have.It is about a month now since I have stated learning Mobile application development using Android Studio.Actually at the beginning I was total confused and I was about to "Give up" and Quit doing those stuffs but I remember my parents insists to me that Giving up is a sin,So I reflected those words and I see my self was about to commit sin so I continue learning. I encourage you to struggle hard and you will succed.Also apart from that I recommend you to read this book "The Dip" written by Seth G. it will help you. Remember that "Programmers of Today are the wizards of the Future"

              1 Reply Last reply
              0
              • V V 0

                TheOnlyRealTodd wrote:

                that take me like 2-4 HOURS to solve at times

                This can be normal and in professional environments it can be quite longer. However I would also like to add an anecdote from my past experience: I was coding on an application containing a matrix of results and somehow the results where one of in this case, correct in the other and again wrong in a third case. After 13 hours of straight programming the letters on my screen started to turn green and started to move around. My queue to stop working (it was 21:30 and I still had to go home). The next day I came in and started working again. It took me literally less than 5 minutes to solve the problem. Moral of the story: Dare to put a problem on the side, focus on something else and come back again later. Keep up the enthusiasm :-)

                V.

                (MQOTD rules and previous solutions)

                D Offline
                D Offline
                Dejoere
                wrote on last edited by
                #27

                Go out-side step away from the code for a few minutes, explain the problem to someone, that someone can be a photo of Bill gates or your favorite bear or a real person who could actually help.

                G 1 Reply Last reply
                0
                • B BillWoodruff

                  In my experience the type of "technical learning" necessary for programming skills in a given OS and "stack" varies from person to person; of course it varies by general cognitive abilities in dealing with logic and abstractions, symbol and semantics, but, there is, also, imho, a kind of "innate" cognitive style which is quite "individual." Some folks, in my experience, are endowed with strength at learning from "the top down" ... from abstraction at a high-level to "nitty-gritty," from algorithm to code: give them a set of Backus-Naur diagrams and they can visualize how those abstractions "work" in a "real world" computer language as a dynamic set of parsing/object-construction, etc., "rules." Other folks, like me, in contrast, are "bottom up" learners who learn best by making multiple passes over the high-level concepts and forma structure in the context of focusing on some specific technique, or problem to solve, most often while experimenting/prototyping. I believe this type of learner tends to need a lot of "hands-on" before they can form an accurate "mental model" of how the high-level abstractions and concepts "work" in the code. I do believe that intense periods of all-out effort, total immersion, in learning are very valuable; at the same time, I believe it is an important skill to develop to know when (as in your example where the screen starts dancing) that you are over-loaded mentally, and the ratio of effort to learning turns negative. A phenomenon I have noticed in myself, and others, is a kind of "carry-forward" from the first language/stack one learns in depth to your future learning new languages/stacks. For me, the first really deep-dive was with Lisp, and then, PostScript, and I find myself thinking, sometimes, that I wish .NET had the kind of "dictionary stack" to govern current semantic state, and other save/restore-state mechanisms, like the 'gsave/grestore graphic-state semantics, that PostScript has :) If you accept the premise of a tendency for learning in "bottom up" vs. "top down" style, and a connection with the general cognitive style of a person, then, from an educational point of view ... what follows ? I'd say the strong "bottom upper" at times need to engage in intensive immersion in the higher-level abstractions, in the structure, semantics, algorithms, design-patterns. And, I'd say the strong "top downer" needs to "get their hands dirty," and work with lower-level idiosyncratic features, like dealing with the quirks of the UI Controls that .NET provides in WinFor

                  B Offline
                  B Offline
                  BryanFazekas
                  wrote on last edited by
                  #28

                  Excellent post! I'm top-down AND bottom-up. I do best when I start with a high level view of the subject and dig into the theory. This gives me a visualization of what I'm dealing with, including rough parameters. Then I get my hands dirty, digging into the details and building little pieces, and grouping them into bigger pieces. I have to have the hands-on work to truly learn anything (maybe everyone does to some extent). The initial picture is always full of holes. There are too many details left out by verbal descriptions. The hands-on work fills in those gaps and corrects misperceptions. When learning a new language I build an address book application. I've had the same data model since 1991 and know the requirements inside-n-out. This lets me focus on building an application, from data access layer to GUI.

                  1 Reply Last reply
                  0
                  • D Dejoere

                    Go out-side step away from the code for a few minutes, explain the problem to someone, that someone can be a photo of Bill gates or your favorite bear or a real person who could actually help.

                    G Offline
                    G Offline
                    gvsubonnie
                    wrote on last edited by
                    #29

                    So many times have I started to explain a problem to someone and almost instantly figured it out as I was explaining the problem. I've known people who have completely scoffed off "rubber duck decoding" but it tends to work so well for me.

                    H 1 Reply Last reply
                    0
                    • T TheOnlyRealTodd

                      So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

                      D Offline
                      D Offline
                      David Days
                      wrote on last edited by
                      #30

                      A lot of really good advice here, and it reflects a lot of the techniques that I use to learn and get things done: Take on projects that stretch your capabilities, try to explain the issue to someone else, talking it over with another coder, etc. One that I haven't seen mentioned is this: Really really put in the time to learn some deep basic knowledge, such as data structures, algorithms, and computation theory. I spent about 8 years doing coding work, both on the side and for pay, and I was pretty good at getting things done. I learned like you did, and felt pretty adept at taking on new challenges and expanding my repertoire. Then the business I was in went under, and I used my GI bill to go back to school (rather than call myself unemployed) for a graduate degree in Comp Sci. Out of all the classes, it was the Algorithms, Data Structures, and Computational Theory classes that taught me the most--and it all came together in the class where we wrote a basic operating system from scratch. (I had never had these classes before--I was an Aerospace Engineer from way back, and took up software development because, like you, I enjoyed it and had a lot more patience for coding than anything else) When I went back to work (needed the money more than the degree), I found that my problem-solving skills (and even better, my "problem-recognition" skills) had improved tremendously. And because I had a better understanding of how computers work, the particular language I was working in became less important than figuring out what the software needed to do as a whole. You don't have to actually take classes, but it's like automobile maintenance: If you don't understand the basics of electrical circuits and 4-stroke engines, you can still get the job done, but it'll take a lot longer and there's a lot of "magic" involved. Learning the underlying principles of hash tables, stacks, sorting algorithms, and memory management makes a world of difference. ...and BTW, even with all this, I still run into problems that take me 2-3 days to figure out, even if the final answer is simple. But it's the ability to find this "simple" solution that we get paid for, right?

                      vuolsi così colà dove si puote ciò che si vuole, e più non dimandare --The answer to Minos and any question of "Why are we doing it this way?"

                      1 Reply Last reply
                      0
                      • T TheOnlyRealTodd

                        So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

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

                        You believe you are proficient, but I'm afraid all you really know is how to spell the keywords. With many years of practice, you will suffer less frequently from these periods of inability to move forward. Bad news, huh? It's called "coder's block": writer's block for code. You get over coders block by...wait for it...coding. Partly this means experience coding, but it also means not allowing yourself to be blocked. You must write something.

                        • If you can't write a function, try writing just the function signature
                        • If you can't write the signature, try writing an introductory comment
                        • Try writing a unit test that uses the function, to see how you will use the thing you want to write
                        • Get out a blank sheet of notepaper and try writing a few phrases or keywords about what you want the function to do

                        Just as soon as you have written something, you will begin to review it mentally. You'll begin to see if you like it. You'll engage whole new subsystems of your brain to work on the problem. A separate problem is that you have to have some familiarity with each library you use. It takes a long time to look at all the documentation for a library to see if it has a function you need. Not so long to remember what order the arguments are in. But this is just temporary.

                        1 Reply Last reply
                        0
                        • G gvsubonnie

                          So many times have I started to explain a problem to someone and almost instantly figured it out as I was explaining the problem. I've known people who have completely scoffed off "rubber duck decoding" but it tends to work so well for me.

                          H Offline
                          H Offline
                          Herbie Mountjoy
                          wrote on last edited by
                          #32

                          Never underestimate the power of the subconscious. While you are walking the dog, enjoying a brewskie or lying in your bath the brain is still working away. When you come back to the problem it seems a lot simpler. We're philosophical about power outages here. A.C. come, A.C. go.

                          1 Reply Last reply
                          0
                          • B BillWoodruff

                            Marc Clifton wrote:

                            the impedance mismatch between knowing something because I've read a book or watched a few videos, vs. knowing how to do a thing

                            I call that "eloquent," and I speak from direct experience of a life-time of swimming upstream all-too-slowly against the flux of mis-matched impediments, kept afloat only by some talents in rationalization and denail :) cheers, Bill

                            «There is a spectrum, from "clearly desirable behaviour," to "possibly dodgy behavior that still makes some sense," to "clearly undesirable behavior." We try to make the latter into warnings or, better, errors. But stuff that is in the middle category you don’t want to restrict unless there is a clear way to work around it.» Eric Lippert, May 14, 2008

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

                            you hit denail on dehead with that one. :)

                            1 Reply Last reply
                            0
                            • T TheOnlyRealTodd

                              So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

                              M Offline
                              M Offline
                              Member 3257606
                              wrote on last edited by
                              #34

                              John Robbins has some good advice on debugging with .NET. Pick up one of his books or see what is otherwise available. I haven't checked this particular presentation, but channel 9 has this presentation.[^] My professor (who became a Touring award winner...) had a very specific principle for proving code: Define INVARIANTS in your code. That means you have known expectations of variables (and state) at specific points. Test for those. .NET provides Debug.Assert which allows you to test for those invariants and doesn't require you to remove them for production (just use build configuration). Add to that by considering test first (test driven development), or at least keep testing in mind when you code. Many other great insights posted here - I can vouch for pretty much all of them after almost 40 years in the business. When it comes to extended sessions - that boils down to how much you can mentally keep track of and how TIRED you are. Some times, nothing beats being "in the zone" for an extended period, but only when you are actually making noticeable progress or following multiple leads. But when you start to spin your wheels, you are probably better off taking a break. I like to do Sudoku puzzles, and the ones I have trouble with at night before bed are usually quickly solved the next morning. Same thing with programming challenges. * Learn and practice using patterns. * Describe problems out loud or in writing. That forces you to think them through. * Learn by teaching others. That challenges you to know. * Don't rely on what you know - things change. I have had to unlearn more things that I have had to learn. Look it up. * Get comfortable with a good search engine (I like DuckDuckGo.com). Realize that not all answers on line are good answers. * Have fun coding, and don't forget to have a life away from a keyboard and screen.

                              1 Reply Last reply
                              0
                              • S Super Lloyd

                                What you will ideally need is a tutor. That is someone who is a skilled developer and wouldn't mind occasionally have a look at your problem... I think there is a tutoring program on CodeProject (with volunteers..) give it a go sometimes, who knows? (I never did, so I don't... :omg: )

                                A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!

                                P Offline
                                P Offline
                                pmauriks
                                wrote on last edited by
                                #35

                                A mentor.

                                S 1 Reply Last reply
                                0
                                • P pmauriks

                                  A mentor.

                                  S Offline
                                  S Offline
                                  Super Lloyd
                                  wrote on last edited by
                                  #36

                                  Ha yes, that's the word! :laugh:

                                  A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!

                                  1 Reply Last reply
                                  0
                                  • V V 0

                                    TheOnlyRealTodd wrote:

                                    that take me like 2-4 HOURS to solve at times

                                    This can be normal and in professional environments it can be quite longer. However I would also like to add an anecdote from my past experience: I was coding on an application containing a matrix of results and somehow the results where one of in this case, correct in the other and again wrong in a third case. After 13 hours of straight programming the letters on my screen started to turn green and started to move around. My queue to stop working (it was 21:30 and I still had to go home). The next day I came in and started working again. It took me literally less than 5 minutes to solve the problem. Moral of the story: Dare to put a problem on the side, focus on something else and come back again later. Keep up the enthusiasm :-)

                                    V.

                                    (MQOTD rules and previous solutions)

                                    M Offline
                                    M Offline
                                    mungflesh
                                    wrote on last edited by
                                    #37

                                    This is so true. It's easy to get stubborn and not want the problem to defeat you, so you stick at it for hours, only to wake up the next day and the solution literally just pops into your head. Also, the other points people have made about talking the problem over OUT LOUD, with either a person or by yourself. That works wonders too. Something about being forced to express the problem clearly - such that someone else can understand where you're at - frequently unblocks the issue in your mind and the solution presents itself.

                                    "And when I have understanding of computers, I shall be the Supreme Being!"

                                    1 Reply Last reply
                                    0
                                    • T TheOnlyRealTodd

                                      So I've recently surpassed the "basics" of learning programming (been using C#) and I've now been taking my knowledge and getting creative by making all kinds of cool little apps - from web browsers to gag joke apps, to apps that monitor system performance information... I've really gotten "hands on" with coding now and mostly the challenges I face come up when I write my programs trying to figure out logic and debug and also trying to discover new functions/methods and APIs... Speaking of APIs and libraries (namespaces, etc...), I've noticed they are an entire different learning curve. Not only must one know the actual language, but he or she must also have a working knowledge of APIs and libraries or else the language knowledge won't mean anything. Anyway, so I want your input on learning and growing as a coder... I have more patience for coding than I do anything else in my life. I will literally sit for like 12 hours if I have to just to get something worked out. I can't say that about anything else. However, there are certain logic issues that I run into that take me like 2-4 HOURS to solve at times, and sometimes the problem is painfully simple, I just couldn't see it to begin with. Is this pretty typical for a new coder or coders in general? I don't have a ton of experience being around other new coders so sometimes I wonder if that's normal or if I'm just a wreck. It's pretty easy for me to follow along in coding books and watch tutorials on Udemy and YouTube and understand everything, even when it comes to so-called "advanced" concepts. However, it's when I put all that stuff away and it's between me and Visual Studio that sometimes I get stuck... And sometimes I don't want to quit and I will stay up all night trying to figure out what ends up being a simple problem that can be fixed in a line or two of code. I figure this is how the job probably really is, except with much more advanced problems. However, I do still enjoy coding. It's fun to work out the bugs. Your advice/insight is appreciated. Thanks. P.S. Is there any standardized way to improve at debugging? I'm still trying to learn my way around the VS debugger.

                                      U Offline
                                      U Offline
                                      User 10439308
                                      wrote on last edited by
                                      #38

                                      I am a newbie too. I went through all the tutorial videos a couple of times. I entered the code that was offered up by the speakers and played with it. Once I got past that and wanted more, I found that there are problem sites that present problems or challenges to be solved. SPOJ and HackerRank are ones that I am familiar with. Sometimes I spend days on a problem. The problems introduced me to all kinds of programming and debugging techniques that I normally would not have encountered otherwise. Working on XOR-ing the contiguous subarrays right now. Programming Problems and Competitions :: HackerRank[^] Driving me crazy. Being an feisty old guy with just a desire to learn something new I am under no pressure to learn as fast and as much as I can. I program for fun. Do not want a job or need a job. I just feel a big sense of accomplishment when I get a problem right. It is sad that most of my age group just sit around and watch TV all day in their retirement and don't even know how to turn on a computer. Keep plugging and try the stuff on Hacker Rank or SPOJ. I use Snippet Manager to collect bits and pieces of code that I constantly refer back to. It seems pretty primitive but I cannot find anything better.

                                      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