so ok...<p>#2 this is a waste of time for someone with your intelligence imho
#3 - yep, too long
#4 - possibly, if you're not a self directed learning type.<p>I would vote for #1, if you've already got a PhD the you have what it takes to pull it off.<p>As I understand it, you want to work on robotics. Very many of my friends who do research in robotics got their start playing with lego mindstorm robots. This would probably be a good place to start, because you basically can't learn software dev without writing something and it will give you a firm grasp of the basics of writing software for robots.<p>It's not clear what your level of experience in writing software is, if you haven't gone through basic tutorials then there are plenty of those out there.<p>If you happen to read this post and there's one thing to take away, it's that the absolute most important thing for ramping up to high productivity quickly is that you have a really solid infrastructure. The reason is that without such an infrastructure, codebases tend to drift and you can write yourself into a corner very easily.<p>I'll speak to my java infrastructure as this is my primary background.<p>First, I'm a big proponent of IDEs especially for beginners. I really like java with eclipse (it's unbearable with notepad) because with autocomplete and source code generation, you end up with code that reads more like an essay than a mathematical proof, which suits my personal style just fine. It just helps to offload my memory into autocomplete. Whatever editor you pick, it's extremely helpful to read up on it in advance.<p>Next is source code management. I personally use git and I create a repository for every project I'm working on, I find the distributed, self contained nature amusing. Commit often and branch when you change features.<p>Next up is managing dependencies. I use maven, which I absolutely love. Maven basically centralizes your dependencies and separates that concern to help avoid dependency hell. Some people use maven to manage their source, but I do it the opposite way with the maven files inside the directory where I create the git repo.<p>You also have to manage your own source. It's fine to play around ignoring all this, but once you have "real" code - this means code that you must maintain - then it's important that it be of a certain quality. You should try to have each project capture a particular need (read OCR or access a neural net or calculate some geo stuff for your robots or whatever) and that each product stand alone as much as possible. There should also at least be some functional tests.<p>imho, a relatively inexperienced dev with such a nice environment can be as productive as experienced devs flying by the seat of their pants. It also vastly reduces the risk of catastrophe.