I am also a long time developer working in business software programming in my day job.
I started with Unity in its Version 3.5 days. I absolutely hated it at first, the editor was overly complex for me, and the engine itself was really subpar back in these days (it still is compared to others, but its catching up IMO). I took 1.5 years off Unity and started using a different engine. While this engine was giving me much better results graphically, the editor was just unusable. Old school crap that made it hard to even place a single object. How anyone would go through the ordeal to create a full level in this editor is a mystery to me.
I really tried to like the engine and create something in it... but after the 1.5 years, I went back to Unity, and it did click with me.
Its the editor. It really allows you to be productive, once you "get it". I then started to use C# instead of Unityscript, and somehow the C# API also clicked with me. Don't get me wrong, there are just as many things that seemed counterintuitive or downright crap in the API to me. Sometimes you have to work with stupid workarounds to achieve a result because the engine does not support it.
But compared to other engines on the market, its still the better choice. If only for an editor that actually steps out of your way when you try to be productive in it once you learn how to use it.
I have now started using Unreal engine 4 for a new project. And while I again like the results achievable better than what I was able to achieve with Unity out of the box... things are just so different in it than in Unity.
Again, for me, the main adjective I would give to working in Unreal is "uproductive"... that might be me still being an Unreal newb getting to grips with the engine, or because what Unity did was actually make the work in the editor easier but neglecting other, more important parts of the engine...
Still, you are able to throw together a prototype in Unity and code the behaviour scripts necessary in hours, if you already have all the assets and a good plan. I couldn't think of a way to do that in Unreal. Everything seems to be so much more involved. The GameObjects in Unity are pretty much drag and drop, while the Blueprint System in Unreal seems much clunkier in comparison (again, could be me just not "getting it").
You can create many things in the Unity editor that need outside tools in Unreal (best example is cubemaps... without the PS plugin or the ATI/AMD Tools to create DDS files, not possible in Unreal. In Unity, just provide 6 images, and let the editor do the work).
But of course YMMV. I found that for me as a programmer, programming seldom is the time sink. I can program relatively fast in any environment, and I find it quite easy to adapt to most languages. I find the other aspects much more involved, setting up stuff in the editor, creating assets where necessary. Most probably because I don't have the years of expierience and a degree in it.
Still, that means for me number one priority in an engine is to make the assets and leveldesign part as easy as possible, with being able to program productively a distant second place. If programming gets more involved , so be it (in which case C++ in Unreal is much worse IMO. Unity lets you get away with much less code than Unreal IMO)... I am reasonably fast with programming either way. That means engines like CryEngine, that have like an ANCIENT, almost unusable editor fall to the wayside for me. I don't have a whole studio of guys that can try to come up with a pipeline and write the tools to "replace" the unproductive editor with something else.
So yeah, maybe try to step outside your own shoes and think about what would make your artist friend more productive. Chances are he will have MUCH more work to do than you as a programmer, depends on the project you are working on of course. But with the engine taking away lots of the low level plumbing, if the game is actually reasonable simple, the code might not be so hard to do anyway, while the amount of assets and level design needed might still be quite overwhelming.
If he is able to work faster in Unity, and you just "don't like it because the code looks unclean", but can work in it, maybe you should give in and let him have his way.
I can tell you, I have written A LOT of C# code for my last Unity project. Worked like a charm. There are times you need to get inventive with stupid workarounds as the engine just will not let you do what you need to do, but I gess you get these moments with all engines (or you start to waste time re-coding parts of the low level code of the engine, which is also not very productive).
And the normal work in Unity, once you get the hang of the component paradigm of it, is quite smooth. You can even combine it with normal OO if you are clever about it.