Here’s all I know about working in sales: Always Be Closing. That might just be something from a movie, come to think of it. Do actual salesmen say that? It’s good advice, though. Maybe not to salesmen. My advice to salesmen is to Always Be Finding Another Job (For Your Sanity). But for everyone else?
I have a lot of friends who want to get into programming, or write their first novel, or shoot a short film. They’ve come up with an idea and want to know what I think of it. Don’t ask me why people want to know what I think about things. I talk enough without the encouragement. But they ask, and I inevitably say one thing. Well, maybe two, if I think the idea is really cool. Which it is, actually, a lot of the time. If it’s cool, I tell them so. That’s the first thing. Then I say something else.
Go and finish it.
We all have piles of unfinished projects. Half written stories and chunks of code that don’t run and basements full of boxes we never unpacked in the five years since moving. I don’t know about you, but I know exactly what I’ve learned from all of those incomplete things: absolutely nothing.
No, that’s not true. I did learn something from them. I learned to think less of myself.
The problem with good ideas is that you convince yourself this might be the best one you’ll have for a very long time, so you’d better not screw it up. That kind of thinking is poison, and apart from laziness (another problem in which I am well versed) it’s the single most prolific murderer of projects. Without a doubt, your idea is going to get away from you. Maybe early on, more likely in the middle, that solid block of gold will turn to sand and slip through your fingers. It’s a given. It’ll happen. If the goal in your head is don’t screw this up and not get this sucker finished, you’ll decide you already failed and give in.
Enough of those and you start to think that you’re the problem. Your ideas are great, sure, but you can’t make them work. When the next idea comes, you remember the last four unfinished novels, films or websites gathering electrons on a hard drive somewhere and decide there’s no reason even to try.
I’ve never learned much of anything from half finished works of genius (which is what they somehow remain, no matter that you fled when they slipped the leash), but I’ve learned buckets from completed pieces of crap. And, oh boy, have I got them. Some of them are websites still live and in production or scripts floating out in the wired. Some sit here, on my computer, never to be read again. I’ve learned invaluable things from all of them, but none so important as realizing I could make it across the finish line. That lesson lets me set something aside when I need to and know I can come back and make it work with a clear head. That lesson gets me over mountains and under barbed wire fences. It’s what keeps me strong when I’m lost and spinning out nothing but garbage.
There are other big, important things to learn, but you won’t learn a single one of them from the unfinished or incomplete. Live with a mess of a codebase for a while and you’ll start figuring out how to do the next one better. Reread that novel you wrote and you’ll see where things got away from you, and maybe you’ll recognize it when it happens again. Finishing things won’t make you a good programmer or writer on its own, but you won’t get close until you learn how to close.