Multiple simple questions from someone who just started self learning mathematics this is my first question. My background is some analysis/calculus (In Europe it's a mix of both I guess) undergraduate course in an engineering college and a very very little knowledge of linear algebra and abstract algebra. I recently became interested in self studying mathematics and I decided to start from the foundations. I started studying axiomatic set theory and mathematical logic, and I have to say that axiomatic set theory is pretty damn hard, especially because there are no computations at all (as I'm used to from high school and college) and it's all about proving theorems over theorems. I've never learned how to do proofs, I was asked to do a few in calculus/analysis class but all I actually did was to learn them by heart and recite them (even though I could understand what i was writing, I had no idea why they worked etc.). Some of the theorems I'm asked to prove in these axiomatic set theory textbooks have proofs that make me think "there is no way I could have come up with that", some proofs are just too complicated, especially when I can barely follow along with the author (not only the proofs I mean in general). So my question is, what year is axiomatic set theory (or even maybe model theory since i plan to study it, mathematical logic etc.) taught in college? Is it normal for someone with my background to struggle so much with this subject? How can I learn how to write these complicated proofs? I've found a couple of books on Amazon, like how to prove it for example, but they teach techniques like proofs by contradictions, direct proofs etc. using simple examples and they don't really help much since sometimes to prove some theorems you have to think about some "crazy" tricks to do it.. so the obvious answer to this question is "practice a lot" but how? Should I try to prove a theorem in the same way the author proved it? Does this approach really help to learn how to come up with new proofs? Finally last question, are graduate students for example, required to come up with these complicated proofs out of nowhere? What should someone expect a graduate student to be able to do? I'm asking this last question because I can't really compare myself to anybody.
Sorry for the multiple questions, but I'm super confused and actually a little depressed since everything is so different than engineering and subjects and I feel like I will never be able to "fit in", especially since I have nobody I can ask to. Could you guys help me out please? Thank you so much!
 A: Way too long for a comment, but not really a good answer IMO – I’ll let it there because it’s kind of my two cents and let the others decide.
@GReyes’s comment is spot on (I wish I could upvote it more). Foundations are hard; axiomatic set theory is hard. It’s very abstract, dry, has a lot of formalism, and can get kind of “meta” at some points. Hence a lot of the difficulty to come up with proofs. (Some naive and very basic set theory – manipulating intersections, reunions, power sets, injections, surjections... – can be important and interesting, however.)
Linear algebra, real analysis, on the other hand, are much more tractable topics, with an easier intuition, and far better suited to learn to do math, ie prove stuff. This is still usually not straightforward to learn on one’s own.
About proofs... well, the more you practice (a good book must have exercises where you prove stuff – you can also try and redo a proof of a theorem proved by the author without using the book – you can try and find counterexamples to see whether all the assumptions are necessary), the better you get. What can look at first like mind-blowing tricks become important ideas that you know and can employ on your own.
This doesn’t happen overnight! For subjects not too easy for you, the shiny new proofs, shiny new theorems, shiny new methods, shiny new tools will slowly get into your mind, until one day you look back and realize “oh, now I get it” (and you’ll have that realization several times that what seemed once scary isn’t so much any more). And you’ll look at all these complicated proofs you read and learnt and sweated over, and realize “it actually makes sense now”.
(Think of it like large individual school project you have to do on your own. There’s work, issues, stuff to be sorted out, details that you revise until they finally work out, and in the end, you look back and you actually understand all of what you did).
Also, remember that all these ideas took a lot of time to be thought up. You have the enormous advantage of being guided to a fruitful direction.
A: 
I started studying axiomatic set theory and mathematical logic, and I
have to say that axiomatic set theory is pretty damn hard, especially
because there are no computations at all (as I'm used to from high
school and college) and it's all about proving theorems over theorems.

As far as I know, going from computations to proofs is a profound change in thinking. When computing, you use computation methods invented and proved correct by mathematicians. Now you need to do this yourself. Proving requires learning a new language that is farther from natural languages than they are from each other.
You are right that computations are special cases of proofs.

How can I learn how to write these complicated proofs? I've found a
couple of books on Amazon, like how to prove it for example, but they
teach techniques like proofs by contradictions, direct proofs etc.
using simple examples and they don't really help much since sometimes
to prove some theorems you have to think about some "crazy" tricks to
do it.. so the obvious answer to this question is "practice a lot" but
how?

I discovered that nobody knows any other method that you already described. After reading a book on practical logic, we just read books on specific subjects. If it is hard for you to learn specific subjects, maybe, you need to study practical logic a bit more. There are other books, but usually they do not have the word “logic” in their title, rather they are called “introduction to advanced mathematics”, “foundations” or even “discrete mathematics”.
For practicing proof writing, some branches may be easier than others. Analysis definitely is hard. Linear algebra is okay, but it requires a lot of prerequisites if you approach it rigorously. Using real numbers is common in linear algebra, but what is a real number? It is defined in analysis. Number systems, number theory, combinatorics, graph theory should be easier. For example, combinatorics is about finite sets, so you do not even work with infinite sets, while any non-degenerate interval of real numbers is infinite and uncountable. Analysis and linear algebra may seem easier because they are practical, but their practicality does not help when you prove your statements. Actually, analysis existed without a real definition of real number for 200 years, so hard it was.
While there is a clear, formalized method of checking proof correctness, inventing a proof requires creativity. It is like writing songs. You study songs written by past generations and try to write your own. TBH, there were mathematicians (Polya, Hadamard, Poincaré) which studied mathematical creativity. Those studies are rather philosophical. I believe that experience is more useful than philosophy and those studies will not be helpful without experience.
A method I can recommend is thinking about examples and counter-examples. If a theorem says then every P is Q, try to think of examples that are Q, but not P. Another method I can recommend is deciding whether a statement is true or false. This exercise is more realistic. When you discover mathematical knowledge, you do not know beforehand whether a statement is true or false. Deciding requires a lot of experience.

Should I try to prove a theorem in the same way the author proved it?
Does this approach really help to learn how to come up with new
proofs?

I firmly believe that you should not memorize proofs like songs. Try to invent a proof yourself, not only in exercises, but for fundamental theorems too. Even if you did not succeed in this, try to rephrase the given proof in a better way. This allows you to be creative and also helps remembering the proof. In fact, it is not rare for a fundamental theorem to have more than one proof. You can discover this by comparing textbooks on the same subject.
Learning set theory and mathematical logic is a step in the right direction, but do not go too far. Books dedicated to these subjects contain specialized topics like transfinite ordinals in set theory. You will not need these topics on this level, and due to these topics, those books have the reputation of being hard. Foundations are not hard. If it were otherwise, how could many learn foundations superficially and be able to prove? From logic, rules of inference are enough. I recommend natural deduction. From set theory, so called elementary set theory is enough, and by this I mean set intersection, union, powerset, function, relation, mathematical induction on natural numbers, infinite cardinality. Model theory may be useful in abstract algebra.
Instead, I recommend to become familiar with abstract algebra and abstract mathematics in general. By abstract mathematics, I mean structures in the sense of Bourbaki. Their popularity has much grown since their inception 100–150 years ago, and they pervaded almost every branch of mathematics. This is a topic that everybody should know, and it may be called fundamental because of this. Actually, linear algebra is a branch of abstract algebra.
