What advice would you give to someone who is trying to teach themselves software development skills? I’m doing that right now, and I’m finding it easy to understand, yet difficult to implement in computer code. I want to move onto more advanced stuff, but I feel that I don’t have enough experience quite yet. What skills/courses would you recommend I take? How did you get better on your coding journey? Any tips to make the process go faster? Thanks in advance!

  • douglasg14b@programming.dev
    link
    fedilink
    English
    arrow-up
    7
    ·
    1 year ago

    Software has to model the real world, and the real world is complex. Not to mention that software is not a perfect abstraction, you will have to solve hard problems such as scaling.

    Software complexity is unavoidable, how you reduce and control the impacts of that complexity is how you build maintainable software.

    Are you sure you should be answering questions here?🤔

    • nibblebit@programming.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      This is a great argument. There will always be a healthy friction between the need to model reality in software form and the option of keeping software lean and adapt reality to better fit the solution. Both require really good human-to-human communication skills and sharp comprehension of the real problem.

      • douglasg14b@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        1 year ago

        Good up front understanding of your problem space goes a long way. You don’t need to waterfall it, but you should at the minimum have a high level view of the problem and your proposed solution(s). With considerations of where the team/domain might go wrong, where we expect to find pain points, and what sort of mitigations should be considered for those.

        Your planning will not survive reality, and that’s okay. You are already further ahead as a result of some high level consideration than you might otherwise be, and hopefully you have built your software under the assumption that you will be learning and changing as you go.

        Human to human interaction is a baseline necessity for any large work for any field TBF. It’s also hard failing point full of nuance, and doesn’t really have a panacea as humans are the more complex parts of any system.


        Software is hard, not treating it as such means devs will build complex systems because they focused too much on “simplicity”. Missing the forest for the trees.

    • Sagar Acharya@sopuli.xyz
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      4
      ·
      1 year ago

      Welcome to suckless.org

      Yes, some things need optimization but most don’t. Today, there is unnecessary complication by having a billion dependencies and using autocode generators which generate 10k lines of code from 100 lines.

      • douglasg14b@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        1 year ago

        You are conflating necessary complexity vs unnecessary complexity. And assuming that all things are the later, without acknowledging that yes there are many applications that must scale, and that most non-trivial applications must deal with real world complexity. Nevermind scaling being a simple example of a complex problem, not a statement about it’s necessity…

        I would expect devs here to be experienced enough to understand and differentiate those two, as such assuming the worst isn’t a good fit and prevents fruitful discussion.

        I would suggest you reconsider the premise you are using here, you appear to be here to complain, not to share and learn.

        • Sagar Acharya@sopuli.xyz
          link
          fedilink
          English
          arrow-up
          1
          arrow-down
          3
          ·
          1 year ago

          Give me an example of some software. Implementations of models for weather prediction, CAD softwares, games is difficult, but most software is simple. Even the above softwares don’t require the kind of today is served. What do you do in software?

          In simple language, code is implementation of some logic into a set of sequential binary. It doesn’t have to be complex at all! On the contrary, it’s meant to be simple. If it isn’t simple, your algorithm is logically unsound.