Implementing mechatronics: Software engineers are different
Embedded software development, a component of controls systems and mechatronics, differs from other engineering in key ways, according to respondents to recent Cambashi research interviews.
Software has been an important component of control systems for many years. Control system software continues to grow in importance. For example, a faster processor in a control unit may allow a product to perform better and reduce costs by using simpler, lower cost mechanical parts, but only if the sensor and actuator control software are good enough. Software intensive, networked electronics are becoming increasingly central to the performance of products of all kinds, from industrial to consumer. More engineering teams are facing questions about the best way to handle software development as a key part of product development projects. [This includes mechatronics-based design, those integrating mechanical and electronics, including embedded software.]
Software development engineers, methods, and tools can be integrated into product development teams. Examples include industries and product types such as medical devices, radar subsystems, transportation equipment, production monitoring, aerospace, and communications. Approaches used by some of these companies can aid software development in new product introduction projects.
Software engineers are people
Company A’s head of engineering judged all development methods in use, software and hardware, in relation to a “good engineering” benchmark, which included proper framing of requirements, proper information and investigation of problems, and proper sign-off and communication of changes. The development team was modestly sized (tens, not hundreds). After some years of being distributed across multiple sites, this team (for hardware and software) had been centralized at one site. The most important engineering management tool was the Monday morning meeting of group leaders.
The company B development team was distributed across the world. Even so, during the one or two hours daily that spanned normal working hours for everyone on the team, team members would run a 45-minute online (headset, voice over IP, screen-sharing) exception reporting meeting. The development leader confirmed he had been tempted to use the company’s issue tracking system in place of this meeting, but was glad to be forcing direct contact among group leaders involved.
In both cases, direct communication among people was perceived as reducing the chance of misunderstanding and causing better articulation and prioritization of potentially complex follow-up actions. However, the products and teams involved were in many ways an outlier. These two teams handled mainly software; the electronic and mechanical parts of their products were relatively static, and not the key source of competitive advantage. The engineering was not very different from software-only development teams—the hardware could be treated as a special peripheral device. But these teams’ success using old-school, person-to-person communication as a core part of the development process is worth remembering.
Software is different
For products in which hardware is a larger part of the overall project, there were a range of approaches.
Company C highlighted issues relating to project management. The growth of software as a product development technology had been quite rapid and represented more than half of new product development costs and “nearly all the problems” at the time of the interview. Yet, going back 20 years, embedded software had been restricted to a few high-end products, provided by specialist subcontractors. Current project managers were mainly engineers who had been with the firm for many years. The hands-on experience of these people was largely electronics hardware development. The development organization used a product-team structure. This created a mismatch between project managers (mainly hardware development backgrounds), and 2-10 software engineers in the 5-20 lead product development teams. Though no crisis, project managers felt uncomfortable when they were unable to use their own experience to guide and question decisions, priorities, and especially time estimates provided by software people.
Company D had an organizational solution for these problems. It had similarly chosen product teams as the basic unit for development projects. Like company C, each product team contained a mix of specialists—mechanical, electrical, electronic, software. In recent years, company D gave the electronics and software people an additional “home” by grouping them into one “control-systems” unit, then assigning them back into product teams, but as a slightly autonomous control-system team. Overall management of objectives, tasks, and priorities derived from the product team. The control-system team leader in the product team (with a lot of autonomy over the hands-on tools and methods used by that particular control-system team) provided day-to-day management.
At the time of the research interview, organization D was aiming to make more use of the control-systems unit to develop more consistent use of tools, standards, and libraries and to find ways to achieve better levels of reuse (of everything, from know-how to architectures to platform electronics and software).
Central, not standard
Companies E, F, and G described centralized software organizations with names such as “software competence center” and “embedded software,” containing tens or hundreds of software engineers. Each product development project involved senior people from the software organization as part of a multidisciplinary project design team. Team output included outline architectures (with broad agreement on what would be in hardware and in software) and agreement on how to resource the project. Usually this meant a specification was taken back to the software team for implementation; sometimes it might be a temporary assignment for software engineers to work alongside the electronics team.
Projects inside these companies’ software organizations were not isolated; there was continuous communication with non-software people. But the buzz in the teams came from a pure software focus. For example, the teams were free to experiment and develop agile methods. The skill sets and technologies covered were diverse rather than standard, being driven mainly by the nature of the product and the underlying electronics, which would eventually run the software. However, the synchronization between software development and other technologies was “guaranteed” by strict stage-gate or similar processes. By whatever methods, the software team had to deliver exactly what was listed as the required software artifact for each stage-gate decision process.