News for hackers. Stuff that matters.
Re:Why and How We Retired Elm at Culture Amp by wpietri on Saturday April 08, 2023 @03:37PM (#35496806)
Most hiring rules have notable false negative rates and that's fine because you have multiple applicants per position and because getting it wrong can be very expensive.

Personally, I think being excited about a cool language is a mixed signal. An interest in technology is great, but on the clock that has to be thoroughly suppressed in favor of actual business needs and constraints. At home, I like fucking around with all sorts of stuff. At work, I'm a confirmed member of the Boring Technology Club. [1]

[1] https://boringtechnology.club/

Re:Why and How We Retired Elm at Culture Amp by duxup on Saturday April 08, 2023 @03:48PM (#35496923)
If all you want is something to thin a stack of resumes why not be honest and just randomly throw out the required number?
Re:Why and How We Retired Elm at Culture Amp by wpietri on Saturday April 08, 2023 @03:58PM (#35496992)
Because you're looking to thin it differentially, such that the odds of a good hire go up, or at least the odds of a bad hire go down. One kind of bad hire is the technology-lover who values their own preferences over the needs of the business.

E.g., a friend of mine took over a team with a couple of strong FP advocates on it. They had written a core tool in very FP-ish JS. They enjoyed the novelty of the greenfield work, but once it was down to just making the changes users needed, they got bored and moved on. The remaining part of the team tried picking it up, but it was too alien, either because of the FPness or just because the code was opaque. Either way, they eventually had to rewrite it.

Or personally, I have made a lot of good money coming in after some would be brain genius, ripping out their supposedly cutting edge work, and replacing it with something boring. I remember one place where a core part of a system was build on the 0.7 version of then-fashionable technology. Except it wasn't even 0.7 as released, but something with custom patches applied. None of the people there could maintain it. Looking at git blame and doing a little web searching, it turned out the developer responsible had then done a self-promoting conference talk about their amazing work, and then quit shortly thereafter. After I removed it and replace it with something much simpler, not only could the people there maintain it, but it worked better than before.

Re:Why and How We Retired Elm at Culture Amp by pmarreck on Saturday April 08, 2023 @04:33PM (#35497332)
> Because you're looking to thin it differentially, such that the odds of a good hire go up, or at least the odds of a bad hire go down.

I'm certain you could increase the odds of a good hire in all sorts of other ways by seeking correlational stereotypes, but some of those (age, gender, race) would be seen as... very bad, possibly illegal, and some others (traditional-ness of first name, for example) would possibly also work but would be highly questionable. Heck, I bet you could find a correlation with whether or not the person used an AOL email address or not. What makes filtering by this stereotype correlation superior, ethically, to those other stereotype correlations? If "interest in new tech" is an immutable attribute of the person's personality (which it almost entirely likely is), then in both cases you're filtering based on immutable attributes, so they should be considered ethically equivalent on paper, where you have a lot of false negatives, but your "good hire" rate goes up.

> One kind of bad hire is the technology-lover who values their own preferences over the needs of the business.

So basically you want to hire non-technology-lovers who simply "GSD" and don't care about things like long term maintainability or test coverage (or test runtime, or code quality, or...) because at the end of the day that's just added fees you can charge to the client when you have to revisit the codebase in the future. I see.

Re:Why and How We Retired Elm at Culture Amp by snovv_crash on Saturday April 08, 2023 @05:48PM (#35497969)
> So basically you want to hire non-technology-lovers who simply "GSD" and don't care about things like long term maintainability or test coverage (or test runtime, or code quality, or...) because at the end of the day that's just added fees you can charge to the client when you have to revisit the codebase in the future. I see.

No, you have it exactly wrong. What you describe are good development practices that provide actual long term business value. What you want to avoid is someone saying "yeah I'm excited to use the nested lambdas and variants and callbacks and asynchronous systems" because this shows they just want to play with toys, not solve problems the business has like too many bugs, or slow runtime, or missing features. Engineering is about solving problems, and technologies are tools to solve them.

Re:Why and How We Retired Elm at Culture Amp by mynameisvlad on Saturday April 08, 2023 @06:19PM (#35498206)
> What you want to avoid is someone saying "yeah I'm excited to use the nested lambdas and variants and callbacks and asynchronous systems" because this shows they just want to play with toys, not solve problems the business has like too many bugs, or slow runtime, or missing features.

How does that sentence show that, exactly? All it shows is that they're interested in new technologies. That says nothing about whether or not they are interested in "[solving] problems the business has like too many bugs, or slow runtime, or missing features". Those two are not mutually exclusive; one can certainly care about both.

Taking it a step further, who gets excited about "[solving] problems the business has like too many bugs, or slow runtime, or missing features". That certainly sounds like what someone would say to please their interviewer more than anything.

Re:Why and How We Retired Elm at Culture Amp by snovv_crash on Sunday April 09, 2023 @11:03AM (#35503386)
> How does that sentence show that, exactly?

On its own, it doesn't. But if they don't show some interest in what the business is doing as well, it's a red flag, because they will probably end up building something the business doesn't want or need, or fulfill requirements without foresight or understanding into future business direction, but rather based on what they find stimulating (aka more complicated than necessary, at the limits of their understanding).

> Taking it a step further, who gets excited about "[solving] problems the business has like too many bugs, or slow runtime, or missing features". That certainly sounds like what someone would say to please their interviewer more than anything.

Anybody working in a small team where you have embedded people from all aspects of the business and work together to make the company successful.

So, me, and everyone I'm interested in working with?

If you're in a giant company and the only satisfaction you can get from your work is the toys you get to play with, to me it's just a sign of corporate disfunction and misalignment between business and engineering.

Re:Why and How We Retired Elm at Culture Amp by pmarreck on Saturday April 08, 2023 @06:20PM (#35498217)
But interestingly, some of those examples you cited are literally solutions to some of the problems you cited, so... For example, a language like Elixir that has "trivial concurrency and immutability" enables a test suite that can run across all of your cores at once and is deterministically guaranteed (assuming you watch how you touch shared mutable state outside that code, such as a database) to not step on itself while doing so. Compare this to any one of a number of mutable languages (such as Ruby) that claim concurrency but in actuality often contain deep software bugs that result in flagging, nondeterministic tests UNLESS they are run single-core. That is absolutely a solved engineering problem that then may prevent other mitigations like having to run the test suite across 25+ cloud machines (in single-core mode) and waiting 25 minutes for a test result before being able to continue, which then directly increases developer productivity.

Also, being interested in those 2 things is not mutually-exclusive. I LIKE that this is a tangible business result of a fundamental language design decision.

Re:Why and How We Retired Elm at Culture Amp by mrkurt on Saturday April 08, 2023 @06:47PM (#35498405)
If you're after feedback, nothing in this post sounds like a tangible business result to me. It sounds like fun technical wizardry.
Re:Why and How We Retired Elm at Culture Amp by pmarreck on Sunday April 09, 2023 @12:56AM (#35500170)
Being able to run a test suite in parallel on your own machine is massively more useful than having to run it across a bunch of machines in the cloud. First of all, clouds go down (the external-dependency problem), or become unavailable when Internet isn't available (and also cost extra money). Secondly, you get instant (more or less) feedback on whether you broke anything, and that allows you to maintain velocity without having to backpedal. Thirdly, if the suite is run concurrently in a deterministically-random fashion (where it outputs the seed before the suite starts), you can often identify reproducible concurrency bugs that will NOT (or be very unlikely to) show up on your multi-VM cloud test runner (which run all the tests single-threaded on separate machines). Fourthly, if we're talking a functional immutable language, those types of bugs (which are some of the worst and most costly of bugs to track down and fix... I know this from experience, a nondeterministic session-loss bug at Desk that it took me a month to fix likely lost thousands of customers, not to mention the cost of essentially benching me for a month plus the benching cost of the previous devs that took a stab at it and failed) are rarely found to begin with.

Every one of these leads to either more productive employees, lower ongoing costs, or happier customers. How are these not tangible business results?

Re:Why and How We Retired Elm at Culture Amp by pastage on Sunday April 09, 2023 @04:51AM (#35500973)
I am too stuck in single thread front end integration tests to be able to relate. Are you actually talking about testing full stack or just some backend tech. We almost never have problems with our cloud testing, it is expensive. We need it to have some control over the front end work, benefit is that running the back end stuff is trivial and fast.
Re:Why and How We Retired Elm at Culture Amp by pmarreck on Sunday April 09, 2023 @10:44AM (#35503168)
I have a design bias- I pretty much refuse to build anything for the front end that is not easily testable without using a headless browser as part of my test suite. Headless browser driving adds so much more resource consumption and time to the test suite over time that it defeats the entire purpose of a test suite, which is to (as quickly as possible) assess if any logic in the app has begun violating expectations, so you can proceed with building the next thing quickly without backpedaling and without waiting.

I completely understand that individual browsers may have this or that problem or idiosyncrasy and that may need to be tested but I'd put that in QA, not your official standard app test suite. At the most I'd test whether endpoints actually spit out HTML, CSS etc. but not actually check the rendering step. I do have a JS suite as part of my full test that uses jsdom to check DOM manipulation but it is only because it is not resource-intensive and runs fast.

Re:Why and How We Retired Elm at Culture Amp by mrkurt on Sunday April 09, 2023 @12:53PM (#35504391)
Oh I agree with the potential technical benefits. I think the business justification is pretty weak, though.

The business benefits you listed are defensive. That is, if the business is doing well, those are things you might optimize for. The same way you'd, say, try and decrease power consumption.

There are companies where an order of magnitude decrease in ongoing costs opens allows a whole new kind of product. But order of magnitude increases in the things you just listed are rarely developer process improvements or refactors.

Customer happiness is a fun one. If you have a buggy or unreliable app, you'll frustrate customers (I am very aware of this, if you check my post history). You won't _make them happy_ just by building reliable software though.

As someone whose #1 priority is reliability right now – fixing bugs faster very low on the list of things that matter. The problems users have with our platform are a combination of the wrong architecture, and non existent tooling for customer communications.

Which gets back to the original post. We want to hire devs who can identify out what our users need most today, figure out what we can do about it (if we can at all), and then implement what makes sense.

Re:Why and How We Retired Elm at Culture Amp by pmarreck on Monday April 10, 2023 @09:14PM (#35519439)
I see your points, and were I at a company currently (I'm looking), I would prioritize the business-leading things, of course.

> #1 priority is reliability

Yeah, mine is too. (In fact, I think we're approaching a crisis of reliability out there, if we're not there already.) That's why I went with Elixir, and it's paid off so far. The only time the site's been down in years is due to my hosting provider, not me... (So of course I'm looking for another hosting provider...) I have to deal with the occasional 500 errors as well, which, as it turns out, are also largely due to my hosting provider and not my code (but sometimes my code...).

The thing I realized about reliability way too late is this: The utility of a service (or a person) to a person drops off VERY quickly if you dip below 99% reliability (or arguably, 99.9% reliability). Something (or someone) that is 90% reliable is practically useless, because it is bound to fail at the worst possible time. So in all the software I write, I focus on this, and in all my relationships with people (or orgs, or bosses, or my son, or my S.O.), I know that if I commit to them, I must be as reliable as humanly possible because the costs of every slip-up are huge and rise exponentially as they accrue.

An example of a service that is just unreliable enough to be a huge annoyance (which has also caused bad communication failures as well in my experience) is SMS. SMS failures are the worst.

Re:Why and How We Retired Elm at Culture Amp by snovv_crash on Sunday April 09, 2023 @11:19AM (#35503550)
If you can explain why you like them in terms of business value they provide, in the context of the specific problem this code is meant to solve, then I agree.

But without these, it's like hiring a construction worker who will use any excuse to use a backhoe, even when it isn't suitable, just because they love operating it. It's childish and unprofessional, and as an employer, even if you have full time backhoe work for them to do, you want to avoid hiring them, because they'll probably cause a lot of damage to your building site driving the backhoe everywhere when a wheelbarrow would have been more suitable.

Elixir is great for massively parallel web facing problems, and if you can explain it as a tool you have in your toolbox for solving this kind of problem then great. But if you say Elixir is awesome and then want to use it to generate graphs from CSV files for internal business metrics, you've lost me.

Re:Why and How We Retired Elm at Culture Amp by pmarreck on Monday April 10, 2023 @09:06PM (#35519381)
I think the majority of programmers don't have that problem, especially with semi-regular discussion/contact.

In the past, when I really wanted to try something and the boss didn't agree with spending work time on it, I spent my weekend time on it (back before I had a kid- Seems like a luxury, now!). Most of the time, I came up with something I could demonstrate on the following Monday which got accepted. Sometimes, it didn't, or my hunch/effort was unsuccessful (but I wasn't unhappy because at least I tried).

Re:Why and How We Retired Elm at Culture Amp by weatherlight on Thursday April 13, 2023 @04:40PM (#35561744)
> But if you say Elixir is awesome and then want to use it to generate graphs from CSV files for internal business metrics, you've lost me.

uhhh, so Elixir is a general purpose language that solves everyday problems. and just happens to havethis phenomenal almost "no-code" solution to literally the problem you just presented, with Elixir Livebook.

...

The VM is 35 years old. The syntax is Algol inspired, the Elixir syntax is 10 years old, FP as a paradigm has been around since 1958.

It's not some new and shiny toy, it's simply unfamiliar to you.

Re:Why and How We Retired Elm at Culture Amp by wpietri on Sunday April 09, 2023 @12:29AM (#35500063)
> So basically you want to hire non-technology-lovers

That is pretty far from what I said. Try again?

Re:Why and How We Retired Elm at Culture Amp by pmarreck on Sunday April 09, 2023 @11:14AM (#35503498)
Alright, I will.

> One kind of bad hire is the technology-lover who values their own preferences over the needs of the business.

OK. This is not a mutually-exclusive relationship. One can prioritize both of these; the best team player will prioritize the needs of the business (and the team) more, however. This to me seems like you're really addressing the problem of "vanity/primadonna devs" who are not team players, and not just devs who really like certain technologies which will possibly blind them.

I also think experience tempers this quite a bit. I've certainly had dev experiences where I became enamored with an idea or trendy tech, felt I absolutely had to implement it, and then ended up regretting it later. I think this happens a lot with younger devs and that's OK because that's how you learn. (Make sure they get assigned the mess cleanup when it doesn't work out though. LOL)

Re:Why and How We Retired Elm at Culture Amp by wpietri on Sunday April 09, 2023 @08:17PM (#35507770)
At hiring time, it can be very hard to tell the difference between "vanity/primadonna devs" and "devs who really like certain technologies which will possibly blind them". And even among the latter group, there are tradeoffs in hiring them. There are many reasonable places to set the dial on how much a hiring manager wants to take risks on that. But I maintain that, as with many other hiring criteria, erring on the side of caution is a reasonable choice. As I said, I think being excited about a cool language is a mixed signal.
Re:Why and How We Retired Elm at Culture Amp by catiopatio on Saturday April 08, 2023 @05:04PM (#35497604)
> The remaining part of the team tried picking it up, but it was too alien, either because of the FPness or just because the code was opaque.

Sounds like they hired people unqualified to take over product maintenance.

If your engineers can’t wrap their head around ”FP-ish” JavaScript, they’re not exactly batting .300.

Re:Why and How We Retired Elm at Culture Amp by seattle_spring on Saturday April 08, 2023 @05:26PM (#35497797)
There’s plenty of code that can be so complicated that it becomes easier to rewrite versus understand. I worked with a coworkers who made the most absolutely spaghetti-like JS modules, insisting on event emitters and queues and stuff like that for even the most basic tasks. The result was an incomprehensible mishmash of events shooting from file to file to file. Touching how these events were handled in some way might destroy how they were interpreted for completely different tasks, it was wild. It’s very possible that the code in question wasn’t just opaque because it was “FP-ish”, giving the parent the benefit of the doubt.
Re:Why and How We Retired Elm at Culture Amp by snovv_crash on Saturday April 08, 2023 @05:50PM (#35497988)
Exactly. Code that is too asynchronous with lots of pubsub basically turns into GOTOs with data - there's no way to trace the execution step by step.
Re:Why and How We Retired Elm at Culture Amp by Kamq on Saturday April 08, 2023 @07:06PM (#35498507)
At least gotos generally tell you where they're going.
Re:Why and How We Retired Elm at Culture Amp by wpietri on Sunday April 09, 2023 @01:10AM (#35500218)
Depends on what you mean by "FP-ish". I never saw this code, but the way this was described to me as high church FP, the kind of people who really wanted to be working in an ivory tower FP language and so had coded as if that's what they were using.

I don't think it's unreasonable for average Javascript programmers to look at that and say, "WTF", the same way that they'd look at code from somebody who wrote C in Javascript.

Re:Why and How We Retired Elm at Culture Amp by duxup on Saturday April 08, 2023 @06:42PM (#35498374)
I feel like we just went back from “it doesn’t matter need to filter somehow” back to “it matters”.
Re:Why and How We Retired Elm at Culture Amp by heelix on Sunday April 09, 2023 @10:36AM (#35503099)
Of course you blindly throw out 30% of the resumes -- you want to filter out the unlucky candidates. :P
Re:Why and How We Retired Elm at Culture Amp by _the_inflator on Saturday April 08, 2023 @03:53PM (#35496959)
I totally agree. I engraved Angular 2016 in our Tech Stack. Fast forward 7 years now, and we are on Angular 14.

Accomplishments so far? Large and stable platform as well as a Low Code Editor on top of it. We systematically componenized every useful piece of Frontend there was and evolved from a library into a platform, while other departments jumped ship every now and then (jQuery, React, Vue, etc.). After years of resistance all finally joined out platform, because it is fast, stable, convenient.

Moral of the story: consistency is everything. A tool is a tool.

Re:Why and How We Retired Elm at Culture Amp by wpietri on Saturday April 08, 2023 @04:12PM (#35497130)
For sure. I used to be a real tech snob. And I still like experimenting. But I've had to admit that the particular technology used just doesn't make the difference I would like it to. E.g., PHP is a "fractal of bad design" [1], but Facebook seems to be an ok business. Or Javascript was clearly a frightful hack job to start, barely adequate for mouse rollovers and a little form validation, but now you see plenty of companies doing fine using it front end and back. These days I would much rather have a good team and a good culture than my favorite technology.

[1] https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

Re:Why and How We Retired Elm at Culture Amp by valenterry on Saturday April 08, 2023 @05:48PM (#35497966)
Facebook hired dedicated people to invent their own hack-language over PHP to deal with PHPs problems.

Sure, a business can succeed with a crappy language. But that doesn't mean the language has no impact, otherwise Facebook would have just sticked to it.

Re:Why and How We Retired Elm at Culture Amp by wpietri on Sunday April 09, 2023 @12:32AM (#35500086)
I don't believe that I said language had no impact. What I said was, "the particular technology used just doesn't make the difference I would like it to".
Re:Why and How We Retired Elm at Culture Amp by valenterry on Sunday April 09, 2023 @04:35AM (#35500915)
I guess I misinterpreted it, sorry for that.
Re:Why and How We Retired Elm at Culture Amp by valenterry on Saturday April 08, 2023 @05:18PM (#35497733)
Sounds more like it was about consistency rather than about boring vs. exciting technology.

Because 1.) Angular was still "the hot shit" at the time, 2.) React was already there, so you could have chosen that as well and it would have still been here.

Re:Why and How We Retired Elm at Culture Amp by yCombLinks on Saturday April 08, 2023 @07:05PM (#35498501)
Agree completely. I prefer react over angular, but when you have everyone working with the same tech stack, and all of your apps look the same, it's very easy to always be productive. How does service x work? Oh, just like the last 3 I worked on. Context switching isn't just expensive in the short term, it's expensive over weeks and months for these kinds of decisions.
Re:Why and How We Retired Elm at Culture Amp by CoastalCoder on Saturday April 08, 2023 @04:25PM (#35497256)
> Most hiring rules have notable false negative rates and that's fine because you have multiple applicants per position and because getting it wrong can be very expensive.

I think it depends on how you define "fine". Perhaps "fine" from the hiring company, but it externalizes the cost of wasted job leads for candidates.

Re:Why and How We Retired Elm at Culture Amp by mrighele on Saturday April 08, 2023 @04:47PM (#35497448)
If you think that a technology/language/etc is cool and better than the rest but it is not as common as <mainstream thing>, of course you’d be excited to learn that a company is using it.

If you’re a company that chose a very niche language because <a number of reasons> and discard an applicant because he likes the same very reasons, LOL, you’re a bunch of idiots

Re:Why and How We Retired Elm at Culture Amp by satvikpendem on Saturday April 08, 2023 @05:45PM (#35497950)
Well, they're moving away from said language, so why would they want to hire someone who joined because they liked Elm but then doesn't get to use Elm at work? They're more likely to leave the company than someone who doesn't really care so particularly about Elm (or whatever language or tool it may be). So in OP's case, it's a sound business decision.
Re:Why and How We Retired Elm at Culture Amp by javcasas on Sunday April 09, 2023 @09:06AM (#35502368)
Adversarial take: if your company says it does Elm, then hires people (who took Elm as part of the decision of joining) and then decides to stop using Elm, why should we push the guilt of leaving to the employee? I mean, it looks a bit like bait-and-switch, and "We the company altered the deal, pray we don't alter it any further".

How is that employees should be loyal to any decision upper management does? What's the limit? What if the company decides to go into JBoss/JQuery? What if the company decides to stop doing software altogether? What if the company becomes a mercenary army a-la-Wagner? Where do we place the line between employee is guilty for not continuing/company is guilty for changing everything that matters?

Re:Why and How We Retired Elm at Culture Amp by satvikpendem on Sunday April 09, 2023 @10:42AM (#35503146)
I think you're reading guilt where there is none. I just mentioned that it's a sound business decision, as well as a better decision for the employee who likes Elm, to not hire people who like using a tool your company no longer uses. There's no guilt on either side, it's just pragmatism.
Re:Why and How We Retired Elm at Culture Amp by wpietri on Sunday April 09, 2023 @12:27AM (#35500050)
I don't believe that's what they said.
Re:Why and How We Retired Elm at Culture Amp by throwawaymaths on Saturday April 08, 2023 @05:05PM (#35497621)
I mean it depends, right? There are several technologies out there that are fantastic because they are less annoying, have fewer footguns, easy to debug, easy to read, good tooling (docs, tests, package management), and respect the programmer's sanity. Is it wrong to only want to work with such systems? If some company rejects me because I'm a tech stack fanboy without asking and understanding why I care about the stacks that I do, that means they don't respect my sanity. Hate to say it, but most "boring" technologies with a legacy from, say, pre-2000-ish, cared zero about those things.

So, great. Buh-bye.

Nb: many technologies post-2k also don't care about those things. So yeah, don't be shiny new on those either.

Re:Why and How We Retired Elm at Culture Amp by wpietri on Sunday April 09, 2023 @01:13AM (#35500225)
Sure, but you're now evaluating the technology in business terms. That's very different than somebody who loves the ideas of a language. I don't want to start a language war, so I won't name one. But consider all the developers who were very excited about "blockchain" not because it improved anything practical for their projects, but because it was a hot concept.
Re:Why and How We Retired Elm at Culture Amp by throwawaymaths on Sunday April 09, 2023 @11:37AM (#35503728)
The point is there are languages where the "ideas" of the language are these "business" ideas. Technical choices can also lead to good/bad developer ergonomics.
Re:Why and How We Retired Elm at Culture Amp by wpietri on Sunday April 09, 2023 @08:20PM (#35507782)
Do you really believe that there's an experienced developer who doesn't believe, "Technical choices can also lead to good/bad developer ergonomics"? Maybe try assuming I already know the basics of the field.
Re:Why and How We Retired Elm at Culture Amp by marcosdumay on Saturday April 08, 2023 @05:20PM (#35497749)
The plenty of fish on the sea argument don't hold if you enforce a systematic bias.
Re:Why and How We Retired Elm at Culture Amp by ajmurmann on Saturday April 08, 2023 @05:27PM (#35497806)
This is the right attitude. I make a conscious effort to find reasons not to use a technology in excited about at work because my excitement otherwise will bias the decision in the other direction.
Re:Why and How We Retired Elm at Culture Amp by bcrosby95 on Saturday April 08, 2023 @06:15PM (#35498184)
It's funny because that slide shows why we use Elixir. With the clustering BEAM offers out of the box we've been able to eliminate things like memcached, redis, and rabbitmq from our production environment.

But most people wouldn't call Elixir "boring tech".

Re:Why and How We Retired Elm at Culture Amp by ParetoOptimal on Sunday April 09, 2023 @12:16AM (#35500002)
> But most people wouldn't call Elixir "boring tech".

In the sense most people mean boring, Haskell with sum types, pattern matching, and pure functions is the most boring someone could ever hope to get.

However, most people wouldn't consider that boring either :)