Right now, I am in Computer Science program in University of Waterloo.
Actually, I never thought I would be in computer science program when I was in high school or even in the first year of the university. I though I never learned about CS and this major is very hard in University of Waterloo so that I could not do well in this area. At last, I accepted the offer and became a Math student with financial analysis and risk management as my program.
However, since University of Waterloo has two Computer Science compulsory courses that every Math student has to take, after taking two CS courses in the first year, the two computer science courses marks became my top two course marks. I thought I might do well in this area, I discussed with my parents and some of my friends in computer science to have a general idea of this field. Finally, I decided to change my program.
I hope I will be a professional programmer when I graduate from the university. After I graduate from University of Waterloo, I hope I could join a team of a big company to take part in some projects. In this way, I think I could learn a lot of things from some colleagues that have worked as a programmer for a while, such as cooperation, which I could not learn too much in school. Having some experience of coding as a team mush be helpful for my career afterwards. After a few years, when I have enough coding and implementation skills and experience, if I have the chance, I want to lead my own team to build some programs. I have a great interest in computer games and I think this area will still be popular for a long period. So I hope my team could develop some great computer games. I hope my role in the team is the leader that arranging tasks and giving the idea of how we could divide and solve a huge project.
Therefore, I need strong communication skills in order to report my work as a programmer. Since lots of programs are huge, everyone could only focus on one part of the program, when I have my own part to be implemented, I need to express clearly what I am doing, report my newest progress, and ask for some help when I cannot solve some problems. Also, if I could lead a team, I need the communication skills to telling others what they should do, I think assigning works require good communication skills because that make teammates willing to participate. Also, admiring and criticizing skills are needed, good skills at admiring others could make my team members become more vigorous at working. In addition, good skills at criticizing could point out my the faults made by team members without hurting them. As a leader of a team, I may need to introduce my programs or games to others, so I also need good skills of introducing. However, I do not think I am a good introducer, so I need a lot to practices to have strong introducing skills.