Due to some internal reorganization, now my team includes a new intern. Since I'm the technical and team lead, it's up to me to bring the new guy up to speed with how we work and what we need to do make our software run smoothly. He has been with us for 4 months, and his internship can last up to 24 months by current legal rules.
The intern showed some promise - he had a full year of a technical course in Software Development in one of the languages we use and had previous experience as a freelancer doing small software projects. The stuff he showed us was simple but looked good for someone who was just learning the business, so we got him aboard.
However, working with him for a few months made a few issues visible. He barely can write any software - even really simple examples from an exercise book we got him - and has some real difficulty remembering core concepts we deal with everyday, even the most basic ones.
I'm actively teaching him for at least two hours a day every single day for two months now, and while he is showing some advances, they are rather small. It's a very frustrating experience for me overall - I've had several other interns before, and none showed such slow-paced advances.
This is not the problem, however.
Today I was reviewing some code with him, explaining some business logic, and he asked me about what exactly was happening on a certain line of mathematical code - it gave a discount on some values multiplying it by a decimal value (0.95 in this case). It was a pretty simple line of code and he showed a huge surprise about "making a number smaller by multiplying it by something". At first I thought it was a little funny and went on giving a few examples how that works out using fractions to clear what I thought it was a silly remark, but as I went on with my examples it became more and more clear that his math knowledge was really restricted.
It made me absolutely frustrated. I lost my patience and dropped several harsh remarks, in special my disbelief that he managed to leave high school with such lack of knowledge. I got specially angry and gave up teaching him for the day, telling him that this sort of lack of skill was unacceptable in the software industry.
Now I'm stuck with a bit of guilt. Maybe I was too harsh on him, maybe I was wrong on getting so upset with his lack of skill. I'm failing to deal with my frustration with him and I have no idea how to deal with it with more patience.
How do I keep my calms while dealing with such under-skilled coworker when I have to teach him? Can I call his attention to his lacking skill set? Or, is it something I should just ask for HR do deal with and send him on his way for another job?