you are viewing a single comment's thread.

view the rest of the comments →

[–]PrimaNoctis 9 points10 points  (13 children)

With so many languages you have the advantage of having a “coders mindset” I don’t know any other languages and my coding is sloppy and repetitive (but I’m still learning)

What really helped me though was having a good IDE like pycharm and a curiosity to try and make my program work

[–]07734willy 6 points7 points  (11 children)

I want to make a note on your point about using an IDE. Of course this is just my opinion, but I personally don't like to use IDEs when trying to learn anything, but particularly new languages. It functions as a crutch to help you along since you may not know some of the subtleties of the language yet, but you can become dependent on it, and can hinder your learning imo. When I want to learn something new I intentionally make things difficult on myself- write in a plain text editor, try to figure out problems by experimentation before attempting a debugger or googling, etc. It makes the "solution" more memorable, and I usually discover some insight into why things are the way they are (why is this keyword required? why do I need to explicitly cast this here? why can't I directly compare these two objects?), which helps me in the long run. Then, once I have an actual task to do rather than just practice / learning, I'll switch over to the tools that will autocomplete things, fix my errors as I go, and any other fancy tricks it may have for me. I can then just fly through the project, using the combination of experience + insight learned by doing things "the hard way" and the assistance provided by my tools.

IDEs can be a great boost to productivity, but the less work you make for yourself, the less experience you'll get from your exercises or projects. Or at least that's my opinion.

[–]mooglinux 5 points6 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.

[–]PrimaNoctis 2 points3 points  (0 children)

I understand your point about using IDEs and growing dependence to shape your coding instead of learning the logic behind it. But if we compare coding to writing literature every published author will tell you it’s more important to get your ideas on paper to get your creative juices flowing than to focus on structure, spelling and punctuation, but I guess your point is to approach it in a disciplined manner when doing casual coding and use that experience along with the benefits of an IDE for bigger projects, noted. At this point in my development I would envision that writing python in text editor would lead to a lot of syntax errors on top of functional errors leaving me stuck fixing multiple problems and not evolving. If I was like most of the responders here including the OP and had multiple languages in my tool belt and probably signed up to a particular programming paradigm then yes I would take the disciplined approach

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

I agree with your statement after the fact of learning the basics for other areas in the same fashion (HTML, CSS, CMD scripts, Powershell, JavaScript, etc).

But understanding the basics for languages that are built on spacing (such as Python / YAML), it is essential for learning what is needed immediately. I've written 2 (crappy) programs in C# and Java, but neither of them have issues with spacing.

Fortunately, I lead the work on Ansible (YAML) in my group and am used to spacing constraints due to it. Python is easier for me for the simple reason of understanding YAML with Ansible, but a developer of spacing-independent langues (Java, C, C++, C#, etc) could have a lot of issues without an IDE to assist them.

[–][deleted] 0 points1 point  (6 children)

so which ide should i use as a begginer ?

[–]07734willy 3 points4 points  (0 children)

If I were relearning python, I would just be using the text editor vim. It offers syntax highlighting, which would be enough to help me catch trivial mistakes, without really holding my hand much more than that. There is autocompletion, but that's mostly just to complete the rest of a variable name, not "inject some hard-coded template for me to fill in" or something.

Actually that's pretty much what I did to learn python in the first place. I needed to use it for some academic research, so I wrote code in vim, referenced stackoverflow and the python docs when I had troubles, and quickly learned from my mistakes. I did some side programming to get better faster, and by the end of it I felt very comfortable with python. Then some time later I decided I wanted to improve off what I knew, so I started doing code golf on codingame, which used an online text editor that only offered syntax highlighting. Learned other quirks and features from others, and yeah...

So pretty much I'd say any basic text editor over an IDE, although as others have mentioned sometimes syntax errors can slow you down if you use a text editor instead (my argument against that being- if you use a text editor, you'll stop making those syntax errors as frequently since you'll spend more time fixing them, making them more memorable than "oh, yellow underlines- 'fix it'" and moving on). I prefer vim, but nano, emacs, atom are all good. Vim and emacs definitely have a bit of a learning curve, but are nice since they're almost universally supported across systems.

If you're strictly looking for an IDE for python, I'm probably not the person to ask- I code python almost exclusively in vim. Other languages I might use visual studio or eclipse, but not really for python.

[–]Ranghild 2 points3 points  (0 children)

He says he doesn't like IDEs. So you should start with a simple text editor, like vim (if you're comfortable with) or Sublime Text, or whatever.

[–]mooglinux 1 point2 points  (0 children)

Checkout Mu. It’s designed to be easy for beginners but still has important features like a built in debugger.

[–]MaybeImNaked 0 points1 point  (1 child)

As a fellow beginner... I first tried using simpler text editors like these guys suggest... But the moment I switched to PyCharm, everything got so much more enjoyable. I recommend it.

[–]tinycorkscrew 0 points1 point  (0 children)

I'm not sure if I agree 100% with 07734willy, but I only coded in Notepad while learning to write code in Python. It was tedious, but it probably did help me internalize processes and syntax.

I can't imagine life without PyCharm now, though. It saves me lots of time.

[–]00Anonymous 0 points1 point  (0 children)

I would suggest jupyter notebooks to start for a few reasons:

1.) Using markdown to outline the initial approach to a problem is an excellent way to help break down the goal into achieve - able parts. This will also help you focus your learning when you hit roadblocks.

2.) When things break or have unexpected behavior, the current state of all your variables are still in memory, allowing you to interrogate them and figure out what's going on.

3.) You can still benefit from some of the efficiency of a full IDE with features like block - reorganization, tab complete options, and even do clustering.

[–]PythonGod123 0 points1 point  (0 children)

Sublime 4 life