Some articles encourage to create custom extensions in `app/code` and some other encourage to create them under `vendor`. Are both these two methods fine? 

What if I want to override a module in `vendor`? Do I need to write my custom module also inside `vendor` folder or `app/code`? 

Do they act as codepools as in Magento 1.x?

Please anyone clarify the purpose of each directories.