Thursday, June 30, 2022

Week 7. Post 1.

 Have you changed any of your original internship goals at this point? Explain.

What happened to me last days was that we have been working on adding the validation feature to our search application. Initially, I thought that I understood the task and without any further communication, I just jumped straight into completing it. I spent hours working on the validation of the records and had my vision of it in my head. Later, when I got my validation working, I shared that update with my mentor and he told me that this is not quite the direction we would want to go. 

My first reaction to this message from my mentor was very upsetting because I spent so much time working on something that was not really what we needed to do. Later, he told me to revert my changes and go to work on the harvester application code rather than search the application which I was doing. I felt that my work was useless and it made me upset. 

Coming to this internship, I thought that I would aim to develop my technical skills. However, after this incident, I realized that I want to change my goal and make it to develop my communication skills instead. The insight I had is that my communication skills are not at best and even if you code well but cannot communicate well with your team - your work is not bringing any value to the company. 

Coming to this internship, I truly undervalued the importance of communication skills. If you do not communicate with your team well, your project is not going to succeed any matter if your code works or not. I had this mindset about programmers that they do not have to learn any soft skills and they only need to know how to program. However, I realized that some tasks are very specific and even a slight misunderstanding in the team will lead to incorrect completion of the task. 

Next time, whenever I am given a task, I am going to make sure I cleared all the points before jumping straight into coding. Also, I will make sure to keep my mentors updated on what I am working on to make sure I am staying on the right track. I might also ask my mentors if they can give me any feedback on how to communicate better in the team. 

 

Friday, June 24, 2022

Week 6. Post 3.

What type of research have you completed or what skills or technologies have you had to learn to advance the internship learning goals? 

Every day at my internship I learn something new. For example, this week we have been working on trying to implement the validation feature for the metadata from scientific researchers that will be put into our search application. For that, we needed to use specific annotations for the SpringBoot framework that we are using; thus, it was quite a challenge to get it working as it required building a lot of different files such as Service,  Repository, etc. 

My first reaction was very positive and I felt like I could finish this task very quickly since I found an appropriate tutorial. Thus, I kept procrastinating with that task feeling that I can finish it a few hours before the demo presentation. Coming to this internship I always felt that once the tutorial is out there - it is going to be easy to follow along and develop something.  However, I was largely mistaken. I underestimated the difficulty of learning new tools and applying them to real-life applications. It actually took me much more than a few hours to get it done working. I had to only follow the tutorial, but also try to see how to apply it to our application; on top of that, some dependencies and libraries were not importing correctly which did not let me move forward for quite a while. 

Next time, when I see the task, I will try to objectively evaluate it instead of thinking that as long as I found the proper tutorial then I am good to go. I will not only check the tutorial but also consider the possible complications such as dependency injection errors and others that can cause more hours of work. 

Thursday, June 23, 2022

Week 6. Post 2.

 What types of projects or assignments did you complete in your internship? What were their purposes?

The types of assignments we have been working on vary: starting from the environment and port setups and ending with full-stack web development. For example, one of the tasks that we had to work on is creating 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 database for a chosen record. Where this new page should have been formatted to have the 'standard' search index header/footer. The final goal, in the long run, was to make all our entries in the search index to be found by Google and indexed in google scholar.

My reaction to this assignment was very exciting - I truly enjoyed building something the result of which I can see being functional on a web page. I was very happy to finally work on both the front-end and back-end at the same time and see how different classes, files, and controllers interconnect with each other to produce the records in a JSON format on a web page. 

The insight I had from this assignment is that it seems like I enjoy web application development. Before coming to this internship, part of my question to myself was: "Is software engineering something I want to do in the future? What if I am not going to enjoy it?" etc. Because of these doubts, I could not fully enjoy the process of coding, always thinking that maybe it is not for me. However, after working on this assignment and a couple of others, I realized that I enjoy seeing the product of my code in a real-life application and I like the process of building it as well. I realized that I would not enjoy working on something that I do not see as a real-life application. In the future, I would try not to be prejudiced about some job before trying it out fully and try not to let the doubts prevent me from enjoying the work. I will try to make sure I have the right mindset before starting any job and free my mind from the blockers. 


Wednesday, June 22, 2022

Week 6. Post 1.

How do you communicate with other group members? What communication tools did you use? What new tools did you learn to use? How well did they work (or not) to meet your communication goals?

Most of the time me and my team communicate in Slack. There we have different channels - one for the whole team, one for only my mentor and two interns and the other is just direct messages. On top of that, we use Google Meets and Google Calendar for our meetings and planning. The tool I like the most is the Jira platform, where we post our tasks and assign them to each person and put deadlines for them. 

I knew Slack before coming to this internship, however, the flow of communication is much different from what I was used to. In college, I would not be able to storm professors with my questions in their direct messages on Slack. Thus, I came to this internship with the mindset that I should not be asking too many questions. However, the communication in the channel at my internship turned out to be very active and informal. 

My first reaction to this was very surprising. Coming to this internship, I was scared that in case I have questions then how I am going to address them. Therefore, at the beginning of the internship, I was not active in communicating since I was used to a more formal type of communication and it felt to be a little weird.  After spending some time communicating in Slack, I got an insight that the communication in the channel is pretty informal and you can ask as many questions as you want. Later, I realized that I shouldn't be scared to dive into a new environment and explore what is there. I could have started communicating more actively much earlier if I did not have these blockers in my mind of being scared to try new styles of communication. Next time, when I will come to a new project or team, I will make sure not to have blockers of being scared in my mind and try to be open to new styles of communication. I would try to ask myself questions such as: "Are you losing anything from trying new styles of communication? Is it going to harm you?" etc to make sure I am open to new things. 

Friday, June 17, 2022

Week 5. Post 3.


Discuss how you and your team work to stay on track.

Today was our third demo presentation where we presented to the team and the manager of the project the work me and my co-worker have done during the week. Our team uses the Agile Scrum framework which I find fascinating. What we do is we have our Planning Meetings every Monday which last around 2 hours and we create "stories" or tasks that we have to complete by Friday for the demo presentation. Then, every day we have so-called short "stand-up meetings" where we talk about the updates related to work and out-of-work life. On top of that, we have the so-called "Refinement" meetings on Wednesdays where we try to talk deeper about the current tasks and check in on some of the blockers. 

Before coming to this internship, I always knew that effective time management and team management are important; however, I was always suspicious about frameworks/tools for them as I thought they are energetically draining and distract you from doing the actual work.

After seeing the team management in my project, I realized that my assumptions about the team management frameworks were wrong. The way we organize our work in the team is super efficient as we get to stay on track and top of the tasks every day thanks to these meetings that the framework tells us to have. If we did not have these meetings, I would procrastinate on the task every day and be completely lost as I would never get up-to-date feedback on my work. 

Next time, I will try not to be biased toward certain things until I try them on my own and will try to evaluate the tools/frameworks critically before making any judgment about them.  

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...