Wednesday, December 08, 2010

You Know One Programming Language, You Know Them All…(sort of, don’t forget…. Time is Money)

I know that all two of my faithful readers out there (hi mom, hi dad), want to know how my job search has gone. Well… it has gone really well. I found myself a really good gig working for a product based company, that writes software for network tools. But make no mistake, the interviews I went on made me feel like I was back in college. All of a sudden, I was up all night studying the different algorithms to sort trees, explain TCP/IP, and making sure I can discuss the languages I know like the back of my hand, and at least show some understanding of the languages I don’t know.

The job who offered me the job had a pretty grueling, 5 hour interview. I guess I did pretty good considering that many of the questions revolved around Ruby, Perl, and the Rails framework. All of which are concepts I’ve only read about and briefly touched in my early days. During the last 2 weeks at my previous job, I got into some debate about the importance of Computer Science and Software Engineering fundamentals. My old job consisted of quite a few people who believed that if you are a pretty good programmer in one language, then you can easily move to another language. They believe this because, other then some syntax differences, all languages are the same… Right?  Well, sort of.

You see, some languages are compiled, some aren’t. Some languages are object oriented, some aren’t. Some languages are interpreted, and some aren’t. These are all important attributes of a language, and will affect how your code. Interpreted languages are more flexible, but can have some performance issues, so you need to keep that in mind if speed is a need. Object oriented languages are wonderful to design with, but tend to carry a lot of overhead. What if you are a Java programmer, taking a job writing C code? That’s when you realize that garbage collection has made you dependent. But that’s not all. Different software has a different purpose, which is important. Are you going to be writing client/server code? Client only code? Web based applications?  The concept of using HTTP is much different then writing a client side application. 

So, where am I going with this?  I managed to convince this company, which works in an area that I am unfamiliar with, with code that I rarely, if ever use, to hire me. It wasn’t only because I am a pretty good Java programmer, but I showed that I understand computers, networks, software, and the fundamentals of Computer Science and Software Engineering. I showed that I have the initiative to learn what I don’t know, and take the challenges head on.If I would have went into the interview with just my Java history, then I wouldn’t have gotten the job. What my old coworker didn’t understand is that time is money. If you cannot prove that you will be up to speed in a timely manner, then they have to make their decision based on that. Companies don’t want to waste time and money on someone who doesn’t understand fundamentals. Especially when there are others out there who want the job too. You only have a short time during the interview to prove why you are better then then next guy.

During my first couple week at the new job, I’ve been learning all I can and diving right into Ruby on Rails with ext JS. My oop and Java history has helped me pick it up pretty quickly, but I made sure going in that I already started learning. There was one mistake I made the other day, that I spent hours trying to figure out. It wasn’t until I asked the guy in the cube next to me what I was doing wrong, and he picked out a syntax mistake right away. I didn’t realize that back ticks ( ` ) actually meant something Smile But it did show me that syntax is not as trivial as many believe. So my advice to you is to learn about the company that you are interested in. And learn their technologies. At least be able to discuss the concepts, but don’t be afraid to tell them you don’t know something. Just as long as you let them know that you will know it.

No comments: