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.

2 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

Respond to this post