I consulted with several big banks, and while there are some great developers there, on the whole, the devs were largely passionless and were just there for the job. Many of them actively dislike coding, and it really felt like they were just there for the high pay. I think that type of developer really thrives in a move slow, heavy bureuacracy environment where velocity is not something people care about. The high security can be annoying, but everywhere I went they had enough processes and out-sourcing of security to experts and tools that the average dev didn't really have to think about it. On many teams there would be one person or so who (mostly) understood the area they were responsible for and could deliver quickly, but not every team had somebody like that. One thing that I did think was a positive is that (perhaps because of all these things) is that it was a very low-ego environment, and people were generally open-minded about learning new stuff and/or better ways to do things. Overall I really enjoyed working with the people at banks, despite everything taking longer than you would think it should :-)
What I dislike about these large bureaucracies is that it's not only impersonal to the developers who have to work on it, but also for the customers. Even though software is difficult, I think it's a net positive for society to have 10 to 100 banks with poorer software than a few big banks with great software. I think we often overestimate the benefits of economies of scale. A small bank in a town run by a few locals could handle the town's finances perfectly well without much software if there wouldn't be a whole morass of regulations.
Just wanted to say, thanks for the very interesting comment. I consulted at Thompson Reuters, and while they aren’t a bank, your story brought up all kinds of memories. The passionless part really resonated with me, since it was all too obvious whenever the one good developer (who I was thankfully paired with) and I had meetings with the rest of them. There was one guy in charge of the database, which in practice meant any time you wanted to interface with the database you had to ask this guy to do it instead of write any code yourself that even interacts with the database in any way, including just getting data. It meant hours of delays, routinely. During most meetings it would devolve into random tangents about cars. (The good dev was also a car enthusiast, so everyone came to him with all their car issues, much to his annoyance.) And yes, to be fair, it was a little fun and I enjoyed working with most of them. Very low ego, as you say.