I feel him. I used to feel in exactly the same way.

This is how you feel when you get overwhelmed by stuff you don't understand, that is completely irrelevant to your goal, but which you are forced to do anyway.

I used to think version control is bullshit back in the days I was first learning to program. I wanted to make games. In particular, I looked for other games made by hobbyists in order to download them, play a bit and then look at the source. It really pissed me off when the only way someone shared their production was through a CVS repository. I wanted a simple .zip download, not some stupid weird Unixy thing (I was running Windows) that was complex, required to download some weird console software (ah, the PATH issues) and was completely irrelevant to my goal of getting up-to-date version of the software. Oh, and they didn't store binaries in CVS so here's another hour wasted for me to try and figure out how to compile that project (fixing dependencies took time).

When NASA released some of their software as CVS repos with no direct download, I got so pissed I vented on a blog (http://temporal.pr0.pl/devblog/2007/06/25/systemy-kontroli-w..., pl_PL only).

At some point I learned SVN though, and then Mercurial and Git, but the main thing that made me stop being annoyed by version control was switching to Linux for primary programming work. Version control feels natural there. GitHub for Windows application also helped.

Another, more recent example. Because of some weird reasons I ended up having to learn how the old RMI in Java worked. Oh, such a pain in the ass it is. I wasted like five to ten hours making it work because of bullshit like XML configurations, setting up servers from (Windows again) command line with magic invocations, weird security issues and dropping manifests in random places. All I wanted to do is to have program A call a function in program B. Things I did to get there were completely irrelevant, but took 90% of time.

Current example - don't ask me to do anything in client-side MVC frameworks. The whole ecosystem around Angular, Ember and Node.js feels like utter bullshit to me. Again, tons of magical invocations, hundreds of megabytes downloaded, hundreds of thousand of files in project directory, all that to achieve what used to take a single alert("Hello world!").

I know, it's probably useful somehow to something. But I wanted to make a simple app, you told me to use Ember, and I wasted half a week and a DVD worth of disk space and I still don't have that app.

So yes, I feel him. It's not that the software or command line sucks. It's that 90% of things he has to do are completely irrelevant to his research, and yet he can't proceed without doing them.

What can we do to solve it? Hide the bullshit. Hide the infrastructure. Just running a program should never require touching version control. Hello world in a web framework should not require setting up test frameworks, downloading half of the Internet and selling your soul to Satan. Make basic use cases simple. Or at least, write tutorials that explain the reasons behind magic invocations and that are targeted to beginners, not people with 10 years of experience in the domain.