I just got into Go, and I&#x27;m a fan a lot of language design decisions. But a lot of configuration leaves me wondering: is it me who doesn&#x27;t understand something, or did the same folks who designed such a good language actually screwed up configuration stuff?<p>No way to specify a version of library or language I&#x27;m working with is already a little bit annoying, although I haven&#x27;t actually discovered problems because of it. But the $GOPATH just drives me nuts: why the hell would the language infrastructure work out of assumption that all my projects that are based on a single language are contained in a single folder? On the contrary, I often have projects that include several different languages and frameworks in them, and I&#x27;m usually keeping client and server in the same repo. Language is a part of a project, not the other way around. I ended up with this hackery in my server Makefile:<p><pre><code>  build:
      GOPATH=$(shell pwd) go install main
</code></pre>
Overall, just as Go itself is transparent and simple, it&#x27;s `import` statement and build infrastructure is not. &quot;Convention over configuration&quot; may be a good approach for simple web apps, but when this convention just doesn&#x27;t fit your workflow, it brings more bad than good.