Pros
Like the title says, if you fit in to company culture you can do well. The bonuses are great compared to non-finance development jobs. However as a developer you are miles behind the traders in terms of bonuses, so be prepared to be working with youngsters that are on a multiple of your income. One of the great benefits is that there are no external customers, you are only developing solutions for internal use. This has some great upsides - you only work on projects that are really needed and make an immediate difference to the company. You can see your code go straight into production and directly interact with the users to get feedback. The work/life balance is extremely good compared to previous jobs I have had, you aren't really expected to do extra except to be on standby for external dependencies such as exchange upgrades. Usually the internal work is planned well in advance. The company does have a strong moral(!) compass in terms of trading behavior. We try to compete in a fair way with other market participants and although the phrase 'improve the market' is parroted a lot as a mission statement, I do think it is generally true (while trying to make money of course). There is also the cliche of getting to work with a lot of smart people, in this case it is definitely true.
Cons
If you have no interest in trading then you are not going to progress. Think of it is a trading company that also happens to do development. There is always more work than people and a lot of technical debt. There are so many products and markets we are trying to support that it's almost impossible to keep track of. Although the bonus scheme is open and visible, the shares scheme is completely opaque. There is relatively high staff turnover in all departments. The process isn't completely visible but if the company decides one day that they don't want you then they make you an offer to incentivize you to leave. Sometimes people disappear without a word and you wonder what happened because they seemed competent enough. The bonus structure has extremely coarse resolution, it doubles at each level so it makes an enormous difference to overall remuneration. It is not at all clear what the requirements for these levels are, it is completely at the discretion of your direct manager if you progress. The CTO position has been extremely unstable, the tech leadership at this level is constantly in flux. The team leads have been fairly stable despite this though. There is definitely a Dutch bias in the management positions, while progression generally seems to be based on merit, this is an exception.