How to think of the Zariski tangent space The Zariski tangent space at a point $\mathfrak m$ is defined as the dual of $\mathfrak m/\mathfrak m ^2$. While I do appreciate this definition, I find it hard to work with, because we are not given an isomorphism from $\mathfrak m/\mathfrak m^2$ to $(\mathfrak m/\mathfrak m ^2)^\vee$ (which I'd wish for at least in the finite dimensional case so that I could put my hands on something concrete).
So my question is: how does one go from this abstract definition to actually writing down what is the $T_{X,p}$ as a scheme? To take a simple case, we might consider $$X=k[x,y,z]/(x+y+z^2,x+y+z^3); \qquad p=(x-0,y-0,z-0)$$
Then, the cotangent space is easy to calculate. It is the plane cut out by $x+y$, i.e. it is the scheme $k[x,y,z]/(x+y)$. But what is the tangent space as a scheme?
 A: I'm a little confused as to why you'd want to consider the tangent space as a scheme. The scheme structure, if any, would come from the fact that it's a vector space, not because there is some natural scheme structure on it. For example, in topology, one doesn't often consider the cotangent space to be a manifold.
That said, one can ask for a scheme structure on the tangent bundle of a variety (or, more generally, the relative cotangent space of a map $X\to Y$ of schemes). This parallels exactly what one does in the case of topology--one considers the cotangent bundle of a manifold as a manifold.
To define the tangent bundle is a bit involved. For a variety $X/k$ the cotangent bundle is $\mathcal{Spec}(\text{Symm }\Omega_{X/k})$ where $\Omega_{X/k}$ is the cotangent sheaf. This looks a little confusing, but it's because I'm making some identifications. Namely, the tangent sheaf is the dual $\Omega_{X/k}^\vee$, and then the vector bundle associated to that is $\mathcal{Spec}(\text{Symm }(\Omega_{X/k}^\vee)^\vee)$ which is the same thing (in the case $X$ is a variety) as what I wrote above.
I think what you may be asking though is not what the scheme structure of the tangent space is, but what is the vector space structure. For an affine finite type $k$-scheme, and a $k$-rational point (i.e. one of the form $(x-a,y-b,z-c)$) there is a very natural way to describe the space. 
Namely, let $X=k[x_1,\ldots,x_n]/(f_1,\ldots,f_r)$ be our affine finite type $k$-scheme and $p=(a_1,\ldots,a_n)=(x_1-a_1,\ldots,x_n-a_n)$ be our point. We obtain a linear map $J_p:k^n\to k^r$ defined by the Jacobian map:
$$J_p=\begin{pmatrix}\frac{\partial f_1}{\partial x_1}(p) & \cdots & \frac{\partial f_1}{\partial x_n}(p)\\ \vdots & \ddots & \vdots\\ \frac{\partial f_r}{\partial x_1}(p) & \cdots & \frac{\partial f_r}{\partial x_n}(p)\end{pmatrix}$$
Then, one can show that $T_{X,p}$ is isomorphic to $\ker J_p$. 
This is a good exercise, one I leave to you. I will outline the idea though. First, prove the proposition for $r=0$ (i.e. $X=\mathbb{A}^n$). Then, identify any $X$ (written as above) as the zero set of a map $f:\mathbb{A}^n\to\mathbb{A}^r$. This will allow you to write an "exact sequence" $X\to\mathbb{A}^n\to\mathbb{A}^r$. This will actually be an exact sequence when you move to ideal land. You can then show that $T_{X,p}$ will be the kernel of the induced map $T_{\mathbb{A}^n,p}\to T_{\mathbb{A}_n,f(p)}$ which, when you identify these spaces with $k^n$ and $k^r$ (as you should have in the first step) will just be the map $J_p$.
One can actually identify the tangent space of an affine finite type $k$-scheme $X$ as the kernel of the Jacobian (defined appropriately) for any $p\in X$ where $p$ is a closed point with $k(p)/k$ separable. It fails in the non-separable case: think about $\text{Spec}(\mathbb{F}_p(T^{\frac{1}{p}}))/\mathbb{F}_p$.
A: I'd like to briefly explain how the Zariski tangent space can be worked with and where the abstract definition comes from. A good introduction to this is Shafarevich's book on affine and projective varieties. He first shows that if an affine variety $X$ is defined by an ideal $I$, then the tangent space (say at $0$, assuming $0$ is in $X$) is defined by the zero set of the polynomials $\{dG:G\in I\}$, where $dG$ is the differential of $G$ at $0$; that is, the zero set of all homogeneous elements of degree 1 that appear in the polynomials in the ideal $I$. For example, the tangent space to $x-y+x^2+y^4=0$ at $0$ is defined by the equation $x-y=0$. Shafarevich shows that the variety defined by these equations is naturally what one would expect the tangent space to be. 
He then goes on to show that abstractly, as a vector space, this space is isomorphic to $(\frak{m}_0/\frak{m}_0^2)^\vee$ in a natural way. Now, why pick $(\frak{m}_0/\frak{m}_0^2)^\vee$ instead of $\frak{m}_0/\frak{m}_0^2$? For functorial reasons. In topology, a map $f:X\to Y$ between two manifolds induces a map $T_pX\to T_{f(p)}Y$ for a point $p\in X$, where $T_pX$ denotes the tangent space of $X$ at $p$. If we take $\frak{m}_p/\frak{m}_p^2$ as the definition of tangent space and we have a map $f:X\to Y$ between two varieties, then we only get the pullback map $f^*:{\frak{m}}_{f(p)}/{\frak{m}}_{f(p)}^2\to \frak{m}_0/\frak{m}_0^2$ and not the other way around, as we would expect. That's why taking the dual space works perfectly.
In practice, if you want explicit equations for the tangent space of a variety, then the first method is very concrete. If you want more theoretical calculations, then the abstract method is the way to go. In general for a scheme $X$ over a field $k$, you can also think of the tangent space at $p$ as $\mbox{Mor}((\mbox{Spec}(k[\epsilon]/\epsilon^2),(\epsilon)),(X,p))$.
