Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

closed as off-topic by MichaelT, GlenH7, durron597, ratchet freak, amon Mar 26 '15 at 13:29

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – Community, GlenH7, durron597, ratchet freak, amon
If this question can be reworded to fit the rules in the help center, please edit the question.

Try evaluating coding skills automatically and those same skills will be put towards beating the system rather than coding well, because "good code" is not a recursively enumerable language. – busy_wait Oct 10 '14 at 15:15
As far as sytle goes: use – Thomas Junk Oct 10 '14 at 15:20

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

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 ( 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 ( (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
These guys might also be worth a look (assuming your target is .NET): – Todd Williamson Sep 23 '10 at 14:04

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
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

A number of MMOC sites out there have similar structures to what you're describing for programming courses. For example I took a course on, the majority of the programming assignments were graded automatically. I believe it only checked if you got the expected result from your code snippet, but extending that to check for naming conventions and possibly running a few code metric tools should be fairly straight forward.

I haven't ever set up a course like this, so I can't offer any first-hand experience, but based on what I've read either Udemy or EdX could serve this purpose.

share|improve this answer

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