Pros
Free snacks, good gear to work on, relaxed atmosphere.
Cons
You are payed well if you are liked, not according to the market value of your skills. You are respected by the owner if he likes you, not if you do a good job and are talented. High turnover rate. I saw several employees get fired without warning. There were many times I was afraid I'd be fired simply for not being liked by the owner. Employees were often reminded by the owner that they were replaceable. -------------- In terms of dealing with the actual work, these were my pain points: No care for quality or craftsmanship: The person in charge of the developers has no background in technology. Quality was simply assumed, never checked. This lead to very bad craftsmanship getting through the pipeline. I had to replace either entire websites or parts of websites because they were poorly done and no one was checking. Very disorganized: A website build was assigned to me directly by my supervisor, but it was not scheduled on the calendar. About a week later, the same website was assigned to another developer, and he built it unknowingly. When we finally realized that he built it for no reason, he was basically done with the build. Disjointed work flow: The company does a very poor job at process management. There is no firm process of website production, which leads to headaches when dealing with difficult clients. Decisions are rarely stuck to: After coming to an agreement in production meetings about a process / policy, it was very often the case that the thing that was agreed upon was forgotten about or not enforced. Clients always get what they want, no matter how ridiculous the idea is: When I worked there, changes to websites are relayed directly from the customer to the developer by people in the marketing department with little to no experience in web technologies. It didn't matter if what the customer wanted wasn't good for their site, them asking for it was good enough. Very poor time management: Developers are almost never consulted about whether a special project is feasible (in terms of time). It simply gets assigned with the assumption that it's not difficult or time intensive. Very whimsical decision making: A coworker was asked to build a large web application. After he built it and showed the owner, the owner decided he wanted something very different. Instead of taking the time to carefully plan a large project, the owner simply had it redone because he didn't like the result of his first set of instructions.