19 karma · joined May 23, 2017
Also in general, I would start with a list of languages that are built-for, or can easily support, what your product is. For instance, I love Go but wouldn't use it for a GUI application.
And in honesty, managed languages are a bit better in my opinion for projects that will require many devs to work on it. As much as this statement might catch flack, C++ is wonderful and powerful and I trust my ability to use it; but do I trust the workforce to? It's very easy for a dev to write a patch fix that also manages to introduce a memory leak or null pointer and crash the whole thing.
Also Go is one of the few (if not only?) languages with HTTP/2 built in to the standard library. Not to mention the gRPC over TLS that comes stock as well.
Also I'm more of a custom approach person which makes me very productive with Go. It's allows me to have laser focus on my needs instead of hooking up and reading docs and every little integration feature the framework has. And in result, I don't have dependency on a monolithic framework which could very well break everything in it's next release.
And finally, Go will build to binary for any-platform. So I can pre-build for the ARM processors, or Linux, or whatever else on Windows and just ship the binaries for server updates instead of managing make scripts and dependency resolution and blah blah blah. And if I wanted to I could sell the API "program" and sleep a little better about the IP contained in it (yes I know de-compilers exist). I could do this with C++ as well, but that's a whole 'nother ball game when it comes to tracking down memory leaks and segfaults.
Frontend: JS (TypeScript/ES6), React, ReactNative, SASS, all Webpack'ed (except RN).
I think it's a fairly light stack but am happy with it. I would use this as the starting point for pretty much every project.
http://code.flickr.net/2012/12/12/highly-available-real-time...
Then I found gulp. Uses a more functional streaming style, but for the end goal of [Turn ES6 into ES5]->[Stick it in this folder] it's dead simple and quick.
Then I got a work issued laptop with Win10, and it's been ATROCIOUS for me. I don't have any ads or whatever (is this gonna be a new feature?) but my permissions model is royally screwed. For instance, I had to activate root administration controls on my user, cause you know, it's my computer. And some how because of this, I can not run the built-in Calculator app. That's right, can't run the calculator because I'm an admin. I had to write my own. So it's been hit and miss. But so is my story with every OS.
- A bit too much boilerplate. The infamous "if err != nil" statements will get a bit tedious. BUT! This keeps you on your toes, not in the same way as Java's "NullPointerException" explosion keeps you on your toes.
- I agree with the 3rd party libraries comment. Any cool library I find spends 2/3rds of the README talking about benchmarks. Like we get it, Go is fast. Good luck finding any actual implementation besides "read the docs". And sure someone could write examples, if the package lived long enough.
- I wish there was a tad bit speedier development. The compiler is QUICK, but for something like server development I find myself having keep the command line going, use the "go install" command, then run the exe (windows) from the bin folder (I put it on the Path just to save my life a bit), then test, then kill the server, and repeat. Not great for quick prototyping. In comparison my other web techs have live-reloads, where saving re-compiles, kills the current process, and starts. I'm sure I could rig one up, so this is probably just a nuance of my own early travels in Go.