9 comments

[ 3.0 ms ] story [ 37.0 ms ] thread
I will assert here that Pyramid will teach you more about software engineering than either Flask or Django.
Didn't have a chance to work with Pyramid yet, so can't really comment on that
> I finally came to a conclusion that choosing Flask at the very beginning of my career would be a much more beneficial decision in the long run.

At the beginning of your career, you should focus on "getting things done".

Flask will teach you more, true. But all that information can be overwhelming as a beginner, which is why the author had trouble learning Flask at first.

By starting with Django for a few months/years, the author gained knowledge about what they would need to do on their own, which helped them learn Flask later.

For me personally, the most overwhelming thing in my early days as a backend engineer was dealing with a lot of bugs that my Django apps produced. And fixing those bugs was a really hard process because I didn't understand much of what was going on under the hood. Learning Flask in the very beginning will by no means by easy, but I'm pretty sure that pain is unavoidable regardless of the framework chosen. Choosing Flask at the start will probably postpone the point when a person is ready to ship products, but I believe it will lead to a much better foundational knowledge that will be an advantage in the long run
Using this logic, one could argue that using the WSGI and psycopg directly would teach you even more.
Trying to implement something without a framework can definitely teach one a lot, but it probably will stop him from learning quickly once he understands how server and db driver work. My opinion is that Flask gives one just the right amount of abstractions to be able to iterate quickly and having a full understanding of all processes.
I think the diminishing returns of marginal gains would kick in at that point.

Django/Flask is a core part you need to understand in your stack to be productive whereas WSGI/psycopg are random details you don't even need to understand to make use of.

The problem with these low level frameworks is that you end up with a lot of bug and security issues you don't even know you have.

I mean, for learning purposes....go ahead. I'll never use it for any production web application which requires authentication, permissions and database access. You end up with an undocumented , poorly tested, half baked version of what Django or rails give you.

i have seen a flask/pyramid apps recreating django's batteries -- weakly and unmaintainably.

yes, building something from scratch is good for learning, and arguably should be done before picking up and learning a framework. but that is true for flask/pyramid just the same, build your own utility belt first to truly appreciate something like django.

what is also good for learning is to drill down into the django code to see how certain things were implemented and what design choices were made by seasoned developers. all that code also went through a lot of testing, testing that a home made module will rarely see.

building from scratch is great for learning, but keep your learning artifacts out of production :}

edit: one more thing, once you commit to a framework, dont fight it. if you dont like the django way, dont use django, obviously it's not gonna be a nice experience... every framework is meant to be used in a certain way.