Three days after the first version went up, on July 3, I did not add a single shiny feature. I spent the day fixing ten bugs. It is not the kind of day you put on a landing page, but it is the kind of day that decides whether people come back, so it is exactly the kind of day this journal is for.
The bugs were the usual early-project zoo. One was a plain mismatch in the shape of the data sent to the server, so a request that looked fine simply bounced. One was a race condition in Listening, where the audio and the code that watched it could get out of step if you clicked at the wrong moment. One was a Writing score that used the wrong formula and quietly produced numbers that did not add up. The rest were smaller rough edges in the interface, the sort of thing you only notice when you sit down and actually use your own product as a stranger would.
That last part is the real story of the day. I stopped building and started taking the tests myself, start to finish, and the list of ten wrote itself. Nothing exposes a weak spot faster than becoming your own annoyed user.
Take the race condition. On paper the Listening code was fine; the audio played, the questions appeared. But when I clicked around impatiently the way a real person does, the timeline and the code watching it could drift a fraction out of step, and a question would reveal at the wrong moment. You cannot find that bug by reading the code calmly. You find it by being in a hurry, which is the exact state a candidate is in. The wrong Writing formula was similar: the maths looked plausible until I checked a result by hand and the number simply did not add up. Small, quiet, and the kind of thing that erodes trust without ever throwing an error.
The feature hiding inside the bug list
While using the site like a real candidate, I hit a wall that was not a bug at all, just a bad assumption. The tool expected you to sit an entire section before it would tell you anything. But a real person practicing after work does not always have a clean hour. Sometimes you have twenty minutes and one Reading passage in you, and then life happens.
So I added the ability to submit after any single section or passage and still get a result. Because a partial attempt cannot map cleanly onto a full IELTS band, I did not pretend otherwise: you get an approximate band with a plain warning that it is based on part of the test. Honest and useful beat precise and unusable. It turned the tool from something you had to schedule into something you could pick up for a few minutes at a time.
That is a small design decision with a big attitude behind it. A lot of study tools are built for an imaginary person with a quiet room and three free hours. Real candidates are on a bus, between shifts, or squeezing in a passage before bed. Once I started designing for that person instead of the imaginary one, a whole string of later choices fell into place: saving your progress so a reload never costs you anything, keeping pages light so they open on a slow connection, and eventually a full mock you can finish in under an hour. All of it traces back to a July afternoon spent fixing ten unglamorous bugs and listening to what the tool was trying to tell me.
That small change quietly shaped the whole product. Months later it grew into a proper short format you can finish in under an hour, but the seed was this July afternoon of letting people practice in the time they actually have. If you want the full thing under exam conditions, the free mock test is there whenever you do have the hour.
Only have twenty minutes? Do one section, get an honest read on where you stand, come back for the rest later.
I have come to like the unglamorous days. Ten bugs fixed is ten small reasons a stranger did not give up on the site. And every so often, buried in the bug list, there is a feature waiting to be noticed.
Submitting one section at a time is live on the free IELTS Listening test.