13

!rant, probably, even though kind of yes, but not overt

i just realized something: software doesn't take lot of effort and time to change because it would be difficult to make a change.

it takes lot of effort and time to change because making the change is easy, but inspecting and debugging what other things the change affects takes most of the time and effort.

it would be nice if project managers were able to wrap their head around this.

tl;dr i can make the change right now in 5 minutes, but it's going to take me an hour to check if me changing that didn't break something else.

Comments
  • 4
    "i can make the change right now in 5 minutes, but it's going to take me an hour to check if me changing that didn't break something else."

    which is a sign of non-ideal architecture, yes. but when's the last time you encountered ideal architecture?
  • 2
    @Midnight-shcode Yeah, Ideally well written tests are supposed to prevent this. So if you change something they should ring bells if something is broken or has changed.

    But truth be told, with every change in software, bugs that no one though of, and that no tests cover are just going to pile up until someone finds it, either a tester or an actual user... You can save some of it with good architecture but often we get changes that were simply not expected at design time so no matter how good your arch was, it's not gonna hold for long if change requests keep coming in. At least that's my experience
  • 4
    There is no such thing as an ideal architecture that would allow for any change to be easy. Things are not only defined by what they comprise, but as well by what they don't.

    If you were to make an all-emcompassing architecture, that would be a huge shit pile of over-engineered YAGNI.
  • 2
    "Project Manager" - there's your problem right there. Anyone who thinks software is a series of "projects" to be completed and walked away from as opposed to being a "product" that has to be maintained and supported doesn't understand enough about software to be guiding its creation.
  • 1
    i usually prefer adding more code than changing old code. this way i can take control of how the new things are going to look and work , from the scratch. but when it comes to changing something old, then boy oh boy, put that ticket down for 5 days and clean out my jira board.

    time taken for adding 50 files and 10k lines of fresh new code written from the scratch == time taken to understand ,test and implement 100 lines of old code changes, especially when the other dev who worked on this shit has already left.

    and any pm who doesn't understand this metric can go do that task themselves
  • 0
    I mean, the thing you're looking for to fix that problem is called abstraction...

    Code shouldn't depend on the detail of how something is implemented unless it's in the same class/whatever the paradigm equivalent of class is...
  • 0
    I think part of what I hate about Web dev is when you see mocks and assertions that some underlying library function was called so many times. That's defining implementation, and we've already got something to do that. It's called code. Tests should look at state, not implementation.
  • 0
    @Hazarth
    "You can save some of it with good architecture but often we get changes that were simply not expected at design time so no matter how good your arch was, it's not gonna hold for long if change requests keep coming in. At least that's my experience"

    same here, it's about half of the reason why the code i wrote for the current project is as shit as it is.

    the other half is it being php.

    the third half is me possibly never should have becoming a programmer.

    (i *think* i got my fractions right)
  • 0
    @yowhatthefuck
    i usually prefer rewriting old code - just nuking it and writing it again and better.

    isn't too conducive to actually finishing stuff, though.
Add Comment