November 3, 2019
The lazy person in my would like to just stick to what's familiar. I've worked with my fair share of web development frameworks and I have some opinions about certain things that I like. I never looked at "productivity" as a metric beyond what I already knew, then perhaps what's the hot thing right now. I know some people, like Mark at Alchemist Camp who found Elixir to be the most productive after years of working in NodeJS and looking at Rails (which he found productive, yet, unperformant for specific tasks).
The most compelling libraries for Python are the Machine Learning/Deep Learning and Data Science stacks. There's an incredible amount of work being put into Tensorflow and Pytorch now. It's nice that they seem to be trying to compete with each other, thus creating a better ecosystem for the end developer. I'll also include the scientific stack, Pandas, Numpy, Scipy, etc. to this. It could be very overwhelming to the beginner, but I take it with a toolbox approach. If I know of the tool's existence, whenever there is work appropriate for that tool, I'll then learn how to use it.
Now we arrive at frameworks. Back end, front end, universal. This list never seems to end. And next week, I may have a completely different list. For productivity, it's hard to beat the "everything and the kitchen sink" frameworks. Laravel, Rails, and Django are popular frameworks that have almost everything you can think of for building a server rendered app. Another good thing is that there's very good feature parity, since if there's a killer feature in one framework, you can bet someone is working to implement it in the others. For front end, I've done work with Angular, React, and Vue. React was my tool of choice for the past two years, but recently I've been enjoying the minimalistic feel of Vue. I've worked with NuxtJs, and it's probably my preferred way to start a Vue project, even if I don't need server-side rendering.
So there you have it. Developing applications is mainly wading through a dizzying amount of choices. For the most part, you can't really go wrong with anything that you choose.
As for me, I've decided to concentrate on Python/Flask/VueJS. I specialize in building data driven applications, so this stack will give me a good balance of productivity in that sense. I would not want to write custom code to muck around with tabular data if there's a feature rich library like Pandas out there already available. Flask provides a simple to implement API layer to any Python project, and it can grow with the project. Also, VueJs has the balance between Angular and React that I currently like.