Storage:
Storage should always be an ssd for programming. Compiling code creates lots of small files which required good IOPS in combination with good read/write speeds. SATA SSD is a must, with nvme recommended.
For size it really depends on what sort of programming you are doing.
If you are doing c/c++/c# python etc you shouldn't need something too big. 250gb+ but would recommend 500gb. Especially if you are doing embedded coding, for that 250gb is plenty.
If you are going to be developing apps for iOS or android and the like, then you will probably need 500GB+ with a recommendation of 1TB.
As for the components.
GPU: anything will do.
RAM: Would recommend 16GB
Processor: definitely get a quad-core. The new 8th gen look like a really good option. Especially if you are a student as they can be found in much more portable designs
Display: Try and get something with 1080p as a bare minimum. But ideally a higher resolution. This will allow you to get more code on the screen at once (as long as your eyesight isn't bad). This may not sound like a big deal, but moving from 1080p to 1440p on my dev machine made a world of difference to my productivity. I find a single 1440p screen to be more productive than 2x 1080p ones.
Keyboard: you are going to be using this a lot, so make sure you like the keyboard.
As for specific recommendations on specific laptops, I like Dell, others don't. Lenovo are quite good. But more importantly go and check out and have a play with laptops in some stores (even if you are going to buy online) that way you can see if you like the feel of it, you can see what they keyboard and trackpad are like etc.