Most common job function is maintenance and development of server processes (C++ / C / UNIX). Maintenance responsibilities include :
being familiar with sizeable amount of source code (on average 60,000 lines). This means that a developer is able to keep in mind all major use-
cases for the processes as well as all major code branches, data flows, and main data structures.
investigating production problems and QA bug reports and making changes to the code and / or configuration files if the problem is due to server software.
This requires 24X7 availability being able to call Customer Support and Central Operation departments and guide them through steps necessary to identify the problem and if possible suggest immediate action plan to fix it or at least make it invisible to the end users.
making coding changes to source code to accommodate for additional functionality. In most cases this will also require low-
level design (additional branches of code, additional class hierarchies for data, selection of most appropriate data structures and the like);
optimizing CPU usage, memory consumption, and internal delays in server processes.
Development responsibilities include :
performing requirements analysis for brand new functionality to be added on the server, writing use cases (brief and detailed);
creating sequence diagrams, conceptual model, and high-level design (including high-level class diagrams);
performing lower-level design work including detailed class diagrams;
coding (C or C++ under UNIX);
performing unit and integration testing;
writing test plans for QA department and deployment instructions for Operations / Customer Support / internal pack