JeffY completed a 3 month internship as a Software Engineer from December 2025 to March 2026. During his time here, he made significant contributions to RouteVN.
He was asked to write a reflection on his internship experience so that it can be helpful for future interns considering the position.
I joined Yuusoft as a Software Engineering Intern on December 2025. At the beginning, I expected a more traditional internship flow where the main job is to receive tasks and implement them quickly, but the actual work required much more system-level thinking from day one.
My main scope was route-engine and routevn-creator-client, with additional work in kanbatte. Because these areas connect directly to each other, I learned early that speed without design thinking can create product-level issues later.
A major part of my work was the variable system across engine and client. I attended and contributed to implementation on both sides, which included runtime behavior in engine and variable workflows in the client. That work made it clear to me that variables are not just data fields; they directly influence gameplay flow, editor behavior, and UX consistency.
On the engine side, I worked on NVL and interaction flow behavior, including NVL support, rollback behavior, auto/skip flow changes, and slider-variable interactions. On the client side, I worked on variable edit flow, variable-type immutability, slider binding behavior, and scene/layout consistency, plus practical editor reliability fixes like multi-line paste support, Windows CRLF line-ending handling, NVL anchoring behavior, and image interaction defaults. These were not flashy features, but they removed daily friction for users and made behavior more predictable.
I also contributed to kanbatte through task aggregation and query-param filter/sort behavior, plus assignee/label handling. That work improved visibility and made task views easier to share and reuse, which helped coordination across projects.
Across the internship period, I contributed steadily through regular commits in engine, client, and kanbatte. That consistency mattered more than occasional large bursts because it kept feedback loops active.
The hardest challenges were not language syntax; they were boundary and ownership decisions in a multi-repo product. When one issue touched engine, graphics, and client at the same time, the real question was not “how to fix this quickly,” but “which layer should own this behavior so the system stays maintainable.”
I also had execution-pattern issues early on. Some PRs were larger than they should have been, and in my 1on1 notes I recorded periods where I spent too long on lower-priority animation paths. I improved by splitting work into smaller phases, validating direction earlier, and checking priority more often before going deeper.
Communication was another growth area. My notes show that delayed escalation slowed debugging, so I changed to reporting blockers earlier with clearer structure: what the issue is, what I tried, what I think is happening, and what decision is needed.
One of the strongest parts of this internship was management quality and team culture. han4wluc constantly experimented with new technology and shared practical patterns with the team, including how to use the latest model capabilities and concrete workflows with Claude and Codex. This helped interns stay current and avoid outdated habits.
OpenClaw was also introduced for company-level internal progress tracking and visibility. That made work status clearer across parallel tasks, reduced hidden progress, and improved team alignment.
Another important point is that intern development was treated as a real goal, not just output. I was given homework that was sometimes deeply technical and sometimes broader, including materials that expanded product thinking, communication quality, and long-term career direction. That made the internship developmental rather than transactional.
The monthly goals also set an explicit weekly expectation to explore something new and evaluate whether it could improve team process or delivery. In practice, that created an active learning culture where experimentation was part of normal engineering work.
The operating rhythm was also very clear. We usually met around three times per week, planned on the first day of each week, the first day of each month, and the first day of the year, then reflected regularly to check whether plans were met or needed adjustment. That planning-and-reflection loop made priorities visible and reduced confusion when scope changed.
There was also no strict work-time limitation; the expectation was simply to get the work done.
Pair programming was especially effective in this environment. For direct consultation and live demonstration, it was much faster and clearer than discussing the same issue only in chat.
I used AI heavily for exploration, implementation, and debugging support, and it improved speed significantly when used with clear boundaries. I also experimented with AI for progress management, not only code generation, which helped me break down tasks and keep momentum.
At the same time, I documented cases where AI struggled with large cross-repo context, especially around animation-related complexity. That experience reinforced a practical rule for me: AI is a force multiplier, but ownership, prioritization, and final judgment still need to come from the engineer.
At the start, I prioritized implementation speed first. By the end of the internship, I shifted to planning before execution, smaller increments, earlier validation, and clearer blocker communication.
I also changed how I define value. Code has no product value until it is validated and shipped, so I now pay more attention to interface boundaries, review timing, and delivery reliability instead of only feature completion.
This internship expects interns to think through tradeoffs, communicate clearly, and own outcomes, not just write code. If someone wants fast growth through real product work and direct feedback loops, this is a strong environment.
I am grateful to han4wluc and the team for the trust, support, and direct feedback throughout this internship.