News for hackers. Stuff that matters.
Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @02:56PM (#34330581)
> Documentation only works up to a point because it can both get out of sync with what the code is doing and because documenting the internals of a complex piece of software is a rare skill. A skill that most developers don’t possess. Most internal documentation only begins to make sense to a developer after they’ve developed an internal mental model of how it all hangs together. Most code documentation becomes useful after you have built the theory in your mind, not before. It operates as a mnemonic for what you already know, not as a tool for learning.

This is ringing particularly true to me right now.

The organization I work for has allowed bit rot to occur for a number of years, to the point that it's becoming increasingly common for things to break whenever even seemingly small changes are implemented.

The "solution" that we've implemented is to require a detailed RFC document whenever you want to create or modify anything. You're required to outline every anticipated step along the way, all the tiny minutiae that you foresee yourself encountering and how you'll deal with it. And in a Google doc, no less.

It's utterly exhausting.

Re:Theory-building and why employee churn is lethal to softw... by sz4kerto on Tuesday January 10, 2023 @03:10PM (#34330777)
Ruthless end-to-end testing helps. Really hard on the short term, pays back on the long term. The suite is the specification.
Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @03:36PM (#34331106)
What about a situation wherein you have a QA team that stands entirely apart from the devs and they are the holders of the specification?
Re:Theory-building and why employee churn is lethal to softw... by bluGill on Tuesday January 10, 2023 @03:59PM (#34331388)
Automate the tests. Sure the QA group holds the final say, but if you have a test that breaks you don't have to ask them. Or at least you have something to base a.conversation on.

Note that requirements change, and bad tests will break on no requirements. Telling the difference is an exercise for the reader.

Re:Theory-building and why employee churn is lethal to softw... by dathinab on Tuesday January 10, 2023 @04:17PM (#34331636)
One of the most common tasks for QA teams is to write automated "outer layer" integration tests.
Re:Theory-building and why employee churn is lethal to softw... by jimmaswell on Tuesday January 10, 2023 @04:41PM (#34331924)
You guys have QA teams that know how to code?
Re:Theory-building and why employee churn is lethal to softw... by BlueTemplar on Tuesday January 10, 2023 @06:43PM (#34333090)
I've seen a recent multi-months training course for testers. Half of it is manual testing (culminating in a website-related project), the other half automated testing which includes learning some Python.
Re:Theory-building and why employee churn is lethal to softw... by bluGill on Wednesday January 11, 2023 @08:41AM (#34338285)
I have multiple QA teams. Some are straight up regular users who cannot write hello world in any language. Others are programmers who got hired to write and maintain our QA end to end suite. A good end to end QA suite for a large project is complex enough that it needs everything any large software project needs: architects, tech leads, and all the other technical staff.
Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @04:01PM (#34331431)
The tests are automated… by the QA team. Using a web-based tool for which none of the devs have access.
Re:Theory-building and why employee churn is lethal to softw... by ghotli on Tuesday January 10, 2023 @04:09PM (#34331535)
I see two ways forward, both probably not great advice.

1. Ask for forgiveness and do whatever you think is prudent regardless of org structure.

2. Find a better org structure elsewhere :)

Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @04:17PM (#34331635)
I tend to agree. When I am capable of summoning the energy to care at this point, I make a run at #1. I have recently decided to actively pursue #2, as well.
Re:Theory-building and why employee churn is lethal to softw... by bluGill on Tuesday January 10, 2023 @04:51PM (#34332070)
Write your own automated tests that you control.
Re:Theory-building and why employee churn is lethal to softw... by lmm on Tuesday January 10, 2023 @05:56PM (#34332679)
Don't do that?
Re:Theory-building and why employee churn is lethal to softw... by nullsense on Wednesday January 11, 2023 @12:54AM (#34335475)
Really don't wish to go back to this. We don't have QA teams or QAs where I work anymore. We can get changes to prod much faster and our test suites are growing to be pretty high quality for the stuff our team owns.
Re:Theory-building and why employee churn is lethal to softw... by naasking on Tuesday January 10, 2023 @03:15PM (#34330832)
100% this.
Re:Theory-building and why employee churn is lethal to softw... by andrewfong on Tuesday January 10, 2023 @03:49PM (#34331256)
That's a good way to prevent regressions but it's not the same thing as documentation or a mental model.

The tests tell you what it's supposed to do, not how it does it.

Re:Theory-building and why employee churn is lethal to softw... by spankalee on Tuesday January 10, 2023 @03:53PM (#34331311)
Or _why_
Re:Theory-building and why employee churn is lethal to softw... by Izkata on Tuesday January 10, 2023 @11:08PM (#34334916)
That's what the commit message that added that test is for. And an example of why I'm strongly against squashing commits.
Re:Theory-building and why employee churn is lethal to softw... by dllthomas on Wednesday January 11, 2023 @01:16PM (#34342134)
For a while now I've been dreaming about a system that lets me link tests to documentation. In a similar way that citations of other documents support claims in many domains, claims about software could be backed up by tests that demonstrate the claim. Then, when a test fails, the system could surface the relevant pieces of documentation (whether they're developer facing or user facing) so the developer knows the _why_ they're trying to preserve as they update some combination of the code, the test, and the documentation.
Re:Theory-building and why employee churn is lethal to softw... by andrewfong on Thursday January 12, 2023 @01:18AM (#34349874)
I'd guess you could get pretty far by just adding comments with links to product specs, JIRA tickets, or Slack/chat threads, as applicable.
Re:Theory-building and why employee churn is lethal to softw... by mjevans on Tuesday January 10, 2023 @03:10PM (#34330782)
Observationally, C and related languages frequently use headers as a documentation and API specification point. The internals aren't revealed, but the expectations are distilled into one easier to reference location. I know I appreciate that more than machine (only) readable blobs that expect auto-doc tools to split out the salient information with the technical signatures. The human curation also allows for ordering that matters to organics who must integrate related data, rather than just alphanumeric enumeration.
Re:Theory-building and why employee churn is lethal to softw... by midoridensha on Tuesday January 10, 2023 @08:14PM (#34333734)
>The internals aren't revealed

They are when devs put all the code into those header files.

Re:Theory-building and why employee churn is lethal to softw... by intelVISA on Tuesday January 10, 2023 @09:36PM (#34334385)
...does that happen? Outside of C++ templates or inlining is there a need to pollute the header file?
Re:Theory-building and why employee churn is lethal to softw... by midoridensha on Tuesday January 10, 2023 @10:57PM (#34334852)
A need? Definitely not. It's terrible practice. Does it happen? Absolutely, I've seen it many times. Why some C++ devs do this, I really don't know; I think it's just laziness.
Re:Theory-building and why employee churn is lethal to softw... by windowshopping on Tuesday January 10, 2023 @03:35PM (#34331094)
Do you work at Squarespace? This was exactly my experience there.
Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @03:36PM (#34331110)
No.
Re:Theory-building and why employee churn is lethal to softw... by mr337 on Tuesday January 10, 2023 @03:02PM (#34330683)
That does sound horrid. Makes green field projects look ever more so nice.
Re:Theory-building and why employee churn is lethal to softw... by ahepp on Tuesday January 10, 2023 @03:45PM (#34331222)
Sure, but your greenfield project today will just be someone else's brownfield project in a couple years
Re:Theory-building and why employee churn is lethal to softw... by birdyrooster on Tuesday January 10, 2023 @02:59PM (#34330620)
Bit rot is such a crappy metaphor.
Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @03:01PM (#34330660)
In this context, I'm using "bit rot" as a metaphor in the same way that the author does:

> The first is that it’s a partial explanation for bitrot, the phenomenon where working software seems to deteriorate even when the code is untouched.

Re:Theory-building and why employee churn is lethal to softw... by birdyrooster on Tuesday January 10, 2023 @03:12PM (#34330811)
Yeah I think it’s a crap metaphor.
Re:Theory-building and why employee churn is lethal to softw... by icedchai on Tuesday January 10, 2023 @03:37PM (#34331124)
It's not 100% accurate, but what metaphor is?

I worked at an organization that had gone years without any updates: 10 year old dependencies that had never been updated, actively developed Python 2 code base in 2022, servers with 1000+ day uptimes and hadn't been updated since before the pandemic, on and on.

It made it difficult to get anything done because you had to wade through a dumpster fire to make the smallest change.

It certainly felt like bit rot to me.

Re:Theory-building and why employee churn is lethal to softw... by kortilla on Tuesday January 10, 2023 @04:11PM (#34331564)
It felt like “bit rot” to you because that’s how you defined “rot”, but it’s not how real rot works, which has nothing to do with changing.

It’s something that just breaks down without any changes in use case. If a wooden bridge rots away, nobody means that they were unable to add extra lanes. They mean it ceased to do what it previously did.

“Code calcification” is likely a better approximation of what you’re trying to convey.

“Bit rot” would be better fitting to actual storage loss, but this industry chose poorly.

Re:Theory-building and why employee churn is lethal to softw... by capitalsigma on Tuesday January 10, 2023 @10:09PM (#34334594)
It's supposed to be a joke, comparing the process of drift in the codebase with physical disintegration. Much like technical debt is not literally a balance owed to another party, or an object is not literally a physical lump of mass, and a class doesn't have a literal parent because it was never born.
Re:Theory-building and why employee churn is lethal to softw... by ahepp on Tuesday January 10, 2023 @04:31PM (#34331806)
Well, the author describes bitrot as:

> the phenomenon where working software seems to deteriorate even when the code is untouched

If the code is touched, and fails to keep up with dependencies, I might argue that's more a case of bit neglect. But maybe that's semantics.

I do agree that bitrot can be real though. Links rot off the web. If you're going to leave a project sitting on git without maintenance, you should probably capture the build context. Like shrink-wrapping a boat and storing it on land rather than just leaving it rusting away in the water for years.

Re:Theory-building and why employee churn is lethal to softw... by DiggyJohnson on Tuesday January 10, 2023 @03:25PM (#34330967)
Why? I'm not even saying you're wrong, necessarily...
Re:Theory-building and why employee churn is lethal to softw... by jacobsenscott on Tuesday January 10, 2023 @04:36PM (#34331866)
I would call it developer rot. The code hasn't changed - and runs just as well (or badly) as the day it was written. It is the developers who somehow lose the ability (I don't know how - just read the code) to work with that code.
Re:Theory-building and why employee churn is lethal to softw... by cjbgkagh on Tuesday January 10, 2023 @03:00PM (#34330651)
Pretty sure it’s a metaphor. Edit: parent comment was edited.
Re:Theory-building and why employee churn is lethal to softw... by birdyrooster on Tuesday January 10, 2023 @03:12PM (#34330812)
A bad one
Re:Theory-building and why employee churn is lethal to softw... by cratermoon on Tuesday January 10, 2023 @03:21PM (#34330902)
Why is it bad? What's a better one? What would a better one look like?
Re:Theory-building and why employee churn is lethal to softw... by tyingq on Tuesday January 10, 2023 @03:42PM (#34331188)
"context rot" is more aligned with what they are describing, though that's not a metaphor. I can see bitrot being a bad fit, as it's decay of the actual thing rather than the surrounding context.
Re:Theory-building and why employee churn is lethal to softw... by cratermoon on Wednesday January 11, 2023 @01:24PM (#34342291)
Except that implies the context has rotted, when in fact the context is fresher than the system within it. While the context may have degraded in some way, the reality is that it's changed according to forces that have acted on it since the code within it was written and deployed. What's rotted is the ability of the system to meaningfully and correctly interact with the context.
Re:Theory-building and why employee churn is lethal to softw... by feoren on Tuesday January 10, 2023 @03:16PM (#34330849)
What do you suggest instead?
Re:Theory-building and why employee churn is lethal to softw... by nycticorax on Tuesday January 10, 2023 @03:35PM (#34331099)
"Software subsidence"? "Digital subsidence"? The problem is that over time, the foundations upon which software is built decay, or need to be replaced...
Re:Theory-building and why employee churn is lethal to softw... by feoren on Tuesday January 10, 2023 @03:39PM (#34331150)
I've worked with geologists and geological data and I had to look up "subsidence". I kinda had a feeling for what it meant, but it certainly didn't bring up any salient imagery nor help me understand the concept, which is kinda the point of a metaphor.
Re:Theory-building and why employee churn is lethal to softw... by nycticorax on Tuesday January 10, 2023 @08:50PM (#34334082)
If you want some salient imagery, take a look at the first image on the Wikipedia page for "Subsidence":

https://en.wikipedia.org/wiki/Subsidence

Re:Theory-building and why employee churn is lethal to softw... by dathinab on Tuesday January 10, 2023 @04:16PM (#34331617)
Worse in my experience the quality of documentation (and tests) decreases the more a company is heading for insolvency for multiple overlapping reasons (at least for "startup| like companies).

This means if you want to buy a struggling or insolvent company it will most likely have bad documentation and tests.

But one of the most common steps when buying a struggling company is firing people (making the company fire people before buying it) and the selection of who goes and stays is rarely a good one. And it sets signals which make it mote likely for further important people to quit.

Re:Theory-building and why employee churn is lethal to softw... by midoridensha on Tuesday January 10, 2023 @08:19PM (#34333803)
I think the reason to buy a struggling company is simply to get access to its IP (patents mainly) and customers, not to take over its operations. If it's struggling, it was already doing things badly and probably can't be saved.

Usually, when I see tech companies purchased, it's because the company wasn't struggling: it was doing quite well, but was small, so a much larger company bought it up in an acquisition to add its capabilities to their own, like the Borg. The big company gets IP, customers, revenue, and an already-working business, while the founders get a big payout.

Re:Theory-building and why employee churn is lethal to softw... by smeagull on Tuesday January 10, 2023 @04:17PM (#34331637)
> The "solution" that we've implemented is to require a detailed RFC document whenever you want to create or modify anything.

I'd suggest just using the documentation. Manuals get used for doing testing and implementation. Using the documentation is like testing for it, and finding those problems right away is the best way I've found to ensuring that the documentation is correct and up to date.

Re:Theory-building and why employee churn is lethal to softw... by jerf on Tuesday January 10, 2023 @04:24PM (#34331724)
"Most internal documentation only begins to make sense to a developer after they’ve developed an internal mental model of how it all hangs together. Most code documentation becomes useful after you have built the theory in your mind, not before. It operates as a mnemonic for what you already know, not as a tool for learning."

This reveals the secret goal of documentation: To build that model, not to document every last detail. The code can do every last detail, it's the model that is hard.

Set out with that goal and... yeah, I can't guarantee success for you either. It's a fundamentally challenging task. But at least you'll be off to a better start than if you think the primary purpose of documentation is to document what happens if you set this combination of flags. That has its place too, certainly, but if I can only pick one, I'd take the high-quality high-level overview over the stuff I can read the code for in 30 seconds.

Re:Theory-building and why employee churn is lethal to softw... by galaxyLogic on Tuesday January 10, 2023 @04:46PM (#34332004)
The mental model really is not in the documentation, it is in the source-code modules how they interact with each other. Therefore I think OOP is a great way for building software. you need to create a mental imaginary world where the objects exist and interact. Then it makes sense.

But like you say it is challenging, even finding good names is hard. But basically, can you write a story about the software working, that would allow readers to understand it? Create user-stories but not (only) about the users but understanding that any module is a "user" of its components.

Re:Theory-building and why employee churn is lethal to softw... by sirmarksalot on Tuesday January 10, 2023 @07:56PM (#34333622)
The thing is every project has mistakes. Things that aren't where they're supposed to be, that somebody means to tidy up sometime later, but just hasn't gotten around to yet. Every project has at least a little bit of a mess somewhere. When all you have to go off of is the code itself, then can be hard to tell the difference between the mess and the design.

A junior dev who comes in without much coaching, might just reference an anti-pattern from the "mess" section and replicate it throughout the code base. And then do that enough times, and a senior dev who gets brought in might conclude that there's no design at all, and that what it really needs is a rewrite.

Re:Theory-building and why employee churn is lethal to softw... by galaxyLogic on Wednesday January 11, 2023 @02:00AM (#34335876)
Good point. And I'm not saying documentation is not needed. But that documentation should document the "theory" that already exists, or should exist in the code. When code is documented we do that in terms of the names of modules and classes and methods that exist in the implementation. But if those don't make much sense then neither does the documentation.

Maybe a good metaphor is to view the code as a simulation of something, and the documentation as the description of what that something is and how it behaves.

For instance say the software implements matrix multiplication. It is easy to document if its "units" correspond to the well-known concepts from the theory of linear algebra. But if the code implemented matrix multiplication but used random names for its modules classes and methods it would be difficult to explain what the code does.

Any explanation must assume that whoever reads it has a basic understanding of the basic concepts the software calculates and manipulates. But as said it is challenging to come up with such a theory and that must be done when the code is written, so the code itself reflects that "theory".

Re:Theory-building and why employee churn is lethal to softw... by smaddox on Tuesday January 10, 2023 @06:11PM (#34332809)
Yeah, I've found the C4 model helpful for finding the appropriate level of abstraction for architecture documentation: https://c4model.com/

Code documentation, in contrast, should be auto-generated from the code.

Re:Theory-building and why employee churn is lethal to softw... by StarlaAtNight on Tuesday January 10, 2023 @10:51PM (#34334823)
Can you auto-generate the description of a function in a Python docstring from the code?

But yeah, totally into auto-generated (great example is dbt’s docs command: https://docs.getdbt.com/docs/collaborate/documentation)

Re:Theory-building and why employee churn is lethal to softw... by cm2012 on Tuesday January 10, 2023 @04:36PM (#34331860)
Friction is the enemy of productivity. I guarantee that most employees simply decide not to mention ideas for projects that could help the company because of the headache. They will do the minimum needed to keep their jobs.
Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @04:44PM (#34331966)
I know for a fact that this is true. Office Space was not a comedy - it was a documentary.
Re:Theory-building and why employee churn is lethal to softw... by yarg on Tuesday January 10, 2023 @05:03PM (#34332207)
I worked in an environment where a senior architect got to veto every major effort that I publically made to improve the structure and maintainability of the software.

At some point I got so pissed off about this that I started assigning code reviews to him - he contacted my manager and asked that I stop, because he had no understanding of the project in question.

What did this mean from the documentation side?

I would have loved to accurately document what I was doing and how the project was structured - but I actively avoided doing so.

Every time my manager's boss knew what I was doing, I was about to be shat on from great heights.

Months of work and planning erased at the drop of a hat - time and time again.

Dependency injection? Fuck off. Spring's too heavy.

Modularity? Fuck off. The project's too small.

Hierarchical profiles? Fuck you, keep using a properties file (with an increasing number of dynamically generated keys).

I was constantly asking for a new developer to be brought in for the transfer of knowledge - at best I was told "That's not a bad idea."; yet nothing was ever done about it.

I took an unmaintainable pile of bugs and made it stable and maintainable. But nothing I ever did meant that I was someone worth listening to.

Eventually I got so burnt-out (and consumed by feelings of uselessness) that I walked away without finding another job.

I was damned near suicidal from fighting for acknowledgement.

I cannot imagine that my departure went too well for them.

Re:Theory-building and why employee churn is lethal to softw... by andrewmcwatters on Tuesday January 10, 2023 @05:14PM (#34332308)
Here's the kicker, I hate to say it, but they probably didn't notice you left.

That's the thing about places like that.

Re:Theory-building and why employee churn is lethal to softw... by fatneckbeard on Tuesday January 10, 2023 @05:46PM (#34332604)
yeup. and realizing that is the only way to stay sane.

nobody will care if you leave, nobody cared about the last person that left, they have other priorities and software engineering is not one of them.

if its that much of a problem, their business will fail and some other business that does care will take over their market. but that might take decades because software engineering isn't actually core to a lot of business activity. youd be amazed at how bad some software is for major companies, and yet they are very profitable.

you only have control over yourself not other people.

Re:Theory-building and why employee churn is lethal to softw... by maleko48 on Wednesday January 11, 2023 @07:38AM (#34337709)
my company's primary app/digital portal that is meant to eventually replace the bulk of phone center operations requirements is hilariously bad after years of development. I used to tell the app team daily everything that was wrong with it in great detail from a usability standpoint of both our internal operations and our external customers but they just took the chat tool down, lol. they've been slowwwwly adding new functionality before the core functions are fully baked and actually useful which is just crazy to me. if it weren't for top management pushing our sales teams to push our customers to use the platform, 98% of our customers would prefer to just pick up the phone and call us anyways. (this is the concrete industry, so not exactly tech forward)
Re:Theory-building and why employee churn is lethal to softw... by yarg on Tuesday January 10, 2023 @05:49PM (#34332618)
I was the main developer on the single most critical deployment tool in the company.

My departure would've been less than ideal.

Either way, the company's haemorrhaged talent (now including long term CEO and long term CTO) and the stock price has plummeted since I left.

(In no way am I crediting myself for this; at best I was a canary in the coal mine - but I take my solace in schadenfreude.)

Re:Theory-building and why employee churn is lethal to softw... by leeoniya on Tuesday January 10, 2023 @06:16PM (#34332856)
> and the stock price has plummeted since I left.

that describes pretty much every tech company in the past 18 months ;)

Re:Theory-building and why employee churn is lethal to softw... by stirfish on Tuesday January 10, 2023 @08:16PM (#34333761)
yarg was holding together pretty much every tech company.
Re:Theory-building and why employee churn is lethal to softw... by yarg on Tuesday January 10, 2023 @08:37PM (#34333955)
I do wonder at the extent to which I am the manifestation of a charicature of the burnt-out developer.
Re:Theory-building and why employee churn is lethal to softw... by jvm___ on Tuesday January 10, 2023 @08:47PM (#34334063)
Yarg owned left-pad.
Re:Theory-building and why employee churn is lethal to softw... by wonderwonder on Tuesday January 10, 2023 @09:23PM (#34334298)
Software companies with sufficient market share take on an almost zombie like quality. No matter how much damage they take internally they are able to continue lurching forward and making money because there is no one else in the space that is a viable option or they have their customers locked into expensive contracts. I worked at one such company for a few years. It was terrible. The software was garbage and management was truly awful. We were required to hit 10 ticket points each week or pipped. The only way to do so was to work 60+ hours. I got pipped for the first time (~18 months in) when during the first month of covid lockdowns I got 8 instead of the required 10 points. They literally could not understand how I might have distractions going on due to a brand new pandemic, my kids and wife suddenly being home and lockdown.

Whatever decision you made they yelled at you. I got yelled at once for not lying to a government official. When I quit, every sr. developer quit within 3 months of me; 7 total left and left behind 6 non sr. devs. This was 3 years ago. The company is hemorrhaging money but just keeps issuing more stock to stay afloat. It used the money from that stock to buy its competition in a very niche market and essentially just put them out of business. So they survive and lurch on.

Re:Theory-building and why employee churn is lethal to softw... by photonbeam on Tuesday January 10, 2023 @10:25PM (#34334686)
> We were required to hit 10 ticket points each week or pipped.

I ask about ‘points’ in interviews, its an immediate stoppage for me

Re:Theory-building and why employee churn is lethal to softw... by icedchai on Tuesday January 10, 2023 @10:45PM (#34334789)
Yes, that's very important. I made the mistake of taking a job where they were into full blown "planning poker" nonsense. It was hell. "Is this a 2 or a 3?" The discussion could go on for ages. "This can't be an 8! Can we break down this into a 5 and a 3 point ticket?" No estimate was allowed to be an 8. I better stop, since I'm having flashbacks...
Re:Theory-building and why employee churn is lethal to softw... by mrbombastic on Tuesday January 10, 2023 @11:41PM (#34335071)
Hmm every job I have had uses points this way. I find points discussions particularly mind numbing and have no love for them but I also can see the utility. What is the alternative?
Re:Theory-building and why employee churn is lethal to softw... by DangitBobby on Wednesday January 11, 2023 @01:42AM (#34335784)
When it ceases to be a useful tool to stay organized, and becomes a burden, it's very frustrating. The alternative is to use the tool when it helps you and ignore it when it's not.
Re:Theory-building and why employee churn is lethal to softw... by josephg on Wednesday January 11, 2023 @12:32AM (#34335345)
Hah I got in trouble once for just going through a grab bag of bugs from our designer (mostly trivial CSS issues) and fixing them. My manager got upset because the tickets never got their costs estimated, and I never put them in jira. (Even though the “3, 5 or 8” conversation would have taken more engineer time than just fixing the bugs directly).

I asked him why he was so upset. Eventually he admitted that closing tickets in jira was how upper management measured how well our team was doing - and by extension him. I thought that sounded like his problem and still refused to put the issues in jira. So he did it - meticulously creating a couple dozen issues, making up a BS point estimation and closing them all as complete.

Whenever I think about bullshit jobs, I think about those silly cost estimation cards, that guy, and how deeply satisfying it was that day just diving in and making our product actually better.

Re:Theory-building and why employee churn is lethal to softw... by oefnak on Wednesday January 11, 2023 @02:12AM (#34335922)
Tickets can also be some documentation about why some code is why it is. Put the ticket number in your commit message and use git blame when you want to understand something better. By fixing code without tickets you make this impossible for future developers.
Re:Theory-building and why employee churn is lethal to softw... by mnembrini on Wednesday January 11, 2023 @02:22AM (#34335986)
To be fair if the fixes are trivial they shouldn't need any extra context from a ticket to understand
Re:Theory-building and why employee churn is lethal to softw... by throw827474737 on Wednesday January 11, 2023 @04:51AM (#34336780)
Yes tracability etc... but to be honest: For such a trivial thing, this thing called commit message right before or after the ticket reference can do the job as well with one less indirection ;)
Re:Theory-building and why employee churn is lethal to softw... by jen20 on Wednesday January 11, 2023 @10:41AM (#34339669)
“Link to a ticket system” is generally awful advice.

- Why the commit was made should be in the commit message

- What the change is inherently lives in the diff

- Why the code is how it is should be in comments adjacent to the relevant code item.

Re:Theory-building and why employee churn is lethal to softw... by josephg on Wednesday January 11, 2023 @04:24PM (#34345090)
This is any-benefit thinking.

There is some tiny marginal benefit to what you’re talking about (there’s a chance someone might later want to look at the corresponding issue). But you aren’t acknowledging the cost, measured in my sanity making a bunch of one-line issues in jira, and the team’s time doing cost estimation.

It’s nice to leave breadcrumbs for future code historians. But our job is shipping product. Cost estimation, jira, etc all only have value proportional to how much they help us ship. If the meetings are pointless, and jira isn’t needed then doing that anyway is a waste of time.

Re:Theory-building and why employee churn is lethal to softw... by pjmlp on Wednesday January 11, 2023 @01:28AM (#34335690)
Quite standard in any big corporation.

You're lucky not having been discussing money budget per ticket instead.

I have had projects where sprints got money budgets assigned to them, which divided by the cost per hour of each developer got us the amount of hours available for the sprint.

Those hours were the budget for the sprint, no more no less, better chose wisely the stories that fit in.

To make it even better, some project activities only were given such kind of budgets in specific times of the year, then one of the external consulting partners would have the go at that specific sprint.

So not only were the tickets chosen to fit the budget, every few couple of months, the teams doing the work were always rotating.

Re:Theory-building and why employee churn is lethal to softw... by danjac on Wednesday January 11, 2023 @03:11AM (#34336246)
I remember the endless Scrum meetings where we debated points with all the seriousness of medieval monks discussing how many angels could dance on the head of a pin. As a rough heuristic points aren't bad, per se, and they are a bit better than straight time estimates.

But when they become the subject of endless meetings it's a tell that maybe the company has hired too many people too quickly and is in the "bullshit jobs" phase where it's happy to waste precious salaried hours on meaningless debate.

Re:Theory-building and why employee churn is lethal to softw... by JAlexoid on Wednesday January 11, 2023 @10:09AM (#34339235)
I guess it depends on the clarity of the work and quality of the facilitator.

I have had your experience with poorly organized PM and horror stories during sprints...

And I had the best planning sessions with a proficient PM, that made picking up tickets a marvellous pleasure.

Re:Theory-building and why employee churn is lethal to softw... by mihaigalos on Wednesday January 11, 2023 @09:13AM (#34338662)
What is the exact Q you're asking? I'm genuinely interested.
Re:Theory-building and why employee churn is lethal to softw... by photonbeam on Wednesday January 11, 2023 @11:34AM (#34340364)
I ask about development practices, I have them describe how they approach features, tech debt, planning, attribution, interruptions, and so on. Somewhere in there Ill ask for an example and ask some precise questions and then also about points, so they dont think Im overly focused on that exact aspect
Re:Theory-building and why employee churn is lethal to softw... by vishnugupta on Tuesday January 10, 2023 @10:58PM (#34334861)
> Software companies with sufficient market share take on an almost zombie like quality.

+100.

Booking.com and JIRA come to my mind as good examples. Just about everyone complain about Booking, customers, engineers working there, hoteliers etc., Yet it continues on. I hear they've been trying to migrate to a modern tech stack for years but to no avail.

Re:Theory-building and why employee churn is lethal to softw... by pjmlp on Wednesday January 11, 2023 @01:23AM (#34335653)
Because most of the competition manages to either be worse than them, or lack the features that actually make them relevant.

I am reaching 50 years old and am yet to see any ticket management system that is as powerful as Jira, while offering a relatively good usability story, and the integration story of having a ticket bind to documentation on confluence, SCM related history and CI/CD reports.

Likewise the competition to Booking usually fails to show as many properties, have as rich filter selection, and in many cases their prices are higher than what Booking offers, moreso if one happens to have Genie level status.

Re:Theory-building and why employee churn is lethal to softw... by j45 on Wednesday January 11, 2023 @04:08AM (#34336584)
Saying this as not a jira fan but realizing it has its place.

The irony of jira is the years it takes to realize how few pieces of software can soak into complexity like it can.

The pain of jira is how it largely can’t universally handle complexity out of the box or how you’ll find yourself in it - how it must be actually setup for your use case - how much it benefits from being setup by someone who has experiences with the pros and cons of cocaine one of the many ways of doing something.

The new project type (team?) is a step forward to start with from scratch. But a kiss of death if you need to outgrow it for some features that aren’t there yet.

Re:Theory-building and why employee churn is lethal to softw... by JAlexoid on Wednesday January 11, 2023 @10:05AM (#34339196)
Work management is a custom problem, that no generalized solution will fit.

Unless you're a mega corp - you're not getting a good work management solution.

Re:Theory-building and why employee churn is lethal to softw... by lelanthran on Wednesday January 11, 2023 @01:31AM (#34335721)
> Software companies with sufficient market share take on an almost zombie like quality. No matter how much damage they take internally they are able to continue lurching forward and making money because there is no one else in the space that is a viable option or they have their customers locked into expensive contracts.

/Softwarecompanies/Some companies/g

I wrote a paper for an assignment (maybe ten years ago, ask me for a link, and I'll see if I still have it), in which I called this phenomenon Corporate Inertia, and it isn't only applicable to software companies.

Sometimes the inertia is good - it allows the company to weather bad times.

Other times the inertia is bad, because the company cannot pivot in time to address new challenges or take advantage of new opportunities.

Mostly, the good outweighs the bad - if a company cannot pivot in time because it is so large, it merely buys the smaller company that verified the idea already.

Re:Theory-building and why employee churn is lethal to softw... by taneq on Wednesday January 11, 2023 @02:52AM (#34336147)
I’ve always described this as “Rome didn’t burn in a day.”
Re:Theory-building and why employee churn is lethal to softw... by ngc248 on Wednesday January 11, 2023 @01:34AM (#34335743)
I have been in places like the one you talked about. I also almost had a breakdown because I used to care too much. After that I had an epiphany, now I only care if others care. Its good for my mental health.
Re:Theory-building and why employee churn is lethal to softw... by treeman79 on Wednesday January 11, 2023 @04:44AM (#34336752)
I got hired by a company. First day I found out I was the entire IT staff. They had lost everyone else. For good reasons. Infrastructure was completely failing.

First week was rebooting servers at random to try and get things working while I mapped everything out.

Eventually rebuilt everything and put together a good team.

Key was learning to tell management no. And having someone to keep upper management off our backs.

Re:Theory-building and why employee churn is lethal to softw... by le-mark on Tuesday January 10, 2023 @07:46PM (#34333571)
GP learned a valuable lesson; it’s just a job. Don’t tie your identity to your code.
Re:Theory-building and why employee churn is lethal to softw... by taneq on Wednesday January 11, 2023 @02:51AM (#34336140)
Bold of you to assume that anyone else there has the necessary knowledge to take on their role.

I was in a similar situation once, I spent months telling management that I was the only one keeping them afloat technically and that it was a critical risk to the business. They responded by trying to pressure me into unlimited unpaid travel and overtime.

I left and they fared poorly.

Re:Theory-building and why employee churn is lethal to softw... by devwastaken on Tuesday January 10, 2023 @05:53PM (#34332659)
It's a job, not the fifth world wonder. That Corp is making money based on their market position, the software functioning is an afterthought. If it all breaks, the customer isn't going anywhere.

Don't fight management, leave.

Re:Theory-building and why employee churn is lethal to softw... by yarg on Tuesday January 10, 2023 @06:38PM (#34333047)
No need for the condescension; I didn't imagine myself to be building some ivory citadel - I was working to make sure that changes required from a business perspective could be quickly and cleanly integrated without impacting the stability of the software.
Re:Theory-building and why employee churn is lethal to softw... by csomar on Tuesday January 10, 2023 @09:41PM (#34334422)
The customers do eventually go. These companies will slowly fail, and they slowly fail because they specialized in customer retention (or more like trapping) either through legal (ie: lobbying, monopolizing, etc..) or illegal (dark shady patterns)
Re:Theory-building and why employee churn is lethal to softw... by lelanthran on Wednesday January 11, 2023 @01:38AM (#34335767)
> The customers do eventually go. These companies will slowly fail, and they slowly fail because they specialized in customer retention

Maybe this is true in the general case, but there are so many exceptions to this that I feel it is not true enough.

Customers don't care about about using the best tool, they only care if it is good enough, and a computer/application/software that crashes once a day is actually good enough for most desktop workflows.

An OS that abuses the user might still be good enough that better alternatives cannot get a foothold. Same is true for web applications, enterprise systems, games, etc.

It's only when you get into the embedded space that you face the "quality or GTFO", because people have lower tolerance for malfunctioning appliances than they do for malfunctioning computer systems.

Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @08:52PM (#34334097)
I hear your frustration. I can relate. But this:

> I was damned near suicidal from fighting for acknowledgement

I sincerely hope this was hyperbole. Please don’t ever allow anything work related to affect you to this extent. You are more than your job. There are other opportunities. There is much more to life than software.

Re:Theory-building and why employee churn is lethal to softw... by theteapot on Wednesday January 11, 2023 @02:55AM (#34336164)
You can say that as much as you want. Sounds completely reasonable, but good people are still going to feel like this guy. Good management should recognize this, and well, manage it, rather than have people grind themselves down, even if it is because of their own stupid pathology. I think it's just classed as being empathetic.
Re:Theory-building and why employee churn is lethal to softw... by yarg on Wednesday January 11, 2023 @04:05PM (#34344817)
Sadly no. I've been depressed for over 20 years - this was the kick in the arse that I needed to spiral down into oblivion.
Re:Theory-building and why employee churn is lethal to softw... by geodel on Wednesday January 11, 2023 @12:33AM (#34335350)
Well, FWIW I have to use all the things you were proposing. However I find them eminently crappy and if I were in a position at my workplace to reject them I would have absolutely done that.

> I took an unmaintainable pile of bugs and made it stable and maintainable.

Same here, except it was supposedly using all best practices e.g. Spring Boot, DI/IoC, Mock testing framework, YAML configs, extremely elaborate package hierarchy and so on. The only thing it did not have was working solution for the business problem it was written for.

Re:Theory-building and why employee churn is lethal to softw... by bitexploder on Wednesday January 11, 2023 @12:40AM (#34335395)
The one thing agile is aimed in the right direction about is that software is for users. Users use it to create value in a business context. Many developers are too far removed from value creation and making sure their features and design changes will actually benefit users in the long run. Tech debt is a thing, but so is business value driven development that works well for users. All of these refactoring side treks need to really be necessary. I do greatly empathize with grandparent, lack of being seen and acknowledged really sucks. And who knows what their situation really was like.
Re:Theory-building and why employee churn is lethal to softw... by TeMPOraL on Wednesday January 11, 2023 @06:10PM (#34346439)
Let's be clear on who the users are, then. In general, I see several different broad groups of stakeholders:

1. The developers who create the software.

2. The rest of the company developers work for, and possibly other people in other companies - who all make money selling or renting the software.

3. The actual users stuck with the software.

I'm not sure if Agile meant 3 > 1 and 2, or just pretended to, but actually meant 2 > 1, but your comment does read as advocating for 2 > 1 > 3, which is arguably the current industry standard.

Re:Theory-building and why employee churn is lethal to softw... by tharax on Wednesday January 11, 2023 @02:33AM (#34336040)
Are you me? Our services with all the best practices are also the worst to work on because the business value is hidden in layers and layers of indirection, abstraction and nested packages. It’s like someone took a recipe card to bake a cake and wrote each word on a single page (because god forbid we ever repeat ourselves) and then abstracted away a function behind a series of factories and interfaces that will join those pages with string, and now each word has a single context-less definition so we can tick the “S” box in SOLID.
Re:Theory-building and why employee churn is lethal to softw... by throw827474737 on Wednesday January 11, 2023 @04:20AM (#34336656)
Hahaha, everyplace everywhere.

I think two things play into this: Layers.. it is just easier for people to add layers around something, not touching and understanding the original code and doing it right there. And then profs or someone else always says layering is good! (It may sure be, or also sometimes such "hacks" are the right thing to do, but if that is always the default mode... uhh oh).

And second, university training: OOP, design patterns, software layers, all claimed to lead to structured good programming automatically still taught in 2023, which is just not true. By untrained or unexperienced personnel leads to worse than 80s spaghetti code..

Just yesterday I exercised with relative who is in university for exam.. Java, design patterns, arggh. Imo it just makes no sense at all to try to teach students inheritance and design patterns with Cat/Dog/Animal et al, it is so backwards. You need to program for a while bigger real systems to see some patterns emerge and their usefulness, and then can relate to the formal way and maybr use some patterns reasonably. But starting with those on toy examples just leads to what you describe: People going in with their trained knowledge and applying that to everything without rhyme or reason. What could be a simple five liner function already becomes a convoluted abomination. Just one concrete example, but this then on many levels of software engineering.

Who or what will save our future? :D No, it won't be ChatGPT. (Second lol btw, relative really showed me how likely all of then may use ChatGPT i. their online exams...)

Re:Theory-building and why employee churn is lethal to softw... by jen20 on Wednesday January 11, 2023 @10:33AM (#34339555)
Probably the mainstream adoption of functional programming, if anything can save our future.

Most people do not have the memory span to work with mutable state, so something simpler should be the default.

Re:Theory-building and why employee churn is lethal to softw... by TeMPOraL on Wednesday January 11, 2023 @05:58PM (#34346293)
I'm not too hopeful. In my experience, functional programming adoption is divided into two categories:

1) Proper FP languages with good enough semantics and necessary features to write functional code effectively. Those languages all fall into category of "too difficult" for the majority of industry, which seems to suffer from severe allergy to learning anything beyond "Intro to programming in Java 6" freshman class.

Even things like lambdas only recently stopped being too complicated for a typical programming shop that follows well-known best practices, such as "Programs must be written for inexperienced non-programmers with no prior exposure to the problem space to read, and only incidentally for machines to execute.", and "Would somebody think of the juniors?". Closures? Nah, the zeitgeist is still on the fence with this.

Yes, I have a sore spot for this. I've heard this reasoning many times in real life, and once was even target of it - an otherwise competent programmer and a good manager once asked me to stop using lambdas for event handlers in Java 8 (which the company had only recently adopted), for the sake of the juniors who won't understand. In fact, he meant specifically his favorite evergreen junior (who's been in that company a couple years longer than I was then). But guess what, couple juniors actually asked me to explain the how-and-why of lambdas to them and got it near-instantly. Said evergreen junior probably spotted the lambdas in the codebase too, or otherwise got interested in this, read up on the topic independently, and three months later was evangelizing basic functional programming in Java and otherwise upskilling his fellow coworkers.

But yeah, it's too difficult, your co-workers won't understand. Anyway, where was I? Oh right:

2) The other, arguably larger, kind of FP adoption: library-level and code style level implementation of FP features in languages with little or no natural support for them. This doesn't mean people understand FP extra well - they're barely aware of it at all. But every now and then some library gets popular - say, a sum type for error handling (typically known as Result, Either, Expected, or something similar) that's "obviously" "better" than exceptions. Except, that library is doing a half-baked implementation of a concept (e.g. monads) that doesn't fit the language, and the users don't understand what the approximated concept is, nor are they supposed to try (remember, FP is too abstract for a freshman after "Java 6 101" class).

The result is, as expected, an ugly mess in the codebase, displaying all the bad sides of imperative and functional styles, and leveraging none of the good sides.

Anyway, what is my proposed solution to this? For the industry to stop hating education and professionalism. To embrace the idea that the job of a junior is to learn, not to be the yardstick for complexity of the codebase. To encourage a culture of learning, of professionalism, at every level. To stop dismissing or banning techniques that reduce size and complexity of the codebase by large factors, just because one has to invest a couple hours of learning up-front to be able to use them. Etc.

</rant>

Re:Theory-building and why employee churn is lethal to softw... by jen20 on Wednesday January 11, 2023 @08:08PM (#34347672)
I’m with you: the problem is that Java and so forth are seen as simple when they are in fact INCREDIBLY complex.
Re:Theory-building and why employee churn is lethal to softw... by yarg on Thursday January 12, 2023 @06:45PM (#34361952)
In the case of Spring what I wanted was adequate dependency injection.

I was dealing with having to support releases across multiple historical branches, and wanted to separate the core and business logic to allow for easier support on the older branches.

I needed the dependency injection in order to break up cyclic dependencies across modules (without which the core and client logic could not be broken into separate repositories).

Internally, the deployment tooling treated the profile as hierarchical; when I took over the project it was already using dynamically generated keys to store trees of data in the .properties files it was using for user profiles.

It only became more hierarchical as time went on and the internal representation fully so - using a tree structure internally allowed for very clean subtree selects (which helped to clean up an entire class of bug, introduced on mass, during a particulary ill advised (and strongly advised against) piece of work (completed (despite being given without notice) in a single iteration - when it really needed at least 2).

I would still have preferred to use an external format that allowed me to specify or generate schemas for the user profiles, and it also would have helped with supporting profile versioning (which would have been valuable for company internal users).

Re:Theory-building and why employee churn is lethal to softw... by theteapot on Wednesday January 11, 2023 @02:50AM (#34336133)
Sounds like you needed some workplace allies there.
Re:Theory-building and why employee churn is lethal to softw... by JAlexoid on Wednesday January 11, 2023 @10:01AM (#34339158)
Your comment is why everyone should start their engineering experience as a consultant.

Primary thing that I learned being a consultant - you can leave and you don't have to suffer the disdain from the management. You learn to disconnect yourself and be replaceable.

It makes for a less frustrating life.

Sad that it happened to you. Don't invest yourself in someone else's child.

Re:Theory-building and why employee churn is lethal to softw... by layer8 on Tuesday January 10, 2023 @05:16PM (#34332331)
> documenting the internals of a complex piece of software is a rare skill. A skill that most developers don’t possess.

I believe this is partially due to lack of training (technical writing rarely gets trained, and companies rarely invest in it as a skill), and sometimes probably also due to lack of exposure to high-quality documentation (which are role models you’d then want to live up to in your own documentation).

In addition, companies often do not reward expending time and effort on writing documentation, because it isn’t crucial in the short term. It’s a bit like tech debt, just documentation debt.

While writing good documentation isn’t easy, the fact that it usually gets neglected is a cultural issue.

Re:Theory-building and why employee churn is lethal to softw... by BlueTemplar on Tuesday January 10, 2023 @06:38PM (#34333045)
Any examples of great documentation ? (For open source of course.)
Re:Theory-building and why employee churn is lethal to softw... by layer8 on Tuesday January 10, 2023 @07:58PM (#34333627)
I have no particular recent examples in mind, though I believe the Rust documentation is pretty good. Maybe browse these search results where similar questions have been asked previously: https://hn.algolia.com/?query=documentation%20examples
Re:Theory-building and why employee churn is lethal to softw... by BurningFrog on Tuesday January 10, 2023 @07:55PM (#34333612)
My take:

People "on the spectrum" are not great communicators, and also struggle to understand what it is other people know and don't know.

Also, documenting is genuinely hard, even if you don't consider that it changes all the time. Which it typically does.

Re:Theory-building and why employee churn is lethal to softw... by layer8 on Tuesday January 10, 2023 @08:06PM (#34333676)
I agree that not everyone has a knack for it. But I don’t think that’s the only factor. Software design/architecture is also hard and many devs aren‘t particularly good at it. We still recognize it as an important skill that requires education and training (and experience). If even just 20% or so of devs would get up to speed with how to write adequate documentation, and were enabled to invest the necessary time for it, that would already be a huge improvement.
Re:Theory-building and why employee churn is lethal to softw... by halkony on Tuesday January 10, 2023 @08:07PM (#34333677)
Are you implying that a significant amount of coders are "on the spectrum"?

Not that I disagree -- working in highly technical fields this long, I could categorize 80% of my co-workers as lacking typical social and communication skills and you never know the real reason. It's to the point where I see women get promoted to management roles more often because they're superior communicators.

Re:Theory-building and why employee churn is lethal to softw... by Aeolun on Tuesday January 10, 2023 @08:52PM (#34334098)
Everyone is on the spectrum. Coders are just closer to one side of it :)
Re:Theory-building and why employee churn is lethal to softw... by BurningFrog on Tuesday January 10, 2023 @09:09PM (#34334217)
I am strongly implying that, yes!
Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @09:47PM (#34334462)
You can do surprisingly well in this line of work by simply not being an asshole.
Re:Theory-building and why employee churn is lethal to softw... by BurningFrog on Wednesday January 11, 2023 @10:59AM (#34339871)
Yeah, the social skills threshold is amazingly low...
Re:Theory-building and why employee churn is lethal to softw... by fexecve on Wednesday January 11, 2023 @12:33AM (#34335349)
I think that technical communication isn't the same as other communication, so I don't think it's a logical given that people "on the spectrum" would be bad at it. Technical communication is about conveying technical information, at various levels, with just a few constraints. It's a solved problem, really. It just needs to be followed to the letter.
Re:Theory-building and why employee churn is lethal to softw... by tomcam on Tuesday January 10, 2023 @05:54PM (#34332664)
> And in a Google doc, no less.

That whole process sucks and I’m sorry you have to go through it. It’s probably the best solution of the time. My one question is… Isn’t that why we have github issues?

Re:Theory-building and why employee churn is lethal to softw... by bentobean on Tuesday January 10, 2023 @09:05PM (#34334196)
Because the pointy-haired bosses in product and all of the various managerial minions don’t have GitHub accounts, so it’s either that or (shudder) a Confluence page.
Re:Theory-building and why employee churn is lethal to softw... by MathMonkeyMan on Tuesday January 10, 2023 @09:55PM (#34334515)
I think we work at the same company.

Write your RFCs as markdown in a git repository. Stick it to the man!

Re:Theory-building and why employee churn is lethal to softw... by tomcam on Wednesday January 11, 2023 @02:56PM (#34343735)
My condolences to you and yours.
Re:Theory-building and why employee churn is lethal to softw... by coryrc on Tuesday January 10, 2023 @06:18PM (#34332867)
"No" SWE ever got promoted for documenting someone else's code. Follow the incentives.
Re:Theory-building and why employee churn is lethal to softw... by sublinear on Tuesday January 10, 2023 @07:59PM (#34333636)
Huh?

Documenting a terrible project is an excellent way to propose and volunteer yourself into a new project of your own design and ultimately get promoted into lead/architect/SME types of roles. I don't know anyone who has done it any other way.

Re:Theory-building and why employee churn is lethal to softw... by nullsense on Wednesday January 11, 2023 @12:57AM (#34335491)
Yeah I've done this too.
Re:Theory-building and why employee churn is lethal to softw... by hnick on Tuesday January 10, 2023 @06:34PM (#34333002)
This is why I also didn't particularly enjoy answering questions concisely at my previous company. I still did, I just hated it.

Documentation can describe a system state, and how to use or approach it, but in my experience it really lacks in capturing the full depth of experience when it comes to interacting with it. All the little shortcuts and workarounds. All the debugging steps. Seeing something, and realising you've seen it before and solving it in 5 minutes instead of the entire day it took you last time. I could write a story about that day, but it wouldn't do anyone any good - they won't learn from that experience like I did and it won't spring to mind instantly. Assuming they even know where to find a piece written about their specific problem.

So when someone says "How do I X?" all I can think about is all the incidental things I've learned when trying to do something else. This builds the bigger picture. I can answer your question, but you'll just paste the code in and be back to ask more tomorrow. I valued the coworkers who treated such things as more of a discussion and learning opportunity than a transactional question-answer routine.

Re:Theory-building and why employee churn is lethal to softw... by aorloff on Wednesday January 11, 2023 @12:55AM (#34335481)
This is why effective documentation starts with run books.
Re:Theory-building and why employee churn is lethal to softw... by malandrew on Wednesday January 11, 2023 @01:31AM (#34335720)
I have a love-hate relationship with runbooks. I see them as tech debt for things you haven’t yet automated or made clear enough. If someone needs to go read a doc to understand what they need to do, you’re already behind.
Re:Theory-building and why employee churn is lethal to softw... by PebblesRox on Wednesday January 11, 2023 @08:33AM (#34338198)
I can't find it now but I remember reading a post on HN with the suggestion to make all your runbooks shell scripts, even if all they start out as a series of prompts walking the user through the checklist of manual tasks.

This way you can incrementally automate various pieces of it so that gradually the user is doing less and less, but there's continuity on their end: run the script and do whatever it says to do next.

Re:Theory-building and why employee churn is lethal to softw... by TheFlyingFish on Wednesday January 11, 2023 @12:49PM (#34341675)
I'm guessing this is "Do-nothing scripting: The key to gradual automation" https://news.ycombinator.com/item?id=29083367

Although the example uses Python, rather than shell.

Re:Theory-building and why employee churn is lethal to softw... by PebblesRox on Wednesday January 11, 2023 @01:40PM (#34342537)
That’s it, thank you!
Re:Theory-building and why employee churn is lethal to softw... by dougsillars on Wednesday January 11, 2023 @02:09PM (#34343013)
I love this idea! The automate the easy bits (or the steps that are the biggest pain/time suck) until the whole thing is completed.

A tool like Jupyter Notebooks would be great for this - comments & code can be placed into a single document. I'm working on a project called unSkript (https://unskript.com) that is built on this idea.

Re:Theory-building and why employee churn is lethal to softw... by perrygeo on Thursday January 12, 2023 @08:30PM (#34362842)
> the full depth of experience when it comes to interacting with it.

This is the part that most people conveniently forget. Many people find it easier to create elaborate docs and processes than to regularly interact with the software system they've built.

Re:Theory-building and why employee churn is lethal to softw... by GartzenDeHaes on Tuesday January 10, 2023 @07:07PM (#34333286)
Management is about process, people, and resources. If you ask a manager to solve a problem, the solution will often be some combination of:

- A defined and documented process

- Project planning or organization changes

- Staffing, purchasing, or contracting

These are fine tools for a lot of business problems, but they are rarely helpful, and often harmful, for software development.

Re:Theory-building and why employee churn is lethal to softw... by chii on Tuesday January 10, 2023 @08:46PM (#34334049)
> outline every anticipated step along the way, all the tiny minutiae that you foresee yourself encountering and how you'll deal with it

waterfall by any other name smells just as bad.

I think the reason is that senior management has no trust in the developers, which is the ultimate cause of the need to have waterfall. Each reporting level wants to show concrete evidence that those under them are "doing their best", rather than to have trust that they are.

Of course, it is understandable that people want concrete "evidence". But waterfall is the result, and you end up with big-bang designs, RFCs that are out of date because a change in circumstances necessitate a change that is not documented in an RFC.

It is a management problem, not a software development problem, imho.

Re:Theory-building and why employee churn is lethal to softw... by fexecve on Wednesday January 11, 2023 @12:30AM (#34335329)
Most companies either do too little documentation (they have a little page with the bare minimum high-level overview), or they do way too much (detailed change request forms for every change, which go into a file cabinet, and are never looked at again). Alas, it's really hard to get people to understand that documentation is good and necessary when they've only ever been exposed to one or both of those systems.
Re:Theory-building and why employee churn is lethal to softw... by llamajams on Wednesday January 11, 2023 @08:01AM (#34337894)
Y'all ain't work on projects with NO docs and no OG devs. I'll take an outdated Google doc over nothing and day of the week.
Re:Theory-building and why employee churn is lethal to softw... by tikiman163 on Wednesday January 11, 2023 @10:25AM (#34339453)
I'm not a huge fan of writing a ton of documentation about the code. I am a huge fan of requiring developers to write in-line comments explaining what they're doing so the next person can build that internal model more easily. There should be some documentation about the system, but this is much more helpful if it only explains how to get the project running locally, including configuration settings and how to interact with it (if data has to be uploaded for a process, what should the data look like and how do you upload it). From there, a mid level developer should be able to locate the code entry points and follow the online comments to find what they need.

Just because it seemed obvious what you were doing and how things worked while you were writing the code doesn't mean it is, or that it will stay that way. Especially if that code ends up getting abstracted out. In line comments demystify code for the next guy way better than any amount of well written documentation.

As for what they're making you do with the RFC documents for changes, try writing your stuff as an ordered multi-tier list. The first tier should be the "manager" description of the change. The next level should be the more technical description of changes. The third tier is the location in the code where that change needs to be made (like a file path sort of thing, but you could use name spaces and even method names if you want). The forth and final tier if you need it would be cross references to other related items in the list and implementation notes/challenges specific to the file path. I've used this approach in the past myself. It's much faster, and it allows you to write a spec doc that isn't a huge waste of your time because it allows you to half write your code at the same time. It also provides a sort of semantic map from how the manager thinks about things to how you think about them, making it much easier for a manager to discuss it with you without having to write nearly as much.

Another benefit to this is you can often use stuff from the second and forth tiers to add in line code comments.