Another excellent piece from Iris Meredith - strongly recommend reading if you want an idea of how to un-fuck software as a field.

  • istewart@awful.systems
    link
    fedilink
    English
    arrow-up
    4
    ·
    4 hours ago

    The point about a static site generator being an ideal intro project is well-taken. I’m working my way through Practical Common Lisp right now, as it’s recommended as one of the best CL intro books, and its intro project of an MP3 database is only barely relevant to me because I still have a stash of MP3s I started building up around the time of the book’s original publication.

    I struggle to imagine what might supplant the HTML generator suggestion in the future. If anything, its desirability is made more apparent by the proliferation of JS monoliths all over the Web. You can show students how quickly it renders compared to a corporate website or heavyweight social-media feed, use that as an introduction to performance considerations and profiling, introduce modularity by bolting on a more dynamic framework piece-by-piece…

  • swlabr@awful.systems
    link
    fedilink
    English
    arrow-up
    5
    ·
    12 hours ago

    I completely agree with this. Good, lucid, concise commentary on CS/SE education and how to improve it. If I had written this article I’d just be telling people to ban python in coding education.

    • BlueMonday1984@awful.systemsOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      12 hours ago

      If I had written this article I’d just be telling people to ban python in coding education.

      I’d be happy to hear your reasons why.

      • Architeuthis@awful.systems
        link
        fedilink
        English
        arrow-up
        5
        ·
        10 hours ago

        Not who you asked, but both python and javascript have code smell as a core language feature and we are stuck with them by accident of history, not because anyone in particular thought it would be such a great idea for them to overshoot their original purpose to such a comical degree.

        Also there’s a long history of languages meant to be used as an introduction to coding being spun off into ridiculously verbose enterprise equivalents that then everyone had to deal with (see delphi and visual basic) so there’s certainly a case for refusing to cede any more ground to dollar store editions of useful stuff under the guise of education.

      • swlabr@awful.systems
        link
        fedilink
        English
        arrow-up
        6
        ·
        11 hours ago

        Short version is that 10-15 years ago, when I was a student, it had the same “vibe” as vibe coding has today, i.e. the promise of easy implementation, but with the final product being sloppy, unreadable and buggy.

        • MCHEVA@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          3 hours ago

          What do you suggest to learn instead? I’m teaching myself python because I wanted to understand coding more. Also because a lot of the tinkering with micro controllers can be done with micro python. So I have things I want to do with it too, future projects I want to create.

          Funnily enough like the article mentions I taught myself HTML first in the early 00s. I did enjoy it but never used it much outside of the odd geocities website. This article does make me think maybe I need to revisit that too.

          I also considered other languages to start on like maybe some kind of C or Basic but ultimately python felt like it was the most popular suggestion for newbs. I can always learn other things later.

          • swlabr@awful.systems
            link
            fedilink
            English
            arrow-up
            4
            ·
            3 hours ago

            There is nothing wrong with learning python in general or as a first language. My gripe is more that if you self teach it with no software engineering thought, you end up with some real bad habits that lead to bad code, like:

            • not documenting code with comments etc.
            • not testing
            • not understanding data types
            • RE: micropython, and other python wrappers: not understanding the underlying wrapped thing.
            • complaining when other languages are as easy or convenient as python

            So as long as you avoid that you might be good.

            Also specifically with micropython: it’s good to get something working, just don’t expect it to be fast. And if you want it to be fast, you’re going to have to learn C.

            • MCHEVA@lemmy.world
              link
              fedilink
              English
              arrow-up
              2
              ·
              42 minutes ago

              Those are some valid points and definitely things I’m trying to be mindful of. Especially since I’m just teaching myself and at this point everything I’m doing is in a vacuum by myself, but if I want to get to the point where I can share my code and work with other people on projects I need to be doing it in a way that it’s understandable to anyone else (and myself).

              I think the next thing i’ll lear will be C it seems a lot of what I want to do needs that too, so that will be fun. Thanks!

        • diz@awful.systems
          link
          fedilink
          English
          arrow-up
          6
          ·
          edit-2
          10 hours ago

          Python code really requires 100% branch coverage tests as an absolute minimim… with statically typed languages the compiler will catch some types of bugs in branches you don’t test, with python chances are it won’t.

          edit: basically think of non covered lines the way you think about files you didn’t compile.

          • swlabr@awful.systems
            link
            fedilink
            English
            arrow-up
            2
            ·
            3 hours ago

            Great question that I don’t have a good answer to. My bit about python was more just a throwaway joke that was also supposed to indicate that my own opinions aren’t sufficient to write the linked article.

            Here are some wrong answers, but with reasons for and none against:

            • Assembly: really gets you to understand that you are contending with a computer chip, and that anything interesting that you want to do requires abstraction.
            • C: similar to the above, but also gets you to understand some of the fundamental aspects of programming languages, mostly memory.
            • Perl: if you’re willing to teach python, why not Perl? Less readable, more magic, fun language to play golf with, so tutorial exercises could be fun.

            By coincidence, these are the first three languages that I encountered as a CS student with no preexisting knowledge of programming (not in this order).

            Anyway, for something approaching a real suggestion: Dart/Flutter could be an interesting choice, for some of the reasons given in the article for HTML. I haven’t given this much thought so this might still be a bad answer. Also this is the language I’m using at work right now.

            • smiletolerantly@awful.systems
              link
              fedilink
              English
              arrow-up
              2
              ·
              2 hours ago

              Gotcha. It’s still a fun question to think about though.

              My uni switched from teaching their intro classes in Java to python the year before I started, and in defense of python, I have to say: it’s so simple for small things, that it gets out of the way in the classroom. Sure, it’s not great for big projects, but it is very easy to demonstrate concepts in a readable manner.

              (That was the second program I enrolled in, btw. The first one, at another uni, they started with Haskell. No joke. And while I do appreciate Haskell and functional languages in general now, maybe in part due to this, it just got in the way of the concepts they were actually trying to teach.)

              But in any case: uni isn’t really there to teach you to code. That’s something you are supposed to pick up on along the way, or on the job.

            • blakestacey@awful.systems
              link
              fedilink
              English
              arrow-up
              3
              ·
              3 hours ago

              I got my start with line-number BASIC, MS-DOS batch files and x86 assembly.

              Oh, and once in college, I got really high and made a Visual Basic program that had no graphical user interface.