๐— ๐˜† ๐—›๐—ข๐—ก๐—˜๐—ฆ๐—ง ๐—›๐—ก๐—š ๐—œ๐—ก๐—ง๐—˜๐—ฅ๐—ก๐—ฆ๐—›๐—œ๐—ฃ ๐—˜๐—ซ๐—ฃ๐—˜๐—ฅ๐—œ๐—˜๐—ก๐—–๐—˜

I worked as a Laravel developer for two years. I felt stuck. I realized I knew the framework but not actual programming.

To fix this, I started learning JavaScript from scratch. I joined the HNG Internship to find a real challenge.

HNG is a remote, intensive program. It gives you real engineering tasks and tight deadlines. There is no hand-holding. It is a sink or swim environment. It forces you to show how you think when things break.

I want to share two specific tasks from my time there.

๐—ง๐—ฎ๐˜€๐—ธ ๐Ÿญ: ๐—ฅ๐—ฒ๐˜๐—ฟ๐˜† ๐—˜๐—ป๐—ด๐—ถ๐—ป๐—ฒ (๐—œ๐—ป๐—ฑ๐—ถ๐˜ƒ๐—ถ๐—ฑ๐˜‚๐—ฎ๐—น)

I used Node.js and raw SQL with better-sqlite3. I built a system to handle job retries.

The problem: I hit a race condition. Two instances would read the same pending job at the same time. This caused duplicate work.

The fix: I used SQLite transactions. I made the status check and the update a single atomic operation. I used the synchronous nature of the library to make the locking reliable.

What I learned: โ€ข Concurrency bugs are hard to debug. They do not happen every time. โ€ข You must understand your tools deeply. The library feature I thought was a limitation was actually the solution. โ€ข Clean code does not prevent state corruption under load.

๐—ง๐—ฎ๐˜€๐—ธ ๐Ÿฎ: ๐—ฆ๐—ธ๐—ถ๐—น๐—น๐—ฏ๐—ฟ๐—ถ๐—ฑ๐—ด๐—ฒ ๐—”๐˜€๐˜€๐—ฒ๐˜€๐˜€๐—บ๐—ฒ๐—ป๐˜ (๐—ง๐—ฒ๐—ฎ๐—บ)

I handled the backend for a candidate assessment feature.

The problems: โ€ข Naming mismatches: The frontend wanted snake_case, but my backend sent camelCase. We wasted time debugging undefined fields. โ€ข Mid-project changes: The product managers changed the requirements halfway through. This forced a complete redesign of the data model. โ€ข Testing struggles: I struggled with end-to-end tests. Watching my tests fail was frustrating, but fixing them taught me more than passing them.

What I learned: โ€ข Use a shared, written API contract before coding starts. โ€ข Spec changes mid-build are expensive. โ€ข Tests are not just about green checkmarks. They tell you exactly where your logic fails.

These tasks were not complex algorithms. They were difficult because they forced me to grow. I left a worse engineer than when I started, and I came out better.

HNG does not protect you from hard problems. That is why it works.

Source: https://dev.to/joyigbonekwu/behind-the-green-tests-my-honest-hng-internship-experience-3hn8