I was lucky at Microsoft in that I worked on very large and mature products like Windows and Office, and I also worked on small startup projects. When I worked on large and well-funded products, I was able to make investments in advanced testing tools and approaches. When working on smaller, startup products, we needed to focus on the basics, and I held my knowledge of the advanced systems as long-term aspirational. Let’s walk though some of the stages.
Engineering is focused on showcasing key ideas and features and build momentum and funding for product completion. Improvements in source code management, build processes, test automation and bug logging organically happen based on immediate needs, but major investments are not an immediate focus. Engineering System tools and process decisions are always important, but it is not uncommon for tools and processes to be changed as the company grows and matures.
Team has grown and the need to a more structured and improved engineering system becomes clear. At this stage, targeted investments to improve 1-2 pain points is supported though most engineering effort remains on establishing product features and technology showcasing. During this stage the Engineering System starts to develop its core roots and tooling, or process changes are vetted to ensure they have immediate value and build to a long-term plan.
Product success has resulted in the engineering team growing with management prioritizing investments to allow the engineering workforce to become more effective. A well-functioning Engineering System is emphasized, and improvement investments are prioritized with an eye towards developing into a mature company. Metrics are established to gauge engineering system effectiveness and areas for further improvements. 1-2 industry proven advanced techniques are piloted.
More capabilities are built on the existing Engineering System which help to enable higher levels of quality, agility, and efficiency. Formal documentation and trainings help to ensure growing workforce has the knowledge on the “How we create great software”. Specific innovative thinking occurs, and management approves some greenfield innovative ideas some of which prove to be great engineering system improvements.
Few companies get to this stage, but those that do have very high functioning engineering systems which are learned from and emulated by other companies. Management intently reviews new innovative ideas and decides which to be tried and how to measure success. A culture of innovation is prevalent.