My internship at Technophilia Solutions was the first time I worked on code that real users depended on. The mental shift from academic projects to production software is significant — and nobody fully prepares you for it.
The most immediate adjustment was the pace of code review. In academic projects, code is written and submitted. In production, code is written, reviewed, revised, reviewed again, and then — if it passes — merged. My first pull request had 14 comments. I was mortified. Two months later I understood that 14 comments on a junior developer's first PR from a thorough senior engineer is not a failure — it's an education compressed into one thread.
The second adjustment was understanding existing code. Academic projects are typically greenfield — you write everything yourself from scratch. Production means reading, understanding, and modifying code written by multiple people over multiple years. The skill of reading code you didn't write, without the original author available, is one of the most important and least taught in computer science education.
The internship taught me to write code that my future self (and colleagues) can read. Clear variable names, small functions with single responsibilities, comments that explain why not what, and test coverage that documents expected behaviour. These habits are invisible when things go well and invaluable when they don't.
I left the internship with a clearer sense of what professional software development actually is: a collaborative, iterative, communication-heavy process that produces software as a by-product.