• Mick Moignard (unregistered)

    Offshore or even offsite teams are never in my experience worth anything which has any positive measure.

  • 516052 (unregistered)

    In my experience it's more like "Pay me a little now or pay me a lot more later."

  • (nodebb)

    Incidentally, I hate the const foo = (bar) => { something; } style of function declaration. It's so ugly. Just use the good old function foo(bar) { something; } style.

  • (nodebb)

    blah.blah.blah.visibility="hidden";

    blah.blah.blah.show(true);

    Same thing????

    Addendum 2026-05-13 09:12:

    Incidentally, I hate the const foo = (bar) => { something; } style of function declaration. It's so ugly. Just use the good old function foo(bar) { something; } style.

    ^^^ YES!! ^^^

  • Darren (unregistered)

    I'm so glad I don't have to deal with React. Reading that snippet and the description of how it "works" (several times) has made me sad.

    Also, I'm with Maia-Everett on the function declaration thing.

  • LegacyWarrior (unregistered) in reply to Maia-Everett

    There are actual lexical differences between using arrow functions and traditional function definitions with how the bind to the this. I foot-gunned myself over this for weeks trying to get callback functions for a 3rd party library working correctly. So there's a huge difference between.

    function myCallBackFunctionOne(prop) { something that references the current context; } coolLibrary.registerCallback('onAction', myCallBackFunctionOne);

    and

    const myCallbackFunctionTwo = (prop) => { something that references the current context }; coolLibrary.registerCallback('onAction', myCallBackFunctionTwo);

    It's more than just being "ugly". And when writing things like array filters / sorts i think it's hard to argue that the "function" syntax is "prettier".

    [1,2,3,4,5].filter(v => v % 2); [1,2,3,4,5].filter(function(v) { return v % 2; });

  • Ternary King (unregistered)

    I don't think that will work, indeed, React does a diff on the state so it won't rerender if you set it to the initial value. But I wouldn't swear to that.

  • Argle (unregistered)

    OMG, do I ever relate to this comment from the submitter:

    Got hired to cleanup a mission critical website for a company that had just learned that offshore teams might not be worth the cost saving measures.

    The short form of this is, an American pair of developers had the bright idea to be low bidders on a project by having the fantasy of outsourcing all their work to India. Those of you who have been there and done that know that the end of the story is that the cost overruns blew so high as to be triple the cost of the 2nd highest bidder.

    Remy, when you're ready for more WTFs from that story alone, sing out! :-)

  • (author) in reply to Argle

    I'm always ready for more stories like that!

  • PotatoEngineer (unregistered) in reply to LegacyWarrior

    And, to follow on to "arrow-functions are different from regular functions", the arrow-functions () => {...} will, 99% of the time, do exactly what you wanted. The "function" declaration leaves "this" as "whatever it was before, usually the global window object unless some caller above you bound 'this' to something else", which is not typically what you're thinking of, especially if you're writing a member function of a class.

    VanillaJS has some really annoying conventions.

  • (nodebb) in reply to LegacyWarrior

    There are actual lexical differences between using arrow functions and traditional function definitions with how the bind to the this.

    The WTFs just keep piling up.

  • (nodebb) in reply to Bananafish

    blah.blah.blah.visibility="hidden";

    blah.blah.blah.show(true);

    Same thing????

    I think show(true) is a typo in the article; it should be setWidth(true). But there is a difference in CSS between display: none and visibility:hidden: the second one will lay out the page as though the item were there but leave that section blank.

  • (nodebb) in reply to jkshapiro

    But there is a difference in CSS between display: none and visibility:hidden: the second one will lay out the page as though the item were there but leave that section blank.

    I'm not a web developer, but I have made mods to existing code. My only real experience with this type of thing is where multiple divs have the same absolute addresses, and an event causes one to be visible and all the others to be hidden - like clicking a tab on a form to display alternate sets of fields for an object. So, in my head, it does the same thing but I think you're saying the real estate consumed by the div would be "free" for other elements to write into.

    ... was so much easier in the days of blinking rainbow text :D

  • airdrik (unregistered)

    so... isn't the current generation of agentic AI just the next generation of (cheap) offshore dev teams? Seem to be plenty of companies out there treating it as such, and the quality is ...

  • (nodebb) in reply to airdrik

    isn't the current generation of agentic AI just the next generation of (cheap) offshore dev teams?

    It's rapidly becoming much more expensive. Who knew that corporations wouldn't want to offer services indefinitely at far below cost?

Leave a comment on “Over and Under Reaction”

Log In or post as a guest

Replying to comment #698114:

« Return to Article