Guidelines for exploratory programming in a team setting
I'd like to encourage more domain exploration on our small team. A dev in the current flow implements a solution and deploys to production with guardrails (feature flags, admin privileges, etc...).
This has worked well, but has come with two costs:
1. Indicating and managing experimental code in both the pull request and production. 2. Bringing other team members along for the ride.
Both of these issues are mitigated with a more traditional flow of writing up a proposal in English, getting it approved by others, and then going into implementation.
Hopefully the tradeoffs are apparent to this crowd. Any thoughts on mitigating these two specific costs while enjoying the benefits of quick feedback loops?
A few starter concepts to consider:
==============================
Didn't find relevant HN article(s) covering age / creativity and software productivity and why software engineers tend to be under 30.
==============================-- Miscelaneous blurbs from recent HN posts about software design to keep in mind:
==============================-- Different approach methods:
==============================Use "google 20% rule" with employee suggested exploratory ideas/topic(s) from one-on-ones.
Yeah - we're doing something like one-on-ones that drive these explorations. Maybe we need to make the "20%" more formal.
The real missing part is discussed in the "knowledge building" link. I'm on board with Peter Naur's idea of building software, but it's very difficult to share individual knowledge with a team as it is being formed.
For example, reading someone's implementation as a work in progress is a different than reading an implementation that is a complete idea.
A work in progress is a lot easier to read with a design document in hand, but that design document that is full of assumptions that might be better explored in short feedback loops on production.
Engineers log/blog!! and informal team interaction (documentation, notes, etc) : http://betterprogramming.pub/advices-from-a-software-enginee...
-----------
Leading Effective Engineering Teams : http://www.oreilly.com/library/view/leading-effective-engine...
The Pragmagic Engineer (various formats: youtube / news letter / book(s) ) : https://news.ycombinator.com/item?id=42584241
It depends on the size of the team, and how well you run meetings (agenda, specific issues to be discussed, how well these issues are written, precise topics), how large the project is, etc.
You can have a very tight feedback loop (sometimes writing experimental code and coming up with a proof-of-concept during the meeting) if you run a tight ship.
The issues we experiment with are usually quite broad - improvements to logging, routing - but the implementation is always more narrow. Still, it seems like there is still more room for more refinement and focus now that you mention it.
To me, this is a social "problem" not a technical one and on the face of it it sounds more like more work than less work for individuals. If that's the case, it is probably dead to everyone who would rather spend their free time away from work than at work.
And if this is not strongly backed by upper management, it is almost certainly dead before arrival.
Of course, you might be upper management (I have no way of telling). Good luck.