Navigating the Complexities of Software Patents: What You Need to Know