Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

We frequently recruit fresh talent into our company straight from the Universities. While a lot of training goes on for these developers, I think there should be a training program that simply teaches them good coding skills (note, I am not talking about knowledge of .net framework).

What I am looking for is a software which allows me to automate some of this training. The part that should be automated is

  • Create coding assignments
  • Automatic submission of assignment
  • Automatic evaulation of the submitted assignment on code quality

Have you guys ever seen something like this in the wild?

share|improve this question

3 Answers 3

I have yet to see something 100% automated to do what you ask. That said, you can automate some of it and remove the subjectivity by using a static analysis tool like NDepend (http://www.ndepend.com/) or whatever is applicable to your language / framework. The submitted assignments could be processed by the tool first to get a baseline metric. Alternatively you could use FxCop (http://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx) (or it's descendants) to do the same sort of analysis for things like naming conventions, etc.

share|improve this answer
    
Agreed. This is the same thing that I have found. I did find codility, but its not exactly what we need. It could be a combination of these frameworks. Thanks for your answer. –  Vaibhav Sep 23 '10 at 13:30
2  
These guys might also be worth a look (assuming your target is .NET): innerworkings.com/learning –  Todd Williamson Sep 23 '10 at 14:04

Personally this is not something I would attempt to automate.

I do not think that removing the mentoring and the discussion of the subjective aspects of the code generated by new developers is ultimately doing the organization or the developers is ultimately a positive.

Unless you are recruiting from schools that do not produce a good result you are pretty much describing what many schools do in 100 and 200 level CS classes (except the "automation" is the prof's grad students)

They are out of school, it is time to show them how real problems get solved in the real world.

share|improve this answer
    
Actually, we do recruit from some of the best universities. However, the talent that comes in (while good) is still very raw and individualized. The challenge is to make sure that there is a consistent level of good quality across the board. And we have been able to achieve this till now through mentor programs, code reviews, etc. - but now, we are searching for a process which we can scale... maybe the answer is that its not possible... –  Vaibhav Sep 23 '10 at 13:29

Automated grading is great for algorithmic challenges where people compete against each other and the only important factors are speed, correctness and performance. Working on a project is completely different. In almost every case code readability beats micro-optimization and programmers should be able to cooperate, not compete with other. Training involving experienced human being that covers these matters would be much more useful.

Unless your company hires people who don't know how to program, then all bets are off...

share|improve this answer
    
Actually, the main reason for automatic grading is to make it scalable. As we are growing, we hire more and more people, and the people who are best at mentoring roles are usually fairly busy in projects. So, the challenge is to create something that can replace these people (probably too big a problem to solve)... –  Vaibhav Sep 23 '10 at 13:32
1  
An obvious solution would be to encourage more people to become mentors as the company grows and divide the training load between them. Another common solution is to assign an individual mentor to each new intern or hire that will serve him with advice and help get to speed in a new position. –  Adam Byrtek Sep 23 '10 at 20:49

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.