Thursday, June 16, 2022

Week 5. Post 2.

 Discuss how teamwork in your CSC courses at Berea has influenced your internship experience.

Today I and my co-worker (another intern) have been working on various tasks such as editing the web page, creating a new feature with Jgit, and editing some methods in the existing controller file. We have completed have of the tasks that we were supposed to finish by Friday's demo presentation time. However, we got stuck on several issues and we were not simply even being able to understand the issue itself; not even talking about solving the issue. My first reaction was a little bit panicking since it is already Thursday and it did not feel like we will be able to finish our tasks on time by Friday. It felt somewhat overwhelming as we got stuck and did not make much progress the whole day.

Before coming to this internship, I undervalued the importance of teamwork and always ignored the good principles of pair programming. Before, I and my co-worker have been working independently most of the time. However, this time we had to work together and I had to practice my teamwork and communication skills. Before coming to the internship, I thought that as long as I can do my job everything should be good. However, I was mistaken. I could not coordinate well the allocation of the work with my co-worker which led to the fact that we have wasted our time working on the same HTML editing task. I felt I can finish everything by myself and do not have to talk to my co-worker. Then, I set down and thought of how we can effectively do pair-programming so we do not work on the same issue separately and waste our time coding for nothing.

Next time, I will not underestimate the importance of teamwork and go straight into thinking of the way how to allocate tasks efficiently in the team. I will try to ask myself: "What am I good at and what my teammate is good at and how we can split tasks so we both learn and at the same time be efficient in our process?".  


Wednesday, June 15, 2022

Week 5. Post 1.

 How do your internship responsibilities relate to the content you have learned in your classes?

For the past recent days, I have been working on a new feature for the search application which was being able to display information of each record from the database on a new webpage. I had to create a new view/controller in our search index that will display all (and if not all, some) of the information we have in our Solr index for a chosen record.

When I first was introduced to the task, I thought I will be able to accomplish it pretty quickly since I had some prior experience working with frameworks and building controllers outside of college courses. During school time, I did not pay much attention to the Data Structures and Algorithms class; thus, coming to this internship, I had the mindset that I will not need these Object-Oriented Programming concepts at all and that the things we have been learning in class are too theoretical.  

However, I was largely mistaken. In almost every single chunk of code that I was writing, I needed to utilize some concepts of Object-Oriented Programming such as inheritance, encapsulation, and polymorphism. Not only that, but I also had to work a lot with classes, their instances, and objects across various files of the web search application. I was surprised to see so much familiar content from school that I thought I would not need this information much back then but now realize its importance to the fullest. Next time, when I am learning some content, I will try to evaluate the importance of the content critically and learn how to prioritize one particular type of information from another. Whenever I will be learning something new, I am going to ask myself such questions as: "Are these concepts commonly used in programming and if so, how? Are they tied with any major concepts I will be working on in the future?" etc. Critically evaluating and digesting learning information is crucial. 

 

Saturday, June 11, 2022

Week 4. Post 2.

Overcoming Challenges


An internship provides many learning opportunities, but it has its challenges as well. On Friday, we had an internal demo of the project I have been working on. However, when I looked at the code in the morning, the recent changes caused test failures. I was surprised and got a bit nervous. I knew I had to come up with a plan to bring the code to a functional state. I already had to-do items for that morning. Not only I already had other tasks to do for that morning, but also the error itself seemed to deal with the Git repository bug that I cannot fix in an hour. What I thought in my mind:" Why is it happening to me now right before the demo presentation?! What my mentor is going to think about me now?!". I came to this internship with the assumption that I have to perform perfectly all the time and can't have any failures. This experience taught me how to realize that not always everything will go smoothly. Being a perfectionist myself, often I get very angry when something goes off the rails. Sometimes it is very hard for me to accept certain failures as it puts me in a vulnerable position in my life which forces me into the mindset of "everything should go perfectly, otherwise, I am not good enough".  With this experience, I realized that not always everything will go perfectly as you were planning and at that moment you need to learn how to quickly adapt to stressful situations. I quickly contacted my co-worker to ask if he will be able to demo by himself and helped him out with how to plan out our presentation without demoing my work. Next time, when I face a stressful situation like this, I will try to follow the rule of "deep breath", where I would take 1 minute meditating; and only once I am calm down, start reprioritizing/reorganizing my tasks and steps I can take to adapt to new situations. 


 

Friday, June 10, 2022

Week 4. Post 2.

 Discuss how teamwork in your CSC courses at Berea have influenced your internship experience.


Last few days I and my co-worker have been working on developing a delete file functionality for our application; we wanted the files that are deleted in the repository on GitHub to be deleted in our database system as well. At first, it sounded very complex to me because it is not just adding one method - it is a lot of source code to read and understand in the first place. My first thought was: "This is very difficult, I do not have vast experience working with event listeners in Java and writing queries". That meant to me that it is going to be challenging; however, I have a deadline for this task and there is not much time to sit and complain about the difficulty of the task. I have come to this internship with the assumption that I can do everything on my own by watching tutorials and reading articles on how to implement certain features. However, that assumption was not helpful and wrong. Being an introvert myself, it is always hard for me to reach out to people since it puts me in a vulnerable position that makes me feel uncomfortable. 

However, after spending almost a day watching Udemy courses on how the event listeners work in Java, I have realized that all my work day was spent on this and I did not even get to the coding part. On the contrary, I noticed that my co-worker is never afraid to ask questions from our mentor and constantly comes to him to stay on track. I noticed that it was working well for him and I decided to step out and do the same; it helped me enormously. Next time, I will try to expose myself more to asking questions from my mentor as it is a faster and more efficient way to learn complex concepts; rather than having the mindset of "everything by myself" and still being lost at the end of day. I will try to give myself a rule of asking at least 3 well-thought questions from my mentor whenever I feel overwhelmed with complex concepts and I will keep track if I have done that in my weekly tracker.  

Saturday, June 4, 2022

Week 3. Post 3.

Today I learned a very important rule: get context for the request. I was asked to update the versions of all the software that we were utilizing including various dependencies and packages inside each application.

I had the feeling in my gut that it would be wrong to simply update all the software such as Solr docker instances, maven dependencies, docker images, etc. At first, I took another minute to think through the task and see if it is actually going to be beneficial to update every single thing in the software or if I misunderstood the task. Not being able to pull actionable insight from looking at the task again, I asked the mentor why the updates are needed. Based on the additional context I was provided, I  realized that I actually would have to do some additional research and see if some newer versions of maven dependencies, Java SDK, docker instances, and others are going to be compatible with each other. I am glad I did not blindly go on updating everything together but double-checked with the mentor. 

I realized it’s very common to have these misunderstandings in the workplace. I think it’s because the stakeholder may ask for one thing assuming that you already know how to deal with it  — they just did not articulate it well enough on the first try. Maintaining a transparent and open line of communication elevates these sorts of situations. For me to be a good software engineer, I have to make sure I dig deep into these kinds of requests, utilizing my critical thinking and analytical mindset, to understand what is intrinsically driving the request and what is the actual deliverable needed. Otherwise, I would end up crashing all my applications my updating all the dependencies that are not compatible with one another. 

Friday, June 3, 2022

Week 3. Post 2.

 Describe how your team members communicate their perspectives, and whether this is similar/different from how you communicate your perspective.

Today at my internship I worked on my first demo presentation, which we have every Friday where we present our reports on what we have accomplished during the week. After the demo presentations, we have a so-called "Retrospective meeting", where we talk about the previous week from a retrospective perspective. In the shared Google Docs, we divide columns into 4: happy face, frowny face, ideas, and flowers. In each column, everyone writes any comments related to that field; for example, in the column "Happy Face" my co-worker wrote:" Working together really helped to solve problems". They also give kudos or shoutouts to each other in the "Flowers" column and I was happy to see my mentor writing the following: "S (me) & T (my co-worker - Great job on working together."

It is my first time seeing this kind of approach to communicating their perspective to the whole team. I reflected on the way we did it and I realized that I like this approach. It was very helpful for me to look back at the week we have been working and highlight the things that we have done good and wrong. I have never used to sit down and reflect on my work at the end of the week - I would always just keep moving on. But I realized that even 30 minutes of reflecting on the work you have been doing for the last week can significantly improve your performance in the future. Now I want to make it my habit as I found it very valuable to realize my strengths and weaknesses during each week; this way, I will be trying to focus on positive aspects of myself more and work on the weak points in the next weeks which will increase my efficiency at work. 

Thursday, June 2, 2022

Week 3. Post 1.

Prompt: Invite your supervisor or other colleague for coffee and to learn about his/her career story. Discuss what you learned.

I had the first chat with both my co-worker intern and a supervisor early in the week and got a lot of valuable insights from the conversations with them.  My mentor has been telling me how dedicated he was to the field of Computer Science and how he has always been focusing on one language which was Java and now he is very proficient with it. He said he was able to succeed in his career by being able to solve complex problems with Java. On the contrary, my other co-worker told me how he was switching back and forth between CS and statistics and ended up knowing a lot of different languages little not feeling confident with any of them; although he got a lot of various stats-related languages in his skill set. 

After this conversation, I realized that I might be making a mistake by diving into a lot of different programming languages and scratching each one on a surface, rather than making me prepare myself within a framework of one programming language (like JavaScript, C++, Java, etc) and focusing on solving complex problems with this language. 

So now, I will try to reconsider my plan of action by making sure to have a go-to programming language for myself, rather than having a lot of different languages in my skill set whereas I don’t quite know how to solve complex problems in any one of them. This way, I can ensure that I focus on the computer scientist mindset and cultivate a problem-solving skill set, rather than simply aggregating multiple languages on my resume and not knowing how to solve the problem in any of them. 

Reflection Summary.

 July 30th marks the last day of my internship. It has been a fantastic experience and surpassed all my expectations, making me sad to see i...