I came up through the Kostka/Payne theory textbooks in high school and college; a generation earlier and I’d doubtless have been a Piston student.
The first two semesters of college theory, you’ll remember, are mostly devoted to chorale-style part writing. Learn to write a Bach chorale, the thought goes, and you’ll be well-versed in harmony and basic counterpoint.
So we learn the rules and mimic them in exercises graded on parallel 5ths, contrary motion, and so on. And year after year, thousands of lifeless examples are created.
It doesn’t need to be rule-driven. Here’s an approach to have you writing Bach chorales in a year, no problem. Alice suggests in “The Answering Voice” to get a set of Bach Chorales (free online!). Every day, take one chorale melody, and try to write a bass line worthy of Bach. Compare with his original; then try to write two voices to complete the chorale.
Write one a day – 16 to 32 measures – and you’ll internalize the rules in no time, without needing to codify them as memorizable rules.
There are so many skills you can master in this way: write code (and then compare with a completed version); bake a loaf of bread (and then compare to a bakery); write a TV show script on spec (and compare to online transcripts); run (and keep track of your progress).
It’s so easy to say – do a small task, compare with a polished product, and iterate again and again until you’re a master.
So easy, and so hard. We choose to memorize the rules because it’s easy to get from novice to mediocre that way. But then it’s much harder to get from there to music.