Hacker News new | ask | show | jobs
by gregthompsonjr 3425 days ago
Try using Django (Python) for a little while. You'll get exposed to everything you mentioned because the Django core is feature rich. There's a lot of support for Django—it's battle-tested and used by a large community of Python developers. Out of the box, Django is a lot heavier than something like Tornado or Pyramid, but if your goal is to work with a widely used framework with lots of backend features to learn, I'd choose Django.
2 comments

Yeah, that's a good one. What would you recommend to focus – Flask or Django (or maybe Tornado), given that I like to wire stuff by myself (so I enjoyed building an API in Golang)?
I'd go Django first to understand the basic terminology, concepts, and patterns that are used on the backend. Django is old, but feature rich as the parent said, yet still heavy development and use. So the ideas and concepts you'll get from it will still be very valid.

Than as you get comfortable you can branch out into the less meaty frameworks like Flask or Go ( if you want to call that a framework ).

Remember, beyond the actual application server and framework, there's all the other 'stuff' that goes around it. The web server, databases, caching technologies, etc. Take the well travelled path first to see the best practices, than go your own way if you really do want to 'wire stuff' yourself. ( And trust me, even with Django there's plenty of wiring required still to build a real app ).

When you're just starting out, it probably doesn't matter too much. Pick one, and pick a project to build using it. You'll learn lots no matter what language out framework you use, and most of that knowledge will be portable to other back end languages and frameworks.

Maybe do something like building yourself a personal Pinboard clone. Or your own personal Twitter clone. Or anything else you'd like. Deliberately just focus on bare bones functionality. No fancy extras.

And no JavaScript. Make sure your project works without it. You can add in JS later in if you really want to, but worrying about it now will just take your focus away from developing back end development skills.

Depends on your priorities for learning.

Pick Django (+ Django Rest Framework if building an API) if you want to take advantage of its many abstractions, build features and ship fast.

Pick Flask if you want a small, simple codebase that's closer to the metal. You can learn more this way but it also takes more work to ship the same app in Flask vs Django IMO. One example is the Django ORM is much more intuitive and simpler to get started with than SQLAlchemy.

I would recommend Bottle.py, it's super easy to get you going. But the advantage with Flask is that you have more code to learn from and its arguably more adaptable. Django is good for bigger stuff, it's too heavy for hobby stuff and microservices.
Django also has incredibly well written and complete docs. The best of any web framework that I've seen.