How I Started My Career as a Software Engineer

HyeonJi Kang
Outreach Prague
Published in
7 min readMar 18, 2024

In this blog post, I share my story — from my educational background to the hurdles during university, the twists in my job search, and the invaluable experiences gained at Outreach. I want this blogpost to serve as a roadmap for those who are about to start their career as software engineers.

Generated by Midjourney

Why programming?

My IT journey started when I moved to the Czech Republic from Korea and joined an American high school where I could choose which study courses to take. At that time, I knew merely nothing about coding, but when I read career blogs, everyone said that IT is the future and absolutely everyone should have basic knowledge of coding. That’s why I decided to enroll in my first programming course.

Was it easy?

No! During the first few weeks, I was struggling a lot. I could not follow the class and did not know what to do with the tasks. Dropping the class was one of the options, but instead of that, I spent extra hours after school, watching Youtube videos to understand and review what I have learned from the class that day. In the end, I successfully finished the class with a good mark! This experience and achievement made me more curious in this field. And so when it was time to go to university, I chose the program “Computer Science” in Czech Technical University in Prague.

Did it get easier?

University life proved to be a rollercoaster especially as I opted for one of the toughest faculties in the Czech Republic. I found Computer Science truly interesting and enjoyable. But at the same time, I was facing the most difficult challenges in my life.

At some point, plenty of senior people in my University were warning us that the real-world applications would differ from our university learnings. One of my university mentors told me that studying IT and working in IT are two completely different worlds. He didn’t like working as an engineer and came back to teaching. In my case, I felt it would be the opposite. Struggling with school and learning things without knowing exactly where I will use them later kept demotivating me. If I have to learn everything again at work, I thought that the working environment would fit me better. So after my second year, I started looking for a job.

Be prepared

For the junior engineer role, I would say that the following skills are essential:

  • Deep comprehension with various data structures and their respective applications (such as array, linked list, etc)
  • Understanding the assigned tasks and clarifying it further through appropriate questions
  • Proficiency in your preferred or strongest programming language

I was lucky that I could train myself with technical programming from the university, so the interviews with the technical part were sometimes less challenging.

On the other hand, the first few interviews with companies didn’t go so well for me since I was not ready to respond properly. Some questions were not only for testing your technical skills, but also assessing your behavior and evaluating your past experience. It was difficult for me to blend my past experience into the answers. So I definitely recommend recapping the past experience and practicing responding to questions before a job interview. You need to remember that the interviewer values your collaboration and communication skills, so it’s about your reaction to the problem and your attitude towards finding a solution in addition to the solution itself.

Applying to Outreach

One day, I came across an open position at Outreach. Recognizing that Outreach primarily utilizes Golang as its main development language, which aligns closely with my proficiency in C/C++, I felt that the position would be an ideal fit for me. Moreover, the role called for a backend developer, a skill set I had honed extensively during my time at university. Despite the requirement for several years of experience, I decided to seize the opportunity and apply.

The recruitment process at Outreach was unlike any other, being the most robust and somewhat demanding, but it all made sense to me. In total, I went through the following stages:

  • Initial call with a recruiter
  • Initial talk with the hiring manager
  • Two stages of technical interviews (live coding & algorithms)
  • Feedback on the technical interview
  • Final conversation

At first, I was apprehensive about the process, but the detailed descriptions for each step and the professional yet very friendly interviewers helped alleviate my nervousness. As a result, I was able to present myself fully. What truly impressed me was the cheerful environment and personable nature of the team. At every step, I became increasingly certain that I wanted to work at Outreach alongside such remarkable individuals.

Did university education help?

Yes, people often said that the topics studied in university wouldn’t directly apply to work, but upon entering the workforce, I discovered practical use cases for many of these concepts. While studying and working are undoubtedly different, I believe that university education provides a solid foundation.

I’d like to highlight the course “Programming and Algorithmics” as particularly impactful. Despite its challenges, I found it immensely valuable. This course not only enhanced my coding skills for technical interviews but also taught me how to tackle complex tasks effectively.

However, I must acknowledge a limitation in our school education: the lack of practical application in real development environments. Although we did undertake a team project to develop a small-scale application, upon joining Outreach, I realized the importance of experience with larger and more intricate projects, as well as extending already existing projects.

Adapting to work environment

Joining Outreach means adapting to a larger and more complex environment. The Outreach platform supports a lot of microservices with close interaction with each other. This requires a deep understanding of the system’s architecture. Apart from that, acquiring the technical terms which describe the workflow of different frameworks added the complexity. With the support of my teammates and going through given tasks, I could settle in the work environment. Here are some new technologies I acquired during my journey in Outreach so far:

  • Golang
  • Monitoring with logs & metrics
  • Leveraging Github for software development collaboration
  • APIs
  • Learning cloud technologies, such as: AWS
  • etc…

How does my day-to-day look

My team is in charge of the extensibility service of Outreach application. We make sure partner and customer developers have wide integration capabilities for creating compelling integrations by offering public APIs, dev ecosystem experiences, OAuth apps management and many more.

So, what does my day as a software developer look like? I start my day with the team standup meeting. I share my progress or struggles to get advice from my teammates and unblock myself. Then, I work on the assigned task by researching new concepts, implementing, testing, and monitoring them. In the beginning, I was getting a very detailed description of each task, so it was easy for me to follow step by step. With time, I obtained a deeper comprehension of our service, and now it requires less time for me to jump in and finish a task.

Collaboration is the key

As a student I learned and worked by myself most of the time, but when you work in a team — it is not the case. Asking questions when facing challenges and learning from colleagues with a positive mindset became second nature. It was a must to learn how to collaborate and be honest if something was not clear to me.

Another thing that always inspires me is the attitude of my colleagues toward challenges. They are passionate about overcoming obstacles and figuring out the solutions. In my 1.5 years at Outreach, accepting challenges and continuous learning became a cornerstone of my journey..

Image from https://sapro.moderncampus.com/blog/how-to-know-when-to-ask-for-help-at-work

Conclusion

My main achievement is growth. Outreach has set the environment for me. I am proud of myself that I am contributing to the value and the quality of our product, and I feel empowered when I extend my knowledge and apply them.

I hope my story serves as inspiration for aspiring software engineers navigating their own paths. The challenges are real, but with perseverance, a hunger for learning, and the right environment, the possibilities for growth are boundless.

--

--