This is our first post about the Software Engineering at Google book! The goal of this post is to relate the material from the book to our progress on our Chasten tool, with the hope that it will provide valuable lessons on how we approach designing and developing our own software.
The “Programming Over Time” section introduces the idea that software engineering encompasses more than just writing code — it also involves creating processes that enable the development of maintainable and sustainable software. The preface makes it clear that, instead of viewing a software release as the “final version,” we should see it as a foundation for continuous improvement. The book’s preface emphasizes three key concepts:
Time: To ensure that software is designed for future enhancements, it’s crucial to plan how it will evolve from project inception to completion. This involves structuring code in a way that allows for future improvements and bug fixes.
Scale: As the engineering team grows or contracts, it’s essential to plan how engineering practices will adapt to accommodate changes in team size and structure.
Costs: Prioritization of software engineering tasks is vital. It’s necessary to establish a clear understanding of which project tasks should take precedence, considering time constraints and resource availability.
These principles not only facilitate software development but also highlight the importance of making well-informed trade-offs when necessary.
As outlined in the developer development schedule, we are embarking on a sixteen-week adventure to build two production-quality software tools. This reflective content is relevant to Chasten, a tool that we are building to automatically search for source code patterns using XPath expressions. Reflecting on our project’s progress so far, we’ve recognized the need to prioritize scaling, emphasizing clear planning and communication as our team tackles a significant project with limited experience. Given our constrained time-frame, we must carefully weigh the importance of features against their implementation cost. Google’s software engineering practices emphasize the importance of a shared team goal and code durability — they will serve as a worthy guide as we build a resilient and adaptable tool.
We can adopt the principles and concepts from the preface of the Software Engineering at Google book to enhance the development and maintenance of Chasten as a critical computational biology and physiology library. By focusing on sustainability, adaptability, and rigorous engineering practices, we improve the likelihood that Chasten will serve the Python community. We have a lot to learn about this process — but we look forward to the adventure!