A Student Team Project in IT
When I was at Chemnitz University of Technology I participated in a practical course, which was meant to introduce students to the harsh realities of agile application development for a client (represented by the professorship). We were asked to find ourselfs group members and to get started with our virtual startup. Parts of our task were not only designing, implementing and documenting our solution; but also managing the legal paper work which would have been necessary for contracts between a buyer (of our software product) and our virtual startup in the real world. We created an architecture and defined interfaces, designed GUI-Mockups, had stakeholder consultations with the professorship (where they pretended to be a typical customer), and even created a simple network communication standard to insure programs designed by other student groups would be able to work with our implementation. With this project we got a chance to learn from our mistakes, to avoid them later in the real world. However, we also learned how much a well organized group can achieve in a very short period of time.
Our professor had to think of a new project every semester, so he came up the task of having us implement a game called "Core Wars". Since we created a network version of the game we decided to call our implementation "NetWars".
But what is "Core Wars" to begin with? It is a programming game, running several programs (called warriors) in a simulated computer, with the goal of terminating all other programs or surviving as long as possible. Warriors-programs are written in an assembly language called Redcode. Have a look at www.corewars.org to learn more about the game. The demo video of our implementation is provided below.
Once all students had found their groups we were given a very specific project and a number of "far away" deadlines. Knowing about the typical tendency of students to delay every task as long as possible, I decided to suggest myself for role of "Team Manager", as our team was required to manage itself, and we had to assign roles and responsibilities to everyone. I made sure everyone knew what to do next within his specific domain and set up a schedule for our scrum meetings. At first everything went well, since all the basic interfaces were implemented as discussed with everyone. However, later in the project the perfectionism of some of my group members slowed them down dramatically.
Although the delays had no impact on my programming work at the time, I realized that I had to intervene before we missed out on deadlines. By assigning my quickest group members to support the slower ones, we got up to speed again. Positively redirecting the emotional tensions between group members as the going got tough, gave strength to the group though it was challenging to me. I can say, that I learned a lot during the project.
A Big Thanks to My Team: Christian Kinne, Philip Hannemann, Rico Wenzel, Stefan Schubert and Oleksii Vartanov; I had a wonderful time, working with you on this project.
Our implementation of Core Wars, "NetWars", featured three game modes and a RedCode-Assembly editor. The three modes are: Network-Gaming, Network-Game-Viewing and Offline-Gaming. We split NetWars into a CLI server program for hosting and computing network games, and a client program (with GUI) for everything else.I wrote the backend code for the RedCode-Assembly editor and parser, which was also used to load warrior-programs into the game when playing, both, online or offline.