TL;DR:I'm using a scene from the movie, The Matrix, as a metaphor for dealing with self doubt. Nifty.
Watching 'the spoon' scene from The Matrix for the first time, it was one of those zen moments when the universe gets a little bit clearer. I suspect, if there is a true interpretation to the scene, mine is a little off. Essentially though, I believe that the spoon simultaneously represents a goal and the inability to achieve that goal. The spoon is there and you want to move it, but you can't, because you can't perceive it as anything more malleable than a spoon. The truth is, "there is no spoon". There is only your perception of a spoon. So for the spoon to bend, it is you who must bend.
The epiphany I had, was not that I can now bend spoons. I can't, at least I don't think I can. It's not say I'm not suspicious sometimes, but as far as I know, I'm not in The Matrix. I really like steak though, so I would I want to leave if I was? My epiphany, was that I see the spoon everyday.
I've been tempted to prattle on for the rest of this post about how I see the spoon in every facet of my life, which is true. But it was looking very much like an incoherent ramble. So I've tried to focus on how 'the spoon' affects my work as a software developer, and what I do to see past the spoon. I will attempt to drop references to 'the spoon', at the first available opportunity.
The stages of the spoon
In my work, when I am working through a new project, I typically go through these stages:
- Excitement, as I enthuse over the possibilities for implementation. <-- The project is the spoon, the possibilities are my desire to bend the spoon.
- Worry, that I've gotten ahead of myself, promised the world, only to deliver Keighley (sorry Keighley, it's not that you're bad, you're just not to the world). <-- This is my perception of the spoon as an unbending instrument of breakfast.
- Focus, as I get over myself and get the work done. <-- This is me going all kung-fu on the spoon's ass (bottom, not donkey).
- Mission accomplished. <-- Spoon, moved.
I certainly hope for step 4, and I hope steps 1-3 aren't a million miles away from most other people. But how does one see through the spoon? On some projects by the time I start step 3, I've all but smashed my self confidence to pieces. Step 3 can sometimes be driven by fear that you might not live up to your own expectations and pigheadedness that you won't allow the project to fail!
Getting through it
So how do I get through step 2? These are the things I do, that keep me going through bouts of insecurity.
So it turns out that Mary Schmich, not Eleanor Roosevelt said "Do One Thing Every Day That Scares You". I never sit still when it comes to development. The moment I feel too comfortable, I become restless. I push myself to learn something new in every project I do. I'm not particularly self motivated when it comes to personal projects, so I've also always used work as my driver.
I went for a job interview once, sonn after I'd switched from VB to VB.NET. The Interviewer asked why I'd chosen VB.NET instead of C#. I explained that VB.NET seemed like the more obvious choice, because of it's simularities with what I already knew. He felt that it was all the more reason to dive into C#. I didn't get the job, but I did learn C#.
Visual Studio suddenly became incredible, around 2003. I used to joke that I could write a complete application without ever finishing a word. 'da, da, tab, da, da, tab'. VS was great and I loved working in it, but I was becoming increasingly scared of the outdoors. I started programming Classic ASP in Notepad, but now I wasn't sure it was even possible to compile my applications outside of VS. I was spoilt, too used to using Enterprise editions, to ever be happy in the free version. "I can't use Express, it doesn't support Solutions!"
My reaction, was to start messing around with Ruby, but in a text editor, rather than a full blown IDE. A very liberating experience. I've not looked back, it's probably been about 5 years since I worked with .NET in earnest.
There really isn't anything more important to the resolution of a task, than feeling like you own it. Without ownership, you make yourself powerless. The spoon will never bend, unless you own that mother hubbard.
The best example of ownership I can give you, is a plugin. Let's say, you've been asked to put an image slider into a website. You could build it from scratch, but client expectations outweigh their budget. Anyway, there really is no point reinventing the wheel; it feels like I come across a new slider plugin everyday. You implement the plugin. It's really cool, doing all this neat stuff, as if by magic. The client is really happy, but it's not working so great on IE 'whatever' under some obscure scenario, so you need to change it.
It's magic though, it's doing this thing here, and this thing there. It's crazy black magic and you're a fraud for even sticking it in the site, because you didn't create the magic, you pasted it in and hoped for the best. If you're thinking like this, it's safe to say, you're not really 'owning it'.
I'm not really comfortable with these sorts of posts, they tend to sound a bit preachy. It is something I feel quite strongly about though. Ultimately in development, as in life, the only obstacle is the one you create yourself. Change your perception of the task, take control of it and push yourself to take a different approach. There is no spoon.