This is an extremely broad question, its going to get flagged and downvoted. Maybe this article may interest you? But generally speaking for SO questions you want to come with a specific code or software engineering related question — Narish 11 secs ago