15 points

One time, we were drawing a state diagram of how the core loop in our application should behave. So, you know, first you have the preparation state, then when that succeeds, you go to the getting-things-ready state, then into the actual doing-things state, then the result-reporting state and so on. So, there was exactly one happy path.

Then we figured, we should also diagram all the error scenarios. If an error occurs in the preparation state, we should transition to the result-reporting state. But if an error occurs in the getting-things-ready state, we’ll need to go to an intermediate cleanup state before we go to the result-reporting state, and so on.
As we added more and more error paths, the arrows had to curve more and more, until the whole diagram eventually looked like an onion. That’s when I knew, we were doing real software engineering. 🙃

permalink
report
reply
4 points

I find making a state machine diagram before actually implementing an app is a really good approach because it forces you to think through the failure cases up front. What often happens toherwise is that you end up focusing on the happy case, and then error handling ends up being bolted on as you discover failure cases in production. This article is a great read on the subject https://shopify.engineering/17488160-why-developers-should-be-force-fed-state-machines

permalink
report
parent
reply
5 points

I mean, yeah, I wrote it kind of humorously up there, but I do actually think state diagrams are a good idea and modelling the known error paths is part of real software engineering.

However, I’ve never been in a project where anyone knew nearly enough about what we’re supposed to build, to be able to draw a state diagram before we got started. We would rather do a refactoring halfway through and then we would design a state machine to fit the requirements…

permalink
report
parent
reply
3 points

It is important to keep in mind that any software ends up being a living thing. Even if you know all the requirements up front, which you almost never do, they’re inevitably going to change down the road. Customers will want new features, business might pivot what they’re doing, and so on. It’s pretty much inevitable that the software will keep evolving. It’s key to recognize this and design things in modular fashion so you can evolve things in a sane way as the need for changes comes up. That said, I find you can start small and figure out what the MVP looks like, then go from there. You can draw out the bare minimum and then use that to interrogate the project manager to make sure it matches what they’re expecting.

permalink
report
parent
reply
6 points

Pro tip, cut your onion in a well ventilated space. Like for example crack a window over the counter that you are cutting on, it will greatly reduce the effect, and it doesn’t even need to be wide open

permalink
report
reply
14 points

I’m not very acquainted with analogies so can you help me with understanding the software part of this?

permalink
report
parent
reply
8 points

No matter what you do, crying is inevitable.

permalink
report
parent
reply
2 points

…use Windows on an air-gapped PC to do all your software development? At least then hackers won’t steal your source and post your shameful code on the internet.

permalink
report
parent
reply
1 point
Deleted by creator
permalink
report
parent
reply
2 points

I usually wear contact lenses and they help with not crying from onions, but they don’t help with Software.

permalink
report
reply
2 points

Just one more abstraction bro.

permalink
report
reply
1 point

You know, not everybody likes onions.

Cakes! Everybody likes cakes! Cakes have layers.

Why can’t software be like cakes?

permalink
report
reply
3 points

Software is like cake. The more you consume it the shorter your lifespan.

permalink
report
parent
reply
3 points

I find most people start out with the aim of baking a cake, but end up making an onion in the end.

permalink
report
parent
reply

Programmer Humor

!programmerhumor@lemmy.ml

Create post

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

  • Posts must be relevant to programming, programmers, or computer science.
  • No NSFW content.
  • Jokes must be in good taste. No hate speech, bigotry, etc.

Community stats

  • 4.3K

    Monthly active users

  • 945

    Posts

  • 10K

    Comments

Community moderators