Why you should read Mythical Man-Month
Not often do you read a book that changes your perspective on how you approach problems. I advocate for project-based learning and it’s the way I’ve learned how to program in R and develop a bunch of different Shiny apps. It’s nice to take a step back sometimes to understand the big picture. I consider Mythical Man-Month (originally published in 1995) by Frederick Brooks Jr. to be great reading for anyone doing software development. The book is organized as a series of essays with useful lessons in each chapter. My suggestion would be to check out the book after you have a have developed a few applications and are working on your first collaborative software development project. Here’s a Youtube playlist that talks through the book chapter-by-chapter, if you want something to listen to while you workout or cook:
Even though some of the information is outdated in the book, the concepts and theory still hold in this day and age. Right after reading the first chapter of the book, I could tell I’ll be revisiting it a few years down the road. That’s how good this book is. Here are some of the topics that are discussed in the book: myth of the man-month, time cost of communication, the importance of conceptual integrity, the second system effect, importance of a prototype, cost of maintenance, the toolmaker, hustle, extensive iteration, and the happy user test. The author’s attention to detail and breadth of focus are amazing. The book concisely describes things you should consider if you’re a boss, project manager or developer working on a software project.
How does this connect to R Shiny?
Now let’s connect this back to R Shiny. Specifically, if you’re an R programmer working in a team on a Shiny application, this book is great reading. Lots of R programmers come from non-traditional backgrounds, so oftentimes we don’t learn foundational software development theory. Instead we usually just learn it as we work. It’s useful to take a step back to understand the overall process. Mythical Man-Month is a short book but it has a ton of very powerful insights that can be applied broadly even on non-software projects. For me, the book reinforced the importance of maximizing the programming language features and tools which enable easier development and collaboration. It’s vital that you ensure team members can effectively work together. There are many tools that reduce friction in Shiny app development. Specifically, if you’ve read the Mastering Shiny book, then you should know R Shiny has many production-ready features such as modules, bookmarking, unit testing, and input validation. RStudio Connect even has collaborative publishing and git-backed content features that make it very easy to ensure versioning and deploy development, QA and production Shiny app instances. Using GitHub features like the issue tracker, project boards, wiki, releases and milestones also enable easier collaboration and to ensure a project sticks to the timeline. Such resources are essential when working on a complex Shiny app.
Highlights and other resources:
Additionally, here are some high level concepts that I took note of while reading the book. Medium doesn’t allow for multi-level lists, so I’ve put it into a Github README file instead: https://github.com/parmsam/notes-mythical-man-month
Lastly, this wiki page does a good job explaining some of the core concepts of the book: https://en.wikipedia.org/wiki/The_Mythical_Man-Month