Posts

Showing posts from July, 2022

How my project fits into current Micrsoft products.

  Prior to my internship, there was no implementation of my team’s feature in any mobile clients. This meant that if a customer used the feature in web or desktop Microsoft applications, they would not have the same user experience using Microsoft mobile applications. For example, in Microsoft Teams Web and Desktop, a Viva Topic in a chat conversation is formatted and made the topic clickable, yet the same Viva Topics show as plain text in Microsoft Teams Android and iOS. Lacking feature parity between web, desktop, and mobile clients of the same application is very frustrating to customers. My internship project implements the first mobile version of my team’s feature to support Viva Topics in mobile clients. I implemented the feature for Microsoft Teams mobile clients. I built a react-native component to support reusing the same feature across Android and iOS. Then, I added the Android native code to use the react-native component of the feature. Additionally, I will be adding ...

The newly developed perspective from my internship

  This internship has taught me that I can learn any technology stack given time and learning resources. I came into the internship with no course in Mobile Application development, yet my project is adding a new feature to Microsoft Teams mobile. The only prior experience I had with mobile development was from Android development with Java online course with CodePath Organization in freshman year. I did not fully understand most of the concepts in that course because I took it before learning Object Oriented Programming and it was also the first time I programmed in Java. However, I had enjoyed working on the final project for that course and used it as the time to practice most of the Android development concepts that I had learned. Sadly, I had no prior experience with iOS development at all. However, I had done one personal project of a React-Native project after my first internship where I learned web development with React. Though scattered, I had very little prior experien...

Course that best prepared me to communicate within the organizational context that I encountered during your internship

  Last semester, I took a Database Management Systems course that included a service-learning project with a community partner. Although the course concepts in the course were a great start into Database Management, the communication skills I obtained from working on the project prepared me for my internship. During the course, we learned about the differences between technical and non-technical communication and different scenarios when one form is preferred to another during a project development process. Throughout my internship, I always had a less technical and more technical description of my progress or challenge that I used based on the situation.  Around the midpoint of my internship, I had to reach out to a manager working on a feature in Microsoft Teams mobile that had a behavior like my project. Since I needed a recommendation of an Engineer on the manager’s team, I used the less-technical description of my project goal to initiate the conversation with the ma...

Lessons from challenges in my internship experience

  One of the major challenges I have had throughout my internship is not having someone on my immediate team with prior experience on my project. This meant that I either spent time trying to figure out how to solve the bugs I had, or I spent time finding a point of contact outside my team with experience with the area of the code I was working on. After a few weeks in my internship, I discovered that there are two teams in Microsoft China and Norway offices who have more experience with some parts of my project. Discovering these teams and connecting with their engineers has helped me quickly overcome major blockers in my internship. Working with teams in and outside my organization has taught me how to cohesively communicate. Since the two major teams I work with are outside the United States, I always aim at adding as much details as possible to get a timely answer that will unblock me fastest. I did not learn how to communicate completely until I had a question go unanswered ...

A stated internship goal I have met

  Over the past four weeks, I have been able to complete a high priority goal of adding and styling a react-native component to Microsoft Teams mobile. From the engineering design document that I wrote at the start of my internship, I discovered that I could build my feature off an existing react-component feature in Teams mobile. This would not only save the time I would have spent redoing the intersecting parts of the components but would also offer me extra resources in form of engineers to reach-out to for help. I spent some time at the start of my development phase debugging and investigating that this assumption was true before I spent so much time building something with a dead end. Then, I embarked on tracing through the different function calls used in the existing feature that performed somewhat like my intended feature. I hacked some of the existing function calls passing in different parameters to support the new feature. After getting the expected data from thes...

How I communicate my intention to contribute meaningfully in my team

  At the start of my internship, I was assigned a mentor who is a software engineer with experience related to my project. My mentor acts as the main point of contact for any project-specific and team-related questions. My communication with my mentor is very frequent and consists of technical and non-technical conversations regarding different parts of my team and project. However, I have weekly one-on-one meetings with my manager to discuss any project questions, my progress, and about my career plans beyond my internship. I have used conversations with my manager to discuss the different roles in my team and how their contributions relate to the larger team goals. I have expressed how I find some of the projects that the team is working on very interesting and how I would prefer a more back-end than font-end role. Since my team is mainly working on integrating a new feature to different Microsoft clients, I find it harder to find varying ways of contributing to my team. This m...

Write a description of an assignment or project from this internship that can be added to your resume. Describe the challenges you overcame in this project.

 In the summer of 2022, I was a Software Engineering intern team in the OneDrive and SharePoint organization. My internship project was to add the first Viva Topics feature to Teams mobile clients-Android and iOS. Viva Topics is a new knowledge management feature that Microsoft is currently testing among select customers. The feature is aimed at helping organizations better manage their resources. The feature I worked on for my internship provides a summary of different Viva Topics in Microsoft Teams after a user mentions the topic. Working on a product that intersects between SharePoint and Microsoft Teams organizations meant that I worked with engineers in organizations beyond SharePoint. My internship project was the first time working on a large mobile application development project. The main technologies used on the project were React-Native, Java, and Kotlin. Although I had basic understating with Java and React-Native, I had never worked with Kotlin. It was challenging to...

What I have learned about my team

 I am interning in the One Drive and SharePoint team that is further divided into different organizations. My organization is called SharePoint experiences which further consists of the Viva Topics teams. The Viva Topics team works on integrating Viva Topics into existing Microsoft products like the office suite, Microsoft Teams, and One Drive and SharePoint. Viva Topics is a new Microsoft product aimed at helping organizations better manage knowledge resources. It offers a way to create documentation about different topics that they can search, tag, and share among members of the team. An easier way I understood Viva Topics is to view them as internal web pages in an organization that are authored for different topics. As an intern on the Viva Topics team, I have learned about this new Microsoft product that I did not know about before. The most interesting aspect of Viva topics team is how it feels and operates like a startup within Microsoft than other teams that work on exist...

Technologies I have had to learn in order to advance the internship project goals

  My internship project is adding one of Microsoft’s new products to Microsoft Teams Mobile client. My project is the first time this feature will be added to mobile clients and this has not only required understanding mobile application development but also understanding how to build user interfaces for the application. I had never done any large-scale mobile application development before my internship. The only mobile application development skills I had were from a Code Path course that I took during my first semester at Berea College. Although the class focused on Android application development with Java, I did not fully understand Java programming. I spent the first three weeks of my internship learning Java and Kotlin programming that I am currently using in my project. Additionally, I took an online course in react-native to help me ramp-up on building cross-platform mobile applications. Learning react-native was easy because my first internship was in web development wit...

How my perception of software engineering roles has changes since the start of my internship

  At the start of my internship, I was disappointed in myself that I had not written any code for the project. I was overwhelmed by my project requirements and how no one on my immediate team had ever worked on adding our team’s feature to a mobile client. This meant that I would be the first engineer to add this feature to a mobile client. Additionally, it meant that my approach in adding the feature to Teams mobile would provide a template to extending the feature to other mobile clients like Outlook. My first step to approaching the project was talking to different teams that were working on project components similar to mine. These meetings provided insight on the entry point of my project and resources. An important resource was one abandoned pull requests of code that an engineer had written in a Microsoft hackathon attempting to implement my feature. After gathering substantial information, I embarked on preparing an engineering design document that would help my immediate t...

Coffee chat with Andy Glover

 On Wednesday of this week, I had an in-person meeting with an engineer I had a remote coffee chat with two years ago. Andy Glover is a Group engineering manager (GEM) in the OneDrive and SharePoint Organization at Microsoft that I organized a coffee chat with during my first internship as a New Technologist intern. Along with interesting chats about Seattle and Washington, we had a conversation about Microsoft culture, his leadership as a GEM, and how to make an impactful internship experience. “What is the biggest mistake you have ever made as an engineer?” I asked. Andy was quick to reply that he had once deleted customer information during his career. This conversation started from Andy mentioning how I should not fear trying new things as an intern because no mistake I will make will be bigger than the mistakes my manager or other managers have made. During the past weeks of my internship, I have limited myself from changing certain lines of code in my project codebase because...

Midpoint evaluation on my project's progress

 I had a midpoint evaluation with my manager today. The midpoint evaluation consisted of a written portion where I reflect on what went well, areas of improvement, and my deliverables for the remaining weeks of the internship. This written portion is followed by written feedback from my manager before we meet to discuss details of the evaluation. One of the milestones from the past six weeks of my internship was writing a good engineering design document that detailed the goals, non-goals, and technical approach of my project. My manager commended the work I put in to preparing a design document with technical details that guided the discussion during the design document review meeting. He was also glad that I utilized my time to meet with engineers in different Microsoft teams to learn about the products they are working on, especially those who worked on products similar to my project. Going forward, he noted that I should not be blocked for so long because I do not have so muc...

How often I communicate my progress with my internship supervisor

  Microsoft is currently in a hybrid setting of work where employees can work remotely for some days of the week and come to the office on other days. My communication to my internship supervisor varies based on whether she is working from office or work. When she is in the office, we always have a brief meeting where I update her on my accomplished and my current tasks before I ask questions. Sometimes these meetings are debugging sessions where we try to solve any errors I have with installations or code. When she works remotely, I always send in a Microsoft Teams message highlighting what I did the previous day, the day’s tasks, and any blockers I have. We will either have a chat conversation or a call to discuss details of my mini report. Additionally, there are two weekly standup meetings with my entire team where I give brief summary of my tasks and blockers to the entire team in my organization. I have found continuously reporting my progress to my internship supervisor ve...

How I analyzed and solved an error in my internship project

  After getting approval for my engineering design document, I officially moved into the development phase of my project. I had spent time debugging the existing code, by adding breakpoints, to understand how parameters were passed to different functions for existing features related to my internship project. This debugging helped me get a better understanding of the code structure and the functions that might be relevant for different parts of my project, which has made the start of the development process a bit easier. I was adding a react-native component that will be the user interface for my project this week. I edited different files that I knew would make the change, but I got an error in the Android emulator when I tried seeing the react-component I implemented. Although the error message in the emulator did not have detailed information, I was able to see the file that specifically caused the error. I attached breakpoints to some functions before and within the erroring ...