Sunday, September 12, 2010

Trust Your Instincts! Or how to stay interested in programming

I just read a blog post by John Sonmez, Keep Pressing on my Friend (When programming seems bleak). It’s all about the lack of motivation that hits everyone at one time or another.

“Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?”

John’s advice is to ‘keep pressing on’, but I don’t agree. I think forcing yourself to do something that your mind is rebelling against is just going to make the burn-out worse long term. Maybe you should just go to the cabin in the woods? After a week or two you’d probably be itching for a programming challenge.

My advice is different: follow your instincts. Keep your child-like curiosity alive and don’t force yourself to learn something you’ve no inherent interest in.

I’ve got two small children, Leo 8 and Yuna 2. They are always curious, always wanting to know why things are the way they are, and what this or that is. They don’t get burn-out. But they are quite picky about what they are interested in learning. I can’t insist that they pay attention to any particular thing, and a lot of things I’d like them to care about, they simply don’t. It’s as if they have some inner guide telling them what is important and what is not. But when something does intrigue them, they show total concentration.

When something really intrigues me, I’m the same. There’s no effort involved in forcing myself to learn more about it. It’s the opposite, it’s a pleasure. The problem is that I can’t make myself interested in something. I can’t get intrigued by WCF simply because I think I ought to be learning it. Forcing myself to learn something I have no particular interest in is slow and painful. Even if I do struggle through, I find it hard to retain what I’ve learnt.

I’ve come to the conclusion that there is simply no point struggling with stuff I’m not interested in. It’s just not worth it. In any case, if I don’t find something interesting, why would I want to be doing it in the first place? I’m now trying a new learning technique. I call it ‘wow, that’s cool’ focused learning. Regardless if anything is necessary for professional development, or other grown up reasons, I’m simply going to focus on stuff that grabs me.

For example, for the last couple of months I’ve been working (very) slowly through Bryan O’Sullivan’s ‘Real World Haskell’, not because I think that I’ll get a better daily rate if I put it on my CV, but because Haskell is an awesomely different way of thinking about programming. Is it ‘better’ or ‘more useful’? Will it ‘work in corporate IT’? Will the Morts understand it? Is it relevant in any way? I don’t care. I think it’s cool and that’s all matters.

Programming is the best job in the world. You get to play on the cutting edge of human culture, making the future up as you go. It can never be boring. Don’t let ‘serious’ considerations get in the way of the pure intellectual joy it can give you.

6 comments:

E Duncan said...

Excellent point, and a view point I seem to have found myself over the last few years with DDD and BDD.

Lately though, with the intense concentration I've done on these subjects along with IoC, DI, MVC, etc etc - I find myself "wanting" to learn more about *gulp* WPF and Silverlight. I find it facinating and awe-inspiring the way these technologies are put together in a way me, a backend dev, can easily pick up and run with.

But, I find myself severly blocked to learn it. It comes down to, I have no projects or any "idea" to make something come like with these technologies. That is the other key issue I consider over the last decade in development - you want to learn something because it sounds cool, but you can't think of any way to use it outside of the typical Hello World (Blog) pattern.

Mike Hadlow said...

I agree, I can't think of any way that I'm going to use Haskell in the near future. But I'm already thinking differently about C# becase of the Haskell influence.

But long run, it's still worth scratching your itch even if you see no plausible benefit. Once you've learnt Silverlight, you'll probably start seeing places it could be used, or maybe even going for job which require it. The thing is to have fun. If that means creating the millionth blog implementation, do it!

Unknown said...

Programming is painful in Vietnam, after 10 years, try to be a manager otherwise you will change your career. There are not EEO and you can not earn enough if just code for food.

ICS said...

like a friend of mine said, we are sharks (never sleep because they will die), so i suggest a new influence, code generation, ive done an open source generator, please take a look at http://code.google.com/p/magicapps/ , if you want tell me and i will show you how it works..

Eirecoder said...

Excellent post, I couldn't agree more.

Over the last 2 years, as a result of my career becoming somewhat static, I decided to increase/ broaden/update my IT skills. So I started reading a lot of IT books & blogs (not to mention getting som MS certification). The more I read and learned about new technologies, design patterns, programming languages & techniques, etc, the more I found myself liking it, enjoying it more, and wanting to learn more.

However, any technology that one is in the process of learning can become tiresome after a while - especially if you're not using it in your work. I find that most IT books (whether it's Silverlight, WCF, or whatever) feel very interesting for Chapters 1-5, but then "Chapter 10 Syndrome" sets in, and you find you're losing interest. At this stage "Pressing On" mightn't neccesarily be the best idea. You need to take a break, either by switching a completely different book or technology, or by taking a break from "learning" for a week or two. Personally, I usually have 2 books that I'm reading at the same time, which helps in keeping my interest up.

Also, even if you're learning a tech that appears to currently have no connection with your work, it can often be surprising how often the knowledge you gain from reading helps in your work. Sometimes in ways you didn't expect.

Kevin Matin said...

Great post with Great stuff.That sounds pretty cool. Really helpful thanks for the Article, Great job, hope we can expect more articles. All the Best.
thanks.
enterprise application development