Several hurdles must be overcome for a combined hardware/software development flow. Structurally, teams remain independent, use different tools and languages, and work at a different cadence.