This is a guide to applying functional programming techniques to domain modeling, emphasizing how to create accurate, maintainable, and testable systems. It introduces core concepts of functional programming and demonstrates how to model complex domains effectively. The book covers topics such as algebraic data types, immutability, and composition. Real-world examples and practical exercises are used to guide readers. It aims to enhance software architecture and improve code quality through functional design principles.
This book provides a hands-on introduction to test-driven development (TDD), a software development process that emphasizes writing automated tests before coding. Through practical examples, Kent Beck demonstrates how TDD can lead to cleaner, more reliable code by encouraging simple designs and continuous refactoring. The book follows two TDD projects from start to finish, showcasing techniques for increasing the quality of software development.
On this episode of the Distributed podcast, host Jack Hannah talks with James Simone, Principal Engineer at Salesforce, about how he went from no development experience to principal engineer in 7 years at a Fortune 500 and the effects of collaborative programming.
James shares what things are like inside the agile org at Salesforce and how they approach remote work, including how they prioritize reflection and team agreements to foster productive and happy work environments.
Highlights:
- James's journey to principal engineer
- The role of reflection in boosting productivity and happiness
- Salesforce's approach to ensemble and pair programming
In this episode, we cover:
(00:00) – Kicking things off with James Simone
(01:09) – The empowerment of distributed teams: fostering community and learning
(03:08) – Inside Salesforce's agile organization: a structural overview
(04:17) – Legacy projects and measuring developer happiness
(06:07) – Applying metrics: individual and executive perspectives
(08:52) – Collaborative programming: a measured approach
(11:03) – Starting the week: Monday morning routines
(12:56) – Code review: transitioning from author to reviewer
(14:26) – The role of working agreements in team dynamics
(17:05) – Reflection and improvement: the impact of test-driven development
(22:36) – Documentation and decision-making in collaborative teams
(27:48) – Balancing career growth with personal life passions
References
Test Driven Development: By Example by Kent Beck
Domain Modeling Made Function by Scott Wlaschin
Where to connect further:
Connect with James Simone on LinkedIn and on his website
Follow Tuple
Want to hear more? Check out distributed.fm
Connect with Jack Hannah