BOTHO UNIVERSITY SOFTWARE ENGINEERING RESIDENCY PROGRAM AFRICA CODE ACADEMY Duration: 6 MONTHS Tutor: Derrick Khupe Student Name: Edwin Masego Junior Tsheko Student ID: 1818570 Submission date: 08 November 2021 Word Count: TABLE OF CONTENTS ACKNOWLEDGMENTS ...................................................................................................................... 2 Executive Summary Of Internship ....................................................................................................... 2 INTRODUCTION .................................................................................................................................. 3 Method Of Gathering Information ....................................................................................................... 4 COMPANY BACKGROUND ............................................................................................................... 5 REFLECTION & SELF-APPRAISAL ................................................................................................ 9 RECOMMENDATIONS ..................................................................................................................... 11 CONCLUSIONS ................................................................................................................................... 12 ACKNOWLEDGMENTS I would like to thank Mr. Derrick Khupe, my internship Tutor for guiding us through the internship and keep us updated of any changes. I would also like to extend my gratitude to my internship supervis Ms. Ntokozo Moyo and the company CEO of my internship placement Mr. Joon Lee. My gratitude also extends to those that helped pull me through the process when i was demotivated. I would like to thank my team from Botswana and Maseru for being there when help was needed. Executive Summary Of Internship Africa Code Academy is a software engineering based company that provides a software engineering internship program that is aided at helping students from Africa or in Africa to venture into software development. The company was ideally made to help the African nations to join into the emerging of web based technology through various new libraries and programming languages. The Africa Code Academy is based at California, Palo Alto 94306 in the United States Of America where all executive decisions are made in regards to the company. During the internship program I got to work with interns from Gaborone Botho University Campus and Maseru Botho University Campus, as welcoming as they were the team picked or that qualified for the program were both dedicated and passionate about learning software engineering and it’s different career options. The company works in such a way that interns are given tickets to different features and aspects for a client’s project where by each of the interns would have a specific task at which they are supposed to achieve before the put deadline. Since the company is located in America, the whole internship program was carried out virtually where the tools such as Zoom, Gmail and slack were used for communication and announcement or company code reviews and Daily Stand Up meetings. During the internship I got to work as a software developer under the developer’s team where by the main task of my placement was to write code prior to the tasks that were given. Every intern had a team of which they specialized on. The teams consisted of Developer Team who were responsible of coding the features of the tasks given, the designer team that were responsible of designing mock ups to help developers to design the given task’s User Interface such that it looks appealing and there was also the testers or the Testing team that was responsible for running tests on the web applications developed such that error handling and debugging is done before the project is launched for accessibility to users. The company made this possible and an easier path for personal growth by providing mentors and instructors to assure that code review is done and every intern is working tirelessly to meet the company stands. INTRODUCTION Industrial Attachment (internship) is an intrinsic platform that is provided to anyone mostly those that are undergoing a certain program study at a university or collage, it is entirely initiated so as to allow students to get to experience professional working grounds and get to apply their theoretical practice gained during their program of study into actually applying that knowledge practically. During the industrial attachment students get to acquire knowledge through the tasks that they are given, this also helps in adding or enhancing their skills such that they can apply them after graduation. This program runs from three months to six months depending on the program of study one is pursuing back at their school or varsity or collage. Purpose The purpose of this report is to initially provide a report on the internship placement so as to give a fully detailed report on how a student got to experience the internship and a clear scope on what skills the student got to acquire during their internship. As mentioned above in the introduction or description of what an Internship is, this report aims at fulfilling the internship requirements that is; making sure that students get to put what they have learned at school theoretically or practically but in professional grounds so as to prepare them for life-after-graduation. The objectives set for this Internship: To provide a clear picture of the skills learned during the internship To provide a clear scope on the goals i intended to achieve through this internship. To provide a report that clearly states all the objectives required from a student to ensure the student managed to use the Botho Graduate Profile in the work place. To provide a clear scope on the company background. To bridge the gap between theory and practice to determine what skills and knowledge I still require to work in a professional setting to gain fieldwork experience/collect data in an unfamiliar environment Scope This internship report will cover from the day the internship started till the last day of the internship, its aim is to provide a clear view on the process that was taken to successfully complete the internship, not only that , the report will cover all the aspects of the requirements that were provided such that it makes a clear statement on what was done and what was not done through both professional and self-evaluation. It contains the knowledge and skills learned during my time in the internship program, it also contains both the self-evaluated pros and cons on working grounds thus providing the report with a clear view that would indicate if this program was completed or not. Method Of Gathering Information Direct Method Of Gathering Gathering Information This is a method of gathering information through accessing or looking for samples from other sources so as to get an idea on what needs to be done or what is being required by the report for the internship. So to for this report, the direct method of data collection on the report was used in such a way that the report guidelines including the Botho Graduate Profile handbook. Indirect Methods Of Gathering Information Observation: According to Literacy Basics (n.d) this is the type of gathering of information of which one has to watch the proceedings of what happens on a day to day activities in a certain work place or area. As a student we get to learn how to learn from just observing current or running events, so during this internship program I got to observe the daily activities that were taking place every day in the work place. With that being said some of the information included in this report were from trough observation and gathering the information. Research: Sometimes the most effective way to gather information is through scrapping for information from web journals, books or websites, thus meaning that most of the information included in this report document was deducted from the internet and paraphrased. The guidelines of writing an internship though differs, the information can be found in the internet and one can be guided on how to write a successful report. Documentation review: In this type of gathering, information is gathered without having to distract the program by other sources that are in place such as learner progress reports, written policies, performance appraisals. So in order to carry our information gathering for this report documentation review was carried out to evaluate and to capture the knowledge on how the report structure should be done. COMPANY BACKGROUND About Africa Code Academy During the time I served as part for the ACA, the work ethic was carried in such a way that it accommodated every intern where interns were given time to learn and adjust to the work environment. Unlike other companies, Since ACA is an internship residency program that is aimed at providing software engineering internship placement to Botho University students from both Botswana and Lesotho are provided with Teams where by there are Team Leads that are not interns but rather act as supervisors, mentors and instructors. These same leads are the ones that carry the code reviews or assessments that determine and nurture the growth of an intern. Throughout the internship during the learning process interns in teams were swapped together so as to instill team work and help interns adjust to the company before they are given projects from clients. Every team was structured in such a way that there were equal numbers of interns per team. But as time went on teams were divided into four teams, Alpha, Beta, Gamma and Zeta at which each of the teams had their own Team lead, Scrum Master and team. Initially every team had their own speciality or their own team play, where by Team Alpha consisted of Developers and Beta consisted of UI (User Interface) Graphic Designing and Gamma consists of QA (Quality Assurance) Testers while Team Zeta consisted of those interns that were given separate projects from those that were given the rest of the interns, though with such happening, the teams helped in making sure that all the given tasks were successful. I was part of team Zeta where I had the responsibility to create the Foundry page that is going to be used for recruitment of Developers for companies and the ACA. Team Zeta consisted of the Program Manager that was responsible for overseeing all the processes that were taking place, along followed the team lead who was responsible for making sure that code was being pushed to github and deploying services, not only that, the team lead’s essential job was to carry out the code reviews, provide mentor-ship and motivation to the team. Mission Vision Organization Chart Team Zeta consists of the Program Manager, Team lead/instructor and developers. The following chart shows the structural flow of the team. Number of staff 5 Program Manager Team Lead Interns-Developers Interns- UI Designers Program Manager: A program manager is the one who over looks all the processes that take place in the work place, they make sure the environment is allowing for a task to be successfully done. Team Lead: Team leads act as instructors and mentors to the interns and making sure that given tasks are carefully done, they also allow room for correction or help in correcting an intern on the project given. Developers- These are responsible for the architecture of a system, they are responsible of writing code that is prior to creating the web application at hand. Designers- These are responsible for the task’s ui design in mock up, they help provide a visual guide of how the project looks. My Role: As a system developer my responsibility was to use the appropriate libraries to ensure that all the features requested for a task are done. During the web application development as a developer we go through a series of research and error handling, not only that, Developers are responsible for the architecture of the system in such a way that tasks are given to us using the scrum or agile method, these methods aim at organizing a developer’s work through individual tickets that move from Unstructured to Ready for Review when working on the tasks. A developer is responsible of also making sure that the status of the tickets provided is updated as soon as the task at hand has been executed. With that being said, ACA has helped in mentoring the spirit of team work to enable us to work well with each other in structured tactics. During project development a developer is required to provide a daily update on what they did the day before, what they are going to do on that day and what are the blockers that hinder them from completing the task at hand, this is done such that it updates the leads on the progress and issues that developers are facing. Work Flow- The project manager along with the marketing team spends time approaching potential clients or existing clients to get to understand the market. After this, the project managers look at what information was gathered in regards to the business needs and prioritize in creating features that are necessarily to meet the requirements. From there, the team leads are briefed on what task will be handed out to the developers so as they will be able to help or provide guidance to the developers on what needs to be done. When all this is done at management level, the development team is called for project assignment where by they will be briefed but throughly such that they understand what needs to be done, then tickets for different tasks are assigned to the developer . Provision of resources, tools and innovations assists in increasing the efficiency of the operations Slack: Slack is an interactive messaging app particularly for business people to be able to connect and obtain any information they need, In the software development world slack is used to manage teams of development and to keep it as a communication tool that would be treated as a work place. The AFrican Code Academy used this system to maintain professionalism in the work place and by creating channels for different aspects in the business such as announcements and updates.This system of communication beats the practical way of handling work updates and announcements or any other communications that can be done virtually than calling for meetings thus needing employees to leave off their work stations to attend and leaving off work unattended or undone. GitHub: While other methods have been used before, GitHub is a central cloud for project repositories specifically Web based developments. It is particularly used among the dev community, as it allows for continuous integration where Developers would be able to work on the same project based on their different specialities. This platform has also helped learning aspiring developers to be able to access code repositories for their benefit but in mind keeping the fact that there are licenses made towards the libraries thus they can only inherit code to use on their learning or development.The ACA used GitHub to utilize project repositories that developers create or tasks that they develop, this also helps the Africa Code Academy interns to request reviews on their codes from their instructors. Unlike the old methods of sharing code over a Memory stick or harddrive, GitHub is a cloud for software development files Zoom: Since the internship was virtual the Zoom Video conferencing tool was used as a work place area so as to hold meetings and other processes of the day that need workers to interact and discuss. Zoom Video Conferencing platform is particularly used in modern business interactions,, it allows users to use both their camera' s and mic's to meet virtually and discuss topics at hand. Even though said, Zoom has been adapted through out a number of businesses and also used for socializing. CircleCI: CircleCI is an integrated platform that is aimed at running build and test automated tests thus allowing CI/CD (Continuous Integration/Continuous Deployment). REFLECTION & SELF-APPRAISAL Implementation of learning Articulation: This involves one being able to clearly note out ideas that are logical and done such that it becomes effective. In another view point, articulation is made up of having a sound mind and a growth mindset,being able to listen and provide ideas that are meaningful prior to the topic at hand. During my internship at Africa Code Academy my knowledge with articulation grew such that it is easy to note down ideas when asked to present some, not only that being aculate helps With ensuring that there's integrity and reliance in one's honesty. For example, during Code reviews normally questions were asked is regards to what is being taught and everytime when the rodd is handed to me i would answer on the spot, giving out ideas that could help one learn. Hardwo rking: as an intern it was espected of the student to be a hardworking team player, not only that, hardworking involves a series of self-motivation and dedication traits, when one is hardworking it doesn't only mean you have to see them working 24/7 but rather a hardworking person is the one that knows how to organise their tasks such that they could be able to complete the given tasks a step at a time without rushing. Working as part of the Africa Code Academy has taught me that hardworking is an essential tool that one needs to take advantage of because the more one completes and surpasses what is expected of them it ensures that the employer chose the right candidate for the internship placement. For example, every ticket assigned for a task, my priorities would shift to ensure that every code review i had to show part of the progress i have made. Knowledgeable: The ability to find oneself having less supervision during work and more appraisal for completing tasks at hand shows that, that person is a knowledgeable individual of which they can be relied on. Possessing such aspect made work much easier and productive. for instance, in one of the platforms that we use for communication purposes there's a channel named #qustions of which was used for developer questions if they are facing an error in their code, i utilised this tool by sharing my knowledge and my research skills to help out my colleagues. Innovative and entrepreneurial: Being innovative and entrepreneurial means one has the ability to face risks to gain knowledge and creativity by taking up opportunities presented. Innovative on its own defines the ability to be creative without doubt. During my internship program i got to learn about how to learn to learn and how to define business rules in ragards to software development and financing. Being innovative opens up rooms of opportunities that if implemented one can be both innovative and entrepreneurial. For example,Africa Code Academy Once hosted a Hackathon for pitch decks, where every individual intern would be get to formulate an idea that can bring about change or solve some of the problems we face today, the competition taught us how to evaluate on what idea can be long term benefitial, i was one of the interns that made it through to final due to how i did my pitch deck. Collaborative: This envolves being able to work with others well, meaning one has to be good with people which strenghtens team work, being collaborative facilitates personal growth which is one if the skills that i aquired during the internship program. Africa Code Academy introduced peer programming of Which the ping-pong method was used where one intern was a driver (was the one writing code) and one was the one was the passanger, this method helped in error handling or parts where testing needs to be done. Since then, working with other individuals have Helped instill the spirit of collaborative work. For example, during the Introductory to the program, we were divided into pairs of teams and given tasks to work on, by doing this, interns got to work together such that they complete the task at hand so they could Move forward, the Africa Code Academy made sure that teams were switched so as to allow more collaborativeness. Problems Faced during the internship Unstable Internet: Since the internship was virtual the problems faced were around unstable internet connection or lack of internet connection thus not allowing onen to continue productively through the week. This is a problem that was persistent in terms of how it occured. Normally during these times, continuing to work on tasks at hand though it didn't allow access to other libraries not installed into the project repositories interns would still be able to continue working on features that didnt need installation of new libraries. To eliminate or curb this development from reoccurring i had to buy an internet router running on 4Mbps which decreased the unstable connection thus leading to one being back online to continue with the internship as its supposed to be. Lack of motivation: lack of motivation in a work place is one of the recurring events that mostly happen at some point to employees. This is mostly caused by demotivation by other employees or other interns or bosses at work who are harsh, but though that might be something that is faced in almost any work station, being in a crowd of different people taught one to know that because you work for someone it doesn't mean everyone gets the right treatment and when one doesn't or if one feels offended or harshly treated by others, you can use this as a motivating approach to keep on trying better. Motivation comes from self, but the Africab Code academy made sure it provides interns with mentors that would help mentor the them for a successful internship training. List Of Skills Gained Interpersonal skills Communication Skill Front-End development Team Work skills React testing library skills Presentation skills on pitch decks Clean Cooding RECOMMENDATIONS I would recommend that such programs such as the Africa Code Academy to be implemented during the second year or 3rd yea of varsity as such programs help innovate student's and introduce them to world standard software development. I would also recommend that internet bundles or internet access to be provided to students on internship year so as to be able to get 24/7 access to internet to continue with the tasks at hand, i would also recommend the school to provide computer machines that can work with software like VSCode. Another recommendation is for the school to Rethink or re consider providing students on virtual internship with attachment allowances so as these individuals would be able to buy the required tools to use during the internship program. The internship should be done when a student is looking forward to their final semester so as to give them an opportunity to be hired by those that hire them as interns. Thats ofcourse in case the students proves to be the rightful candidate for the spot. CONCLUSIONS The internship program is a great opportunity for students to acclimatize to professional work grounds so as to prepare them for what is to come after graduation. The program helps one to enhance their skills through interacting with other people of same or different skills. With that being said, the Botho Graduate Profile is a great program that can not only help students of Botho University but also help those who are of need.