In the no-so-distant future I plan to work for a corporation in the financial sector as a software developer. I have a few of options as right now:
Learn and focus on .NET since (presumably) it is widely used in the financial industry.
Study the programming concepts, learn algorithms, learn a little bit of C/C++, C#, JAVA, Objective-C, SQL, ORACLE, COBOL -- In other words, to learn the fundamental principles that tie开发者_开发百科 all programming languages together, but without going too deep in any particular language.
My college professor has told me that as a programmer, most of the time, you won't be writing any code but instead maintaing an existing code that people before you have written. Does that mean I don't really have to master any particular programming language and so as long as I have general software development concepts it'll be good enough?
If you or someone you know who had worked in the financial industry as a software developer, could you please share the experience and what is the daily routine like? Also what should I be learning right now while I am still young and still in college? Do I have to understand the market and the current economy thoroughly? What about the Oracle or SQL Databases - do I need to know them inside out as a programmer? Thanks if you have anything else to add that I have not mentioned in here then please do so!
Thank you so much everyone again. Your responses have really helped me. I don't even know who to pick as the right answer as everyone here provided a very good feedback.
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...
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.
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"
In addition to the other good advice you've had I suggest that you learn:
- financial mathematics;
- numerical methods appropriate for implementing the financial mathematics in code;
- 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.
精彩评论