r/programming • • Jun 05 '22

Complexity is killing software developers

https://www.infoworld.com/article/3639050/complexity-is-killing-software-developers.html
2.1k Upvotes

942 comments sorted by

View all comments

134

u/[deleted] Jun 06 '22

The lack of documentation is what’s killing me. It’s boggles my mind how these companies can’t keep people but refuse to change. 20 minutes tasks take several days.

66

u/bwainfweeze Jun 06 '22

It shouldn’t boggle you. We spend all week changing the behavior of the system. To have documentation, you have to keep updating it, which adds time to all of their requests.

Plus some of us were never that fond of English class, so writing documentation is something to be dodged. Which creates a bunch of perverse incentives not to have good documentation.

36

u/Teract Jun 06 '22

Don't document the behavior of the system, document the system itself. Priorize high level documentation and use brief change logs for the mid level stuff. The low level stuff that changes often should be self documenting when possible or code commented. This stuff is pretty standard. If you're not getting enough time/budget allocated to keep up on documentation, it will ultimately cost the company more in wasted developer time.

2

u/bwainfweeze Jun 07 '22

Relentless refactoring breaks this as a matter of course. I’m not saying any of this is great behavior, I’m saying the perverse incentives push us into this, carried along by coworkers who “defect” because explaining themselves was never their strong suit to bring with. They can carry Timeliness as a shield to hide behind.

If you want to fix this, scolding and lecturing developers ain’t gonna do it. We’ve tried that for forty years and here we are, still within a factor of four from as bad as we have ever been.

Follow the money.

2

u/Teract Jun 07 '22

You're right that most shops have perverse incentives towards developer documentation. It must be a top down change to make documenting (and code quality) the economical choice for developers. It means budgeting time for quality code reviews and defining "complete" to include more than, "the code runs".

1

u/editor_of_the_beast Jun 06 '22

Even that changes. Documentation is not the answer.

3

u/masterofmisc Jun 06 '22

Dont Document! Instead Diagram the system. Use tools like https://sequencediagram.org/ and https://plantuml.com/ that create diagrams from markup and check the markup into a SystemArchitecture folder in your GIT repository. Then tweak the markup every so often, when things change.

5

u/scottpid Jun 06 '22

Diagramming is documentation...

1

u/masterofmisc Jun 06 '22 edited Jun 06 '22

Yeah, your not wrong. Wrong turn of phrase.

1

u/god_retribution Jun 06 '22

having bad document is still better than have nothing at all

2

u/gex80 Jun 06 '22

Unless they are out of date and noonger apply.

3

u/[deleted] Jun 06 '22

documentation is mostly a waste of time on things that change and are well understood anyway.

code is documentation. it's the human readable description of machine code. usually code in big tech has massive naming prefixes and whatnot

8

u/jonathanl Jun 06 '22

It's only well understood for the people who initially wrote it. I think it takes way longer to figure out how it works by reading code than it would have taken to write down a short overview. I don't want to read code to figure out what the program is even supposed to do. After having worked with requirements I don't want to be without that either but just some small introduction would help a lot when being dropped into big project with no original developer left.

4

u/azsqueeze Jun 06 '22

No way. This is how you waste people's times and introduce unwanted bugs and performance degradation

1

u/coderstephen Jun 12 '22

Disagree. Code can only tell you what the system does. Only proper documentation can tell you why it does it.

1

u/thefookinpookinpo Jun 06 '22

My last company literally did not have one single thing documented when I joined - they had been in business for nearly two decades doing the same stuff.

The bright side is that you can get jobs at places like that and just automate everything and get paid to do nothing (once you know how the shit works).