separation of variables
Imagine a guitar string fixed at both ends. When you pluck it, the whole string ripples, but the SHAPE of the ripple stays the same while it grows and shrinks in time — the middle bulges up, then flat, then bulges down, over and over, but the pattern across the string never changes, only its overall size does. Separation of variables is the bold guess that hidden inside a partial differential equation are solutions exactly like that: a fixed spatial pattern that is simply scaled up and down by a separate rhythm in time.
Concretely, for a PDE in space x and time t you guess a product solution u(x,t) = X(x) T(t) — a function of x alone times a function of t alone. Plug this guess into the equation. For the heat equation u_t = k u_xx you get X T' = k X'' T. Now divide both sides by k X T: you get T'/(k T) on the left, which depends only on t, equal to X''/X on the right, which depends only on x. A function of t can equal a function of x for all x and t only if both sides equal the same constant, call it minus lambda. That single demand splits one PDE into two ordinary differential equations, X'' + lambda X = 0 and T' + k lambda T = 0, linked only by the shared number lambda — the separation constant. ODEs you can solve.
This is the workhorse first technique of the whole subject, but it is not magic and not universal. It needs a SEPARABLE setting: a tidy geometry (an interval, a rectangle, a disk, a sphere — not a blob), a constant-coefficient linear equation, and homogeneous boundary conditions (zero at the ends). A single separated product almost never satisfies the initial data by itself; the real power comes from superposing infinitely many such products — and that infinite sum is exactly a Fourier series. When the boundary conditions are not homogeneous you first subtract off a steady state to make them zero, then separate.
Heat equation u_t = k u_xx on 0 < x < L with u(0,t) = u(L,t) = 0. Guess u = X(x)T(t); separating gives X''/X = T'/(kT) = -lambda. The spatial ODE X'' + lambda X = 0 with X(0) = X(L) = 0 forces lambda_n = (n pi / L)^2 and X_n(x) = sin(n pi x / L); then T_n(t) = e^(-k lambda_n t). Each mode decays, the fast wiggly ones fastest.
One PDE becomes two ODEs linked by lambda; the boundary conditions select which lambda are allowed.
Separation of variables is not a general-purpose solver. It fails on non-separable geometries, variable coefficients that don't factor, and inhomogeneous boundary data (which you must first remove). When it works, it works beautifully; when it doesn't, you reach for transforms or Green's functions instead.