In October 2018, I joined EasyEmployer. It has a lovely team which spread across Melbourne, Sydney and Canberra. The main product is a cloud based time-sheet & payroll solution with an intelligent award interpreter which helps with award compliance and paying employee correctly.
I was hired as a full stack web developer to assist with the continues improvement and maintenance of the product. There are lots of requested feature, wish-list and bugs reported every week. I am involved in the whole software development process of analysis, prioritization, refinement, implementation testing and documentation.
The technology was familiar to me and was not changeling. I picked up react, typescript and hacklang along the way. I find it a natural trend to move to strong typing as project size grows. I was even briefly maintaining a .net project on Azure which the company acquired.
On the other hand, working with complex award rules from government is no easy task. It requires many smart design to enable a intelligent one click experience for payroll offices when they work out the correct amount to pay their employee. I was leading the development of a few complex concept, such as historical tracking of rules and groups changes in the system, advanced reporting which involves past finalised period, and a warning system that is based on many rules, configs and settings. A lot of effort went into documentation and ensuring all members in scrum team understand the concept. And there is a strong emphasis on unit and integration tests coverage.
During my time in the company, the team made the transformation to agile with a shifted forces on deliver valuable features to end user. I am glad to witness and experience the transformation as well as the benefits and drawbacks along with it.
What I learn from it
Things can get really complex in IT industry. There are complex concept in real world which is inheritably complex for software to model. Although software it self is capable of complexity. It is still a huge risk not to managing it properly, thus the importance of methodology, communication skills and team work, which are equally important to the technical capability of each and every single engineer.