About two years ago, my dad convinced me to try Python. His argument was "I liked it, you probably will too." I know, it isn't exactly the greatest argument, but after the initial blowing him off, I decided that I needed to be open-minded and actually try Python.

Since then, I've written a few non-trivial applications including some media processing tools, a pretty extensive set of writing utilities, and a slew of other little scripts here and there. I also have an entire ebook publication system written in Python.

When I went to the cabin two weeks ago, I was talking to my dad about it and I realized something: I don't like Python. I mean, Python is a great little language and I'm fairly competent at it. I would still recommend it for teaching people who to program. But, as a language, I don't think it's the language for me.

My reasons are not the technical ones. Instead, they are reasons that are purely wrapped in my head. I've been programing C-based languages (C, C++, Objective C, Java, C#) for 31 years, ever since my dad taught me K&R C for my 6th birthday (I still remember the little ANSI robot program we wrote together). My formative years and my history is wrapped in that language and the further away I move from it, the more difficulties I'm having.

For Python, I can't handle the lack of braces. I don't know why, I don't handle not having that final brace for a scope. I've tried to remove that limitation of mine, but it doesn't seem to be happening. I also struggle with the lack of statement terminals (semicolon) in much the same way.

There is also the philosophy behind Python. I like one class per file. I like small files and tools (ReSharper) that let me work with them. I like documentation comments above the code, not as a triple-quoted string. Like the concise base instead of super(Class) syntax. Even tabs, I like my tabs and PEP-8 highly recommends that I abandon that preference.

These are trivial, stupid little things. But, after two years, I'm going to say I haven't gotten rid of them.

I'm not fond of Ruby, CoffeeScript, and PowerShell for the same reasons. It isn't specific to Python, I just spent two years trying to break out of these mental framework and I'm not doing that great of a job.

So, what does it mean? Probably not much. I still have a number of Python libraries that I'm using day-to-day. Eventually, I'll probably migrate them to C#. It will make my life easier because I know the libraries. I might do something silly like try TypeScript (which looks pretty sexy) or just JavaScript, but I suspect that C# will be the language of choice for a few more years.

There are some nice things. Not having to worry about Unicode and XML is a big one (I had a code bug with that this evening), using the tools I'm intimately comfortable with, and taking advantage of the knowledge I already have.

I'll still learn new languages, that's important, but my daily tools will probably migrate to what I'm comfortable with. Otherwise, I'll continue to struggle with maintaining them because I can't seem to get my head wrapped around them properly. And since I only touch the code every few weeks at a time (since they are fairly stable), reducing the context switching would keep me productive.

I'm glad I tried Python though, instead of dismissing it out of principle. The struggles I had to learn the language, trying to work through my problems, and even just seeing a new library made my life richer. It wasn't a waste of time by far. It was a great experience and I would recommend it for anyone who doesn't know Python.

2012-10-17