It looks normal for raw faces and render. At its core blender uses vertex rendering. That is, value / color information is stowed on each vertex. And, when rendered, that discrete vertex information is averaged out over the faces and edges.
Since your example contains small number of vertexes, the render is somewhat crude. Just add more subdivision and see how render becomes smoother.