If you've got programming knowledge for a specific mainstream code (ie. C++ etc) I'd suggest you try to come up with an engine that can do anything you'd expect to require from a shmup. I try to do this for GMOSSE myself (Thanks Udderdude for pointing in the right direction

), so that if you make a vertically-oriented game you can add a TATE mode really easily for example.
I'd also do a lot of planning out too. Ie, what's your game about? What'll it look like? If you could compare it to a game what would it be?
In regards to my project I should also point out that I try to avoid things that are performance-inhibiting or too complex for my simple mind to handle, for example tiling stuff that Rozyrg does for his games and particles/3D/surface rendering, so if you decide to try and come up with something in Game Maker you'll probably get the idea behind GML code pretty quickly looking at how I've organised things.