A while ago I bumped into a old school project which might well be first “real” project I have done that involved other people. It is course project which I and couple other freshmen did for a one week intensive course named “AI for games”. The project wouldn’t be any special, but there were some quite brutal kinks for us: project targeted a (quite buggy) beta version of unofficial Starcraft I AI library which is of course written in C++ without bindings to other languages. None in the group had done any “real” programming before so we didn’t know how to actually use version control, do any reasonable planning, divide tasks in sensible way or write tests. Of course memory management was totally alien thing to all of us. This project threw all kind of horrors to us, most likely worth of own post, but PTSD was not the greatest thing that filled my mind.
It was awe. Three freshmen who knew that they were super bad at everything that project would involve took it happily, just that we could challenge ourselves and learn new things (oh boy, we did). We managed to churn out 2.5k SLOC of C++ without having any experience in language, Visual Studio or Windows development in one week. We didn’t feel anxiety for being stupid. We were frustrated but happy.
I don’t remember last time when I felt like that.
For long time (well, for last couple years) I have dismissed new things as stupid and ridiculous, just so I could stay in my comfort zone. Of course I didn’t consciously think it like that, but in hindsight this is obvious. I have felt stupid when friends have kept progressing faster than me. I have felt stupid that my pet-projects have not worked out like I wanted. I really have ceased developing new skills and not just in field of programming. It is hard to say what has caused this, but I think big factor has been that I was quite actively working at position that didn’t offer much room to grow after initial void was filled. It was convenient to settle down.
So how I am going to fix this? Well I am actively going to put myself into position where I am total newbie and I have couple things in mind right now. First is that I am going at last starting to play Starcraft 2 ladder matches, thing that I have wanted to do long time but kept pushing back as “I don’t have time to learn the game and strategies right now”. Second one is that I am going to start contributing to Firefox related projects (also thing that I have wanted to do for long time). First steps for this are already done: I submitted simple s/foo/bar patch so I could get familiar with release process and tools, now I cannot use that as an excuse anymore. I also start at new job at end of this month which will also most likely (at least I hope so) push my knowledge boundaries.
I hope this is enough to get my fire burning again.