Working with Lucas Bastos: State Machines and Career Development
2023-04-06| Reading Time: 5 | Words: 930
Working with Lucas Bastos: State Machines and Career Development
I worked with Lucas Bastos during my career at Concrete Solutions, and this was a great guy who taught me about state machines - how to model them efficiently with a trigger and states tables. This is a simple approach but efficient, and link this with the BPM process.
Learning from Experience
Lucas introduced me to an elegant way of thinking about state management that has influenced my approach to software design ever since. The beauty of state machines lies in their simplicity and predictability:
- Triggers: Clear events that cause state transitions
- States Tables: Explicit mapping of current state + trigger → new state
- BPM Integration: How business process management naturally aligns with state machine patterns
Why Lucas Bastos Was a Great Guy
Lucas wasn't just technically brilliant—he embodied what makes a truly exceptional developer and mentor. What made him special went beyond his technical expertise:
His Approach to Mentorship
- Patient Teacher: Never made you feel stupid for asking questions, no matter how basic
- Practical Wisdom: Focused on real-world applications over academic theory
- Growth Mindset: Encouraged experimentation and learning from failures
- Genuine Interest: Truly cared about your professional development, not just deliverables
His Mastery of Agile Principles
Lucas didn't just follow agile methodologies—he lived them. Here's what made his approach to agile so effective:
Individuals and Interactions Over Processes
- Pair Programming Excellence: Made it feel like a conversation, not an interrogation
- Active Listening: Really heard your ideas and built upon them
- Collaborative Problem-Solving: "Let's figure this out together" was his default mode
- Knowledge Sharing: Turned every coding session into a learning opportunity
Working Software Over Documentation
- Pragmatic Solutions: State machine with trigger tables—simple, effective, maintainable
- Iterative Refinement: Start with something that works, then make it better
- Business Value Focus: Always connected technical decisions to business outcomes
- Rapid Prototyping: "Let's build a small version and see how it feels"
Customer Collaboration Over Contract Negotiation
- Domain Understanding: Insisted on understanding the "why" behind requirements
- Stakeholder Communication: Translated technical concepts into business language
- Feedback Loops: Established quick ways to validate assumptions with users
- Adaptive Planning: Adjusted technical approach based on business feedback
Responding to Change Over Following a Plan
- Embracing Uncertainty: "We'll learn as we build" attitude
- Technical Agility: State machines made systems easy to modify and extend
- Continuous Learning: Always exploring new tools and approaches
- Risk Management: Built systems that could evolve safely
The Value of Cross-Generational Mentorship
The dynamic between a senior old man with a young guy really is remarkable. What I learned from this experience:
What Lucas Brought:
- Historical Context: "We tried this approach before, here's what we learned"
- Pattern Recognition: Spotted anti-patterns before they became problems
- Emotional Intelligence: Knew when to push and when to support
- Professional Wisdom: Shared insights about career development and industry trends
What I Brought:
- Fresh Perspective: Questioned assumptions and suggested new approaches
- Energy and Curiosity: Eagerness to learn and try new things
- Technical Updates: Knowledge of newer tools and frameworks
- Different Problem-Solving Styles: Complementary thinking approaches
The Synergy:
- Accelerated Learning: Both directions—I learned faster, he stayed current
- Better Solutions: Combined experience with innovation
- Reduced Risk: His experience prevented costly mistakes
- Increased Innovation: My fresh perspective opened new possibilities
Real-World Agile in Action
State Machines as Agile Architecture
Lucas's approach to state machines perfectly exemplified agile principles:
Simple Design
- YAGNI (You Aren't Gonna Need It): Start with basic states, add complexity only when needed
- Clear Interfaces: Triggers and state tables made the system easy to understand and modify
- Testable Components: Each state transition could be tested independently
Iterative Development
- Start Small: Begin with core states and essential transitions
- Build Incrementally: Add new states and triggers as requirements evolved
- Refactor Continuously: State machines made it safe to refactor business logic
Embrace Change
- Flexible Architecture: Adding new business rules meant adding new states/triggers
- Low Coupling: State machines isolated business logic from implementation details
- Easy Maintenance: Clear separation made debugging and modifications straightforward
Agile Team Dynamics
Daily Collaboration
Lucas showed me that agile isn't about ceremonies—it's about mindset:
- Continuous Communication: Constant dialog during pair programming
- Shared Ownership: Both responsible for the quality of the solution
- Collective Problem-Solving: Two minds tackling complex problems together
Learning Culture
- Safe to Fail: Experiments were encouraged, failures were learning opportunities
- Knowledge Transfer: Every session was both coding and teaching
- Continuous Improvement: Regular reflection on what worked and what didn't
The Business Connection
What made Lucas exceptional was his ability to connect agile technical practices with business value:
BPM Integration
- Business Alignment: State machines mapped directly to business processes
- Stakeholder Communication: Visual state diagrams that business people could understand
- Rapid Validation: Quick prototypes to validate business logic with stakeholders
Sustainable Pace
- Technical Debt Management: State machines prevented complex, unmaintainable code
- Predictable Delivery: Well-structured code meant reliable estimates
- Team Sustainability: Mentorship ensured knowledge transfer and team growth
Legacy and Lasting Impact
Lucas taught me that great developers don't just write good code—they build great teams and sustainable systems. His approach to agile development was holistic:
- Technical Excellence: Clean, maintainable code through solid architectural patterns
- Human Development: Investing in people and relationships
- Business Impact: Always connecting technical decisions to business outcomes
- Continuous Learning: Staying curious and open to new ideas
Links and References
This post is a tribute to mentorship and the lasting impact of working with experienced professionals who take time to share their knowledge.