News for hackers. Stuff that matters.
Re:Ask HN: Who regrets choosing Elixir? by PragmaticPulp on Saturday May 23, 2020 @04:09PM (#23285942)
Because engineers don't take kindly to companies changing the direction of their career development.

If you're an up-and-coming Golang developer, how happy are you going to be when your company takes you off of a Golang project and makes you the new Erlang person?

Now how happy are you going to be when you're informed that you're learning Erlang to maintain an old, flakey codebase written by 2 guys who left the company and are now unreachable?

Oh, and you're going to need to be on call for this because no one else knows how to fix it.

Re:Ask HN: Who regrets choosing Elixir? by tarsinge on Saturday May 23, 2020 @05:57PM (#23286895)
> If you're an up-and-coming Golang developer, how happy are you going to be when your company takes you off of a Golang project and makes you the new Erlang person?

In my mind good developers are not <language> developer, they are engineers that solve problems with the right tools.

Re:Ask HN: Who regrets choosing Elixir? by PragmaticPulp on Saturday May 23, 2020 @06:48PM (#23287290)
> In my mind good developers are not <language> developer, they are engineers that solve problems with the right tools.

Given infinite time and no deadlines, sure.

But in the real, you can't expect your engineers to learn entire programming languages and associated ecosystems on the fly as they debug issues in production.

If your Erlang-based cloud backend starts going down, you can't afford to wait around while engineers teach themselves Erlang so they can begin to even debug the problem.

The point is that if you write critical infrastructure in a specific language/framework/ecosystem, you need to have people proficient in that ecosystem who are ready to go. When dealing with production systems at scale, it would be downright negligent to assume you could simply learn the language and framework on the fly if any problems come up.

Re:Ask HN: Who regrets choosing Elixir? by svaha1728 on Saturday May 23, 2020 @07:48PM (#23287706)
Even Andrei Alexandrescu and Jon Skeet haven’t spent their entire careers focused on their favorite languages.
Re:Ask HN: Who regrets choosing Elixir? by scarmig on Saturday May 23, 2020 @06:16PM (#23287037)
I can kind of get this if we were talking about COBOL or MUMPS or something. But being paid to learn Erlang isn't really in the same category, or the same universe, really.

Maybe the emphasis should be more on the disappeal of your role being changed to maintain an old, flakey codebase than on the language.

Re:Ask HN: Who regrets choosing Elixir? by brazzy on Saturday May 23, 2020 @04:20PM (#23286035)
So how about don't be stupid about it and instead make three engineers devote 1/3 of their time to this? That way it's a broadening rather than a redirection of their career, they can help each other, the on call duties are shared, and the business isn't dependant on a single person.
Re:Ask HN: Who regrets choosing Elixir? by kenhwang on Saturday May 23, 2020 @05:09PM (#23286470)
To me, this is the sniff test of a good engineer. All the good engineers I've known would've jumped at the opportunity to learn a new technology on company time/money. The engineers that refuse to learn generally don't grow.
Re:Ask HN: Who regrets choosing Elixir? by gfodor on Saturday May 23, 2020 @05:18PM (#23286547)
Yup pretty much. Esp when it’s something like Erlang that passes the sniff test as something that likely will expand your knowledge in a meaningful way, and be a long lived technology.
Re:Ask HN: Who regrets choosing Elixir? by tuxcall on Saturday May 23, 2020 @06:09PM (#23286990)
Yes, it doesn't matter if it's a programming language or another technology. That's engineers not worth keeping around, stuck in their old ways, sooner or later they'll make themselves obsolete.

I'm not a <language> programmer. I'm a programmer period.

Re:Ask HN: Who regrets choosing Elixir? by setr on Saturday May 23, 2020 @07:18PM (#23287511)
The term used within my circles is 10x1 engineers -- they've replicated their first year of experience/learning 10 times over. Biggest thing to watch out for when hiring "senior" devs
Re:Ask HN: Who regrets choosing Elixir? by mrlatinos on Saturday May 23, 2020 @04:44PM (#23286252)
Dedicating a third of my time to a language I had no previous intention of learning is going to be a hard sell, even if you label it as "broadening."

If I'm a python developer, I'm now spending less time on my core competency, giving other python developers an edge. Seems like you're actually narrowing my career, unless I wish to apply for jobs seeking mediocre Erlang programmers...

Re:Ask HN: Who regrets choosing Elixir? by gfodor on Saturday May 23, 2020 @05:20PM (#23286566)
If you see your identity as an engineer to be one grounded in the languages you use, you have commoditized yourself, or are at least very junior. Programmers solve problems, usually with a mix of deep skill sets revolving around domain knowledge or knowing how to use computation, systems, etc to solve them. Competency in a specific programming language is far down the list of what defines the value of a specific individual engineer to an organization or project.
Re:Ask HN: Who regrets choosing Elixir? by toyg on Saturday May 23, 2020 @05:30PM (#23286659)
Well, that’s not how programmers are recruited in the real world though. Java shops will hire Java programmers, C# shops will hire C# hands, etc etc. Marketing yourself as a generalist problem-solver will get you, at best, in one of those nightmare scenarios where you’re the only programmer in a non-tech company.
Re:Ask HN: Who regrets choosing Elixir? by gfodor on Tuesday May 26, 2020 @12:30PM (#23313170)
I specifically was referring to your identity as a programmer, not how you market yourself. Those are separate things.

The OP said "I'm a python programmer", and discounted the value of learning something new like elixir because it would undermine this due to the opportunity cost, which implies they may be falling into the trap I mentioned. All other things being equal, someone who is reasonably competent at both Python and Elixir is going to probably solve many problems in a better way than someone who didn't have a broader perspective. (In part because learning Elixir stretches well beyond learning a programming language, it is an introduction to an entire distinct continent of distributed systems knowledge and technology - OTP, BEAM, etc.)

Re:Ask HN: Who regrets choosing Elixir? by nicoburns on Saturday May 23, 2020 @06:04PM (#23286961)
That's why you don't market yourself as a generalist problem-solver. You market yourself as an expert in C# AND Python AND Swift AND... whatever else you know how to use. With appropriate signalling to communicate your experience levels with each.

There are lots of senior roles that require oversight of multiple projects that are working with different tech stacks. Some companies specialise in a single language. But lots of companies have say 2 or 3 backend languages (say C++, Go, and Python), plus a website in JavaScript plus mobile apps in Java/Kotlin and Swift/Objective-C. Being able to dive into all of those makes you incredibly valuable to this kind of company.

Re:Ask HN: Who regrets choosing Elixir? by treis on Saturday May 23, 2020 @08:03PM (#23287810)
>You market yourself as an expert in C# AND Python AND Swift AND... whatever else you know how to use

So that everyone knows you're full of shit? It takes years in a technology to become an expert at it. There's no replacement for the experience of taking multiple projects from inception to production to scale. That's how you learn about the inscrutable errors, fiddly configuration issues, and pitfalls that make you an expert at something.

Re:Ask HN: Who regrets choosing Elixir? by XorNot on Saturday May 23, 2020 @07:28PM (#23287574)
"Javascript" though isn't Javascript. I mean it could be, but it's worthless in that context because what you actually need to be productive is familiarity with the browser DOM, current frameworks for frontend or backend, and basic project structures.

For Java it might be enterprise Java, it might be Android, in which case you need familiarity with those frameworks to be productive. For Swift it'll be iOS.

No one's "diving into" the codebase for an iOS app starting from "I mostly do backend web app development in Golang".

Are you an "expert" in all those things? I doubt it. In fact the worst possible thing you can generally write anywhere is that you're an expert in C++ which at this point is oh-so-many subdialects.

Re:Ask HN: Who regrets choosing Elixir? by nicoburns on Sunday May 24, 2020 @07:17PM (#23295818)
> No one's "diving into" the codebase for an iOS app starting from "I mostly do backend web app development in Golang".

I mean, I've certainly been expected to at previous jobs (my background being backend and frontend web). It was a steep learning curve, but in retrospect it was also an excellent learning experience.

> Are you an "expert" in all those things? I doubt it.

No, but give me time. I'd consider myself an expert at frontend JavaScript/TypeScript and backend JavaScript/PHP. I have a decent amount of experience (enough to get a job an X developer, not enough to call myself an expert) in a number of other technologies (e.g. Python, Rust). And at my current day job, I'm responsible for a React-Native project through which I'm getting exposed to a lot of the quirks of the Android and iOS platforms.

Go I've not used. But Go's a relatively small ecosystem to learn. I don't put Go on my CV, but I'd be confident applying to a Go job. C++ I've done a little of, but I'm absolutely not an expert. Although Rust experience means that I understand most of the low-level concepts and best-practises that aren't C++-specific. Still, I absolutely don't advertise that on my CV either. One day though maybe. I'd like to do some embedded stuff at some point.

> In fact the worst possible thing you can generally write anywhere is that you're an expert in C++ which at this point is oh-so-many subdialects.

C++ is a bit of a special case there though. Because

1. C++ is huge: it takes a lot longer to master C++ than it does other technologies.

2. C++ is wildly unsafe. Therefore the consequences of not knowing what you are doing with C++ are much greater. You'll likely end up with a crashy program riddled with security holes.

In contrast, I wrote a production Rust project with no prior experience, and all the things that would have been crashes or security issues in C++ were compile errors. So the only consequence of my lack of experience was that it took longer to complete the project.

Re:Ask HN: Who regrets choosing Elixir? by bryanrasmussen on Saturday May 23, 2020 @05:02PM (#23286413)
>If I'm a python developer, I'm now spending less time on my core competency, giving other python developers an edge.

so this argues against the theory that learning other languages and other programming paradigms makes you a better programmer in the languages you already know.

Re:Ask HN: Who regrets choosing Elixir? by Leherenn on Saturday May 23, 2020 @05:48PM (#23286811)
Or at least, that it is less valuable than spending the same time learning your core language.

This might be true based on your specific situation (relatively new to the language, but already know some other varied languages); I don't know.

Re:Ask HN: Who regrets choosing Elixir? by nicoburns on Saturday May 23, 2020 @06:00PM (#23286921)
That depends what you learn. Spending 3 months working on a Rust project has done a lot more for my ability as a JavaScript developer (my strongest language) than spending those 3 months working on a JavaScript project would have.
Re:Ask HN: Who regrets choosing Elixir? by tpxl on Saturday May 23, 2020 @05:36PM (#23286713)
FWIW I agree with you. I'm a Java dev and learning a language that's similar to it (C, C#, Python, whatever) does nothing for me but take away from learning more of my language.

Other comments say an engineer is supposed to solve issues with the tools given to them. I can solve issues in other languages, I just don't want to. How does that make me a bad engineer?

Re:Ask HN: Who regrets choosing Elixir? by rixed on Saturday May 23, 2020 @06:34PM (#23287189)
For one, because you select your tools and reject others not based on their rational merits.

Second, because you are also likely to favor recruitment of other devs based on this cultural choice not on their merit, eventually creating a clique.

Re:Ask HN: Who regrets choosing Elixir? by tpxl on Saturday May 23, 2020 @08:43PM (#23288051)
Productivity and working knowledge of a tool do not count as rational merits? It takes years to really learn a language; a new framework and language per week is a stupid fad.

If I run a Java shop I want a clique of Java devs, not Golang or Rust devs.

Re:Ask HN: Who regrets choosing Elixir? by rixed on Saturday May 23, 2020 @11:38PM (#23288882)
There is some truth in this, but less than commonly believed.

A "multi cultural", Jack-of-all-trades kind of team, that have a broader knowledge of many tools and techniques but less in depth familiarity with any of them, is more likely to use less features from the languages and tools that they have picked for a few of their strong points only, and less likely to indulge themselves with a level of sophistication that benefits their ego (and job security) more than the project.

> If I run a Jave shop

So I know a Python shop must be a business that sells reptiles, but what does a Java shop sell?

Re:Ask HN: Who regrets choosing Elixir? by tpxl on Sunday May 24, 2020 @05:26AM (#23290327)
Most of the tools we use are language agnostic - databases, message brokers, containers, kubernetes, etc.

>So I know a Python shop must be a business that sells reptiles, but what does a Java shop sell?

Coffee obviously.

Re:Ask HN: Who regrets choosing Elixir? by Ericson2314 on Saturday May 23, 2020 @05:08PM (#23286460)
A good engineer will prefer some language(s), but be able to figure out anything should the job require it. This career track shift stuff is complete bullshit.

The workers are settled and and don't want change. And there's nothing wrong with clocking in and out and not giving a shit about your "career". But there is something wrong with the managers falling for this.

Re:Ask HN: Who regrets choosing Elixir? by PragmaticPulp on Saturday May 23, 2020 @05:59PM (#23286911)
> So how about don't be stupid about it and instead make three engineers devote 1/3 of their time to this?

If your product-critical cloud backend depends on people being knowledgeable in a specific programming language, you don't make it a 1/3 time side project for multiple engineers.

Also, if you start giving people "1/3 time" responsibilities, you're one step away from "everything is top priority" territory.

The point is: If you're going to write critical pieces of your infrastructure in a specific language, it's a requirement to have at least one person full-time dedicated to that piece of infrastructure.

When things go wrong at scale, you can't depend on a group of people for whom this is a part-time side project.

Re:Ask HN: Who regrets choosing Elixir? by ProZsolt on Saturday May 23, 2020 @06:28PM (#23287140)
You don't give it to 3 random people. You give it to a team which depends on it. It's not a side project because if that breaks your project breaks.
Re:Ask HN: Who regrets choosing Elixir? by PragmaticPulp on Saturday May 23, 2020 @06:42PM (#23287244)
My least favorite part about HN is trying to share advice based on real-world experience, only to people show up and armchair quarterback the situation with solutions that sound easy on paper.

You'll have to trust me that we didn't just throw our hands up in the air when dealing with the Erlang situation. We tried a lot of the suggestions here and more.

Erlang is one of those languages that, for whatever reason, lulls engineers into a false expectation that they can pick it up over a few weekends and start knocking out IoT-scale solutions serving 6- and 7-figure connection counts. Speaking from direct experience, that's not only untrue, but it's a dangerous misconception that leads to a lot of pitfalls.

Don't get me wrong, Erlang is great if your problem set matches up neatly to core OTP functionality and well-defined patterns, but you don't have to stray far until you start finding difficult pitfalls that aren't easily addressed by engineers learning Erlang on the fly.

Re:Ask HN: Who regrets choosing Elixir? by ProZsolt on Tuesday May 26, 2020 @06:33AM (#23309341)
Sorry if I wasn't clear. I'm not questioning why you switched from an otherwise unused technology. Sometimes it's the best way forward. My comment is meant for this sentence:

> Also, if you start giving people "1/3 time" responsibilities, you're one step away from "everything is top priority" territory.

I like to maintain and improve legacy systems and usually happy to do it. When I got a separate side-project I had constantly fight with my team why I should work on project X instead of contributing to our core project. If it was my whole team responsibility they were happy that somebody does it. Also, they wanted to invest enough time so it won't break.

Re:Ask HN: Who regrets choosing Elixir? by BubRoss on Saturday May 23, 2020 @06:44PM (#23287254)
Defining yourself or others by a single language is in my mind a huge red flag of a very junior programmer.