Pros
Coworkers are mostly great people Casual friday everyday Free lunch on fridays
Cons
Work hours are flexible only in the sense that you "need" to get something done before you leave. There will never be a situation where something was done before the closing time and you can go, it only goes in one direction. They will also try to pressure you to work from home (Not instead of coming in, after you leave for the day) or on the weekend to meet "deadlines" that don't exist. If anything ever goes wrong with code you wrote and/or touched you will be lambasted for it, often publicly. You will also be reminded about it loudly and publicly for the next few months. Conversely, if you do something well it will be completely ignored and not taken into consideration when choosing to yell at you for the next time something isn't perfect. They try to get away with this by basically negging the developers to make them feel like this is the only place that will take them. There is a huge double standard for normal employees and managers (Full managers, not team leads). Full managers can spend their entire day on the phone talking to their wife, or browsing memes and this is just fine, but if they dare to catch one of the lowly chattel putting a video on in the background or looking at something not directly useful for work there will be words being had, and most likely public callouts. It's always great fun to be anxious and looking over your shoulder whenever you need a quick break. Everything is your fault. CEO says the software should work one way, manager says it should work the other. If you listen to the CEO you are yelled at and thrown under the bus by the manager. If you listen to the manager it will be used against you in a meeting at some point, or just used as an overall "you guys need to do a better job because x, y, z". Speaking of meetings, the mid and year end reviews are a joke. It's a review of how much one of the managers likes you. Team leads are the ones "reviewing" you. I say "reviewing" because they're told by the mangers above them what review to hand out regardless of what the developer has actually accomplished. You could be doing a fantastic job every day and still get a 3 or 4, while the person who coasts by or constantly breaks things is rollin out with a 5. And yearly raises depend on what you get so that's actually important. Oh, and they don't pay much.