Make the dough
Combine all of the dough ingredients in the bowl of a stand mixer fitted with the dough hook. Mix on low speed for 3 minutes, scraping the sides of the mixing bowl once if necessary. Mix on medium speed for 3 minutes. Lightly flour the surface of the dough and wrap well with plastic and refrigerate 8 hours.
Make the butter layer
Cut the cold butter lengthwise into 1/2-inch-thick slabs. Arrange the pieces between 2 pieces of parchment or waxed paper. With a rolling pin, pound the butter with light, even strokes. As the pieces begin to adhere, use more force. Pound the butter until it's about 7-1/2 inches square and then trim the edges of the butter, adding the trimmings on top of the square and pound them in lightly with the rolling pin. Return the butter layer to the refrigerator to chill.
Rolling out the dough
Remove the dough from the refrigerator and unwrap. Working on a lightly floured work surface. Roll the dough into a 10-inch square. Brush excess flour off the dough. Remove the a chilled butter layer from the refrigerator. Remove the parchment and place the butter on the dough so that the points of the butter square are centered along the sides of the dough. Fold one corner of dough over the butter toward you, stretching it slightly so that the point just reaches the center of the butter. Repeat with the other flaps, creating a square of dough folded around the cold butter. Then press the edges together to completely seal the butter inside the dough.
Lightly flour the top and bottom of the dough. Using a rolling pin slightly elongate the dough by pressing firmly along the square. Continue to elongate the dough by rolling to create an 8 x 24-inch rectangle, keeping the edges as squared as possible. Brush excess flour from the dough. Fold the dough into thirds: pick up one short end of the dough and fold it back over the dough, leaving one-third of the other end of dough exposed. Brush any flour off and then fold the other short end of the dough over the folded side, creating a square. Put the dough on a baking sheet, cover with plastic wrap, and freeze for 20 minutes.
Repeat the rolling and folding process, turning under any rounded edges or short ends with exposed or smeared layers. Cover and freeze for another 20 minutes.
Repeat the rolling and folding process a third time. Put the dough on the baking sheet and cover with plastic wrap, tucking the plastic under all four sides. Refrigerate 8 hours.
Divide the dough
Unwrap and lightly flour the top and bottom of the dough. With the rolling pin, roll the dough into a long and narrow strip, approximately 8 x 44-inches. If the dough sticks, sprinkle with flour. As the dough comes to room temperature, it may start to resist rolling and begin to shrink back. If this happens, fold the dough in thirds, cover, and refrigerate for about 10 minutes or until chilled; then unfold the dough and finish rolling. Once the desired length is achieved, lift the dough an inch or so off the table at its midpoint and allow it to shrink from both sides to help prevent the dough from shrinking as it is cut. Trim the ends to square the dough.
Trim the dough.Lay the dough out along the work surface. Cut the dough into 5-inch strips along the length. Take each 8 x 5-inch strip and make a diagonal cut from corner to corner across the dough creating long right triangles with a sharp knife or pizza wheel. Repeat until all of the dough is cut.
Shape the croissants
Grasping the bottom edge and top corner of the dough triangle, elongate the dough slightly. Lay the triangle on the work surface with the wide bottom closest to you. Roll the dough onto itself, pressing slightly so that the long ends elongate, and the layers stick together. Roll the dough all the way down its length until the pointed end of the triangle is directly underneath the croissant. Bend the two legs towards you to form a tight crescent shape and gently press the tips of the legs together . Repeat the process until all of the dough has been shaped. Arranged the shaped croissants on two large parchment-lined baking sheets. Make the egg wash by whisking the egg with 1 teaspoon of water in a small bowl until very smooth. Lightly brush it on each croissant, reserving remaining egg wash for later. Place the croissants in warm area, but not an area hot enough to melt the butter out of the dough. Allow to proof for 1-1/2 to 2 hours.
Bake the croissants
Preheat the oven to 425 F. Brush the proofed croissants with egg wash a second time. Put the sheets in the oven. After 10 minutes, rotate the sheets and swap their positions. Continue baking until the bottoms are an even brown, the tops richly browned, and the edges show signs of coloring, another 8 to 10 minutes. Place the baking sheet on cooling racks and allow to cool. The cooled croissants can also be wrapped in plastic or aluminum foil and frozen for a month or more. Frozen croissants can be thawed overnight prior to reheating or taken from the freezer directly to the oven, in which case they will need a few minutes more to reheat.
To reheat croissantsReheat croissants by placing in a 350 F oven for about 10 minutes.
Chocolate Croissants: During final shaping process springs about 1/2 ounce or 1-1/2 tablespoons along the midline of each one. Roll it up just like a plain croissant but without stretching out or bending the legs. Proof and bake the same.
Ham and Cheese Croissants: After stretching but before rolling up each croissant, put a thin layer of sliced ham on the dough. Tuck it in if it lies more than a little outside the surface of the dough. Put a layer of thinly sliced or grated cheese on top of the ham. Without stretching or bending the legs, roll the dough tightly. Proof and bake the same.