|
I'm thinking of picking up programming again as a hobby, and potentially as an additional skill on my CV. I've done basic C++ before, and dabbled into introductory Java, Delphi, VB and Actionscript. I'm more interested in learning SQL or something similarly "practical" for a job that is not PURE programming (eg. manipulating databases like Oracle).
The thing is, I cannot motivate myself to code without some goal or end product in mind, but I do not have the skills to apply for a job or what-not. I've heard of websites that provide puzzles and they seem pretty interesting, though advanced. I have decently good maths knowledge (university year 1 + abstract maths), so my main task is to learn syntax and how everything works. What can my fellow programmers recommend?
Also, majoring in Economics, I'm looking to go into finance when I graduate. My dream job is to be a financial analyst at Google, which requires good coding knowledge. However, I'm not sure other jobs in finance will require as much aptitude in coding. I wouldn't want to spend too much time learning code if it is not in demand, so can anyone provide some insight into this?
|
It depends on what type of work you want to do in finance.
You can a) Be part of the front office (e.g. traders, sales): then all you to know in terms of programming is very basic. They would mostly use VBA, and perhaps a little bit of scripting language (python or perl) to automate some of the mundane tasks.
b) Be part of the back office: this is really the bread and butter of modern finance, you actualize complex models into banking applications used by the front office. Again, depending on what you want to do, you would need deep knowledge of various programming languages (C++, Java and C# are all used). Obviously, you would need a good practical experience with DBMS's.
A good website that provides excellent programming/maths puzzles is project Euler: http://projecteuler.net/
Also, just FYI, financial analyst at Google does not require good coding knowledge, it requires good quantitative analytic abilities.
|
On February 14 2011 00:01 Vinnesta wrote: I have decently good maths knowledge (university year 1 + abstract maths) This is very vague. I take it "university year 1" is single variable calculus, but what do you mean by "abstract maths?" A semester of linear algebra? There's a lot of "abstract math" out there.
|
On February 14 2011 00:30 Commodore wrote:Show nested quote +On February 14 2011 00:01 Vinnesta wrote: I have decently good maths knowledge (university year 1 + abstract maths) This is very vague. I take it "university year 1" is single variable calculus, but what do you mean by "abstract maths?" A semester of linear algebra? There's a lot of "abstract math" out there.
I stated that to point out that maths wouldn't be a barrier to picking up coding. Since I take a BSc., this is what we learn:
Multi-variable calculus: scalar and vector-valued functions - derivatives, stationary points and Lagrange's method, etc.
Linear algebra: matrices, vector spaces - manipulating basis, linear transformation, etc.
Abstract maths: construction of integers, rational and complex numbers from equivalence relations, modular arithmetic, sequences and limits (with continuity), and groups (algebra).
The abstract maths we learn is the "pure" form of mathematics, eg. the definition of continuity of a function at c within an interval I is: for all ε > 0, there exist a δ >0 such that for all x ∈ I satisfying |x - c| < δ, |f(x) - f(c)| < ε. I believe it really helps in programming since it is so fundamental and technical.
On February 14 2011 00:15 Cambium wrote:A good website that provides excellent programming/maths puzzles is project Euler: http://projecteuler.net/
Thanks for the link! I'll be spending some time working on those problems, there goes my sleep tonight...
After researching a bit more, I'm deciding between using MATLAB, R or Mathematica for programming. Matlab is obviously well recognised, but the software costs a fair amount for a student. R is more up-and-coming and was recommended by my statistics professor, and well its free! Any comments on these or similar environments?
|
Your pure math looks pretty solid. I'm surprised that you've seen so much as an economics major. In applications, the study of differential equations and approximating them is important. I recommend, for example, reading a proof of the fact that Euler's method for approximating an ODE converges O(h) where h is the step size.
Octave is a free program that accepts almost exactly the same commands as Matlab. I recommend trying it out if you want to learn but not buy Matlab.
It is possible that your university lets you access Matlab from home via SSH. This is how I use Matlab at home.
|
|
You don't need math at all except for like, boolean algebra. Programming will allow you to think mathematically without the need to use numbers or calculus or whatever. The best (only) way to learn how to program is to program yourself, and probably the best way is to participate in open source projects. freshmeat.net is a good site to find some.
As far as I know, at least in my area, job descriptions for majors like yours, demand the use of certain software packages. These software packages may have a programming language as an extension but programming knowledge is rarely necessary. Now google may require high coding knowledge because they have a penchant for hiring (software) engineers to do everything, not just coding.
|
On February 14 2011 01:15 Commodore wrote: Your pure math looks pretty solid. I'm surprised that you've seen so much as an economics major. In applications, the study of differential equations and approximating them is important. I recommend, for example, reading a proof of the fact that Euler's method for approximating an ODE converges O(h) where h is the step size.
Octave is a free program that accepts almost exactly the same commands as Matlab. I recommend trying it out if you want to learn but not buy Matlab.
I was crazy to take on abstract maths as an outside option, when there were modules with much less work heh. In most (UK) universities, maths is far more important in economics than it has ever been, thus the heavy load of maths in year 1.
Is there a good GUI for Octave? Maybe it's cause I'm a pampered young coder, but I dislike running programs in terminal :p
|
I work in finance and agree with Cambium. the demand for skilled programmers in both front and back office is huge. especially for coding trading algorithms, the compensation can be quite extraordinary.
That said,the requirements to get a job programming in finance tend to be quite high. it's difficult to be "dabbling" in coding and expect to be working on cutting edge financial programming projects.
|
On February 14 2011 01:36 cskalias.pbe wrote: I work in finance and agree with Cambium. the demand for skilled programmers in both front and back office is huge. especially for coding trading algorithms, the compensation can be quite extraordinary.
That said,the requirements to get a job programming in finance tend to be quite high. it's difficult to be "dabbling" in coding and expect to be working on cutting edge financial programming projects.
What programming languages or environments do your company use? As a freshman (in the UK), I have 2 more years to pick up higher level coding before I graduate, hence this blog post! How did you originally pick up programming?
|
Different practice areas or even different groups will employ different technologies. It really depends on what you want to do. The general understanding I get is that the closer you want to be with time-sensitive algorithms the more C/C++ (and possibly even lower level) they demand.
To "pick up" a programming language is actually extremely difficult, but it's not impossible to do, Thinking in C++ is an extremely good book, but I don't know if it's well-suited for complete beginners: http://www.ibiblio.org/pub/docs/books/eckel/
A lot of programming is based on experience (trial and error to a degree), and some things just need to be learned formally.
|
On February 14 2011 01:54 Cambium wrote:
To "pick up" a programming language is actually extremely difficult Sorry, but this is wrong. The first programming language you learn might be hard; the second will be much easier, though, and subsequent languages will be extremely easy.
(This is coming from someone who routinely uses C, C++, Perl, Ada, FORTRAN, and x86 Assembly at his job, and also has done LISP (Scheme), Prolog, SML(NJ), Java, and Smalltalk in the past).
|
On February 14 2011 02:04 Obscura.304 wrote:Show nested quote +On February 14 2011 01:54 Cambium wrote:
To "pick up" a programming language is actually extremely difficult Sorry, but this is wrong. The first programming language you learn might be hard; the second will be much easier, though, and subsequent languages will be extremely easy. (This is coming from someone who routinely uses C, C++, Perl, Ada, FORTRAN, and x86 Assembly at his job, and also has done LISP (Scheme), Prolog, SML(NJ), Java, and Smalltalk in the past).
OP said:
I've done basic C++ before, and dabbled into introductory Java, Delphi, VB and Actionscript
|
IMO the Matlab desktop/IDE is more of a pain than an asset, the major advantage of using it is that the Matlab editor may occasionally alert you to an error. There is QtOctave for Octave, which attempts to imitate the Matlab desktop. I would use R or Python+NumPy+SciPy+matplotlib over Matlab/Octave though. The Matlab language has nice syntax for linear algebra but it is not a general purpose language by any means, and has some PITA aspects like having to create a separate file for each function. Python/NumPy do not have the nice math syntax but it is a far superior language in any other way.
Financial institutions also hire programmers who are not necessarily econ/finance people at all to write web sites, high performance (real time) trading software, etc.
|
So, he's not learning his first language?
With even the tiny bit of procedural and OO experience he has, Ada, Perl, and FORTRAN should be no problem at all. Once you know how to program, learning a new syntax and set of reserved words is easy.
EDIT- got ninja'd, obviously this is in response to Cambium.
|
Unless you know one language very well, it's hard to pick up additional languages. He's essentially saying he's learning it from the beginning.
I also don't know exactly how you interpreted my definition of "pick up", what I meant was to be productive with it. If you mean to just write for-loops, yes, I agree, it would only take 5 minutes to "pick up" a language.
|
Well, your pure math is not exactly pure math, it's just first year math. Pure math is when you get onto things like abstract algebra, real analysis, complex analysis, etc.
You can try applying for jobs at Bloomberg; they are always looking for financial coders. They hire a lot of co-op students year-round in New York.
|
On February 14 2011 02:23 Cambium wrote: Unless you know one language very well, it's hard to pick up additional languages. He's essentially saying he's learning it from the beginning.
I also don't know exactly how you interpreted my definition of "pick up", what I meant was to be productive with it. If you mean to just write for-loops, yes, I agree, it would only take 5 minutes to "pick up" a language. Assuming we narrow this down to procedural languages, algorithms are the same all over (aside from some strong vs. weak typing stuff which takes about an hour or two to pick up).
If you can use the syntax of a language to create the flow control structures and data structures (which should be easy to learn), you can program anything in that language that you can in any other language where you know the syntax for creating flow control and data structures.
|
On February 14 2011 02:34 Obscura.304 wrote:Show nested quote +On February 14 2011 02:23 Cambium wrote: Unless you know one language very well, it's hard to pick up additional languages. He's essentially saying he's learning it from the beginning.
I also don't know exactly how you interpreted my definition of "pick up", what I meant was to be productive with it. If you mean to just write for-loops, yes, I agree, it would only take 5 minutes to "pick up" a language. Assuming we narrow this down to procedural languages, algorithms are the same all over (aside from some strong vs. weak typing stuff which takes about an hour or two to pick up). If you can use the syntax of a language to create the flow control structures and data structures (which should be easy to learn), you can program anything in that language that you can in any other language where you know the syntax for creating flow control and data structures.
This is going on a very far tangent already, so I'm concluding it with one final remark.
Take C++ for instance, it takes years of experience to write "bug-free" and secure code in any sizable application. Even if you are an experienced Java programmer, unless you know the fundamentals very well, you can't just pick up C++.
Also, data structures and algorithms are not easy to learn given how many there are, and knowing when to use which, again, takes a lot of practical experience. Then you factor in concepts like concurrency which is implemented differently in every language, it's not easy to just learn it from the books. Then there are a ton of language specific features/libraries that are completely insular, and the only way to learn them is through serendipitous discoveries, practice and trial and error.
My point is, self-learning a programming language from the start with very limited background (which is clear in OP's case) is a daunting task, and I am surprised and baffled that any experienced programmer (that you proclaim to be) would disagree.
|
On February 14 2011 02:33 JodoYodo wrote: Well, your pure math is not exactly pure math, it's just first year math. Pure math is when you get onto things like abstract algebra, real analysis, complex analysis, etc.
You can try applying for jobs at Bloomberg; they are always looking for financial coders. They hire a lot of co-op students year-round in New York.
Bloomberg is not exactly finance related. They service the industry by providing data, but I don't think you would ever get to touch the business side (if there is any) of things.
You are much better off doing internships with investment banks and try to do a few front office jobs (front office really sucks for interns because you are essentially their bitch during the day and they teach you a few things after the market closes) and a few back office jobs and see which one you prefer. Of course, these can be rather competitive.
You mentioned that you are from the UK, and I know for fact that almost all major banks take interns in the summer, some to consider:
GS, MS, BarCap, Barclays, UBS
|
|
|
|