At Zumba™, our technology department is broken into the following sections:
We further subdivide our engineering section into self-contained teams with 4-5 members each. Each engineering team is constructed to take a project or feature all the way from design to deploying to customers. With support from a lead engineer, a product manager, and our ops teams, engineering teams have autonomy to make technical decisions and control the outcome of the project.
We're an agile/scrum shop, so work is estimated and put into a two-week sprint. Each engineer is assigned features or bug tickets by their lead to be completed in that sprint.
Most teams do not specialize in any specific area. We try to maintain cross-functional teams to prevent siloing of information and reduce the bus factor. This also empowers engineers to solve problems in any area that they are needed.