How do mathematicians conduct research? I am curious as to how mathematicians conduct research. I hope some of you can help me solve this little mystery.

To me, mathematics is a branch where you either get it or you don't. If you see the solution, then you've solved the problem, otherwise you will have to tackle it bit by bit. Exactly how this is done is elusive to me.

Unlike physicists, chemists, engineers or even sociologists, I can't see where a mathematician (other than statisticians) gather their data from. Also, unlike the other professions mentioned above, it is not apparent that mathematicians perform any experiments. 

Additionally, a huge amount of work has already been laid down by other mathematicians, I wonder if there is a lot of "copy and pasting" as we see in software engineering (think of using other people's code)

So my question is, where do mathematicians get their research topics from and how do they go about conducting research? What is considered acceptable progress in mathematics?
As far as pure mathematics, you are quite right: there are neither data nor experiments.

Drastically oversimplified, a mathematics research project goes like this:


Develop, or select from the existing literature, a mathematical statement ("conjecture") that you think will be of interest to other mathematicians, and whose truth or falsity is not known.  (For example, "There are infinitely many pairs of prime numbers that differ by 2.")  This is your problem.
Construct a mathematical proof (or disproof) of this statement.  See below.   This is the solution of the problem.
Write a paper explaining your proof, and submit it to a journal.  Peer reviewers will decide whether your problem is interesting and whether your solution is logically correct.  If so, it can be published, and the conjecture is now a theorem.


The following discussion will make much more sense to anyone who has tried to write mathematical proofs at any level, but I'll try an analogy.  A mathematical proof is often described as a chain of logical deductions, starting from something that is known (or generally agreed) to be true, and ending with the statement you are trying to prove.  Each link must be a logical consequence of the one before it.  

For a very simple problem, a proof might have only one link: in that case one can often see the solution immediately.  This would normally not be interesting enough to publish on its own, though mathematics papers typically contain several such results ("lemmas") used as intermediate steps on the way to something more interesting.

So one is left to, as you say, "tackle it bit by bit".  You construct the chain a link at a time.  Maybe you start at the beginning (something that is already known to be true) and try to build toward the statement you want to prove.  Maybe you go the other way: from the desired statement, work backward toward something that is known.  Maybe you try to build free-standing lengths of chain in the middle and hope that you will later manage to link them together.  You need a certain amount of experience and intuition to guess which direction you should direct your chain to eventually get it where it needs to go.  There are generally lots of false starts and dead ends before you complete the chain. (If, indeed, you ever do.  Maybe you just get completely stuck, abandon the project, and find a new one to work on.  I suspect this happens to the vast majority of mathematics research projects that are ever started.)

Of course, you want to take advantage of work already done by other people: using their theorems to justify steps in your proof.  In an abstract sense, you are taking their chain and splicing it into your own.  But in mathematics, as in software design, copy-and-paste is a poor methodology for code reuse.  You don't repeat their proof; you just cite their paper and use their theorem.  In the software analogy, you link your program against their library.

You might also find a published theorem that doesn't prove exactly the piece you need, but whose proof can be adapted.  So this sometimes turns into the equivalent of copying and pasting someone else's code (giving them due credit, of course) but changing a few lines where needed.  More often the changes are more extensive and your version ends up looking like a reimplementation from scratch, which now supports the necessary extra features.

"Acceptable progress" is quite subjective and usually based on how interesting or useful your theorem is, compared to the existing body of knowledge.  In some cases, a theorem that looks like a very slight improvement on something previously known can be a huge breakthrough.  In other cases, a theorem could have all sorts of new results, but maybe they are not useful for proving further theorems that anyone finds interesting, and so nobody cares.  

Now, through this whole process, here is what an outside observer actually sees you doing:


Search for books and papers.
Read them.
Stare into space for a while.
Scribble inscrutable symbols on a chalkboard.  (The symbols themselves are usually meaningful to other mathematicians, but at any given moment, the context in which they make sense may exist only in your head.)
Scribble similar inscrutable symbols on paper.
Use LaTeX to produce beautifully-typeset inscrutable symbols interspersed with incomprehensible technical terms, connected by lots of "therefore"s and "hence"s.
Loop until done.
Submit said beautifully-typeset gibberish to a journal.
Apply for funding.
Attend a conference, where you speak unintelligibly about your gibberish, and listen to others do the same about theirs.  
Loop until emeritus, or perhaps until dead (in the sense of Erdős).