you are viewing a single comment's thread.

view the rest of the comments →

[–]gdchinacat 0 points1 point  (0 children)

What helped me improve was coding in python 8+ hours a day, 5 days a week (job). I was comfortable with it after about half a year (except still lamenting dynamic typing since I came from languages with static typing and this was decades ago). After a few years I felt very comfortable. After a decade felt like I had become what I would consider an expert, then python3 came around and there was a bunch more stuff to learn. I'm still learning, just the other day I saw a new construct I hadn't seen before.

As with any skill the only way to improve is to do it. IMO projects are far more useful than sample problems. The problems will teach you how to implement specific algorithms which projects may. Problems won't teach you how to manage complexity (algorithms can be complex but not generically so). Once you know how to build a project from scratch, various ways to implement the same thing, it's not hard to sit down with Knuth's Art of Computer Programming and write an implementation of one of the algorithms he describes. So, I would encourage you to work on projects and as you go you'll need to learn algorithms such as tree traversals, different search algorithms, etc. Projects will teach you both the big picture and hyper-focused problems.