Programmer or Developer
Last week, I received an email asking: “What is the different between a programmer and a software developer? Can a programmer become a developer?
From the “Pure view”, “programmer” is someone who only code and tests their own code to fix defects. Programmer does NOT work with customers or users to write requirements. Programmer does NOT help with testing or write automated test cases for the system. Programmer does NOT build system or update system. Programmer does NOT write documentation. All they do is write code. Many programmers may or may NOT have Bachelor degree; some may only take few programming classes in special training schools. Some companies would hire this kind of programmer to code because they do not require higher salary and they can not change jobs often as their job is very limited. In my opinion, programmer is NOT a good choice as the future prospect is very narrow.
A “Software Developer” is someone who contributes in many ways to make the software product successful. A developer MUST BE a programmer first but also involve in other areas such as working with customers and users to write requirements, write test cases for the software system, review code from others, support documentation, control changes to software by working as configuration management, and many more. Software developer has a much larger perspective and an ability to see the bigger picture of the entire project when the programmer only writes code. Most jobs for software developers in the U.S and Europe require Bachelor degree from an accredited university.
I do NOT believe in the decision to insulate programmers from everything but only code. Programmers should NOT have a narrow perspective. They NEED training to make them see the bigger perspective of software system. They SHOULD work with customers and users and contribute more to the project. I believe programmer should take more training TO BE software developer. There are two reasons that programmer stay in coding only: They love to code and do not want to do anything else – that is their choice. They do NOT receive proper education and training as company wants to take advantage of people without formal education or degree so the company can pay them lower salary.
During a visit in India last year, a manager told me: “Our programmers don’t know how to do other things and that is why they only code”. I asked him: “Are you sure that is what they want, if they don’t know how to do the non-coding aspects why don’t you teach them? The manager explained: “Why do we train them then they can find better jobs? With limited training, they have to stay here” I did not want to say anything more because I know that the company paid a very low salary to people without college education and that is why most programmers only code and not doing anything else. It is NOT that they can not do anything else. It is “good business” to keep them that way. All over India, there are thousand special training schools that teach programming language or few certificates in special systems, they do NOT require any education so they make money by produce hundred thousand programmers who only have limited knowledge of software. These people do NOT have much future as programming languages will change as their skills are limited. Few years ago, COBOL and Pascal language were hot, but then come C and C++, and today there are Java, C#, Ruby and many more. If your skill is in COBOL and Pascal, you may find that it is no longer needed and you may not be able to find a job. Of course, there are some programmers don’t want to do other things. They only want to code and happy with their career. However, I believe if they know better, if they can see the potential and all the possibilities, they may change their minds.
Formal training in college is very important to people who want to have a good careers. A good developer with strong skills is precious. With current critical shortage of software skills all over the world, the prospect is very good for getting good jobs with good salaries. If you are a programmer and want to be a developer, you may need some knowledge and trainings on requirements engineering, requirement documentation, configuration management, code reviews, testing, automate testing, integration testing, and understand software life cycle and some methods such as Agile (Scrum or extreme programming) as well as familiar with some software tools.
- Blogs of Prof. John Vu, Carnegie Mellon University