Cross-Platform Mobile Development: Pros, Cons, and Best Practices