Orbit · Explore

Web Dev · by Pieter Botha · 2026-09-11

How would you solve this weekend problem with javascript without overthinking it?

I tried this in Dublin with a friend and we both noticed the same thing: the social part mattered more than the perfect plan.

A few notes from my attempt:
- keep the first step visible
- remove one annoying decision
- celebrate the boring repeat

Context: I am not an expert, just someone trying to make Web Dev feel less intimidating. I wrote down what worked, what felt awkward, and what I would do differently next time.

151 sparks · 91 comments

Comments

Aoi Ito · 135 likes

Start by reducing it to the smallest reproducible piece, then change one variable at a time. Most people skip the boring setup, but that setup is what makes the good habit survive a busy week.

- Write down the exact error and the input that caused it.
- Make a tiny example, then add pieces back slowly.
- Keep the final fix boring and well-named.

Come back with what happened; the details will make the next answer better.

Pixel Baker · 24 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. The the library detail changes the whole answer.

Nicolás Díaz · 2 likes

@tiny_pixel This is the gentle version of my rant.

Thandi Mokoena · 1 likes

Respectfully, I see it the other way.

Sanne de Vries · 1 likes

Anecdote beats theory here.

Pieter Botha · 1 likes

I would pin this if I could.

Pixel Baker · 1 likes

I needed the reminder to start smaller.

Silver Fern · 0 likes

I would pin this if I could.

Nicolás Díaz · 0 likes

I am stealing that phrase.

Chloe Davis · 1 likes

You just saved me a bad purchase.

Pixel Baker · 1 likes

That is the part people skip.

Pieter Botha · 1 likes

The best answer in the thread, honestly.

Priya Nair · 18 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. I care less about the perfect answer and more about repeatability.

Kabir Khan · 16 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. That is the kind of detail beginners miss.

Oliver Smith · 15 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. That is the kind of detail beginners miss.

Camille Dubois · 12 likes

You explained the tradeoff really clearly. The Mexico City example makes it feel concrete. Good reminder that tools should serve people, not the reverse.

Luca Bianchi · 5 likes

Could be regional too.

Jisoo Park · 2 likes

I needed the reminder to start smaller.

Huy Le · 0 likes

Noted, and thank you.

Kabir Khan · 2 likes

@vn_sparrow35 Appreciate the nuance.

Valentina Ruiz · 12 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. I noticed the same thing in Lisbon.

Jisoo Park · 12 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. The 5-minute rule is underrated.

Sophie Gagnon · 11 likes

This feels like advice from a patient friend. The gentle part is easy to underestimate.

Mariana Costa · 11 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. I am curious whether javascript still feels good next month.

Gentle Baker · 10 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. The messy part is easy to underestimate.

Mariam Said · 10 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. My only addition is to make the first step visible.

Maya Williams · 9 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. The low-effort version is probably the keeper.

Valeria López · 12 likes

Good clarification — I read it differently at first.

Priya Nair · 8 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. Honestly, the simplest version wins for me.

Quiet Mango · 8 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. I would write it down before changing anything else.

Jan Nowak · 8 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. The weekend version is even more interesting.

Cedar Otter · 4 likes

Good clarification — I read it differently at first.

Noah Campbell · 2 likes

Exactly; the hidden cost is energy.

Mateo Cruz · 8 likes

I get the appeal, though I would be careful calling it the best option. I noticed the same thing in Istanbul.

João Pereira · 7 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. I keep a note about ux for exactly this reason.

Kabir Khan · 6 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. The 5-minute rule is underrated.

Gentle Noodle · 9 likes

I think both things can be true.

Paolo Garcia · 1 likes

I am curious what changed your mind.

Grace Parker · 6 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. This pairs weirdly well with ramen.

Chloe Davis · 6 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. This is more useful on a tired first week than on a perfect day.

Solar Baker · 6 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. For me it came down to the conversation.

Mango Otter · 5 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. The busy month version is even more interesting.

Rizky Pratama · 5 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. I learned that one the expensive way.

Maya Williams · 1 likes

@id_marauder32 This is the gentle version of my rant.

Rizky Pratama · 1 likes

Thanks, that actually helped.

João Pereira · 4 likes

This sounds sensible, though I would need to test it myself. I am curious whether ux still feels good next month. A small test case would make this easier to trust.

Lotte Jansen · 5 likes

Adding this to my notes.

Jisoo Park · 4 likes

I wish more posts had this much context. The 10-minute rule is underrated. A small test case would make this easier to trust.

Gentle Baker · 3 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. Honestly, the simplest version wins for me.

Grace Parker · 3 likes

Glad you shared it; small wins count. I noticed the same thing in Mumbai.

Pieter Botha · 14 likes

Anecdote beats theory here.

Avery Johnson · 3 likes

Appreciate the nuance.

Liam Naidoo · 3 likes

Short answer: yes. Long answer: also yes.

João Pereira · 3 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. That is where the boring checklist helps.

Maya Williams · 3 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. The chaotic constraint is probably the real story.

Pieter Botha · 12 likes

That is fair, but I still worry about maintenance.

Urban Rider · 3 likes

This. Exactly this.

Maya Putri · 3 likes

I am saving this for the next time I overthink solve. This would have saved me a lot of trial and error. This is exactly the kind of tradeoff teams argue about for weeks.

Mariam Said · 3 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. The the corner shop detail changes the whole answer.

Camila Soto · 14 likes

Short answer: yes. Long answer: also yes.

Haruto Sato · 7 likes

I would pin this if I could.

Ren Suzuki · 3 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. This is more useful on a tired commute than on a perfect day.

Pieter Botha · 1 likes

Beautifully concise.

Piotr Zieliński · 3 likes

The kindness in this post is lovely. For me it came down to the setup.

Cedar Atlas · 3 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. That is the kind of detail beginners miss.

Pieter Botha · 7 likes

@cedar-86 Beautifully concise.

Chloe Davis · 2 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. This pairs weirdly well with falafel.

Tola Ibrahim · 2 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. It reminds me of a very specific conversation near the corner shop.

Rohan Mehta · 4 likes

Appreciate the nuance.

Ethan Brooks · 1 likes

I am stealing that phrase.

Lena Müller · 2 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. The social part surprised me too.

Priya Nair · 4 likes

I am curious what changed your mind.

Jasmine Cruz · 2 likes

This sounds sensible, though I would need to test it myself. This is more useful on a tired quiet Sunday than on a perfect day.

Maksym Bondar · 2 likes

Do you think this would work in a smaller place than Madrid? The low-effort version is probably the keeper.

Pieter Botha · 5 likes

Kind of wild how often smaller is the whole issue.

Nour Ali · 2 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. For me it came down to the recipe.

Mia Anderson · 2 likes

What would you change if you started over? The social part surprised me too.

Gentle Otter · 2 likes

I get the appeal, though I would be careful calling it the best option. I noticed the same thing in Manila. Naming things remains undefeated as the hardest problem.

Angel Reyes · 2 likes

Can you share what you tried before this? I keep a note about backend for exactly this reason.

Haruto Sato · 1 likes

The safe answer is to keep the API boring: clear names, explicit errors and one behavior per function. It sounds small, but the tiny repair matters.

Mariam Said · 1 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. The low-effort version is probably the keeper.

Solar Sparrow · 1 likes

@rapid_river Thanks, that actually helped.

Sofía Hernández · 1 likes

That sounds great until you add children/pets/deadlines.

Cedar Comet · 1 likes

Yep, the boring details matter.

Linh Tran · 1 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. The Monday morning version is even more interesting.

Brave Fern · 1 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. I keep a note about ux for exactly this reason.

Elsa Andersson · 1 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. The Toronto example makes it feel concrete.

Midnight Otter · 1 likes

Try making a tiny reproduction with no framework code. If it still fails, you found the core issue; if not, add pieces back one at a time. The chaotic constraint is probably the real story.

Zofia Kowalska · 1 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. Honestly, the simplest version wins for me.

Silver Fern · 1 likes

I would log the input, the expected output and the actual output first. Once those three are visible, the bug usually stops feeling mysterious. This is where I would ask one more question before choosing.

Rafael Almeida · 1 likes

This is genuinely helpful, thanks for writing it out. I used to overcomplicate this constantly.