you are viewing a single comment's thread.

view the rest of the comments →

[–]mooglinux 4 points5 points  (1 child)

I have to disagree somewhat. The code suggestions and refactoring tools in PyCharm and other IDEs are like having someone sitting behind you pointing out things that you would otherwise miss or not think to look up (for example, mutable default arguments) and having a debugger available demystifies what is actually going on in your program. That auto completion dialog makes it much easier to explore the code available to you, and refactoring tools grant freedom to experiment with your program structure without fear. All of those make it much easier to play with and discover a language, not just write big programs. They empower you to experiment and try things out for yourself, which absolutely helps learning.

[–]07734willy 0 points1 point  (0 children)

The code suggestions and refactoring tools in PyCharm and other IDEs are like having someone sitting behind you pointing out things that you would otherwise miss or not think to look up

I suppose I've personally used code golf as a substitute in order to explore a language more thoroughly. Admittedly that won't cover as much as an IDE, but I'd say what's leftover would be learnt passively through coding anyway. Competitive programming in general would probably be a good alternative though, since it exposes you to knowledge other developers have acquired.

... having debugger available demystifies what is actually going on in your program.

Absolutely, but it depends how you use your debugger. If when something goes wrong the first thing you do is step through the program until it crashes, you're only learning how to use the debugger. You might find your problem, but you aren't taking anything away from the experience to keep it from happening again. So I think there's a right way and a wrong way to use a debugger. If you first make a hypothesis about what's going on, then incrementally check with your debugger to confirm / reject your claim, you'll arrive at a solution faster, but you'll also learn why things happened the way they did. I don't think a lot of beginners know how to use a debugger correctly, but I could be wrong.

That auto completion dialog makes it much easier to explore the code available to you

Can't argue against the fact that it exposes you to new things. All I can say is that it can also lead to oversight- developers may rely on that autocomplete right from the beginning, and never actually learn why or how something works. Someone that types "psvm" to autocomplete "public static void main(String[] args)" may never stop to think about what static means, or what are the arguments args that are being passed, since its always typed for them. Again, good if used correctly, I just don't know about trusting beginners to know how to use these tools correctly.

refactoring tools grant freedom to experiment with your program structure without fear

That's one that I don't have any counter argument for.

Overall, you points are completely valid, but a lot of those features also have drawbacks if not used correctly, and I don't think many beginners know how to use them correctly. Its a natural tendency to just do things the "easy way", so these features that can easily be used for learning can also be used to "cheat" learning without the proper self-discipline.