• FooBarrington@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      11 months ago

      Ah, good!

      I feel like there is a fundamental difference between developers with a data-centric perspective, and a function-centric perspective.

      The function-centric one is about adding functionality, and it’s what developers start out with. You have functions that do things, and if requirements change or the thing should be re-used - no problem, I can quickly add a new toggle parameter here or bolt it on over there. I’ll be done in 5 minutes, no problem!

      Then, over time, you learn that functionality isn’t that interesting or difficult. Instead, the hard parts are the ones concerning the flow of data through your application. What do I know about the shape of my data in this part of my application? What can I be sure of regarding invariants over there? This forces you to build modular software without interdependencies, because - in the end - you just build a library that has small adapters to the outside world.

      I like scripting languages a lot, but it’s way too easy to become “good” at that style of programming, and the better you get at it, the harder it will be to actually move forward to a data-centric perspective. It’s a local maximum that can trap people, sometimes for their whole career. That’s why I try to look at typing experience when evaluating candidates for positions.

      • gandalf_der_12te@feddit.de
        link
        fedilink
        arrow-up
        0
        ·
        11 months ago

        That’s true.

        It’s also true in other fields. For example, take far-eastern fighting skills:

        Young students will try to hit someone, to beat someone up, to hit a target, to become “stronger”.

        Experienced teachers, however, don’t really care about hitting a target. It’s all about the posture. How you stand. How you carry out your movements.