If I were you I'd want to really good with plain Python (or Node) before learning a framework, but that's because I'm the kind of person who wants to know how everything works. Once you've written a few CRUD apps you'll wish there was a tool to do some of the common stuff for you, and Django will be waiting for you.
But, if you're not that kind of person it's perfectly OK to jump straight into Django. You'll certainly get further more quickly, even if you won't be able to explain exactly what your code is doing.
I don't think it's that important what technology you decide to learn first, largely because learning new languages / tech stacks gets easier as your frame of reference grows.
What I think is important is sticking to one thing until you have a good grasp of it.
Go is fast and bare bones, and works nicely as a backbone to an API (especially with a GraphQL intermediary). Postgresql plays very nicely with Go, especially if writing queries by hand.
Angular 2+ is great. Vue is also really nice, but I love what Typescript brings to the table and find that Angular being built around TS makes me enjoy it more than retrofitting Vue + TS definitions. I decided on Angular 2+ with great trepidation, but the bad rap carry-over from AngularJS turned out to be entirely undesreved. It's a wonderful framework, and I'm enjoying it greatly.
Also, a shout-out for AWS Lambda. I use it here and there for heavy workloads (personally I wouldn't replace my webserver with it entirely yet), and it made my server infrastructure MUCH more pleasant.
I have a question. How do you speed up the database CRUD operations when the number of records fitting a certain criteria may range to 10000 or more. It takes a lot of time to get this over the network and the user is not going to use/see all of it at once. Given such constraints, how do you speed up the query so that there's little to no lag time for the user(at least for say first 100 records).
It depends on what you mean by a website. If it's one level above a static page, a static site with frequent changes, I'll make my own build chain in Node.js with Gulp and host the pages in S3 and Cloudfront.
Or I will use Rails behind Nginx if the site is more dynamic. Each release would get built into a Docker image and be deployed that way. HAProxy would be there mostly to forward requests to multiple apps if there are any.
For a site that needs a lot of client side scripting, I use Ember. I'm so happy with it that I will probably use it with Fastboot for those times I would have used Rails. In terms of databases, I've been using CouchDB unless I had an overwhelming need for relational records. It saves time because CRUD and websocket/eventsource/longpolling come with it out of the box.
I can't speak highly enough of up, it's amazing for creating serverless(sic) apps without changing the way you structure your app.
I also use up for some python apps
1. Apart from the startup latency i haven't noticed much of a big difference between up/lambda and a live server. And lambda will keep your function warm for AFAIK, 1hr, so if your app has lots of traffic you never experience startup latency.
2. Up is open source, if they close their biz, I'd just continue using their code. I haven't used up pro yet.
3. Up has been around for probably under 1yr so you may not see a lot of testimonials yet. It is made by tj(the same guy who made expressJS, the nodejs web framework among other softwares)
If you haven't heard of it, check out https://vapor.codes. It's an absolutely amazing framework that is non-blocking in version 3. The performance you can squeeze out of it is unbelievable.
That site has some serious problems on my OS X Sierra/Chrome. Every time I load the tab it just freezes the whole browser. Great advert for all the claims they're making.
Excellent choice. Two of the best reasons to recommend:
1. Hiccup syntax is a great way to “template” HTML, being clojure-native data structures with the full power of the language available to you.
2. REPL-driven workflow makes it a dream to debug things like request handlers.
You will miss out on some perks from bigger/more popular frameworks—there’s no built-in admin panel waiting for you—but you can take advantage of the Lisp Curse here and quickly build out what’s missing. I find it’s a worthwhile trade-off.
Are you able to talk a bit about your server-side Javascript setup? What was your decision making process for using something other than Node? How does the ecosystem of libraries and supporting infrastructure look like?
It's not something that I chose in particular. I work at a Salesforce Commerce Cloud[0] partner, with half a dozen clients. The language syntax is Javascript (in fact, I'm sure that it's built on the JVM's JS engine), but uses a proprietary API. The platform is laser focused on doing scaleable e-commerce, although it has somewhat competent CMS and CDN functionality, at least enough as necessary to load pages fast and sell things. Once you start doing things like newsletter list management, file uploads, and even product reviews, its less than optimal.
For dynamic apps that don't fit the Django model, I'll bust out Node.js, and for static sites, just a plain Python script to generate HTML files.
Boring choices, but the older I get, the more I'm OK with that :)