Some companies that are involved in building both hardware and software in complex integrated systems have discovered that there can be a fairly convenient divide between the electronics and the programming, but it’s not in the traditional place.
Instead of simply Software and Hardware, which made some sense in the early days of computing before software became so layered, consider partitioning your teams into Applications and Platform groups. The Platform team is a combined group of low-level firmware and programmable logic developers along with the hardware designers and testers. Given the importance of the close collaboration needed between firmware and hardware engineers, this makes a lot of sense. A mature platform can then be handed off
from the Platform team to the Applications folks, and if done well the implementation underneath can change in moderate ways without requiring significant alteration to the Applications team’s implementation. The Applications team would also work closely with or encompass the systems and systems test teams, and include communications, cloud, and deployment responsibilities.
Two Team Model
Applications Team | Platform Team |
systems architects and engineers | firmware engineers |
systems test engineers and formal QA | hardware design engineers |
applications software architects and developers | hardware test engineers |
software test engineers | manufacturing engineers |
algorithm researchers and developers | supply chain management |
computer programmers | integration engineers and technicians |
dev ops specialists |
The word Applications here does not correlate so much to the concept of the mobile phone app, app being short for application, as it does to the concept of applying the platform that’s been built to the problem that needs solving. The Platform team creates the means by which the Application team solves the problem.
Other ways this has been described are Software and Platform teams or Systems and Platform teams, or even a three team model.
Three Team Model
Systems Team | Software Team | Platform Team |
systems architects and engineers | applications software architects | firmware engineers |
systems test engineers and formal QA | software test engineers | hardware design engineers |
project engineers | computer programmers, developers | manufacturing engineers |
product, program, and process leads | dev ops specialists | supply chain management |
algorithm researchers and developers | integration engineers and technicians | |
hardware test engineers |
Among other benefits, these divisions create a convenient differentiation between software engineer and firmware engineer, between which there has historically been a lot of overlap. In this paradigm the distinction is more clear because they are part of different teams, and the two disciplines have become somewhat divergent in recent years as system complexities have grown. As an aside, it’s of course possible that your hardware and software testing or QA teams are large enough to bring out into their own group.
When you are forming hiring plans, have discussions about what you want your teams to look like. Be clear with your recruiters and job descriptions. You must care to understand the needs and capabilities of each team, and carefully identify your recruiting targets.
Comments