5 ms·
I see that a lot from the Go crowd. That's why I consider any strong opinions on languages to be a poor indicator for ability. Sure there's differences, but a l
by darkhorse222 2y ago
I see that a lot from the Go crowd. That's why I consider any strong opinions on languages to be a poor indicator for ability. Sure there's differences, but a language does not make the engineer. Someone who is attracted to flashy stuff makes for an indulgent planner.
- scubbo 2y ago> That's why I consider any strong opinions on languages to be a poor indicator for ability. Hmm. Can't say I agree here - at least not with the literal text of what you've written (although maybe we agree in spirit). I agree that _simplistic_ strong opinions about languages are a sign of poor thoughtfulness ("<thing> is good and <other thing> is bad") - but I'd very much expect a Staff+ engineer to have enough experience to have strong opinions about the _relative_ strengths of various languages, where they're appropriate to use and where a different language would be better. Bonus points if they can tell me the worst aspects about their favourite one. Maybe we're using "opinion" differently, and you'd call what I described there "facts" rather than opinions. In which case - yeah, fair!
- mikepurvis 2y agoAbsolutely. Anyone senior should be able to fairly quickly get a handle on the requirements for a particular project and put forward a well-reasoned opinion on an appropriate tech stack for it. There might be some blank space in there for "I've heard of X and Y that actually might fit this use case slightly better, so it's probably worth a brief investigation of those options, but I've used Z before so I know about the corner cases we may run into, and that has value too."
- pdimitar 2y agoAnd I see people who assume choosing a language was done for "flashy stuff" the less capable. See, we can all generalize. Not productive. Only thing I ever saw from Golang devs was pragmatism. I myself go either for Elixir or Rust and to me Golang sits in a weird middle but I've also written 20+ small tools for myself in Golang and have seen how much quicker and more productive I was when I was not obsessed with complete correctness (throwaway script-like programs, small-to-mid[ish]-sized projects, internal tools etc.) You would do well to stop stereotyping people based on their choice of language.
- zozbot234 2y ago> how much quicker and more productive I was when I was not obsessed with complete correctness That's pretty much another way of saying that stuff becomes a whole lot quicker and easier when you end up getting things wrong. Which may even be true, as far as it goes. It's just not very helpful.
- pdimitar 2y agoObviously. But I did qualify my statement. There are projects where you're OK with not getting everything right from the get go. FWIW I very much share your exact thoughts on Rust skewing metrics because it makes things too easy and because stuff almost immediately moves to maintenance mode. But that being said, we still have some tasks where we need something yesterday and we can't argue with the shot-callers about it. (And again, some personal projects where the value is low and you derive more of it if you try quickly.)
- darkhorse222 2y agoI am a builder trained as a computer engineer. I scoff at languages as abstractions over fundamentals that do not change. This isn't like a hammer and a screwdriver, it's like fifteen different hammers. Just give me the thing, I'll build the house. A guy spends three hours talking about the hammer, he's probably not focused on building the house. Tool preferences show ego of the builder.
- pdimitar 2y ago> Just give me the thing, I'll build the house. What do you think all programming discussions about languages, typing systems, runtime, tooling etc. aim for? EXACTLY THAT. If it was as easy as "just give me thing" then programming would have been a solved and 100% automated problem long time ago. Your comment comes across as "if only we could fly, we would have no ground road traffic jams". I mean, obviously, yeah, but we can't fly. Your comment also comes across a bit elitistic and from the POV of an ivory tower. Don't know if that was your goal, if not, I'd advise you to state things a bit more humbly.
- BobbyJo 2y agoLanguage matters quite a bit when deciding how to build an application though. I see having no strong opinions on language to be a sign the person hasn't developed a wide enough variety of projects to get a feel for their strengths and weaknesses.
- ohgr 2y agoYeah. I have a list of things I won’t work with. That’s what experience looks like. (Mostly .Net, PHP and Ruby)
- ipaddr 2y agoThe more senior I get the less opinionated I am. Someone wants to do something in some different or some different way.. why not. In the end the language matters little the tech stack doesn't matter unless you are going down a specific path and even then it probably doesn't matter that much if you have a choice on what to use.
- BobbyJo 2y agoI honestly couldn't disagree more. Having built very similar systems in Golang, Python, and Java in different companies, and having used MongoDB and other NoSQLs as well as Postgres to similar ends, I have very strong preferences about which I'd rather use in the future. Even simple requirements can rule out languages for me. Like, if you need async or concurrency, Python is awful. If you need SQL in your code, Golang isn't great. If you are building a simple CRUD backend, Java is waste of time. If you aren't doing anything compute heavy or embedded, why even consider C++ or Rust. The list goes on.
- tbossanova 2y agoSo what are the strengths of those languages?
- BobbyJo 2y agoPython is great for library orchestration and has tons of support for almost anything you need. So if you aren't building a large application and don't need concurrency, its great. Java is great for building large applications with large teams, since it limits how code is shared and how libraries are built, and has a culture of convention. Golang has greate concurrency support and meta programming support, so its awesome for web servers and plugging into systems that incorporate orchestration technologies. C++ and Rust are fast and efficient as hell when you need that. JavaScript is your only viable option when you need complex and interactive UI that's OS agnostic.