3 ms·
"Similarly, in software, you can't be thinking about which programming language you are using ... MongoDB or MySQL... You will never hit the proverbial fastball
by jeffdavis 14y ago
"Similarly, in software, you can't be thinking about which programming language you are using ... MongoDB or MySQL... You will never hit the proverbial fastball if that is the sort of junk filling your head. Rather, creating and shipping products needs to be muscle memory."
That's a vague statement, but I interpret "muscle memory" to mean "have a good default toolset" in this context.
It makes a lot of sense to have a default toolset -- tools that work well in a lot of situations that you understand very well, which together cover most of the problem space you work in. That frees you from getting lost in the weeds trying to decide which tool to use each time. However, it still very much matters what tools are in that default toolset.
It takes a lot of effort and study to understand and choose the right set of default tools. If the options are MySQL and Postgres (or ruby/python, etc.), you need to pick only one as your default choice, otherwise you get distracted trying to make that decision for every project. It's not so much whether the technology overlaps or not, it's whether you perceive the applicability to overlap. For instance, if you perceive MongoDB to be useful as a primary datastore, it can't easily coexist in the default toolset with a SQL system; but it can if you perceive MongoDB to be more of a caching layer or for special-purpose processing.
Of course, you should recognize the signals when you're dealing with a different kind of problem that may require a non-default tool.
- scott_s 14y agoI interpret "muscle memory" to mean "have a good default toolset" in this context. I don't. In sports, we use "muscle memory" to refer to on-the-fly adaptations that athletes have to perform without conscious thought. For example, a basketball player sees his defender lean too far in one direction, and he automatically knows when to stop, jump and shoot in order to avoid being blocked. The shooter did not have to consciously think "Oh, he leaned that way, so I need to correct this way." That's too slow. The right thing to do is ingrained from hours of drilling and live practice. My sport of choice is Brazilian jiu-jitsu, and I see the same thing with myself all the time. When I feel my opponents weight shift, I don't consciously think about how to flip him over. If I do, he'll already have moved. I just know what to do, based on years of drilling and live training. So, I extend the metaphor to software to rather the opposite of what you said. Always applying a default toolset is the opposite of on-the-fly adaptations. "Muscle memory" for solving software problems is being able to reason about what you know you can handle without having to pick a technology up front. It's having an intuition of what what the technology allows you to do. You're not thinking in terms of technology, you're thinking in terms of solving the problem and being able to easily classify things as "I know how to handle" and "I don't know yet how to handle." The benefit of software over sports is that we have the luxury of time; we have the time to check our intuitive guesses through rational evaluation.
- jakejake 14y agoThere is a quote, I'm not sure the answer but in a nutshell is says that amateurs practice until they get it right. Professionals practice until they can't get it wrong. I think that is very true in all disciplines.