5 ms·
(Disclaimer: I'm a former engineer at NYT and was a Go proponent there.) The reality of the situation at NYT is that every dollar counts. Go is an effective la
by brnstz 11y ago
(Disclaimer: I'm a former engineer at NYT and was a Go proponent there.)
The reality of the situation at NYT is that every dollar counts. Go is an effective language that enables a programmer to do both "scripting" and "real" tasks without switching between different environments. The email system described sends more email than many companies that only send email send, and have many more employees working on said system. It is one of the few systems at NYT that pays for itself with zero doubt.
The speaker did not know Go before being hired by NYT, and famously solved a Java programming task in his interview without an IDE and barely a typo (the only time I'd ever seen it done successfully, some people can't even run javac or vim).
It certainly doesn't hurt in hiring to say that you get to program Go, but filtering out "boring" engineers is not a chase of "coolness". It is seeking out engineers who want to take a risk and want to be productive.
- hueving 11y agoNo, I get that you want to filter out boring engineers. It's just unfortunate that it seems the only way our industry can do this is by changing up the tools and seeing who makes it through. Some of the smartest engineers I know are not interested in go because they think it solved the wrong problems and prefer rust for something new.
- robmccoll 11y agoI've been writing in Go at work nearly every day for the past year. I think that of the problems both Go and Rust attempt to solve, Rust solves them better in a technical and academic sense. As someone who prefers C and C++ over Python and Java, I personally would rather use Rust, but I have to say that Go strikes a great balance for general-purpose use. It is as fast to develop and as flexible and extendable as Python. Similar performance to Java but with much less code, better interoperability, and a more robust standard library. More features than C without the needless complexity of C++. Entirely too opinionated and the build system and dependency management are 80% solutions / hacks, but for the most part you can work around them. Most importantly, I think Go can be easily picked up and used by C, C++, Java, PHP, JavaScript, Python, C#, Objective-C, XYZ, ETC programmers alike with very little learning curve (some more than others perhaps). I think with Rust, you are going to have a hard time training someone who has depended on GC for so long that they have to be explicit about the ownership and transfer of ownership of memory and that it's elegant and cool and performant to do so. You are going to have trouble explaining traits and composability and the syntax around it to someone who is used to using more verbose syntax to implement complicated inheritance trees. Pattern matching and enums are fantastic, but also foreign to most of the programming public. This is why Go is spreading - good middle ground for productivity and performance, easy to pick up, seemingly bright future, Google backing, good documentation (no doc is perfect - Sphinx is frequently not great, Javadoc is terrible, Doxygen is meh, MSDN is overgrown with cruft - but Godoc is decent), etc.
- voltagex_ 11y agoIs there a good (say, produced by JetBrains) IDE for Go yet? Edit: http://plugins.jetbrains.com/plugin/?idea&id=5047 http://plugins.jetbrains.com/plugin/?idea&id=5047
- look_lookatme 11y agoIt's worth noting that a number of JetBrains employees seem to be working on this plugin every day [1]. I suspect we'll see a proper JetBrain Go IDE before too long. [1] https://github.com/go-lang-plugin-org/go-lang-idea-plugin/commits/master https://github.com/go-lang-plugin-org/go-lang-idea-plugin/co...
- cyri 11y agoI'll work with the latest commits from https://github.com/go-lang-plugin-org/go-lang-idea-plugin/commits/master https://github.com/go-lang-plugin-org/go-lang-idea-plugin/co... every day (fresh compiled) and it is getting better and better! Those guys are doing an awesome job. There is not yet a need for a Go-specific IDE by JetBrain.
- frik 11y agoDoes it support Go 1.4? In Jan/February it was still only compatible with previous Go versions - the stable release.
- cyri 11y agoI only work with Go 1.4 :-) I was aware that the plugin didn't support for a long time the new Go structure. But with the overall refactoring it works now perfect.
- YZF 11y agoI use Eclipse with the Goclipse plug-in. I still have the command prompt on the side for some stuff but the plug-in covers a fair bit of what you need to get done... http://goclipse.github.io/ http://goclipse.github.io/
- bladecatcher 11y agoD language is also worth taking a look at. It's a very smart language designed for systems programming.
- FraaJad 11y agoI'm afraid, it will be never be "cool" :(
- jshen 11y agoSmart companies want engineers that are focused on solving their challenges, not those that prioritize the tool they use over the real goal.
- optimusclimb 11y agohttp://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- jshen 11y agoI read that back when it was first published, believed it, and built a few teams using it's philosophy. I've also been at a few big companies that haven't followed it's direction. In my experience it doesn't work unless you have a small team and a small company and even then you are often left with fickle programmers who leave when the next fad comes along because your company can't justify rewriting its systems with the latest fad tech.
- optimusclimb 11y agoWouldn't you say lisp was the opposite of a fad at the time when PG wrote that article? It's been a long time since I read it, but in Microserfs, the classic "VC" or "Money" guy describes how you can drive around the Valley on a Sunday and predict the success of companies by how many cars there are in the parking lots. Most conventional wisdom these days is that if you have to work 80-90+ hour mega weeks you're doing it wrong, but I think that the analogy might be that if the team is using an interesting technology stack, there's a higher chance the engineers there are of higher caliber (as they're interested in pushing themselves to use a newer technology.) Thoughts?
- jshen 11y ago"but I think that the analogy might be that if the team is using an interesting technology stack, there's a higher chance the engineers there are of higher caliber" My experience doesn't support this for a few reasons. One of the main reasons is what I alluded to before, the people interested in "interesting" tech stacks are fadish, even if the tech isn't. In 2-3 years, your "interesting" tech stack becomes "uninteresting" or worse, a bad idea. I remember when java was "interesting" then it was php, then python, then ruby on rails, then scala, clojure, haskel, then backbone, then node.js, then angular, then react, then go and rust, then ....
- nickysielicki 11y agoWhen you first look at go, you might think, "gee, this language sucks. What is this? A compiled language with pointers, structs, that's not object oriented? And it has garbage collection? WTF. Okay, so this is meant to replace C/C++?" Nope. Go and Rust are almost entirely orthogonal in their best use cases. Go is a langauge for people somewhat comfortable in low level langauges that want to high level things in a somewhat performant way. The older alternative is probably python. Rust is a language for people moderately comfortable in low level languages that want to do moderately low level things in a complex way. The older alternative is C++. C is a language for people very comfortable in low level langauges that want to do very low level things. The older alternative is assembly.
- danieldk 11y agoGo and Rust are almost entirely orthogonal in their best use cases. I disagree. I think in many (but not all) use cases, Go and Rust are direct competitors. However, they embody a different philosophy. It's New Jersey (worse is better) vs. MIT style all over again. One can read Gabriel's[1] descriptions of both styles and they map exactly to Go and Rust. Given Go's heritage this is, of course, not surprising. [1] https://en.wikipedia.org/wiki/Worse_is_better https://en.wikipedia.org/wiki/Worse_is_better
- nickysielicki 11y agoI agree that their philosophies are very different, but I still hold that their use cases do not align so much. For me at least, go has mostly taken the role that scripting languages sit in. I surely wouldn't want to write scripts in rust. What are some of the use cases that you think they share?
- mimighost 11y agoAgree. Go is made for web/distributed programming: builtin concurrency, battery-included library with great support for http utils, including a production-ready server and other stuff like RPC. And the distribution is just so easy. For a Pythoner, Go almost solves all my pain points for python, notably the lack of support for real multi-threading so that for long running task we have to turn into processes based 3rd party library like celery/rq with a message queue as intermediate layer, while comes with a relative familiar favor of syntax. Go is a pragmatic minimalist language, with limited but cohesive set of features that stays at its core. I don't know rust very well, but from what I gather from HN, looks like that it aims to be a more comprehensive solution rather than 'opinionated' one in case of Go.
- nu2ycombinator 11y agoAnd now I am curious about what is the "famous java programming task". And want to see if I can do it without using IDE.
- seanmcdirmid 11y agoIt is a dumb benchmark, like being able to answer trivia questions without Wikipedia or google.
- brnstz 11y agoIt's a question that can be done in any language and isn't especially difficult in a shell or scripting language. Every attempt I'd seen (except that one) in Java or C++ was a failure given the time limitation. It is more of a test of "can you pick the right tool for the job, given limited time and resources?" In this case, a machine gun was chosen to squash an ant. A risky move, but if you can do it, then great.