There are theoretical physicists who can do everything they do with a pencil and a piece of paper. I’m not one of them. The calculations I do are long, complicated, or tedious enough that they’re often best done with a computer. For a calculation like that, I can’t just use existing software “out of the box”: I need to program special-purpose tools to do the kind of calculation I need. This means each project has its own kind of learning curve. If I already have the right code, or almost the right code, things go very smoothly: with a few tweaks I can do a lot of interesting calculations. If I don’t have the right code yet, things go much more slowly: I have to build up my technology, figuring out what I need piece by piece until I’m back up to my usual speed.
I don’t always need to use computers to do my calculations. Sometimes my work hinges on something more conceptual: understanding a mathematical proof, or the arguments from another physicist’s paper. While this seems different on the surface, I’ve found that it has the same kinds of learning curves. If I know the right papers and mathematical methods, I can go pretty quickly. If I don’t, I have to “build up my technology”, reading and practicing, a slow build-up to my goal.
The times when I have to “build my technology” are always a bit frustrating. I don’t work as fast as I’d like, and I get tripped up by dumb mistakes. I keep having to go back, almost to the beginning, realizing that some aspect of how I set things up needs to be changed to make the rest work. As I go, though, the work gets more and more satisfying. I find pieces (of the code, of my understanding) that become solid, that I can rely on. I build my technology, and I can do more and more, and feel better about myself in the bargain. Eventually, I get back up to my full abilities, my technology set up, and a wide variety of calculations become possible.
What do you recommend for learning how to do that kind of technology? (I don’t do symbilic calculations long as yours, but some calculations began to be a little overwhelming to be made by hand)…
I have the vague impression this is supposed to be bad advice, but when I was starting out I got a lot of mileage out of just tinkering with other people’s code. If you find code from someone else that does part of what you need, by playing around with it you can get an idea of what the CAS is capable of. stackexchange is a great source for that kind of thing, but so are published packages if someone in your field has made some.
LikeLiked by 1 person