As I'm getting older, efficiency in use of time is becoming a very significant constraint. And I've found that learning a lot of languages is a waste of time. It's mostly enough to just know two types, one static, somewhat low level language (Java, C++, etc.) and one dynamic, high level language (Ruby, JS, Python, etc.) I've decided that for me, those two languages will be Java and Javascript. Not because they are vastly better than the alternatives. But for the following reasons:

1) I already have years of experience in Java. And it's not a dead field. There's Java 1.8 coming out, new libraries, frameworks etc. And there's the added benefit that I can convince my workplace to adopt these things since they use Java. That way I can efficiently use my work time to make money and learn new technologies at the same time.

2) I also have years of experience in Javascript. And I've discovered that Node.js can cover all the areas that I wanted Python to cover. It's good enough for rapid prototyping web apps, command line scripts, and quick testing of algorithms.

I came to this conclusion after time spent fighting a futile battle to become good at Python. Learning the syntax was easy, there's nothing in Python that was difficult to understand. However, I ran into the following issues trying to truly master Python or any other language I don't use at work:

1) Zero reinforcement unless I spend my own personal time doing it. At work, I'm using Java and Javascript 40 or more hours per week. And those hours are when I'm at my most alert and energetic. Python could only be at night and when I'm tired. Marriage will reduce that free time, and kids will reduce it further.

2) Zero synergy from other developers. A workplace is also a community of developers. My Java and JS skills stay sharp and increase because I can constantly talk and discuss with other developers. I learn best practices, things to avoid, trends, etc. I get none of this with Python unless again I spend personal time to do it.

3) I made some small projects with Python. But a moment came when I realized, it doesn't matter, I'll never even come close to how good I am at Java and JS with Python. It was when I read some random post somewhere about how requests library is so much better than urllib/urllib2. And indeed it is. But if I had not seen that random post, how long would I have stayed ignorant until I found out? For someone who uses Python at work, such knowledge spreads quickly. Also just staying up to date on what's happening in the Python world can help gain such knowledge. I was already spending time keeping up to date with the Java and JS worlds. I just didn't have time to keep up with Python too.

I really liked Python a lot. It's a clean and practical language. But node.js fits much better with my skills and although I like the Python language better than JS, I'm a lot better at JS and will continue to be so since I use it at work.

I guess the TLDR of this is that yes you can try to learn and become good at a language and its community of libraries and frameworks in your personal time. But it's so much more efficient to just become better at the languages and frameworks you use at work and then use that experience to become good at new technologies for that area.

Perhaps the final breaking point that lead me to abandoning Python in my personal time is when I realized, I could've spent all that time building something on the side. I could've used my existing Java and JS skills to make an app or website or anything. And I could've done it fast, quickly, and with the confidence that comes from truly mastering development tools. Instead I wasted it to gain a useless amateur understanding of Python.