There's no doubt that engineers are an incredibly important component of a design project. That said, we're going to see a need for fewer pure engineers over the next couple of decades, and it won't be due to outsourcing.
It's crazy to see teams hiring huge numbers of engineers. What are they all doing? Adding too many engineers to the mix can create a lot of code to manage.
If it takes more than two pizzas to feed a project team, it's too large.
If it's not focused or well-written, it can bog down a project as the entire team works to improve the product.
The more engineers you have, the more points of view there are to contend with and the chances that the software solves a specific project decreases proportionally. Amazon's Jeff Bezos has a two-pizza rule: if it takes more than two pizzas to feed a project team, it's too large. If teams and the part of the project they're working on are purposely kept smaller, there is less to manage. You might even find you don't need an engineer manager to oversee results.
Of course, there are exceptions to the fewer-engineers approach. Specialist engineers who excel at their craft will continue to be in high demand. T-shaped engineers will as well, since multi-specialty team members understand and see the bigger picture of software design. One of the biggest culprits that leads to bad code is not understanding the project's goals or having enough breadth of skill to solve problems with less code.
A two-to-one ratio of designers to engineers is preferable.
At ZURB, our bottlenecks are usually not engineering-related. We usually need more interaction design support and find that a two-to-one ratio of designers to engineers is preferable. Indeed, the best designers are often those who can think through the interface, create visuals, and then code the interface themselves.
The next time you put a team together, take a look at the engineering needs of the project and remember: less is more. A code specialist or a single multi-talented designer is often all you need.