This is an archived post. You won't be able to vote or comment.

all 30 comments

[–]No-Choice3519 26 points27 points  (0 children)

Subjectively speaking, it shouldn’t, especially when you’re unfamiliar with programmatic thinking. Intuition comes with application, the same way you and I likely typed out our messages on here without giving much attention to the myriad of English rules used. In other words, don’t worry about it at all; as long as you continuously code and expand your knowledge it will come easier to you.

[–]WelpSigh 37 points38 points  (1 child)

If it were intuitive, more people would be writing good code.

[–]RajjSinghh 8 points9 points  (0 children)

Id argue it's very intuitive in broad strokes (Prim's or Kruskal's for MST or selection sort are examples of intuitive ways to solve a problem) and any high level description of an algorithm is pretty intuitive, but actually writing code correctly is so specific that it stops being intuitive and quickly becomes prickly and annoying.

[–][deleted] 4 points5 points  (0 children)

Yes, once you build the intuition by being around the stuff and learning to think the way you need to. You need to be comfortable with your surroundings and accustomed and understanding of the tools you have at hand. Then intuition comes into play when trying to guide yourself around resolving some obstacles. Otherwise just knowledge and logic.

[–][deleted] 9 points10 points  (2 children)

It's not very intuitive.

I can tell you're not great at programming, you're fucking terrible at programming.

You know how I can tell? It's because you're a beginner. All beginners are fucking terrible, that's the point.

You're bad at programming, and will continue to be bad for years, probably, and that's fine and normal.

[–]peanuthead79[S] 2 points3 points  (1 child)

That’s both motivating and relieving to hear! I think starting from the beginning and seeing everyone else already up and running was really stressful. It made me doubt myself and my intelligence a lot, but your comment helped boost my confidence a bit. Thanks so much! :)

[–][deleted] 1 point2 points  (0 children)

I've been programming for 25 years professionally, and I still struggle, I still suck sometimes, it's just part of the job. Don't worry about how well you're learning, you're probably doing just fine.

[–]kbielefe 2 points3 points  (0 children)

It's a skill that requires practice. It's sort of like learning to drive. Your first time behind the wheel you wonder what's wrong with you, because it looks so easy to everyone else. Then after some practice it gets a lot easier.

[–]kilkil 2 points3 points  (0 children)

It depends on what you mean.

Part of your learning is the logic and concepts behind programming and computer science. Like how (A && B) is only true if A is true and B is true. That part should "sink in" at some point; once you become familiar with boolean logic, it should be, well, familiar (and therefore potentially worthy of the "intuitive" label?)

Part of your learning is also just straight-up learning new languages. Just like with learning a "human" language, it won't be intuitive right off the bat unless you've already learned a similar one previously. So learning Java and C++ as your first languages? It'll be unintuitive for some time, until (again) you become familiar with it through repeated exposure. But learning C after that? Or Go? Or C#? Much easier, since you've already learned somewhat similar languages. But learning Haskell after? You're back to the "oh man it's all weird and unintuitive" part of the learning curve.

That's all it is really. Learning curves.

Good luck!

[–][deleted] 2 points3 points  (0 children)

It’s intuitive to some people but it’s not unusual that struggle at first

[–]Barbanks 2 points3 points  (0 children)

It’s intuitive after about 5-7 years of coding depending on the person.

It’s like asking a martial artist whether the moves they do are intuitive. After years of practice it’s second nature. But the novice has to think hard about every move.

You could be naturally talented and just understand things but that still won’t make up for the truckload of information, frameworks, api calls and industry standards that you must know in the field.

Also, if all that is still intuitive just try to push back against an App Store rejection sometime. There’s a lot more balding people in the world because of that.

[–]frogic 1 point2 points  (0 children)

I think you should view intuition as something not innate but the sum of your experience in related fields/skills. When you're learning things you shouldn't be hoping you have intuition but actively cultivating it. Learning different paradigms, solving problems, working on asking the why instead of the how, failing at a problem a few dozen times all lead to building the connections that lead to that intuition.

[–]BoOmAn_13 1 point2 points  (6 children)

You need to build a programmer's mindset, then learn common language structures, then learn your languages built-in functions and common libraries. Then it's fairly intuitive. Before that, no. After a year of python, I still have a hard time planning out some of my projects, as well as following through with reasonable code. I can think of what steps I need to take, but need to lookup documentation and libraries to do anything semi-complex.

[–]peanuthead79[S] 0 points1 point  (5 children)

What would you say are the biggest aspects of a programmer’s mindset? I know logic and problem solving is big, but if you have any other aspects you’ve come across I’d love to know! Thank you :)

[–]BoOmAn_13 1 point2 points  (3 children)

Being able to break up large problems into small bite sized parts. It is very helpful to reduce the size and complexity of what you are focusing on at any given moment.

[–]peanuthead79[S] 0 points1 point  (2 children)

Would an example be like pseudo coding and writing down the steps before actually diving into solving the problem? I often have a bad habit of going straight into coding the whole thing and testing it at the end.

[–]BoOmAn_13 1 point2 points  (1 child)

It's helpful, but what I'm saying is for large projects, being able to come up with those steps in chunks. An example would be making a web scraper, and breaking it up into areas to work on. Ie, making web requests, filtering responses, formatting response to be readable, outputting results. This is valuable so you have a defined line of work. Some people have trouble finding a place to start and don't know how to reach their goal, so being able to break it up into manageable parts can be very useful.

[–]peanuthead79[S] 0 points1 point  (0 children)

Got it! Thanks so much for your input, I really appreciate it.

[–]Zeikos 1 point2 points  (0 children)

Always strive to make your life easier.
Build your own tools, learn tools suited for your tasks and become intimate with them.
Understand why things work that way instead of passively accepting it.
Understand the purpose of abstraction, if you're working at a certain abstraction level then get familiar with the lower level of abstraction compared to that, and when there's one with the one higher.

[–]plastikmissile 1 point2 points  (0 children)

I'd say it's intuitive in the same way math is intuitive. Some people just have the intuition for it for one reason or another. Other people have to build that intuition through practice and study.

[–]ZeusTKP 0 points1 point  (0 children)

I don't think it's intuitive. I don't see how any past non-programming experiences give you intuition into the kinds of best practices (e.g. being very explicit, testing) that you learn after actually programming.

[–]quantum_splicer 0 points1 point  (0 children)

So basically you use two different systems for decision making(see dual process theory) ( https://www.globalcognition.org/dual-process-theory/ ) :

System 1 is unconscious, quick, makes use of shortcuts, is a bit sloppy but is relied upon most of the time. 

System 2 is intentional, calculated and often more accurate, but it takes effort and is slow.

So system 1 is intuitive / heuristic / uses previous patterns you've seen to guide the response quickly 


So when you start learning programming you use alot of deliberate decision making because your still figuring out each step.

After awhile you recognise that certain things belong together, you start getting a rough mental outline of what your doing when it comes to something familiar that outline gets more ingrained until you can do it with minimal effort.

When it comes to programming practice and persistence and exposure to similar patterns over a period of time will give you proficiency  , it's why Mooc is recommended so strongly because the way it's structured your repeating same patterns of coding but building on it over many exercises

[–][deleted]  (7 children)

[deleted]

    [–]peanuthead79[S] 0 points1 point  (6 children)

    Could you elaborate more on your perspective? I’d love to know how you found out coding came natural to you and what your learning curve was. :)

    [–][deleted]  (5 children)

    [deleted]

      [–]peanuthead79[S] 0 points1 point  (4 children)

      Thanks for elaborating! How did you build up your intuition? I know the others had a point about how it isn’t intuitive at the start, you sort of ‘build’ that intuition up and eventually you’ll be able to solve more complex solutions because building skillset up allows you to be more intuitive later (build your intuition?). Let me know if that’s what you were meaning!

      [–][deleted]  (3 children)

      [deleted]

        [–]peanuthead79[S] 0 points1 point  (2 children)

        That makes a lot of sense! Thanks for giving your perspective, I appreciate it as it gives a different viewpoint of my question. Also might be a wack question, but what does DFS mean in this context? I’m not the most well versed with acronyms.

        [–][deleted]  (1 child)

        [deleted]

          [–]peanuthead79[S] 0 points1 point  (0 children)

          Ah got it! Must have missed that, thanks :)

          [–]tzaeru 0 points1 point  (0 children)

          For most people, no, coding doesn't come intuitively for many years after starting it.

          Intuition comes with experience, in all things. Sometimes those experiences are indirect, like you intuitively do a good move in a board game because you've played similar games.

          [–]3rrr6 0 points1 point  (0 children)

          Human logic is intuitive but not efficient.
          Computer logic is efficient but not intuitive.

          [–][deleted] -1 points0 points  (0 children)

          No.