+1  A: 

Start with option 2. Gain a good breadth of knowledge and understanding. But don't stop with c,c++,c#,java,object-c,sql,oracle,cobol... do some other stuff. Create an app for an app store and gain an appreciation of how to market it, how to deal with users, understand what users want/need. Learn how to do some graphics work, learn about usability, etc....

How many .NET developers are looking for work in the financial industry (or any other industry for that matter)? How will you differentiate yourself?

I highly recommend Dan Pink's book "A Whole New Mind"

cagreen
+6  A: 

I worked in the financial industry for several years. I worked with a mathematician who would develop theories and strategies for buying and selling financial instruments, and I would put his theories into software for to test them out. But, what I'm about to suggest isn't just limited to the financial industry. The following are just my opinions. I've been in software development for approximately 22 years, and have pretty much done everything related to software.

1) If you're interested in a career as a business/financial software developer, I wouldn't spend two seconds bothering with C/C++. While these languages are still being used, you will be much better off learning .NET (or Java). I work for a $2.5B solar manufacturer and we are 95% .NET/C#. Learning OO principles is key and learn software development best practices.

2) Learn solid database fundamentals. I'm not sure it matters whether you learn Oracle or SQL Server, but learn one of them. Understand database normalization, foreign keys, referential integrity, query optimization etc.

3) Get familiar with a version control system, like TFS. Most of the code you work with will be in source control of some sort. Learning the ins/outs of branching/merging. This is very important.

4) It's not enough to just be good technically. You give yourself a tremendous advantage if you have a solid understanding of the industry you're developing in. For example, when I was developing financial software, I had an MBA, with a specialization in Finance. This gave me a huge boost. You are far more valuable to your company if you have a solid understanding of the business they are in.

5) DO NOT STOP LEARNING. Instead of going home after work and watching TV, pick up a book on LINQ (.NET) or SQL Server or OO design or...

Randy Minder
great advice except for TFS, yes to source control no to TFS
Miau
"Do not stop learning" is the best advice for anyone in the industry.
Craig Walker
Miau, what's wrong with Team Foundation Server? I totally have no idea what it is, just want to know why you disagree about it with Randy.
Silence of 2012
+2  A: 

I've worked in the financial sector for over 3 years now.

My daily routine starts by going to the kitchen towards the caffeine. I believe this is similar in other industries.

But, I digress...

Roughly 20-40% of my time would consist of coding, depending on the current state of projects. There is A LOT of maintenance work to be done, or work towards adding more functionality to existing code. Other time is spent among meetings, estimates, specs and staff training.

I typically work on the architecture of new systems we are implementing, but get pulled in for maintenance work when changes are failing behind.

If you are going to work in the financial markets, some math is going to help you. Some jobs will require nothing more than being able to understand compound interest rates, while others, such as Quant jobs may require a deeper understanding.

There is a third option that can pay quite well if your good at it. That's Brownfield development. If you can teach yourself how to integrate new systems with common legacy (or perceived as legacy) systems you can be in hot demand.

As to what to learn while you are young and still at college, there are plenty of good questions about this on SO with answers better than I can provide. Of great note however is what your are taught at college is but a fraction of what you need to be truly successful. Also, follow job positions to see how the market is moving and try to anticipate. If you can get an intern-ship or some holiday gigs with companies while you are still in college it will give you a great boost as well.

Dan McGrath
+1  A: 

In addition to the other good advice you've had I suggest that you learn:

  1. financial mathematics;
  2. numerical methods appropriate for implementing the financial mathematics in code;
  3. Matlab or R or Mathematica or Maple or similar.

1 and 2, in particular, will help you to future-proof your skill set against fads and fashionsn in programming languages.

Finally, don't presume that technology X is used in your target sector, find out what technologies are used.

High Performance Mark