Pros
Yardi offers a stable work place with extremely friendly and caring co-workers. The products have been around for a long time, and are trusted by many clients. Employees are often rewarded for making the extra effort, and it is easy to find a place in the company where an employee can be successful. If an employee is able to work without much direction, and often independent of a cohesive team, then Yardi can be a great place for that person. For at least engineers, there is never any hand holding, and given that there is almost no training or learning paths, engineers are encouraged to learn on his/her own. Anant and Gordon, are very well respected throughout the organization, and deservedly so. It is easy to aspire to work as hard them, and even if an employee is not a higher up, they work to make each employee feel like he/she is a part of their family. Work/Life balance is incredible, benefits are okay, and compensation was good, not great. Yardi is a great place if you are just getting you're feet wet in the world of software development. Everyone is a full-stack engineer, and will have the opportunity at some point to see and touch every facet of the development process.
Cons
Communication is completely missing. Often decisions are made from the top-level, and never communicated down to the team until the very last minute. It is easy to feel out of the loop, and confused at what the right direction is to take. Feedback on how the product is performing, or on code stability is nonexistent. Teams often release only once or twice a year, and engineers are left scrambling to hotfix certain clients with untested features. Things that could be seen as pros at many other companies are abused here. An employee can set his/her own hours, and deadlines when he/she are able to get things done. Some employees run with this, but others see it as an opportunity to do less work. There is no attention to quality...it is completely thrown out the window in order to get things up and run quickly. Products are often built and rebuilt for a demo, or one specific client, and the technical debt adds up quickly. Instead of clearing it out, the answer is usually to restart in few years in a "new" framework that no one really understands. Some teams are very hardworking and do a great job, but the lack of quality developers leads to a very poor and fragmented code base. Some managers are almost abusive with their feedback, setting unrealistic deadlines and making promises to customers that could only be achieved by duct tape and gorilla glue. At Yardi, the squeakiest wheel always gets the oil even if the others are quietly falling off. The company is very reactive and most new ideas don't come from internal sources, but from what clients or competitors are advocating for. This can sometimes be great for our clients as they often get exactly what they are asking for, but it hurts the overall vision of a product. Many features of a product start off intuitive and simple, but (for example) one client could ask for a specific button or input, and then a different client could ask for the same thing, but on the right instead of the left, and then another client could ask for the a different button/input above what the first client asked for. Yardi succumbs to almost all client requests, and eventually you end up with a Frankenstein style product that is too complicated for any one client/user to understand.