Cook the macaroni to 'al dente'. Do not overcook it else, the dish will become soggy.
Make a roux by melting the butter then addition the flour to make a paste in a appropriate pan on medium heat.
Then add milk while whisking until you get a creamy sauce. Season generously with salt and pepper and some herbs.
Add in a handful of your shredded cheese to slightly thicken. Add your macaroni and stir through turning the heat off.
Remove macaroni mix to a baking tray and top off with cheese. Bake for 10 - 15mins at 180c or until cheese is golden.
Pasta - Make to cook the pasta in with (100gm to 1lt water ratio) plenty of water. Make sure its well salted - no oil required.
Roux - Make sure to cook out the roux; unless you want the entire dish tasting like raw flour. How to test you say? Just take a little bit out of the pan and taste it (blow on it first - it might be lava hot)
Caramelising Onions and Garlic - Slowly do it. Don't overheat the mixture, this will certainly burn the garlic which contains a lot of natural sugars.
Seasoning & Other ingredients - Venture out and add different types of spices or herb combinations. Crushed fennel seeds with oregano or cumin and smoked paprika with coriander.
Other ingredients like - bacon chips, sausage ragu, roasted zucchinis or beets can be incorporated - though certainly no longer traditional!
Overseasoning - One big thing to note that your bechamel (before you add in the cheese) should heavily seasoned. This is simply because pasta does not have alot of flavour. Therefore your sauce should taste really strong for the dish to work. But if you're putting in other strong flavours like bacon; you should tame your bechamel