- Proprietary language
Gentrack uses an in-house programming language which lacks many of the features of modern ones. This can make simple tasks much more difficult than necessary because developers do not have the resources and documentation they expect.
- Poor coding standards
The code base is ancient, poorly documented, inconsistent and rife with programming no-no's. Subroutines approaching 10,000 lines long and using GOTOs instead of functions are very common. It is impossible to develop effectively when navigating 10,000 lines of undocumented code with dozens of poorly named GOTOs using the same scope.
Code reviews were almost non-existent and a lot of poor quality code slipped through the cracks. Many examples would not pass a high school programming class.
- Lack of documentation
Many key programs have next to no documentation in any form, written or code comments. So much knowledge is held by experienced employees and kept nowhere else. The only way to learn some critical functions and design choices of the product is to find someone who knows. Customers had significantly better guides on using the software than Gentrack themselves.
- Direct customer interaction with developers
Customers have direct access to developers. This results in a huge amount of developers' time being used up answering simple questions and supporting customers. You could be pulled away from your work at any time because a customer messages you asking for help.
- Pay
The pay is somewhat low for a software engineer, especially for one working with outdated, proprietary technology that offers them no future outside of the company. Starting pay for a graduate is low but fair, but too low for more experienced roles. Recently all salaries were reviewed across the board. Developers meeting expectations were offered a 4.5% raise. To my knowledge this was the first raise offered in many years. A raise of this size is what I would expect in a typical annual salary review as it barely beats inflation.
- Employee retention
Gentrack is losing employees incredibly quickly. Sometimes multiple employees in a given week. Due to the in-house technology it is impossible to hire senior developers. Senior staff are leaving and taking a huge amount of knowledge with them. These staff can only be replaced with graduates with the hope that they will stay for long enough to replace experienced staff. Even graduates are leaving after less than a year.