I want to be at level of mastery in programming such that I am extremely confident in my skills and abilities. This means that I have several hundred pieces of evidence that I have previously done an impressively good job in a programming assignment. I know from history that I have done things right and properly in a timely manner, and value was provided from my work.
I am increasingly sought out for my knowledge in programming from my peers at work. People come to me for not only application-specific questions, but also for general “how do you” type questions for something I’m not even involved in. The words “ask Francois, he knows how to do that” or “he’s the go-to guy for that” are often heard at the office. I frequently spend time explaining concepts to coworkers and the conversation usually ends with “OK, I get it now. Thanks, Francois you’re a lifesaver”. I am never annoyed by these questions because not only am I happy to be considered so valuable at work, but I’m also happy to talk about something I am so interested in and passionate about. Programming is not only my job. It is also my hobby and my passion. I think about programming when I’m not at work – not because I’m stressed about it, but rather because I’m fascinated by it. It’s fun. I enjoy it. I love thinking about it. I’d do it even if I never had to work another day in my life. This is what I do in my free time because I love it.
When I code I do it beautifully. I take pride in my work, and it shows. The programs I write are not just thrown together quickly so I can put the assignment behind me and relax and check out. Rather, they are each and every one of them exciting to me – new challenges, puzzles I can’t wait to attack because I know how much fun I get from taking a problem apart, thinking about a solution, trying it, testing it, correcting it, testing it again, and continuing the process until I get it right. To me, each new problem is not something to worry about – no, it is like reaching a new screen in a computer game I haven’t finished yet. I don’t yet know how I’m going to complete this. I just know that I eventually will, and it’s going to be really fun to try and figure out how to do it. I know it probably won’t happen on the first try and if it did then it really wasn’t all that fun to begin with (would I enjoy a video game that I could easily get through on the first try every new level?). Problems are just new, never-before-played levels. When you first start a video game and you’re not quite sure you like it yet, having too difficult a level early on is frustrating and makes you think “This game sucks”. So don’t take on something too difficult too soon. Take on small problems (like a simple form or method with parameters, etc.) and solve them fully and correctly until you can do it without thinking about it anymore. Then move on to something slightly more complex, like multiple forms that interact with each other. You’ll have to think about it for a few minutes, but after some thought you’ll get it and be confident in the solution. When you can do those problems easily without thinking about it, take on something even more complicated, like writing a small windows forms application. It might take you a little while, a couple of hours perhaps. But you’ll figure it out eventually, and you’ll know it works. Do it again, and try it a little differently. At this level of problem, there should be a few correct ways of solving the problem. Get through different methods of doing it. Even if you can’t wait to try something new. Be patient. Do this completely and do it well. Your career depends on it.
Here’s how I do things now: I’m assigned a problem. I immediately make up that my performance and skillset is currently being questioned, and that so far I haven’t done anything impressive at work. I’m getting the job done, but I’m nobody special, and wouldn’t be missed if i left (from a productivity/skill value point of view anyway). So I’m being scared and paranoid. Then I think about how little I actually know. How, compared to everyone else at work, I know the least. Everyone is at least somewhat more skilled than me. I’m embarrassed and ashamed. This doesn’t leave me at all feeling confident. After a few minutes of wasting time surfing the web for nothing in particular, I say to myself “OK, you have to do this. You can figure this out”. But who I’m actually being about it at that moment is dreadful and unconfident. One of two things happens next.
1) Either I don’t solve the problem, and after a few nervous hours of just trying anything and everything to no avail, I give up and ask for help. At this point, I am again embarrassed and ashamed, and I really become self-loathing for a while. I tell myself I should have been able to get this. If I had been smart or a good worker, I would have figured it out. But no, I’m stupid and a bad worker. I am lazy and a fraud. I don’t deserve any of the rewards of being a good programmer or employee. I will never amount to anything because of what a loser I am. Maybe if I didn’t spend so much time smoking pot or masturbating, I would actually have a chance at being somebody in this life. But no, I am just a failure and will always be that way;
OR
2) I DO solve the problem, and am temporarily relieved that I “got through this one”. I’ve staved off discovery of my being a fraud for one more day. I’m safe again, temporarily. It’s never enough though. I never feel truly safe. I feel like I’ve just outrun the school bully and made it home safely. I’m safe for the night. I feel temporarily ok because I know nothing will happen tonight. But what I do feel is the underlying dread that tomorrow, I’m going to have to deal with this again and I don’t want that to happen. I feel scared, because i think I’m the only one at work who sucks so bad at his job. I feel utterly alone. Any temporary victories I have are out of luck, or because I did things right but just this time because I was just having a good day.
All of this has to change. It starts with deciding who you want to be. Who I want to be is
confident
valuable
happy
proud
fun
patient
integrous
Now, decide what those things mean to you. How does it look to be these things at work in real life?
Confident - I know what I’m doing, and I know that I know what I’m doing. I believe in myself. I have a history of success and I know it. I believe that I can achieve anything, and that the time I take to achieve it was exactly how long it should have taken me. I believe that whatever I needed to do to achieve what I set out to achieve was exactly what I should have done. There was never any other “right way”. There is just the way I do it, and for me and my life, that’s the right way.
Valuable - I make a difference. I make other peoples’ lives better. Without me, someone’s life would be of less quality. At work, I make a difference. I help people. I solve problems. I make something look and work nicer. I make things work faster. I make things work. My work is admired. It is useful to everyone who comes across it.
Happy - I enjoy my life. I like being here. There is nothing else I’d rather be doing at this very moment. It’s so cool that I get paid to do this.
Proud - My work is important to me. It’s an extension of who I am. It’s very important to me that my work be functional, easy to understand, maintainable and sustainable. It’s my craft. It’s my art. It’s my legacy. I have room for making mistakes. I don’t take mistakes lightly, but I don’t make myself wrong for them either. I learn from them. I know not to make the same mistakes again. I feel like I’m getting better and better every day. I love to show off the work I’ve done. I like talking about how I did it. I like talking about my ideas with other smart people, and potentially even seeing a better way to do it.
Fun - I love programming. It’s like a game to me. A game I’m really, really REALLY good at. I don’t just play it to check out and relax though. It’s almost like a multiplayer online game with millions of players, and many of them are just beginners. A few have been playing a few weeks and are starting to get the hang of it. A few have played for several months now and are really becoming known for being good at one or two things in particular about the game. Even fewer are those have been playing for over a year – they are at among the highest levels in the game. They know what they’re doing. Then, there’s me. I’m at the highest levels. There are only a few others like me. I love being at the top. Everyone in the game wishes they were me. Some of them will be eventually, but right now, I’m at the top. It’s awesome. It feels powerful even. But mostly, it’s just so much fun being at this level. It’s like something really fun and ultimately meaningless that I nevertheless spent a good portion of my life on, and so it’s important to me. But still fun.
Patient - I know things take time to learn. I accept that. I know that I don’t know everything. I accept that. I have faith that I will eventually know what there is to know. However long it takes to get there is ok with me.
Integrous - I say what I’ll do and I do what I say. I make a plan for everything. I know what needs to be done before I start. Then I do it.
Now GO AND BE THOSE. Every one of them. Every day. You won’t get it right the first day. Or the second. You won’t feel like being them all the time. Be them anyway – just for practice for when you DO want to be them, you’ll be that much better at it by then. Give up any feelings of silliness or loserness or anger or impatient or anything else that might get in the way. Just be who you want to be. Every day. Without fail. All of them. You will suck at it at first. That’s ok. Do it anyway. You’ll be better at it in a week, but you’ll still suck. That’s ok. Do it anyway. You’ll be better in a month. And again in 3 months. At some point, it will actually start to feel natural to you. It might take a few weeks or months, but it will happen. And it will be so wonderful when it does, because now you can really take off with it. Now that it actually feels natural to be this way, you can start to perfect. You can start to experiment. Constantly step out of your comfort zone. Grow. Get better. Become more. You can do this. You are awesome. Your life depends on this. Your happiness depends on this. This is who you really are. Don’t waste another day. Today is the best day to do this.