Each day's puzzle is not one, but two-fold. You first solve the problem you're given, and then the second half is unlocked. /This second half usually incorporates some sort of twist./ That means that you may have to rethink your program, generalize it, find some missing optimization or think your way around the problem as it's given, etc.
In some ways, it feels like what you have to do to a real program: You write what you think is a perfect solution, then discover you need to model the problem more deeply, or refactor it all, or scrap it and start over. It's a flavor of 'puzzle realism' that makes each day a bite-size nugget of a challenge that's genuinely fun to work out.
Different people get slightly different problems, so you have to do your own work to solve for your puzzle input. You feed it back into the site to see if it was correct or not. Getting a problem right was a great feeling, and it progressively unlocks more of a Christmas-themed ASCII art picture.
I would have a tough time explaining it to someone who doesn't do any programming, but it's free to try if you're curious!
But apart from that it is “just” coding challenges with a story wrapped around them, and if you don’t like those, you won’t care for it.
and see on the sidebar on the right in desktop view, the "Solution Megathreads" e.g. from Day 5 last year there is https://www.reddit.com/r/adventofcode/comments/a3912m/2018_d... with tons of solutions including more oddball ones like VimScript, less popular like Common Lisp and APL, and lots of people use it as an excuse to learn/use a new language, so plenty of Python, Kotlin, Rust, C#, GoLang, D, and so on.
As the days go on, the challenge difficulty increases quite a lot (not linearly) so the threads often turn to discussions about performance, mini-competitions between people, tips on complexity, different approaches and debugging, etc.
This guy finished in the top 10 last year and streamed(not live) his solutions so you can see how fast you need to be to be competitive: https://www.youtube.com/watch?v=Hgv6d6rrQxo&list=PLZhotmgEsC...
e.g. once in 2017 you had problem1: implement an interpreter for this asm-like language. ok, 5 instructions, super easy. ...problem2, run this asm-like program. You couldn't, it was 10^n iterations, would take days. You had to read, understand and optimize the asm-like code.
last year I was amazed writing a function to check if two rectangles intersect (you can do it in like 2 lines)
so, TLDR, you get a lot of "hey that's cool! I never thought about it"