Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Block quote
Ordered list
Unordered list
Bold text
Emphasis
Superscript
Subscript
Our approach to software engineering revolves around several key ceremonies: Planning, Review/Demo, Retrospective and (Bi-)daily Syncs. These activities are essential, regardless of the specific methodology or approach being used. Celebrations are on our internal roadmap and we want to incorporate them – so we can acknowledge successful cycles boosts morale and fosters a positive work culture.
Cycle time refers to the period required to release software or complete an incremental part that provides meaningful output. This duration varies based on the complexity of the task, ranging from a day for small widgets to several months for intricate machine learning pipelines.
These ceremonies operate on independent cadences. For example, we might conduct roadmapping every six months but hold bi-weekly demos due to our quick release capabilities, coupled with monthly retrospectives.
While agility is important, it's beneficial to incorporate some structured planning within each delivery cycle. Committing to a deliverable requires a clear understanding and specification of what will be built. This predictability is crucial for maintaining client trust. Changes during these mini-cycles can hinder predictability and reliability.
Planning is challenging, and so are estimations. However, effective planning builds customer trust. When estimating short-term tasks, it's essential to empathize with the client’s perspective. For instance, promising a six-week delivery for a feature may seem reasonable, but being realistic about longer timelines is crucial to manage expectations effectively.
There is a three-dimensional approach to quantify tasks that we want to test with our teams:
I am already sure that documenting these assessments is crucial, even if it’s just a rough estimation like T-shirt sizing of the tasks.
Long-term planning involves considering four types of work: Business and Engineering, Planned and Unplanned.
We believe it is important to count with all of these categories to be taken into consideration. The distribution of capacity into them is individual and should be adjusted accordingly. Our initial-state suggestion? 50% for the roadmap, 25% for opportunities, 20% for maintenance and 5% for ASAPs.
Agreeing on these constants during roadmapping with clients is essential. Allocating space for opportunities and urgent requests prevents overloading the roadmap and ensures we can address critical issues promptly. This balanced approach maintains trust with clients and keeps our software engineers motivated.
Efficient software engineering requires a structured yet flexible approach to planning and executing tasks. At Datamole, we have found that a combination of regular ceremonies, customized cycle times, balanced agility, and strategic planning helps us deliver high-quality software consistently. By sharing these practices, we hope to provide valuable insights for potential clients and employees alike.
“Great software comes from great people. If you worry only about the technology side of the equation, you're missing way more than half of the picture.”
Sam Newman, technology consultant and author “Building microservices”