Productive Web Development Frameworks

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).

My choices of languages and frameworks usually stem from what I think is the most useful. I decided to learn JavaScript when I started down my Software Engineer career path because of what @balaji said about it in his startup engineering MOOC (it was on Coursera in 2013, but it's not listed anymore). Since I couldn't find a quote after a minute of Googling, I'll just rephrase what I remember. Learning JavaScript, in one of it's forms (for the browser, or NodeJS) will be important because, heck, you'd have to learn it anyway.

So I started with JavaScript.

Now I'll also include the Swiss Army Knife of programming languages, Python. Python's ecosystem is vast, just like JavaScript's. There are just so many libraries used by so many different subsets of the developer community that it's hard to get away from. Generally, Python is considered a very beginner friendly scripting language, and I tend to agree, but there are many people who would consider it pretty tough to maintain a larger project written in Python. To that, I would say, maybe. Python has vastly improved with the implementation of type hints, so you get a bit of a guardrail while programming.

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.


I'd like to send you a weekly recap of all the articles I write as well as my take on the latest news on web development with Vue, React, Elixir/Phoenix, and others. Just fill out your email and name below!

Prev: Thoughts on the Mega-Tutorial
Next: Accepting WeChat Pay Through Stripe