UnRisk 7

Forum Navigation:

magazine

FORUMS > Numerical Methods Forum < refresh >
Topic Title: How to Interview c++ programmers
Created On Wed Mar 15, 06 01:52 PM
Topic View:

Pages: [ 1 2 >> Next ]
View thread in raw text format


DominicConnor
Senior Member

Posts: 11506
Joined: Jul 2002

Wed Mar 15, 06 01:52 PM
User is offline View users profile

This is version 1.0 of how you can spot good/bad C++ developers.
Any comments welcomed.


-------------------------
Random Walkers: Meetup for 204 Quants in a Pub

InterviewGuide.zip InterviewGuide.zip  (10 KB)

 
Reply
   
Quote
   
Top
   
Bottom
     



ppauper
Senior Member

Posts: 48392
Joined: Nov 2001

Wed Mar 15, 06 03:21 PM
User is offline View users profile

Quote

Originally posted by: DCFC
This is version 1.0 of how you can spot good/bad C++ developers.
Any comments welcomed.


A splendid idea.
I presume P&D are training their candidates to appear to be good developers under the metrics in the guide ?
 
Reply
   
Quote
   
Top
   
Bottom
     



nikol
Senior Member

Posts: 475
Joined: Jan 2002

Wed Mar 15, 06 04:31 PM
User is offline

Quote

training their candidates to appear to be good developers


it is a product to sell, so it must fit to the standards
 
Reply
   
Quote
   
Top
   
Bottom
     



Cuchulainn
Senior Member

Posts: 37338
Joined: Jul 2004

Wed Mar 15, 06 06:46 PM
User is offline View users profile

I would extend the stuff that a C++ developer needs to know.

At first glance I would say that these qualities as discussed in the DOC file are neither necessary not sufficient in order to determine if someone is a good/bad C++ programmer.

You might come across someone who uses patterns "without a name". And patterns can be risky!

A programmer must also know 1) generic programming 2) modular programming ('not everything is an object'), much of QF is algorithmic/precedural is nature. Take the example of the <math.h> library functions!

On patterns, Singleton is well, simple and static objects/references can also be used... MVC is fom the Smalltallk environment and somewhat outdated (Presentation Abstraction Control PAC is more flexibe)

When programming flexible numerical schemes, I have found that Strategy/Bridge, Template Method, Visitor and Property pattern to be useful.

And STL. And combining STL/templates with patterns is also useful.

More generics!


-------------------------
www.datasimfinancial.com

Edited: Wed Mar 15, 06 at 06:50 PM by Cuchulainn
 
Reply
   
Quote
   
Top
   
Bottom
     



Cuchulainn
Senior Member

Posts: 37338
Joined: Jul 2004

Wed Mar 15, 06 08:40 PM
User is offline View users profile

Quote

Its great when you find that a programmer thinks of his code structures in ways that map directly to the way your business runs, and certainly we like to see people who give answers to set problems in terms of the business were recruiting for


This is very important in my opinion. The customer has a business problem and you use C++ to solve that problem in the best, fastest, easy, cost-minded way possible. Solutions that are 'good enough' are usually good enough. This is the engineering approach. Within the tolerances.

My own favourite is 'get it working, then get it optimised'.

-------------------------
www.datasimfinancial.com

Edited: Wed Mar 15, 06 at 08:43 PM by Cuchulainn
 
Reply
   
Quote
   
Top
   
Bottom
     



ppauper
Senior Member

Posts: 48392
Joined: Nov 2001

Thu Mar 16, 06 02:32 PM
User is offline View users profile

Quote

Originally posted by: nikol
Quote

training their candidates to appear to be good developers


it is a product to sell, so it must fit to the standards


agreed, but do they write the standards to fit the product ?
 
Reply
   
Quote
   
Top
   
Bottom
     



DominicConnor
Senior Member

Posts: 11506
Joined: Jul 2002

Fri Mar 17, 06 10:57 AM
User is offline View users profile

I presume P&D are training their candidates to appear to be good developers under the metrics in the guide ?
Honestly ?
Few quants make it to be "good developers", when we pass on comments to the hiring manager, tends to be more like "OK", "good enough", "basic", and some basically can't program at all.
But separately we do training, of course, but we are moving towards the idea of "complete packages" at the entry level.

Our idea is that we both newbies who have potential, and fill in holes in their skills as a full service. A couple of banks seem very interested.

Daniel has good points, and this document is v1 for general C++, not specifically for quants.
Am working on a "how to interview quant developers", which is proving quite hard, since as above most quants are compromises between the skill sets.
Thus the issues are things like how do you trade off numerical skills against language ones ?

-------------------------
Random Walkers: Meetup for 204 Quants in a Pub

Edited: Fri Mar 17, 06 at 10:58 AM by DominicConnor

InterviewGuide.zip InterviewGuide.zip  (10 KB)

 
Reply
   
Quote
   
Top
   
Bottom
     



DominicConnor
Senior Member

Posts: 11506
Joined: Jul 2002

Fri Mar 17, 06 11:04 AM
User is offline View users profile

A summary has been published by The Register

I've agree to do a sequence of pieces on C++ development.

-------------------------
Random Walkers: Meetup for 204 Quants in a Pub
 
Reply
   
Quote
   
Top
   
Bottom
     



Cuchulainn
Senior Member

Posts: 37338
Joined: Jul 2004

Fri Mar 17, 06 11:10 AM
User is offline View users profile

Quote

Thus the issues are things like how do you trade off numerical skills against language ones ?


From my (limited) experience I see three (plus 1) expertise areas:


1: Knowledge of QF
2: Knowledge of Numerical Analysis
3: Knowledge of Programming in general (and C++ in particular)

It takes possibly a whole lifetime to learn any of these, but in the short terms it is expected that a quant knows all three. Partly due to the fact that not much is present in the way of design rules, best practices etc. etc. it is a huge job to determine how suitable candidate X is foir job Y. But it is possible to carry out a requirements analysis of Y and that is a start.

One thing is clear: some level of standardisation and baseline standards are needed. Otherwise it is difficult to measure.

My 2 cents.


-------------------------
www.datasimfinancial.com
 
Reply
   
Quote
   
Top
   
Bottom
     



Cuchulainn
Senior Member

Posts: 37338
Joined: Jul 2004

Fri Mar 17, 06 11:25 AM
User is offline View users profile

Quote

Originally posted by: DCFC
A summary has been published by The Register

I've agree to do a sequence of pieces on C++ development.


Quote

A good programmer has a balance between the high and low level views. I see too many people who sneer at low level stuff, only for it to bite them on the ankle later, in ways they simply can't understand.


No job too small or great. This is the correct engineering spirit and this is important.

Mathematicians are trained in this way. One moment they are thinking about PDE in a Banach space setting and then they specialise to BS PDE in 2d. The thought process ALSO goes in the other direction. Thusm specialisation and generalistaion. Don't see this in IT books, it's more of a big bang in the sense that THE solution is given for THE problem.






-------------------------
www.datasimfinancial.com

Edited: Fri Mar 17, 06 at 11:26 AM by Cuchulainn
 
Reply
   
Quote
   
Top
   
Bottom
     



TraderJoe
Senior Member

Posts: 11057
Joined: Feb 2005

Sat Mar 18, 06 01:12 AM
User is offline View users profile

Quote

DCFC: Dominic now writes for The Register

Well done.


-------------------------
That the ultimate felicity of man consists in the contemplation of God St. Thomas Aquinas.
 
Reply
   
Quote
   
Top
   
Bottom
     



N
Senior Member

Posts: 2816
Joined: May 2003

Sat Mar 18, 06 01:59 AM
User is offline View users profile

Quote

Originally posted by: Cuchulainn
Quote

Thus the issues are things like how do you trade off numerical skills against language ones ?


From my (limited) experience I see three (plus 1) expertise areas:


1: Knowledge of QF
2: Knowledge of Numerical Analysis
3: Knowledge of Programming in general (and C++ in particular)

It takes possibly a whole lifetime to learn any of these, but in the short terms it is expected that a quant knows all three. Partly due to the fact that not much is present in the way of design rules, best practices etc. etc. it is a huge job to determine how suitable candidate X is foir job Y. But it is possible to carry out a requirements analysis of Y and that is a start.

One thing is clear: some level of standardisation and baseline standards are needed. Otherwise it is difficult to measure.

My 2 cents.


From my (also limited) experience, I see the need for the following three expertise areas:

1. Knowledge of advanced mathematics, including Differential Geometry, Geometric Algebra and Modular Forms.
2. Knowledge of Numerical Analysis
3. Knowledge of Computer Science including a programming language like C#.

One thing is clear, you want to avoid just an IT person and any programming-QF person without real-world experience.

My 2.1 cents.



 
Reply
   
Quote
   
Top
   
Bottom
     



jfuqua
Senior Member

Posts: 1254
Joined: Jul 2002

Sat Mar 18, 06 05:19 PM
User is offline

Is there really a danger of being too good of a programmer to be a quant esp. in a small firm ?
I agree that many firms will put a interviewed quant through alot of questions about their programming skills and even computer technology knowledge. However that may be the fault of the interviewer, not the quant.. Given that the manager does the hiring, the applicant does not have much of a choice.
Especially in small firms the quant with the best programming [and computer tech.] skills can get pulled into being the 'tech.' person for the quant group. Being a good quant will most always pay better than being a 50% quant/50% tech.---or as I've seen 100% tech..
Granted a good deal of programming skill is needed but ideally should that not be in the programming of the algorithms and not looking for the quant to also provide the implementation. Perhaps if necessary even have a code review by the programming staff, but let the quants use their comparitive advantage in what they were hired for---quant research, algorithm development through their math/finance knowledge.
That said, the applicant does not have much choice when getting hired, but after that trying to improve quant/tech. skills 50/50 may backfire for quant advancement.
 
Reply
   
Quote
   
Top
   
Bottom
     



Cuchulainn
Senior Member

Posts: 37338
Joined: Jul 2004

Sat Mar 18, 06 09:50 PM
User is offline View users profile

Quote

Originally posted by: jfuqua
Is there really a danger of being too good of a programmer to be a quant esp. in a small firm ?
I agree that many firms will put a interviewed quant through alot of questions about their programming skills and even computer technology knowledge. However that may be the fault of the interviewer, not the quant.. Given that the manager does the hiring, the applicant does not have much of a choice.
Especially in small firms the quant with the best programming [and computer tech.] skills can get pulled into being the 'tech.' person for the quant group. Being a good quant will most always pay better than being a 50% quant/50% tech.---or as I've seen 100% tech..
Granted a good deal of programming skill is needed but ideally should that not be in the programming of the algorithms and not looking for the quant to also provide the implementation. Perhaps if necessary even have a code review by the programming staff, but let the quants use their comparitive advantage in what they were hired for---quant research, algorithm development through their math/finance knowledge.
That said, the applicant does not have much choice when getting hired, but after that trying to improve quant/tech. skills 50/50 may backfire for quant advancement.


Good points. But it sounds like adapting skills as you go along. In my opinion you cannot be whiz at quant and IT, at least not when you get out of the places of learning. It takes at least 10 years to become a good developer and even longer in maths.

In other disciplines skills specialisation is standard: think about the medical profession or the building trade.



-------------------------
www.datasimfinancial.com
 
Reply
   
Quote
   
Top
   
Bottom
     



Cuchulainn
Senior Member

Posts: 37338
Joined: Jul 2004

Mon Mar 20, 06 10:41 AM
User is offline View users profile

Quote

Originally posted by: DCFC
A summary has been published by The Register

I've agree to do a sequence of pieces on C++ development.


Dominic,
Most of those fresh from uni do not know OO or template programming (although I heard of a Russian guy did C++ in 1992 under Turbo 3.1 with Crank Nicolson). So here is a plan:

Plan A: OO programming

else/and

Plan B: generic programming

else

Plan C: modular/procedural programming. (like Fortran, C)


At least you will have code up and running instead of trying to create a less-than optimal class. Get it working, then get it right, then get it optimised.


-------------------------
www.datasimfinancial.com

Edited: Mon Mar 20, 06 at 10:42 AM by Cuchulainn
 
Reply
   
Quote
   
Top
   
Bottom
     



bluetrin
Senior Member

Posts: 282
Joined: Sep 2005

Mon Mar 20, 06 11:54 AM
User is offline View users profile



I thought this link may be useful:

Bjarne Stroustrup's C++ Style and Technique FAQ
 
Reply
   
Quote
   
Top
   
Bottom
     



Cuchulainn
Senior Member

Posts: 37338
Joined: Jul 2004

Mon Mar 20, 06 03:52 PM
User is offline View users profile

Quote

Originally posted by: bluetrin
I thought this link may be useful:

Bjarne Stroustrup's C++ Style and Technique FAQ


I like this one, I call it agnostic programming

Quote


Why doesn't C++ have a universal class Object?
We don't need one: generic programming provides statically type safe alternatives in most cases. Other cases are handled using multiple inheritance.

There is no useful universal class: a truly universal carries no semantics of its own.

A "universal" class encourages sloppy thinking about types and interfaces and leads to excess run-time checking.

Using a universal base class implies cost: Objects must be heap-allocated to be polymorphic; that implies memory and access cost. Heap objects don't naturally support copy semantics. Heap objects don't support simple scoped behavior (which complicates resource management).

A universal base class encourages use of dynamic_cast and other run-time checking.
Yes. I have simplified the arguments, but this is a FAQ, not an academic paper.


-------------------------
www.datasimfinancial.com

Edited: Mon Mar 20, 06 at 03:53 PM by Cuchulainn
 
Reply
   
Quote
   
Top
   
Bottom
     



DominicConnor
Senior Member

Posts: 11506
Joined: Jul 2002

Tue Mar 21, 06 09:26 PM
User is offline View users profile

Just a little clarification. I was not defining what makes a good programmer, the task in hand is how to judge the quality under tight constraints in time.
But this is a good thread, most people coming into QF have to find their own way in s/w development, with most academic courses being weak, and some skipping it altogether.
Perhaps we need a curriculum ?
N and jfuqua do raise a good & hard problem though.
How do you make sure you don't get sucked into "housekeeping" IT ?

I do warn people about professing good skills in databases, but that's not enough, and Perl for various reasons coincides with slipping into IT guys.
Also dropping skills from your CV is not always good either, especially at entry level where it may just push you over the filter.







-------------------------
Random Walkers: Meetup for 204 Quants in a Pub
 
Reply
   
Quote
   
Top
   
Bottom
     



jfuqua
Senior Member

Posts: 1254
Joined: Jul 2002

Tue Mar 21, 06 11:36 PM
User is offline

The head of quant research and IT at a large bank doing alot of derivative work said [after several years of model and implementation work had already been done] that he wanted only a few people doing C++ work because doing it right was so difficult and it is so 'open' [let you do almost anything] that the code has the potential to blow-up. For all but the best people, he wanted the quants and developers to use Java. This was esp. true for large trading systems probably vrs. DLL type applications that if they blow-up, only one trader at a time is effected.
How reasonable to make this distinction, I don't know. In reality it seemed to be difficult.
 
Reply
   
Quote
   
Top
   
Bottom
     



mj
Senior Member

Posts: 3420
Joined: Dec 2001

Wed Mar 22, 06 09:51 PM
User is offline View users profile

Re dcfc's comments on getting sucked in.

i always advise job seekers that if the interview focuses on coding then turn the job down unless you want to be a developer.

Of course, an interview for a quant analyst should ask about coding but it shouldn't be the main focus. Candidates who complained when i asked them coding questions generally destroyed their chances as well.



-------------------------
Course on Kooderive -- GPU programming with 100 times speed up in February 2015. www.markjoshi.com
 
Reply
   
Quote
   
Top
   
Bottom
     

Pages: [ 1 2 >> Next ]
View thread in raw text format
FORUMS > Numerical Methods Forum < refresh >

Forum Navigation:

© All material, including contents and design, copyright Wilmott Electronic Media Limited - FuseTalk 4.01 © 1999-2014 FuseTalk Inc. Terms & Conditions