What school did you go to? WHO CARES???

Posted by Jack Altiere on September 5th, 2007

I read an article by Paul Graham that talks about how too much emphasis is placed on where people went to school, and it got me thinking about the subject.  I can’t agree more with this line of thinking.  I used to be brainwashed just as much as everyone else seems to be.  “This person MUST be smarter, they went to THAT school.” 

I think that the thing that has changed my mind the most about this phenomenon is the fact that I’ve gotten the opportunity to interview potential developers for several positions in my career.  I’ve come to the conclusion that it doesn’t matter nearly as much as people say it does.  I’ve come across people from schools that are supposed to be superior that I wouldn’t trust with a bubble sort, and I’ve met people from smaller schools that I would trust to write a compiler.  Don’t get me wrong, I’ve seen it the other way as well, but that just helps make my point.  It doesn’t matter nearly as much as I thought it did.  What’s important is trying to determine what skills the candidate brings to the table, how they work with others, etc.  

Honestly, once a person HAS a job, where they went to school matters even less. I’ve worked with countless developers, both as co-workers and consultants, and I don’t know where most of them went to school.  It doesn’t matter…..the subject rarely even comes up.  The only thing that matters to me is whether or not they can do the job.  It seems to me that we should be focusing more on the stuff that matters when hiring people, and less on the stuff that doesn’t mean as much in the grand scheme of things.

Don’t be stubborn! Choose the right tool for the job

Posted by Jack Altiere on August 3rd, 2006

I’m sure everyone knows a developer like this. No matter what the task or goal is, they always use the same toolset. The question I’m going to pose is why? It’s my contention that programming languages should be like tools in a toolbox. You can have the nicest hammer in the entire world, but it’s not going to do much for you if what you need to do is to put a hole in a piece of wood. This is one reason that I like learning new programming languages, some languages are just better suited at specific tasks.

I’ll give you an example. I was involved in a software project that went something like this. We downloaded a third party library in PHP, but it didn’t have all the features that our team needed, so we decided to engineer our own. It was going to be a web application, so we stuck with PHP. The project also was a great candidate for object oriented design, so that is how we developed our package. Now lets fast forward a little bit. Our library worked great, but we were starting to see some performance issues because of large data sets, so we decided to port this to a compiled language. We had some people suggest C, because….well they know C. Don’t get me wrong, C is a great language, but C++ would be a much better choice. We could keep the object oriented design and just port the existing code for the most part. The argument I got back was that we could just use C and use function pointers and structures. Sure. That’s a great idea. We could also try to dig a ditch with a spoon. Why not use the tool best suited for the job? This whole “fit the square peg into the round hole” philosophy is enough to drive me insane.

My favorite programming language is C#, but if I had to write a web application on a Linux server I sure wouldn’t install Mono on it to do it, I could very easily use PHP instead, because in my opinion it’s a better tool for the job. Some of you are probably saying to yourselves, “you’re just stating the obvious here”. I wish that was the case…I’ve seen this phenomenon way too many times. We all have our favorite languages and tools, but I won’t blindly defend my choices without at least considering the task at hand, and whether or not something else makes sense in this situation.

Another problem I see is taking an existing piece of software, and using it again in another application. Before you say it, I’m not going crazy……let me finish. Generally this is the GOAL of a piece of software, but don’t reuse stuff for the sake of reusing it. Make sure if you are going to reuse something that it actually accomplishes the goal, and does it well. Don’t just bolt on a crappy library because it kind of does something that you think that you need. Just because one of the things that library you wrote back in 2001 did was dynamic image manipulation doesn’t mean it’s a good fit for your web application today.

But it’s not standard!!


This one is harder for me, because standards are a good thing. BUT, if you are going to have standards they need to be kept up to date, and a full range of tools should be available. I’ve run into people who are working on projects using languages that they know aren’t the best choices. They are forced to do this because the companies they work for won’t allow any other tool to be used. Your just putting yourself in a position to fail in this case.

So change the way you design your application. In fact, don’t even choose a language until you have all of the requirements. Figure out your use cases and requirements, then talk about the pros and cons of different languages. Also, if you have some down time, try a new tool or a new language. Heard a lot about Ruby on Rails? Try it out! Reading the pros and cons of PHP vs. ASP or ASP.NET? Try both and form your own opinion. It never hurts to add to tool to the toolbox.

Downloads

Twitter Updates

    Top Commentators

    • No commentators.

    Copyright © 2007 Jack Altiere. All rights reserved.