I've been working with the Unreal Engine (UE) for almost three years now. I started working with the engine after the release of the Infinity Blade assets. I've programmed one game previously called Red Hot Poker for Xbox Live Indie Games but the issue I had at the time is getting access to AAA artwork. With the release of the Infinity Blade assets, I now had access to quality artwork to go along with a game. I ended up settling on a multiplayer melee style game (which would eventually be called Nerepis) and the original idea was just to get something up and running in UE. After many hours and tutorials, I had a 3D character running around in a 3D world from those Infinity Blade assets without any multiplayer. I didn't exactly know what the Unreal Engine was capable of but I was impressed with what it could do and in such a short period of time.
The question you may be asking is "How does a person learn to make a game?". The answer is a lot of struggle and hard work initially. I knew how to program and have a background rooted in computer science. I worked professionally in my trade and I understood good programming practices, how to efficiently solve problems and how to abstract the art of coding. Essentially, the struggle was with understanding UE4s visual tools, blueprinting and how the pieces all fit together. There were times when I struggled on a problem for literally weeks (like replication issues for animation in multiplayer games) only to isolate my problems and then research a solution. Thankfully, the problems I now run into, may make my struggle for a few hours or days. I have really gotten better at using the platform but it has been from hard work and focus.
I want to break a couple of misconceptions that I see on the Unreal forums;
1) People in forums sometimes don't know what they are talking about
2) Blueprints aren't really programming and you're limited to what you can do
For the first issue, I see an awful lot of people respond to posts which have no clue what they are talking about. As an example, when I was working on a bot implementation, I was having problems with understanding the "state" of my bots and came to the conclusion I needed a player state for AI. A player state is used to keep useful information like stats, kills, deaths, etc. I created a post asking how to get a player state for the AI and someone posts saying that I don't need one. Really? For one he didn't answer my question and two, yes you need a player state. Anyhow, I ended up hacking some code which copies data around for the AI so that I have persistent stats-style information for bots. The longer I spend with the engine, the more time I can see where people are getting stuck. Don't get my wrong, most of the advice is great but just like anything in life, you should verify the advice which is given.
The second issue about Blueprints is just not true. If you created an entire game in Unreal Engine using Blueprints and no one would ever know the difference between it and a C++ project. Blueprints are a dream to use and for me, really helpful in visually breaking out complex problems. The only time I've had to write my own modules in C++ is for creating new functionality for the engine (Steam stats and leader-board integration as an example). I've been programming in many languages for a very long time and trust me, blueprinting is good and has made my life a lot easier.