I agree but I'd also like to add that most of the time the complexity for me using some frameworks, libraries, or tools has nothing to do with code but instead in the prerequisites for using them. The authors of some tools make certain assumptions about your knowledge of the whole ecosystem around the tool or supporting tools. Here's a few examples that have caused me pain:
Some time ago, an upgrade to Foundation framework required NodeJS and Ruby 1.9+, a version not preinstalled on my Mac. OK, at the time I knew nothing about NodeJS and have never used Ruby, how hard could it be? 5-10 minutes max?
- NodeJS installed fine, but I had to use "sudo" to install modules or I'd see errors
- Googled... many people used "nvm". I installed nvm, had some issues, but in the end all worked fine
- Next, Ruby. "rvm" is popular, I'll try that.
- rvm installation failed with a cryptic error message, Googled message...
- I need to install "command line tools" which come with Xcode
- I don't have Xcode and apparently it's several GB, after an hour or more I finished downloading it.
- I had to open Xcode, find some random preferences panel and click some button to install "command line tools"
- rvm installation still did not work, Googled.... many people use Homebrew
- installed Homebrew, ruby 2.x installed (with strange warnings) but showed 2.x in the console
- Foundation tools did not work
- Googled how to uninstall Homebrew, found some random "gist" script some guy made which does scary things on my system
- Tried installing rvm again, and for a reason unknown to me, it was successful!
- Foundation tools still did not work
- Didn't notice, last two line of rvm installation required me to copy/paste two lines into the shell.
Great, now I can use Foundation in my Grails project that has nothing to do with Ruby or NodeJS. This whole process took ~6 hours, half of the time I spent just googling error messages.
More recently, I couldn't figure out how to properly package/bundle my React app into a single minified JS file with browserify. The docs linked to a nice simple template:
https://github.com/petehunt/react-browserify-template
The package.json has a few useful commands in the "scripts" section:
"scripts": {
"start": ...
"build": ...
}
"npm start" works fine, so why isn't "npm build" working!?!? I posted on stackoverflow and got no answers. Ten days later I figured it out. Knowing very little about npm I had no idea "npm start" was a shortcut for "npm run-script start" and thus I needed to do "npm run-script build".