4 ms·
> Learning effectively is not the same thing as doing effectively. You have to learn in order to do and doing is the means for learning. Its iterative and both
by jfaucett 9y ago
> Learning effectively is not the same thing as doing effectively.
You have to learn in order to do and doing is the means for learning. Its iterative and both reinforce one another. So from my viewpoint, which admittedly is largely from an ML perspective, they are the same thing. Playing basketball effectively is a function of training which is just another word for learning in my mind.
> I'm not arguing that every programming job should be entirely devoid of repetition, just that by its nature it shouldn't be repetitive.
I think we're just using different meanings for "repetitive" and perhaps some other words and that's leading to apparent disagreement which in actuality I doubt we have.
I was speaking generally i.e. not about automating your build/deployment/bootstrapping pipelines or building/using a library to solve problem X, but about the process as a whole and the more general tasks that go into that process. In that sense of repetitive, i.e. a set of tasks like "building the login", "integrate 3rd party API", "deliver mail", "build a chair" etc. I think virtually all jobs are very repetitive. In the sense of repetitiveness I think you are talking about, i.e. programming the exact same function every single time you need that functionality in a new app, I would agree with you.
Anyway, my point was jobs are about performing a specific set of repeating tasks - generally speaking :). Further, we've poorly designed the labor supply side of our medical systems given the set of tasks doctors are required to perform and we could allocate supply/demand better and innovate at a higher rate were we to remove some of those systems engineering errors.
- crdoconnor 9y ago>In that sense of repetitive, i.e. a set of tasks like "building the login", "integrate 3rd party API", "deliver mail", "build a chair" etc. I think virtually all jobs are very repetitive. In the sense of repetitiveness I think you are talking about, i.e. programming the exact same function every single time you need that functionality in a new app, I would agree with you. I'm talking about both. IME either you're building a really simple login system in which case you can use an abstraction that makes it really quick to build, or you're building a complex login system with subtle requirements in which case it requires creativity and judgment. Where software development gets repetitive is when people end up building the same abstractions again and again and again (Java devs seem notoriously prone to this, but they're not the only ones) or (less controversially, which you alluded to and are absolutely right about) when steps in the bootstrap, development, testing & deployment pipeline are manual. I don't think the fact that I've done hundreds of login systems during my career means that I have a repetitive job. They were all either unique in some way or they were bog standard and I created them with a cookiecutter script in < 30 seconds.