Start by preheating your oven to 350°F. Line a 9x13 inch baking pan with parchment paper so the cake lifts out cleanly later. I always spray the corners with a little cooking spray too, just to be safe, since pumpkin cake batter can be sticky along the edges.
In a large bowl, whisk together the flour, baking powder, baking soda, salt, and pumpkin pie spice. Whisking the dry ingredients first helps distribute the leaveners evenly so you don't end up with a cake that rises unevenly. Set this bowl aside while you prepare the wet mixture.
In a second bowl, whisk together the vegetable oil, eggs, sugar, and pumpkin puree until just combined. I try not to overmix at this stage, since beating too much air into the eggs can change the texture of the finished cake. You want it smooth, not fluffy.
Pour the wet ingredients into the dry ingredients and fold gently with a spatula or whisk. Stop as soon as you no longer see streaks of flour. Overmixing at this point is one of the easiest ways to end up with a dense, tough cake instead of a soft one.
Pour the batter into your prepared pan and smooth the top. Bake for 30 to 35 minutes, or until a toothpick inserted in the center comes out clean. Every oven runs a little differently, so I always start checking a few minutes early just to be safe.
Let the cake rest in the pan for about 10 to 15 minutes, then transfer it to a cooling rack. This is the step people skip, but frosting a warm cake will only melt your frosting into a puddle, so patience really pays off here.
While the cake cools, beat the softened butter and cream cheese together until smooth. Add the powdered sugar and vanilla extract, then beat again until the frosting is fluffy and free of lumps. An electric mixer makes this step much faster than doing it by hand.
Once the cake is completely cool, spread the frosting evenly across the top using your spatula. Slice into squares and serve right away, or refrigerate until you are ready to enjoy it.