Thursday, July 30, 2020
Learning experiences in the TNT internship that I plan to transfer to my courses
Saturday, July 25, 2020
A Stated internship goal that I achieved this week
Thursday, July 23, 2020
Lessons from a coffee chat with Mr. Harry Ferguson
Monday, July 20, 2020
Unit testing with Jest
Today in class, we discussed unit testing in great detail. Unit testing is an automated testing technique to check how different units like methods of classwork with different inputs. One remarkable importance of unit testing to new developers is the confidence to update code after proving that the small units pass all the tests.
During my Software design and Implementation course, we talked about unit testing with Python; we wrote different test cases in a file that imported the file to be tested. However, one thing that shocked me as we discussed unit testing today is the fact that test cases are written before a developer begins coding. I have always thought that tests are written after coding the different functions to ensure that the units under test run as expected. Although this was not far from the reason why tests are written before the code, the aim of writing tests before coding is to enable the developer plan for the different boundary conditions included in the test cases before, they write the code.
To unit test our ReactJS projects, we used Jest, which is a command-line JavaScript unit testing framework by Facebook. With Jest, each file.tsx had a corresponding file.test.tsx that contained all the test cases for the application. A fascinating feature of Jest is the ability to unit test the UI through the command line by enabling the creation of a Document. This is an excellent feature in web development because it eliminates manual testing of different buttons' actions.
Sunday, July 19, 2020
How my CS work has influenced my internship experience
For the engineering curriculum this week, we worked on developing the UI design and enabling navigation for a web application that enabled community members to borrow and lend different items among themselves. In a team of five, we planned out the agile development process for developing the web application like splitting the different roles, creating a GitHub project for the web application, using the Kanban board to track our progress, and working through the project from planning to developing the UI using React JS.
This process related to the Group project experience I had in the Android Development course I took last semester, where we worked on an Android Application from sprint planning to implementation. As taken last week, the steps taken during the Android class involved thinking of the different engineering roles expected, prioritizing these roles so that we begin with the roles with the highest priority, set up a GitHub project with a Kanban board for tracking progress, and then collaborating on developing the project. This class greatly prepared me for this experience.
Additionally, the different class projects done during Software Design and Implementation and Data structures also taught me how to navigate team dynamics. Good pair programming skills, like writing proper commit messages and working on different GitHub branches instead of the main or master branch, we practiced in these courses is what I am applying in my internship. Soft skills like asking my teammates questions when not sure about something, live sharing code, and resolving merge conflict have also contributed to my internship experience.
Saturday, July 18, 2020
How my perception of Project Management work has changed since I started my internship
At the start of the internship, I was confused about what to expect from the Project Management curriculum because it was a Computer Science field that was new to me. Although I had worked on a couple of individual and group projects, I had never gone through a detailed product life cycle. From defining a problem statement, developing personas for the problem statement, conducting user ability studies, brainstorming viable solutions to the problem identified, developing product walkthroughs, and then developing a minimum viable product. At the start of the internship, I wondered why we had to go through this entire process, yet we could spend more time thinking about developing a web application.
However, with time I am appreciating the efforts we put in to the project Management curriculum
because it is useless to develop a product for a target audience that you have not analyzed to know what product would best solve the challenges they are facing. The daily meetings with our team PM coaches also greatly helped elaborate on how the different PM steps we were taking would relate to the final project. This week as we worked on our product specification, which is a combination of all our findings throughout the project management phase, I was why we were developing our web application and what engineering requirements we needed to implement our solution.
It has been a journey, from not knowing much about Project management and agile development to appreciating the impact of spending time in the project Management phase before engineering a product. The more quality time we invested in the project management phase, the more relevant the engineering solution is to the problem being addressed.
Friday, July 17, 2020
How I am meeting my internship goals
Saturday, July 11, 2020
An incident that caused you to question your previously held assumptions
“To join the work industry, I need to discover a specific field I am interested in,” I always thought.
I questioned this assumption on Friday during a Pizza and PD session. Pizza and Personal development (Pizza and PD) is a one-hour meeting held every Friday where TNT interns meet with Microsoft staff to share their personal experiences and development tips with the interns.
This Friday, we had a diverse group of Microsoft staff, ranging from the Chief Information Security Officer to Senior data Analysts and Project managers.
In response to one of the questions, most of the panelists explained that although they have worked at Microsoft for more than a decade, they are still discovering their passions and the different ways in which they can make an impact. I wondered what kept them motivated to work if they are still finding their passion. The panelists talked about how the ability to try out different challenges, and the people they work with are their greatest motivation to work at Microsoft.
As a rising sophomore, I have taken a handful of Computer Science classes to declare and commit to a specific career field currently. And maybe the expectation that I will know this field when I am a senior might also be incorrect. Being passionate about a continually changing field like Computer Science should be an indication that my passions will change frequently.
During this Pizza and PD, I question whether I am required to have a specific field in figured out before joining the work industry, as I have always known, or adopt a growth mindset and look for people that will support my growth.
Friday, July 10, 2020
Ways my team is keeping track during the internship
During the internship, we work in teams of five, and we accomplish 80% of all tasks in these groups.
On the first day of our team meeting, we wrote team rules of engagement and pinned them at the top of our Microsoft Teams files. These rules outlined our goals, reactions to stress, and ways to speak about team conflicts.
The rules of engagement have helped us proceed through both the Software engineering and the Project Management aspects of the internship. Furthermore, understanding how each team member responds to stress has been a crucial tool to use, especially when working on potential stress causers like decision making between two ideas that the different team members like.
Additionally, we set up a GroupMe chat outside the internship to communicate quickly and have a less formal way to talk about the challenges we are facing, share some fun memories as a team, get re-energized, and work better. Through this chat, we reach out for help concerning the internship assignments, code bugs, or something that was not clear in the classes so that we all keep on track.
I have found using this chat more convenient whenever I need help to debug my code or resolve GitHub merge conflicts compared to sending an email.
Furthermore, we have the support of our team’s coaches with whom we meet daily to discuss the progress of our project. During these meetings, we receive tips on time management and handling team dynamics, which has helped us discuss ways to keep our team on track during the program.
As a team, we also set time blocks to accomplish different tasks and take breaks from work. Setting the deadlines to accomplish certain tasks has greatly enforced our focus, and planning for break time has eliminated burnout.
To say that we are always on track as a team would be a lie. There are days when we were behind the schedule of the Project Management curriculum. However, talking to our coaches and time management tips are given helped us catch up with the rest of the program activities.
Thursday, July 9, 2020
Differences between my internship and class projects
As I continue with the internship's engineering projects, I am noticing how understanding code written by someone else is critical in software engineering. Unlike most of my Computer Science classes where I write code from scratch, I am working with already written code at my internship.
This difference is because the objectives of classwork are to understand and apply concepts and, hence, requires the development of a project from scratch, unlike an internship, whose objectives go beyond individual application of coding concepts to how well one can collaborate on a team project and resolve merge conflicts.
Additionally, in the industry, software engineers' roles are to maintain software that is already in use and does not require building from scratch but instead updating existing features, so we must learn such skills in an internship.
During this week's conversation with my mentor, we discussed the importance of proper code documentation for future software engineers who will need to understand my code to update certain features of the project I work on. Furthermore, my mentor told me about something called "being on call" which refers to a software engineer providing technical support for 24 hours, and the ability to understand code and debug it is an essential skill for this time.
Whenever I worked on my projects in classes, I never paid so much attention to code documentation like comments or commit messages like I am during my internship projects. I appreciate the fact that the code's quality is determined not only by its ability to run without breaking but also how adequately documented it is.
Sunday, July 5, 2020
MY BIGGEST CHALLENGE AT TNT PROGRAM
In the second week of the TNT program, we learned React and Typescript. Although the engineering work still requires some time to comprehend, my biggest challenge with the internship will be the Program Management curriculum.
The Project Management Curriculum is a 3-week course explaining the roles of project managers and the phases of design thinking. It comprises of individual and Team assignments ranging from developing a problem statement to identifying a viable solution. Our daily PM sessions include an hour of individual study of the curriculum, followed by an hour of discussion with our PM coaches about these aspects.
However, the PM curriculum is still a challenge because the concepts are utterly new to me.
The only previous experiences that I closely relate to the PM curriculum are the individual and team project planning sessions we have during CSC courses at Berea. I am applying the communication skills from these experiences to the PM curriculum.
As we dive deeper into the program, I appreciate how vital it is to understand the product lifecycle. As a Computer Science student, it is easy to rush to the prototyping and testing phases of design thinking and neglect other crucial phases of product development like empathizing, generating, and ideating.
My strategy to overcome the curriculum's alienness is to utilize the team sessions with our PM coaches to understand the different aspects of the curriculum that I do not understand when I read alone. Additionally, I will seek clarity from my teammates about aspects of the team PM assignments that I do not understand.
Friday, July 3, 2020
Git and Github
Research completed or skills or technologies I to learn to advance my internship learning goals
A month before the start of my internship, I won a gift card from Facebook developers circle Berea College to enroll in a full course on U...
-
Today in class, we discussed unit testing in great detail. Unit testing is an automated testing technique to check how different units like ...
-
During the internship, we work in teams of five, and we accomplish 80% of all tasks in these groups. On the first day of our team meeting, ...
-
One of my stated goals for the internship was developing my interviewing skills, both behavioral and technical. One crucial aspect of the TN...