Fair assessment and it's very much the same with my experience. I haven't tried SAM, but I know some Cloudformation so it's not too far off.
I went full Terraform because I found Serverless to be too much of an abstraction from whats going on and it would very quickly require me to use another tool set to deploy Elasticsearch, EC2 or RDS. That's just a pain to me.
Downsides with Terraform are its slow development time for some resources, particularly support for Websockets is still not fully developed with its release by AWS already more than a year ago.
It's also quite verbose if you do not use modules how they should be used and the initial learning curve as you mentioned can be quite steep.
For me it's been worth using Terraform since I want to know whats going on under the hood, if you're not too bothered or are more pragmatic about it Serverless can boost productivity quite a bit.
Glad to hear you thought it was fair! I was trying my hardest to bite my lip to keep it unbiased! In some parts I'm more replaying some thoughts that I've heard from around the community rather than my own opinion.
My personal preference is the same, to just use Terraform (I'm very sure I'm in the minority here). That's probably because I'm comfortable with Terraform and happy to provision my own resources, I'd rather be reading the AWS docs than serverless framework docs, personally.
I see serverless framework very similar to Heroku. Great if you have a low level of infrastructure chops, but then you might start to feel restricted. From a personal perspective I found that after using Serverless framework I got immediately frustrated when I couldn't just look at the AWS resource and directly change my resources. I guess if you're a total beginner this would be frustrating / daunting so it's totally cool if you're new to the tech.
And then of course come the "but what about local dev?", etc, arguments... But I've found that if the app is well setup you can just use a container (or similar) to run it locally (and actually IMO this is an anti-pattern). Well mocked tests go a hell of a long way (and serverless framework isn't going to do the hard work of setting you up a well tested app with well written mocks).
Come to think of it, there's clearly a whole different article in there about: "Here's the frameworks and things you can do... but here's what I actually do" 😂
Local development is a whole other discussion, but as you said I also consider it to be an anti-pattern for the simple reason environments are never the same. I never bother running local tests for that simple reason to avoid issues that are very hard to debug
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.