News for hackers. Stuff that matters.
Re:I could do that in a weekend (2016) by saagarjha on Wednesday April 29, 2020 @03:39PM (#23023264)
This was actually less complicated that I had expected it to be.
Re:I could do that in a weekend (2016) by lliamander on Wednesday April 29, 2020 @06:27PM (#23025262)
I think the example still works because, while it is not too complicated to understand, it is also non-trivial. It's also probably more complicated than the typical non-technical person would think.

It's also worth mentioning that this diagram doesn't capture dataflow or the relationships between the subsystems needed to make this work. The logic for notifications requires interaction with user preferences, channel membership, comment parsing, thread management, and more[0].

All told, you may still be looking at (low) thousands of lines of code, with maybe 1.5-2x times that amount for test code.

[0] I'm just guessing how the app is structured internally. I have no idea what it is actually like.

Re:I could do that in a weekend (2016) by paxys on Wednesday April 29, 2020 @04:08PM (#23023569)
It's also like 3 years old. Would love to see what it looks like now.
Re:I could do that in a weekend (2016) by folmar on Wednesday April 29, 2020 @06:19PM (#23025173)
It's like never true, it does not show that you can't get email notification faster than in 30 minutes.

Also now should include adding random old stuff to notification.

Re:I could do that in a weekend (2016) by MichaelDickens on Wednesday April 29, 2020 @05:24PM (#23024529)
Things like notifications have pressure on them to be simple, because users want to be able to decide when they will receive notifications, which means it needs to be easy for them to understand when they will and will not receive them with particular settings. I'm sure there are examples of some non-user-controlled decisions that have much more complicated flow charts.
Re:I could do that in a weekend (2016) by nickff on Wednesday April 29, 2020 @03:45PM (#23023321)
Yes, it was something I'd never thought of before, but definitely simpler than I guessed before I clicked the link. That said, each time you add a conditional, you need to be increasingly careful about where you put it, and what other impacts it has.

I would also imagine that there are a variety of other features which require similar flow charts.

Re:I could do that in a weekend (2016) by evfanknitram on Wednesday April 29, 2020 @03:51PM (#23023375)
Yes, this is what my co-workers refer to as an if-statement.
Re:I could do that in a weekend (2016) by paxys on Wednesday April 29, 2020 @05:18PM (#23024453)
All programming is just if statements. That doesn't mean systems can't be complex.
Re:I could do that in a weekend (2016) by adrianN on Thursday April 30, 2020 @12:51AM (#23027547)
If you're creative you can get away without conditional branches: http://www.jucs.org/jucs_2_11/conditional_branching_is_not/R...
Re:I could do that in a weekend (2016) by a1369209993 on Wednesday April 29, 2020 @06:29PM (#23025289)
Not true; if the conditional branch goes backward then it's a (possibly do-) while statement. Also subroutine calls.
Re:I could do that in a weekend (2016) by seisvelas on Wednesday April 29, 2020 @08:34PM (#23026264)
Counternitpick: Those subrouting calls and while statements are compiled to conditional jmps. If you squint your eyes it's just a fancy 'if'.
Re:I could do that in a weekend (2016) by zimpenfish on Thursday April 30, 2020 @01:19AM (#23027667)
"It's no use, @a1369209993 - it's IF statements all the way down!"

Apologies to William James' apocryphal quote.

Re:I could do that in a weekend (2016) by dudul on Wednesday April 29, 2020 @04:13PM (#23023643)
This is not about how it translates into code. I see a lot of value in this diagram when compared to the half-assed "requirements" most PMs put in their JIRA tickets.
Re:I could do that in a weekend (2016) by sethammons on Wednesday April 29, 2020 @04:49PM (#23024112)
That is my takeaway: PMs and non-developers - you must think through the entire workflow. When you don't, your engineers will and will either pepper you with questions that you are not prepared for or they will decide for you.
Re:I could do that in a weekend (2016) by JoshuaDavid on Wednesday April 29, 2020 @09:50PM (#23026671)
As an engineer, I consider fleshing out incomplete workflows to be one of the largest parts of my job. I've found the technique of saying "hey, the specification doesn't mention what to do in this situation, based on X/Y/Z elsewhere in the specification / this other similar feature, I'm operating under the assumption that it should work like <description of your best guess>. Let me know if that's mistaken". Then I make sure I have a commit of the state of the code, and start building based on the stated assumption.

A large fraction of the time, the PM just goes "that is correct", and the spec / ticket / whatever gets updated. When the answer is not "that is correct", you do lose out on whatever work you've done since sending that message, but writing code you eventually throw away isn't the end of the world. Also "that is not correct" responses often highlight areas where either the developer misunderstood what the PM was envisioning or the PM has a misunderstanding of what the system can do or how their proposed feature interacts with something else.

For this to work, you need:

1. Some variety of asynchronous channel that the developer can push stuff into at whatever frequency they want, and that the PM periodically catches up on entirely.

2. The developer to have a working understanding of how existing systems work and the system as a whole, from the business level.

3. The flexibility to modify specifications between the initial conception and implementation.

If you have all of those things, the PM doesn't necessarily need to think through the entire workflow beforehand -- it's nice if they can do that, but you can still ship working features without that and sometimes that is the pragmatic way to do it.

Re:I could do that in a weekend (2016) by dudul on Wednesday April 29, 2020 @06:44PM (#23025437)
I'm exactly on the same page, this is uncanny!
Re:I could do that in a weekend (2016) by flukus on Wednesday April 29, 2020 @10:35PM (#23026921)
If you've thought about the entire workflow, all edge cases and the spec is 100% complete then you've written code, it's just a matter of whether humans or machines will compile it.
Re:I could do that in a weekend (2016) by lliamander on Wednesday April 29, 2020 @06:44PM (#23025439)
I find myself creating a lot of these diagrams to share with PMs (along with sequence diagrams, system architecture diagrams, decision tables, etc.).

Systematically articulating all of these different conditions isn't necessarily the strong suit of a PM, but they're generally quite capable of understanding and providing input to such documents.

Re:I could do that in a weekend (2016) by saagarjha on Wednesday April 29, 2020 @03:56PM (#23023436)
I mean, the chart is still useful to have, and it'd be a couple of methods probably had I written it. But it's not a huge state space, and most of the transitions are fairly reasonable.
Re:I could do that in a weekend (2016) by Drdrdrq on Wednesday April 29, 2020 @04:05PM (#23023537)
I can imagine it was quite a lot of work to come to such a clean and relatively simple chart.
Re:I could do that in a weekend (2016) by hombre_fatal on Thursday April 30, 2020 @12:46AM (#23027524)
Coming up with this chart from a generic ticket like "impl notifications" is one of the hardest parts of being a developer.

Code is generally the easy part once you know exactly what you're doing.

Re:I could do that in a weekend (2016) by zimpenfish on Thursday April 30, 2020 @01:20AM (#23027676)
> one of the hardest parts of being a developer.

Not least because it's really the product designer and product owner's job to make this kind of chart.

Re:I could do that in a weekend (2016) by Drdrdrq on Thursday April 30, 2020 @02:09PM (#23034035)
Which they never do to a satisfactory level (in my experience). So it still falls on the developer to do it properly, then PO just copies it for their presentations.