Pros: consistant work, predictable hours and flexibility
Cons: unknown job security, poor raises
Where to begin
The pay is below average, and only becoming average or above when you threaten to quit and they know they have undervalued you as an employee(they seem shocked you know this too...). This will often result in a significant increase in salary. However this only comes up when you are in a position of negotiation, example having written obscure code that is unable to be managed by someone else.
The work is challenging because it is a small company so you are constantly having to test your mettle. However this also means there is little to no support from management or staff around you. This backfires to some employees resulting in mistrust from management and potentially termination. Horrid learning environment.
A significant part of the management rules with an emotional mentality. If you are their friend, you get everything you want. You will get promotions, training, school etc. If you are not, you get nothing and are often discouraged and many indirectly encouraged to seek new employment. It's a toxic environment for those hard working as you will be treated with skepticism and mistrust even though you can prove your worth.
Co-workers are great. Incredibly friendly bunch of people, open and willing to literally, be your friend. Birthdays are celebrated at employees expense and team lunches out are encouraged between teams. They are literally the backbone of this company. They make people feel warm and welcome and helpful.