Reflections on My Third Software Engineering Internship in Norway as a Penultimate CS Student at NUS
A multipart series where I reflect on my university opportunities- Penultimate Fall @ Novatech AS, Stavanger, Norway
Author’s Note: About two months ago, during a conversation with my mentor from my internship at the Government Technology Agency (GovTech), I was inspired to reflect on my various internship experiences. I believe this reflection could be valuable in helping me clarify what I want for my future and serve as a great way to document what I’ve learned from each experience.
And so begins this multipart series! I hope to go beyond just sharing my internship experiences and dive into other university and pre-university experiences as well.
Context
First off, I’d like to say that this internship has a special place in my heart and rightfully so. The combination of the people, me being abroad, me being abroad alone, and living in a foreign city and country for an extended period of time resulted in one of the most unforgettable and unique experiences so far in my (then) 23 years of existence. To this day, I look back at the memories fondly and dearly miss my time interning at Novatech and my time in Norway. Looking at this picture brought back so many memories! For this article, I will focus on my experience at Novatech and try not to dive into my time in Norway in general. I will leave that for another article, and trust me, I have a lot to say about it :)
So for context, I joined Novatech during semester 1 of my third year as a Computer Science undergraduate at the National University of Singapore (NUS). This was part of NUS’s flagship NOC (NUS Overseas College) program, where they sent students all over the world to do internships in startups and learn from founders so that NUS can then nurture the next batch of entrepreneurs in Singapore. I was fortunate enough to be part of the pioneer batch for NOC Norway, a newly launched location, and even luckier to be the only one in Stavanger, Norway! I recall applying for both my Year 2 Summer Internship and the internship in Norway concurrently, which made my Year 2 Semester 2 a pretty hectic one.
Enough of the backstory (I will cover it in detail in the future!), let me dive into what Novatech does. You can always find these details on their LinkedIn page or their website. But in short, Novatech operates as a Software as a Service (SaaS) technology startup within the Norwegian Oil and Gas industry. The main mission is to aid Oil and Gas companies in predicting their future emissions based on historical data and assess the potential impacts of greenhouse gas (GHG) mitigation measures on carbon emissions. It provides a scenario-based platform that empowers companies to generate numerous scenarios, helping them identify the most effective methods for achieving their desired carbon emissions levels. Here’s a video (from their website) for a better understanding.
What was my role?
My title was Full Stack Developer Intern at Novatech, and my primary responsibility revolved around developing NESSI, our SaaS application designed to empower clients with insights into their emissions and help them identify effective strategies for emission reduction. My main focus was on the backend, where I set up the APIs that interact with the database. During my time there, I also contributed to some data science tasks, including data cleaning and developing basic prediction models.
Unlike my internship at Sentient.io, I had a dedicated project and tech lead at Novatech. This was a refreshing change, and I’m very grateful for it, as having a tech lead meant I could receive guidance and valuable feedback on my work. In my opinion, this is crucial in the early stages of a software engineering career, when you’re still getting familiar with production-level code and benefit greatly from mentorship from someone more experienced.
Project: NESSI
As mentioned earlier, my main role focused on the development of the application’s backend. I had the opportunity to work with new technologies like GraphQL, Node.js, Jest, and various Amazon Web Services (AWS), with TypeScript as the programming language. Alongside my primary project, I also contributed to developing models to forecast future oil and gas exports. These models rely on publicly available historical data and are built using Python, along with essential libraries like Numpy and Pandas.
Unlike my second internship at Sentient.io, where I had the chance to take on many tasks due to minimal supervision and most projects being prototypes, my role at Novatech was more defined. Neither experience was better or worse — just different. At Novatech, working on the main project in an assistant, junior role meant I observed more and initiated less. In contrast, at Sentient.io, with less defined directions and more control over the projects, I could explore more freely, albeit with less guidance.
What did I learn?
Unlike my previous articles, where I dive deep into each project and explain what I did and what I learned, here I’ll focus directly on what I gained from my internship experience at Novatech since I only had one main project.
One key aspect that stands out is that Novatech was the first company where I had the chance to interact and work closely with individuals who have rich, deep experience in their respective fields (Oil & Gas, Software, and Energy). During my first internship, most of my colleagues were recent graduates, and in my second, there were experienced individuals, but I didn’t get to work closely with them. At Novatech, however, most of my colleagues had at least around 8–10 years of experience in their own industries. This exposure was invaluable, allowing me to observe how seasoned professionals approach their work.
Domain specific knowledge
The Oil and Gas industry holds immense significance for Norway, contributing over 24% of its GDP in 2024 and playing a pivotal role in the growth of the Government Pension Fund of Norway, known as the world’s largest sovereign fund. From my perspective, this industry requires a solid understanding of domain-specific knowledge to navigate it effectively. Without the guidance of experts, the wealth of publicly available data from The Norwegian Petroleum Directorate could be challenging to interpret and might even lead to misinterpretations. I’m grateful to my experienced colleagues who provided crash courses on various technical terms and Oil and Gas operations early in my internship. This industry knowledge has been invaluable, helping me gain a deeper understanding of the data I work with and the broader context of our application.
Hence, during my time at Novatech, I realized that beyond knowing the technology stack, domain-specific knowledge — essentially expertise unique to your industry — is crucial. It allows you to grasp data more accurately and is especially useful when for example: designing databases, where understanding the relationships between different Oil & Gas components is key. This industry knowledge can be a unique asset to add to your technical skillset, making you a more sought-after candidate in the field of software engineering.
Glimpse into cloud computing and Infrastructure as Code
During my Year 2 summer break, I completed the AWS Solution Architect Associate certification, realizing the importance of cloud computing in the software engineering world. This gave me a strong theoretical foundation, though I had little to no industry experience. At Novatech, I had the opportunity to gain brief hands-on exposure with AWS, and more importantly, I got to see how the application was architected. Thanks to my certification, I could understand it more quickly, which brought things full circle in a way.
I also learned about the concept of Infrastructure as Code (IaC) and the reasoning behind it, which was exciting since I initially thought most cloud and infrastructure work happened through the GUI. This introduced me to a new dimension of software engineering that I hadn’t previously encountered.
Writing good code
While I gained new technical knowledge, my most valuable learning so far has centered around writing code that is intuitive for other developers. Although I could often ensure the code’s functionality, my technical lead placed strong emphasis on maintaining code quality. This involved considerations like variable naming, levels of abstraction, code structure, and even the choice of coding style (functional vs. object-oriented). These lessons have been incredibly valuable, equipping me to write code that is more readable and maintainable.
Importance of Iteration and Feedback
Something I learned that is not so much about software engineering but rather entrepreneurship and growth is the importance of iteration and feedback. Our CEO places a strong emphasis on the value of customer feedback and the importance of continuous improvement through iteration. For instance, he prioritizes releasing a feature that may not be 100% perfect in order to gather feedback from customers, rather than holding it back. I remember discussing this approach with him, and he emphasized its relevance to startups. In the startup world, the primary goal often revolves around gathering customer feedback rather than achieving perfection for each user. Delaying a release risks wasting valuable time, which is undesirable. Therefore, it’s often more effective to release on time, collect feedback, iterate, and enhance. This approach doesn’t mean releasing poorly made products but rather acknowledges that direct customer feedback is more valuable than guessing at what they need.
I believe this philosophy applies beyond startups and is also relevant to personal growth. Embracing feedback and learning from setbacks helps us to continuously improve. This involves putting ourselves out there, even when we feel unprepared — for instance, actively seeking feedback even when our confidence isn’t at 100%, or tackling new challenges despite limited experience. In the end, we all have to start somewhere to grow and improve!
Overview: An unforgettable 5 months
My time at Novatech was incredibly enjoyable and fulfilling, and a big part of that is because I was interning alone in a foreign city. Still, I’m immensely grateful for my colleagues at Novatech. Lunchtime conversations were a bit awkward at times — perhaps due to our age gap, or maybe the language barrier — but I miss those moments dearly.
One slight regret I carry is not putting more effort into stepping beyond technical tasks and exploring business tasks too. After all, the NOC program wasn’t just about interning overseas; it was a chance to learn about entrepreneurship, to see the full scope of a startup.
Regardless, Novatech gave me a glimpse into what it feels like to work abroad, as an expat, in a team where people come from different backgrounds. We had colleagues from Indonesia, Norway, and Ukraine. It also gave me a taste of the startup culture in Norway. Here, even in a startup, work-life balance — or perhaps more accurately, work-life separation — was taken seriously. There was a clear focus on productive work, on working well rather than just working long.
Conclusion
I officially ended my internship in December 2023, just days before New Year’s. Originally, I was supposed to head home right after. But somewhere along my journey in Norway, I received an email from my home faculty: an invitation to spend the next semester as an exchange student at Georgia Tech, in Atlanta. I can’t lie — I was excited. It was a chance to broaden my horizons once more, to spend another half-year in a new country. And so, I went, off to the United States for four to five months of exchange. I will probably be covering my experience in America and Norway greater in depth in another mini series so please stay tune!
Novatech is my third internship as a CS student. I’m writing this now as a final-year student in my first semester, having just completed my fourth internship back in Singapore at GovTech. GovTech is likely my last internship before graduation — and my next reflection that concludes this mini internship series.