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 teh same thing: teh social part mattered more than teh perfect plan.

A few notes from my attempt:
- keep teh first step visible
- remove one annoying decision
- celebrate teh 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 teh API boring: clear names, explicit errors and one behavior per function. It sounds small, but teh 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 probly the keeper

Solar Sparrow · 1 likes

@rapid_river Thanks, that actualy 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