IP Fabrics
I worked at IP Fabrics as an intern over the summers of 2012-2015. During my time there, I spent most of my time doing testing work, either capturing packets for testing purposes or writing unit tests for different pieces of the software they were developing. I also did some development of the lawful intercept software that they were working on, working with the rest of the team to finish the features they wanted done during that summer. Most of the work I did was in C and C++, though I also did some work in Java while I was there.
I learned a lot of different skills while I was working for IP Fabrics. The most important skills I would say I learned from interning with IP Fabrics is how Agile development works. While I was an intern, I was a part of a Scrum team, and I had to learn all the different ceremonies and artifacts that come with that type of development. Since this type of development seems to be used in a lot of different workplaces, I would imagine that this experience will make it much easier for me to adjust when I get a job after I graduate. I also got a lot of experience working with a team while doing this job. I was always able to get a hold of my team members and they were always able to get a hold of me, so that introduced me to the world of working on a large project with a team for eight hours a day. I also learned how to make good unit tests, and I learned about line and branch coverage from my work with unit testing. I also learned a good deal of how C and C++ worked from my refactoring work.
I learned a lot of different skills while I was working for IP Fabrics. The most important skills I would say I learned from interning with IP Fabrics is how Agile development works. While I was an intern, I was a part of a Scrum team, and I had to learn all the different ceremonies and artifacts that come with that type of development. Since this type of development seems to be used in a lot of different workplaces, I would imagine that this experience will make it much easier for me to adjust when I get a job after I graduate. I also got a lot of experience working with a team while doing this job. I was always able to get a hold of my team members and they were always able to get a hold of me, so that introduced me to the world of working on a large project with a team for eight hours a day. I also learned how to make good unit tests, and I learned about line and branch coverage from my work with unit testing. I also learned a good deal of how C and C++ worked from my refactoring work.
Iowa State University
I worked for Iowa State University as a teaching assistant (TA) for Com Sci 229, which is Advanced Programming Techniques. In this class, the students are expected to work with the C and C++ languages in order to learn some of the more advanced topics in programming, such as memory management and parameter passing. The class also deals with large programming projects, typically with one in C for the first half of the semester and one in C++ for the second half. This is most of the students first time using C and C++ as well, so on top of learning all that, they're also learning how C and C++ works. As a TA, I have office hours where students can come in and ask questions about the projects, what may be wrong with their code, and more general questions about how C and C++ work. I also do some of the grading for the exams and for the projects, along with the other TA's.
While working as a TA, I have gotten a lot better at debugging code, both my own and other peoples. Because so many people end up having problems with their projects, a lot of people come in to office hours asking me to help them debug their code. This has given me a much better understanding of typical memory debugging tools such as Valgrind, and has given me a lot of practice with reading other peoples code. I also often have to explain difficult concepts in C and C++, since they can be confusing for many people when they take the class. Since I started doing this, I've learned a lot more about C and C++, and have gotten better at explaining concepts such as pointers and memory management to people.
While working as a TA, I have gotten a lot better at debugging code, both my own and other peoples. Because so many people end up having problems with their projects, a lot of people come in to office hours asking me to help them debug their code. This has given me a much better understanding of typical memory debugging tools such as Valgrind, and has given me a lot of practice with reading other peoples code. I also often have to explain difficult concepts in C and C++, since they can be confusing for many people when they take the class. Since I started doing this, I've learned a lot more about C and C++, and have gotten better at explaining concepts such as pointers and memory management to people.