I have a strong background in Java, which obviously is statically-typed, and type-safe language.
I find it that I am able to read through large amounts of code very quickly and easily assuming that the programmer who had written it followed basic conventions and best practices. I am also able to write code pretty quickly, given a pretty good IDE like Eclipse and IntelliJ because of the benefits of compilation and auto completion.
I'd like to become more proficient, effective and efficient at reading/writing code in more dynamic languages like Python and JavaScript. The problem is that I can't find myself understanding code nearly as fast as I would in Java mainly because I comprehend code very quickly based on their types. Also when writing, there really is no auto complete available to quickly see what methods are available. Edit -- I ask this in the context of larger-scale projects where the code continues to grow and evolve.
What are general strategies or caveats when reading and writing in languages like these when the project sizes are much larger and are non-trivial? Or does it come with time? Much thanks!
I'm a C++/C# dev by training, and I found that I got better with JS after I started writing it. Try going all in on JS and write something in it. Maybe Node.js. Maybe learn to use it with a frontend framework like Angular or Knockout. Maybe both together.
If you want to improve from there, check out Douglas Crockford's "JavaScript: The Good Parts". He writes some good suggestions on how to write better JS. It's not ironclad, community-proven best practices, but he offers some solid stuff.
Strategies to be more effective at programming in dynamic languages