Software development is an engineering job. The development of an effective, maintainable software can use principles from various natural sciences. Determining the appropriate way to implement a software component and the whole system makes this profession special. The scheduling of workers has been a hard task for ages. Nowadays companies with a large number of employees cannot handle optimally the dynamically changing demands for their employees along with the numerous law restrictions.
I joined the development team of an automatic scheduling system that offers a solution for this problem. This system differs from ordinary software so it's development, testing and refactoring are special. I was working on these tasks as the member of the development team. Testing proved to be a major challenge because of the architecture of the system.
During the testing I got to know the basic principles of the components and the data structures they use. I used that knowledge during the development of the system where I learned about how each module affects the others. Then I worked on finding and correcting inconsistencies and ways to optimization.
I gained a lot of practical knowledge during the development, testing and refactoring tasks. I appreciate this knowledge especially because my previous studies and experiences lacked in special systems.