Ep 2: Programming as Gardening
You're about to embark on a massive software project. What are you getting into? Are you building the pyramids or the botanical gardens? Is this a build-it-and-walk-away situation, or an ongoing endeavor requiring loving care and upkeep? Know what you're getting into, and learn how to think about the significance of your role in the project. Read our detailed notes here.
You do planning — but you have to be open to change. Sometimes you have to move things around, sometimes things die, sometimes you have to replace them.
A process of learning and discovery
There's an element of discovery. This tool isn't quite what we thought it was — this library needs to be replaced — we aren't building the same thing twice.
We're learning about the tools, we're learning about the problem space, we're learning about the business.
We're not building the same thing twice
You could buy a ready-made garden off the shelf. But when you want to add something new, you need to start over.
When you've got well-defined problems (Wordpress blog, simple ecommerce) pre-packaged solutions make sense. But when you're building something new, for a new business case, then you approach it as a learning experience.
The environment changes as well
The environment (not just the tools) might be changing. The business need and business setting may be changing during the process of development.
Software is soft, buildings are not
Boundaries around what you're building tend to be much more ambiguous.
Plants have roots. Those roots can become entangled. That can create problems.
Developers deal with this problem: how to keep entanglements down. How to keep your software flexible. How to make sure that when you remove this one feature, other features down come with it.
This often depends on really understanding the way your business concepts actually interrelate at a deep level. Misunderstandings up front lead to unwanted entanglements.
Allowing for flexibility allows us to discover and work around potential entanglements.
The well maintained garden produces more
- A garden needs maintained over time.
- Software has a life-cycle.
- It will be a different thing six months out, a year out, two years out.
- You need professional cultivators.
You could cultivate:
- Simple projects yourself.
- Mid-tier projects can bring in professionals periodically.
- Larger projects need full-time professional care.
It's never done, never finished, always growing, always changing.
Web development offers the ability to deploy more often
Micah Redding & Ann Howard