Monday, August 10, 2020

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 Udemy to study web development with ReactJS. So I utilized this opportunity to gain an introduction to the basics of ReactJS, which was the primary technology we were to use for the New Technologist internship. Then, during the program, I always referred to some parts of this course like reusable components and redux to better understand what we were studying from the Software engineering curriculum of the internship.

Utilizing this course’s React Redux explanation enabled me to understand Redux, which was handy for our team’s final project. For the final project, I implemented a budget filtering feature that allowed users to filter the doctors in the application's database based on the average cost of the doctors’ services. This feature required the use of global state management using redux, which with the help of the internship instruction, the Udemy course, and youtube videos on redux, and my teammates, I integrated React Redux into the application.

Additionally, we had many opportunities to practice version control with git and GitHub, pair programming with Visual Studio Code live share throughout the program which helped me better understand how to use these technologies in different projects we worked at during the internship.

Furthermore, I dedicated two hours every morning outside my internship schedule to study and further research on topics listed in the pre-work or post-work of the curriculum. The pre-work was an explanation of the different Software engineering aspects we were to study every day while the post-work were stretch goals for the daily instructions. This time always allowed me to utilize the instruction time better to ask questions about what I had not understood during my research.

Sunday, August 2, 2020

How the interactions I have had at my internship will help me elsewhere

While working on our team project for the internship this week, I spent time either working on an individual feature or pair programming using the Visual Studio live share feature. The team project has been a time when we had to communicate about the code we are writing, explaining our thought process as we work on the coding aspect of the project, and resolve any conflicts we have in our thought process or the code.
The New technologist internship's structure makes the navigation of team dynamics a crucial aspect of the entire experience. Working on the project management curriculum and the software engineering curriculum taught me how to express my ideas clearly, accept feedback, and decide on a course of action with my teammates.
These interactions have improved my communication skills, where I can discuss my ideas and give my teammates feedback confidently. I have also learned that sometimes deciding on one approach as a team is better than trying to hold on to an individual idea. 
I will apply these skills in the teamwork we have in Computer Science classes and other classes outside my major. Unlike the previous semesters where I have been a bit shy about sharing a different perspective, my internship experience has taught me that having a different view is not wrong. Instead, the differences in perspective are always an opportunity for the team to think of different approaches to solving a problem.
Additionally, as a leader in the Girls Who Code Berea College loop and ACM-W Berea College chapter, I will apply the communication skills I have attained from my interactions with my team, mentor, instructors at the internship when working with the members of the clubs.

Saturday, August 1, 2020

Coffee chat with Nitah Onsongo

This week I had a coffee chat with Nitah Onsongo, currently working as a Project Manager at Microsoft. Nitah joined Microsoft as a software engineer then transitioned into a data analyst role before joining the current team where she works as a Project Manager.
During our coffee chat, I wanted to learn about the day to day experiences of a Project Manager at Microsoft and how to utilize school experiences to prepare for a Software engineering career.
Nitah explained the role of a project manager as all responsibilities relating to developing a suitable product that will satisfy a user's need and supporting the entire product life cycle from ideation to shipping of the product. Her day-to-day experiences as a Project manager range from analyzing how users interact with different products to planning out how different product features are implemented.
With such a diversity in the tasks, Nitah emphasized the importance of taking courses outside Computer Science in other fields like Business, Mathematics, and other fields. The choice of these courses taken outside the specific field of study should be based more on how curious a student is to learn about a particular topic than on what course sounds good or taken by many students.
Since Berea College is a liberal arts college that mandates taking courses outside the major, I can utilize this opportunity to take courses in different areas that I am curious to know more about in addition to courses that directly relate to the Computer Science courses.
Furthermore, Nitah emphasized involvement in different projects that will provide long-lasting hands-on software development skills while working on projects that I am passionate about. Working on such projects also poses new challenges that I will learn to resolve, which is training for the work environment. 

Thursday, July 30, 2020

Learning experiences in the TNT internship that I plan to transfer to my courses

This week, we are working on our team project, a web application to enable college students to access health information and costs. While working on hooking up the redux to implement a cost filter for the project, I appreciate the willingness of instructors and fellow interns to help when I reached out to them, asking for help regarding redux.

It has always seemed wrong to be a Computer Scientist and reach out to someone, be it a peer or professor asking for help. One answer I am always afraid of is "Google it." The uncertainty of whether my question will attain a "Google it" answer always stopped me from asking for help.  

 Although Google might have answers, the explanations I got from peers or instructors at my internship are detailed and made me understand how to approach a similar bug in the future. A detailed answer is much better than a mere copy and paste of a stack overflow solution. Moreover, from my internship, I have learned that people would love to help out. Additionally, it derails a project's progress to spend an hour resolving a CSS style, yet a teammate can reach out and help devise solutions to the bug in less time. 

After this internship, I will feel confident to reach out for help. Reaching out to ask for help during the internship has equipped me with effective communication skills because I have learned how to ask the right questions and developing clarifying follow up questions to enable the responder to know how to help. Effective communication is a crucial skill that I will apply in my different projects in and out of class after the TNT program.

Saturday, July 25, 2020

A Stated internship goal that I achieved this week

One of my stated goals for the internship was developing my interviewing skills, both behavioral and technical.
One crucial aspect of the TNT internship program is the mentorship that connects New Technologists to software engineers at Microsoft to discuss with different topics aimed at fulfilling our internship goals. During my first meeting with my mentor, I explained how I felt so uncomfortable with behavioral interviews. Although I had experiences to use for the behavioral session of the interview, my mentor and I used the mentorship sessions to practice sample behavioral interview questions to support my confidence in expressing my experiences. My mentor discussed the use of the STAR method to use in behavioral interviews and how to use it to stay organized during behavioral interviews.
STAR is an acronym for Situation, Task, Action, and Result of the experience. This method is widely used in behavioral interviews for interviewees to express their experiences to recruiters in an organized way. It highlights the experience, the role the interviewee had in the experience, and the result of working on that specified task.
To better prepare for the interview process's technical aspect, this week's Pizza and Personal development was focused on technical interviewing, where we had a university Recruiter at Microsoft give us a sample technical interview session. This session included building algorithms to solve different questions and test cases for the solutions. This session much prepared me for the next technical interviews. 
For the remaining parts of the internship, I hope to continue networking with other software engineers at Microsoft to learn more about the recruiting process and better prepare for behavioral and technical interviews. 

Thursday, July 23, 2020

Lessons from a coffee chat with Mr. Harry Ferguson

Today I had a coffee chat with the Principal Manager of SharePoint's Cost of Goods team, Mr. Harry Ferguson, after an introduction email from my mentor. The meeting's primary goal was to discuss what COGs or Core is and the different fields in Microsoft beyond software development pursued with a computer science major. 
We discussed the roles of server management at Microsoft, like analyzing the different server requests made, optimizing the server resources available to support these requests, and prioritizing tasks according to the performance required and the cost of providing those services. 
Furthermore, we talked about the roles of managers versus the roles of engineers, where Mr. Harry talked about how the manager's role is more of providing direction for the people, shielding the team managed, driving meetings, and understanding enough with less information but being able to make a decision. 
Additionally, I asked Mr. Harry, as a manager who has spent decades of years in the workplace whether it is better to immediately pursue higher education after school, before starting a career, or earlier on in the career journey or pursuing the workforce directly. 
As we discussed the appropriate time to pursue higher education, Mr. Harry elaborated on how the time required for higher education, if spent in the workforce, can yield career growth than if spent at school. "Afterall, the workplace knows that what is taught is different from what is required at work!" Mr.Harry exclaimed. From work experience, Mr. Harry elaborated on how, if  I am not interested in pursuing academia or Research, then seven years spent pursuing a Ph. D. degree will not contribute to my career path.   

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.

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