Freshman Software Engineering Internship Experience at Stoqo (Part 2)

A story about how I got my first internship and what I got from my internship as a software engineer at Stoqo

Albertus Angga Raharja
11 min readSep 3, 2017

This post is a continuation to my previous post in which I shared about my background and the process of landing the internship.

My internship started around June during my summer vacation and it lasted for around 3 months. During those 3 months, I grew a lot as a person and as a developer. Personally, what I learned the most were coping with day-to-day work as a developer and how to manage my expectation, stress and do comeback from my mental burnouts.

Part I: Day-to-day Work as A Software Engineer Intern at Stoqo

During my internship here, I was working on 3 projects using React, Redux and Styled-Components. My projects were to develop Internal Tool, then Customer Dashboard and then Merchant Platform website. I worked on the front-end side implementing the design of our designers using React, Redux, Styled Components and other front end libraries. My day-to-day life as a intern starts late at the afternoon at 11.00 A.M where we usually begin the day having our daily stand up to report our progress, to-do lists, and blocker. Usually before I started coding in the afternoon I bought brunch and ate it in the company while watching an episode of anime, later on I feel guilty doing this on office since sometimes they wait for me to finish my lunch before having our daily stand up >.< Pardon my otaku side :) After brunch, usually I jumped straightly to start an intensive coding session on my projects with my sound-proof headset on, listening to all J-POP and Anisongs. I did take a break once in a while (maybe after 1–2 hour of coding session) for toilet and useless internet browsing (sorry about this my employer T_T). Oh yes and I did discuss a lot with my co-workers as well, mainly on the UI and UX of a new feature on website that I worked on. More or less, that’s my day-to-day life as a Software Engineer Intern.

Customer Dashboard website that I worked on :D

Part II: Things I Learned During My Internship

Of course, Technical Skills!

Prior to the internship, I was clueless at all about development world except my experience developing website using HTML, CSS, JavaScript, and PHP for Web Programming and Design course plus some 10–20 hours-ish experience developing using Angular 4 for my interview project. Since I never had the experience to build things with other people, at that time, things that I knew from Git were only add, commit, push and pull. I didn’t even know what branch, rebase, merge were. Later on my shallow knowledge of Git did cause some trouble for someone since he had to help me merge, rebase, and resolve conflicts for me after my code had been reviewed >.< Also, because this was my very first time to work together as a team, I didn’t know Code Review as well. We did a lot of code review and I enjoyed the process of receiving feedback and doing revision based on it as well. By the end of my very first internship at Stoqo, I found myself quite proficient using Git, React, Redux, Styled Component, JavaScript, ES6, NPM, and my CSS skill went drastically high. I learned to create clean, scalable maintainable code too since we reviewed each other code on a daily basis.

Steep Learning Curve

During the first week of my internship, I managed to create my first React + Redux component in only two days. My first internship goal was to learn React as-soon-as-possible since day one because of my assigned project. One of the interns beside me at Stoqo is a React rockstar who had rich experience in front end development. So I asked him various source to learn React ASAP. I spent my first day researching and reading React documentation. Then I spent the next day researching and reading about Redux. At the third day, I finally decided to just start doing my projects and implementing the code.

Things that would cost me weeks or months to learn at my usual day, because of the internship I could learn it just in several days since I had to implement it fast due to my assigned project. The main difference between learning at my college days and learning at my internship days was getting paid to learn and research about things during internship period, meanwhile I had to pay for college to learn about things (lol).

Beside steep learning curve, I think the most important thing that I learned and grew is my love for coding. I enjoyed a lot of my time coding here. I remembered as well spending my weekend refactoring my code for 13 hours straight because my code was so messy. Sometimes, we, the software engineers at Stoqo would stay until late night at the office, (we once had stayed at the office until 1–2 A.M), some even staying the night at the office just to continue coding. Even worse, my senior would even continue coding for the project at our rented room (I lived together with two other interns during our internship period) until 3 A.M. My other senior sometimes would forget and postpone eating until he had completed a feature as well. We did this and it’s not because the CTO or anybody asked us to do that, they never did. We did all of this simply because of our love and passion for coding.

It’s 10.00 PM and we are still working at the office because we love it!

Structuring code and handling edge cases

Even though I managed to complete my first project and learn the tech stack very fast, later on I found a lot of flaw in my code so I had to do a lot of refactoring. This was simply because I rushed to “get things” done and didn’t consider every possibility and edge cases that would happen. Things would be easier if I took time to consider every possible cases before straightly jump to code things. I learn that it’s really important to create a clean, scalable, and maintainable code since it would help debugging when things goes wrong and make it easier to make revision and new feature as well.

Googling 101

Immediately asking a question is a bad habit. During my first and second months of the internship, for every time I found a wall and difficulty to implement new things or something wrong with my code, I would always go and ask my seniors who knows a lot more than me. I think this was not really a good habit since I would always disturb him then he would lose his focus on what he had been doing every time I asked him. Personally, I would not grow as a person my research skill and my knowledge wouldn’t improve as well. Actually it feels better to be able to resolve everything by yourself, the pain and effort of researching things alone actually will pay off when you see your work and code goes all well!

I don’t have to be a Know It All. Prior to the internship, I thought that you have to master a lot of things and have deep knowledge and understanding about how everything works. But that doesn’t seem to be the case since it’s perfectly normal to spend like 1–2 days researching about things in Google or Stackoverflow before implementing a new feature :) This actually resonates well in me and encourages me to always research and read about things online first. Even my CTO and my seniors here sometimes spent 1 day just researching about things as well. My CTO said the most important thing is to have are your critical thinking and the ability to discern what makes sense and what doesn’t.

Part III: Setbacks

During 3 months period of my internship, of course I also encounter some setbacks. Here are the stories and how I handled it.

Lack of Communication and High Self Expectation

During the second week of my internship, we had another sprint, in this sprint I was asked to add new features to the internal tool. Up to this point, another interns seems to be doing really well in their own projects and they seemed to get a lot of feedback. Hmm, how about me? I was not getting enough feedback compared to others. I didn’t know how well my perfomance was so I assumed my performance were that bad since I was not as productive as the other interns. So I pushed myself harder to perform well. Before long, I had found myself working 10–11 hours everyday during this first 2 weeks. I stayed until 9–10 P.M alone at the office while people usually went home at 7 P.M during these two weeks. By the end of week 2, I realized that finally I had my first burnout. Going to office feels like a burden, I was depressed by the fact that I didn’t perform as well as others even though I have been pushing myself so hard. Day-to-day coding and developing doesn’t feel as fun anymore since my learning curve started becoming flat. The first thing that helped me to overcome my burnout was actually realizing that I experienced burnout. The next step was to talk about it with my co-workers, especially my CTO. The main reason for my burnout this time was my lack of communication and my high expectation so I just assumed that my performance were really bad. After talking it to my CTO, he said that he thought I was doing pretty well and it was just me worrying too much. It was because I had too high expectation on myself, comparing myself to others and all. So, problem resolved. Really, communication is always the key and solution of my every problems and doubt since I’m the type who worries a lot about things like these.

Conflict in Self Perception: Front-end vs Back-end?

I had always thought that doing back end stuff are more prestigious and more challenging than doing front end before having internship here. After 1 month of doing front end development, I realized that I had another burnout due to conflict in self perception. This time it was because I haven’t found my passion in front end development and couldn’t really appreciate the difficulty of front end development as well. The thought of doing only front end after this internship demotivated me since I only touched front end part during my internship even though I wanted to touch back end parts as well prior to the internship. I managed to overcome my burnout this time by actually appreciating the difficulty of front end development and having clear purpose and passion while developing things. Later on, I got the chance to touch *a little* back end part of our code base as well even though it was only implementing really small feature. By the end of this internship I realized that no matter which part (front end or back end) I’m doing, the most important thing is to love and appreciate what I’m doing. Front end and back end had its own merit and difficulties, especially things with front end since language, frameworks, and libraries are getting updated at a incredible pace everyday. After doing front end development for 3 months, finally I can appreciate front end development more now and found my passion there too. What I’m aiming after my internship here is to become a Fullstack Developer who can be familiar both of the front end and the back end side as well.

Part IV: Insights and Advice

If I were asked by a junior to give some advice and insights regarding this whole internship thing, I would share:

Don’t get intimidated

Don’t get intimidated just because you didn’t have any technical skill and experience. I didn’t have any experience and skill as well back then. But, you can always learn the skill later but it’s important to have confidence and reasons to intern in your freshman year. Most of my friends who did internship the same time as me actually don’t have any development-ready skill and project experience as well. I was lucky enough that my employer considered me because of my strong motivation to learn something from Stoqo back then. Do ask yourself, is getting internship early that important for you? For me, the main reason was I wanted to grow as a person and I wanted to avoid getting stuck at home for whole 3 months doing nothing but playing video games and watching anime all day.

Your resume matters

Make your resume as attractive as possible, follow every mainstream advice about resume out there. It includes making your resume exactly one page, not putting your photo at your resume, remove every redundant information (i.e. address), and making it as relevant as possible to roles you are applying for. My senior here recommends reading a Google Resume book to improve your resume.

Prepare for Technical / Coding Interview

Prepare for coding interview. To do this, take class seriously (especially Fundamentals of Programming course), train regularly in website like HackerRank, read Cracking Coding Interview book, etc. Do learn some useful and mainstream structure data and algorithms as well. Main stream problems like finding pair of sum and substring (KMP) problems are a good example to get started.

Me and most of my friends who got the chance to intern at our freshman actually did competitive programming too in the past, this helped a lot since we were trained to solve problems fast and correctly. If you are still a freshman, I would recommend you to get introduced to competitive programming as well, it’s fun!

Having grit is the key

In the end, I think having grit is the most important thing that I learned during my internship.It’s true that other interns’ performance this time were better than me and it was not mainly because of their background (TOKI alumni). I have observed during my three months that they are such a good programmer because they do really enjoy and love coding personally. Simply put, they code to the extend that sometimes they lose track of the time and forget to eat or sleep as I have mentioned the story of us coding until late night above.

I mentioned earlier in my previous post that I’m the only non-TOKI alumni in this Stoqo intern batch, and yes this do make me feel less capable compared to the other interns. That said I can proudly say that I might be the one that learned the most during this internship program. So, don’t be afraid to be the most inexperienced guy over there, since there would always things to learn from others as long as you have the grit and passion!

Part V: Conclusion

To summarize, I’m really thankful to be given an opportunity to become a Software Engineer Intern at Stoqo where I can contribute to the growth of Stoqo and develop a real product which can touch people’s life.Overall, Stoqo is a highly recommended place to apply to. We are a team consisting of passionate, enthusiastic, funny, and diverse people who work hard and yet play hard as well! Thanks to all Stoqoers for being part of another chapter and journey in my life. Once again, I feel thankful for the chance to grow as a person and as a developer, this was my very first work experience and it was really a pleasure!

All Stoqoers!

--

--

Albertus Angga Raharja

Final year CS student at University of Indonesia. Prev. SWE Intern at Google — Flutter team (@flutter). Created Flutter Layout Explorer. GitHub: @adalberht