* Pay is decent, amazing locations like NYC / Manhattan, City of London, Hong Kong, Tokyo, nice buildings, some travel (business class, etc).
* High status... it shouldn't matter, but it does, even really crappy jobs in this sector give you instant credibility with the rest of society.
* Actual monetary compensation is decent... you won't starve, but it's kind of discounted because a lot of people are attracted to the first two items above.
* Code can be ok (at best)... or sometimes really crufty, so long as it does whatever it needs to do, lots of legacy stuff 10, 20 or more years behind.
* Most software is actually not actually that mission critical. Outside of a few very specific areas like high frequency trading, most errors can be undone with a phone call, or roll back and rerun it, etc.
* Some of the most important things are done in excel spreadsheets. All sorts of very sophisticated systems and algorithms send roll up to feeding their data into some spreadsheet for analysis/manipulation.
* It's all about the people, ultimately if the company is in the equity trading or life insurance business, those people will be the key decision makers, and tech is just a cost center. If you can fix things for those people, great, if you can't, nobody cares how good your coding is in an academic sense.
Here is one interesting article: https://calpaterson.com/bank-python.html
I've worked for several superannuation and insurance companies. During the early days I couldn't believe how poorly informed most of the management were. Since I couldn't believe that they could be that stupid, I kept things to myself did a lot of research and in that process learnt a lot about the underlying accounting, investing, trading principles. The technical aspects of the work were the least of my problems. But the unrealistic timelines made virtually everything feel like a death march. Burn out is the ever present danger.
- Lots of inflated egos on the management side
- Technology is just a necessary evil to them. This makes you a necessary flunky. They will not respect your opinion as they don't think there are any insights to be had from the tech side of things - which may be right, they're trying to accomplish their goals with the crappiest and most primitive software they can get away with, that gets the job done. It's all decades of horrendous tech debt, that they're somehow ok with - everybody in management accepts slow pace of development it causes, as I think they prefer it over giving some power to the IT people.
Hedge funds
* Pay can fluctuate pretty drastically depending on what you do. Your value add in this space is to understand the financials more than other software devs. Remember their main goal is to generate money from money, NOT software development. It's a means to an end, so the more you can understand, the more valuable you are.
* Intense working environment - there's no real 9-5 here. High turnover, and there tends to be a lot of early turnover, so you either make it or exit quickly.
* Fun - generally given the intensity of the environment, you get to know your team really well and becomes a tight knit group.
* Expect weekends / holidays when things hit the fan. The amount of money on the line makes it very likely you will be pulled in for emergencies, which will happen.
* Deep tech knowledge and moves quickly.
Banks
* Bureaucracy heavy. You are more likely to find yourself managing paper work than doing software development. The software dev requirements are low, given the complexity is also low.
* Aging tech - given the heavy regulations things move slowly. Very slowly. The sense of urgency is replaced by reducing risk of getting something wrong. Often times they compensate with manual procedures over technology.
* Very high pay - Banks will pay someone who can understand technology, manage the process, and stay there for a while, very high salaries.
So, depending on what you're looking for, YMMV.