Software Engineer vs Programmer

I had the privilege to work for a company that practiced the very definition of software engineering. We were exposed to the complete software development life cycle.  I also had the honor of working with and learning from  some very intelligent senior software engineers.  I have a tremendous amount of respect for my former manager. I would really like to use him and his approach to software engineering and software management as a template for my career. He had a pet peeve about calling ourselves programmers. I can still see him now pounding his fist on his desk whenever one of us called ourselves a programmer. He insisted that anyone can write code but a software engineer understands the SDLC and the core principles of software engineering.  That has always stuck in my head. More so when I started to develop more complex web applications with different programming languages on the web platform.

Programming languages are  tools that implement and adhere to the core fundamentals of object orientated software development. Programming languages for the  web platform are no different. I started with web programming in 1998 and back then object oriented design for the web was unheard of…not anymore. As more software goes to the web the programming languages become more and more like traditional object orientated languages. If a software engineer understands the fundamentals of software engineering he can easily pick up any of these languages.

That is why I have been surprised as to potential employers requiring tests on specific frameworks or programming languages in order to gauge the knowledge of the potential employee.  I recently took two tests as part of my application process and I really did not understand the point. Before anyone assumes that I am complaining because I bombed the tests….the first test was on .Net 3.0 and I got called for my second interview the next day. So apparently I performed well on the test. The second test was on ColdFusion MX 7. I was told at the time I scored the highest on the test.

However, I do not think they were anyway true measures of my skills or talent as a software engineer. Questions such as “What component would you use if you were presenting a user with a calendar” or “Name the upgrades from ColdFusion 6 to Coldfusion 7″ do not tell the hiring manager anything about my abilities as a software engineer.  With these types of questions I would fail a “CNext” test and I worked with that framework for 11 years.

In the end, I find it ironic that people are looking for “Software Engineers” and trying to screen them out with these tests especially in the web development. The web is still the wild wild west..with new frameworks and programming lanagages coming out every year. But all these still follow the core fundementals of software engineering..So I would think that hiring mangers would want to hire someone that understands this and can quickly learn the tools (programmin lanagues) rather than a “programmer” that can become obsolete as his programming lanaguge of choice becomes obsolete.

3 Responses to this post.

  1. Posted by Bob Curry on 08.11.09 at 8:36 pm

    Great piece of wisdom. You are right. We are not memorizing the tool we use, but thinking about the software design we are implementing. To be tested like that does seem strange. Maybe those jobs didn’t really offer any creativity. Sounds like they might have been looking for a software factory worker.

  2. Posted by Keyvan Valafar on 08.11.09 at 8:36 pm

    I just had a chance to read your commentary today. Great writing. Next time you have an interview let the manager know to read your piece of advice first

  3. Posted by Kelly Moran on 08.11.09 at 8:36 pm

    I couldn’t agree more with this article. I keep getting passed up by opportunities because I didn’t know a specific parameter for an underused function. Why should a software engineer need to know this information? That’s what references are for…so you don’t have to remember it! I’d rather know the business and technical processes more deeply. The bottom line is when the $hit hits the fan, they just don’t throw a “PHP programmer” or a .NET “guru” in to fix the problem. They call the guy who knows every facet of the operation and is even able to develop a solution. Bob is right…they aren’t looking for someone to be creative. Just an individual to hack code. IMO, it’s not the right fit for top software engineers like us. Although most people don’t view it this way, but the interview process is a two lane road. You have to be a good fit for them as much as they have to be a good fit you.

    Just my 2cents

Respond to this post