Pros
+ Relative freedom to prototype and try things + Relative freedom to change the field of work + Possibility to use modern technologies (Note that different locations can have totally different subcultures and I heard a lot of good things about Poland from the people I trust)
Cons
- Backbone network of long-present people has most of the power of the decisions made, those are often not transparent. This network of people is solely devoted to extreme programming but for some reasons calls it agile. Can be compared to old-school bank environment, with a few wizards from the beginning of time without whom the system just cannot run. - Pressure ends on engineers. Not thought through decisions causing a lot of manual work follout will end up on you. It is especially painful with the things you would voice to avoid, which actually will happen and did happen. - Promotions/salaries are loyalty based, as in the end it depends much more on how close you are with people than on your performance. Don't believe values said to be technology ones and don't expect it to be practiced, as they are used at their best for corporate talks or as an argument but not as a combined system. Arriving to Ocado I've been downgraded on arrival on seniority level and was not able to get it back without clear feedback or actions from their side - With regard to salaries high management openly says that they can pay less just because of Ocado awesomeness. You will have no transparency on pay raises and they can be the best compared to "dance, if you please me you can have money" and forget about having some constructiveness or concretics in it - Atmosphere in which it is difficult not to overwork for no pay, as a lot of time is mismanaged just by the way the company operates, so engineers have a feeling of guilt and would work more