<div style="position: relative; padding-bottom: 65.57377049180329%; height: 0;"><iframe src="https://www.loom.com/embed/3e0e5af0c4994f74a74d65cf44df58d3?sid=6414e88e-b9f5-4b61-8d82-424500b4f8c4" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></iframe></div>
#### Introduction
In the world of software engineering, the [Model of Hierarchical Complexity (MHC)](https://en.wikipedia.org/wiki/Model_of_hierarchical_complexity) isn't a linear (or logarithmic) progression; it's more like a dynamic landscape you navigate as a technomancer. Understanding the MHC helps you recognize when you're shifting between complexity levels in your tasks, which can be both exhilarating and exhausting.
| Stage | What They Do in Coding Context | How They Do It | End Result |
|-------|---------------------------------------------------------|-----------------------------------------------------------------|------------|
| 8 | Writing individual expressions | Learn syntax and basic programming constructs | Ability to write and understand simple code expressions |
| 9 | Create a simple program or a single function | Use control structures like loops and conditionals | A basic program or function accomplishing a specific task |
| 10 | Functions using outputs of other functions as inputs | Understand function composition and parameter passing | More complex functions demonstrating basic software logic |
| 11 | Develop a test suite | Write tests to validate code functionality and reliability | A suite of tests ensuring code meets specified requirements |
| 12 | Build a simple application | Integrate various programming concepts into a cohesive application | A functional application serving a specific purpose |
| 13 | Small applications working together | Combine different components like databases, servers, and front-ends | An integrated system with multiple interacting parts |
| 14 | Forming data schemas and system architecture | Design the structure and interaction of system components | Well-architected systems with efficient data management |
| 15 | Integrating systems (like cloud platforms) | Combine and utilize multiple systems and platforms | Complex, scalable systems utilizing advanced technologies |
| 16 | Operating on the software landscape as a hyperobject | Influence and innovate at a macro level in the software industry | Pioneering changes and setting new directions in software development |
#### The MHC Landscape in Software Engineering
1. **Recognizing the Levels**:
- Software engineering tasks span across various MHC stages. One moment you might be at Stage 9 (writing a simple function), and the next, you could be at Stage 12 (developing a full application).
- The key is to recognize which stage a task falls under. This awareness helps in managing cognitive load and expectations.
2. **Managing Transitions**:
- **Vertical Movement**: Moving up the MHC stages involves tackling more complex, abstract tasks. It's like climbing a mountain – the higher you go, the more challenging the terrain.
- **Horizontal Movement**: Sometimes, you move horizontally, performing tasks within the same complexity level but across different domains or projects.
3. **Balancing the Journey**:
- **Avoiding Burnout**: Constantly jumping to higher stages without adequate preparation can lead to burnout. It's crucial to balance challenging tasks with those that are comfortably within your current frame of action.
- **Progressive Skill Building**: Gradually taking on higher-level tasks builds resilience and skill in those tasks. It's like training for a marathon, where you gradually increase your distance.
4. **Collaboration and Delegation**:
- Recognize when to collaborate or delegate tasks that are significantly higher or lower in complexity. This not only helps manage your workload but also leverages the collective strength of your team.
#### The Technomancer's Mindset
- **Adaptability**: Be ready to shift gears and tackle tasks at different complexity levels. Flexibility is a key trait of a skilled technomancer.
- **Mindful Task Management**: Be conscious of the complexity of tasks you undertake. Plan your day or week to include a mix of high and low complexity tasks, and batch them together at times that make sense for you.
- **Continuous Learning**: Embrace the learning opportunities that come with tasks at all levels. Each task is a step towards becoming a more adept technomancer.
#### Conclusion
As a software engineer, you're not just climbing a ladder; you're navigating a rich landscape of challenges. Understanding the MHC helps you manage this journey, ensuring you grow as a technomancer without wearing yourself out.
#### Exercise
- **Self-Reflection**: Map out the tasks you've done over the past week and identify their MHC stages. Reflect on how you managed the transitions and what you can do to balance your workload better.
#### Additional Resources
- [Bug wrote an excellent article about this](https://thebugreport.medium.com/the-bug-report-how-to-measure-complexity-e542f809d513)
- Consider mentorship or peer discussions to share experiences and strategies for managing tasks across different MHC levels.
- Engage in exercises or projects that specifically target a range of MHC stages to broaden your experience and resilience.
---
Remember, the path of a technomancer is as much about understanding the journey as it is about reaching the destination. Each task, regardless of its complexity, is a step towards mastery in the art of software engineering.