Before I put my observation on the similarity and differences among the roles of Programmer, Software Developer and Software Engineer; I would like to know your opinions. And do you play a role of one of those three?
Ashik Uzzaman Lead Member of Technical Staff, Salesforce.com, San Francisco, CA, USA.
I think its important to understand that (like any job titles) these terms only mean anything in a specific context. In one company the position or role of "Software Engineer" may have certain responsibilities, and "Programmer" others. in an other company, they may be different, or some or all those roles may be included in a much more vague "Computer Guy" job. Can you explain a bit more about how these job titles differ in your organization? Things to look out for are issues such as who is responsible for deciding which languages and tools to use, who decides when a product is ready for a release, who is responsible for testing that things work, who is responsible for ensuring that the correct versions of things get delivered, who writes "application" code, who writes "utility" or "framework" code, who writes "test" code, who writes documentation, who explains to customers or stakeholders how things work and what is needed, who answers support questions. etc.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
In most disciplines an engineer produces only designs, specifications, documentation. You don't find them out there welding bridges together! And thos engineers believe software development has nothing to do with engineering and resent anybody calling themselves software engineers.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
I consider the following definitions more or less applicable. Programmer - Focus on writing code as the primary activity of software development, often attached with particular programming languages and parts of a whole software solution. In most cases, junior professionals join in a software house as a programmer (well junior programmer you know). Software Developer - They are programmers who have expertise on developing a particular type of solution effectively and efficiently. In most cases, software developers are just programmers, may be with a better project experience. In some cases they are known indifferently as software engineers though, I don't think Software Engineers fall under these category. Software Engineer - A software engineer is somebody who applies a formal or structured approach to the development of software. He thinks about correctness, completeness, reusability and workability that matches the end goal for the finished product. A good and short alternate definition may be - a software engineer is one employed to solve problems by the application of information technology. To confuse a little more I'ld like to coin the following terms here as well.
Chief Technology Officer
BTW, I know titles don't matter much, however what I consider myself can be easily found in my signature. [ September 10, 2003: Message edited by: Ashik uzzaman ]
Hello IT guys I'm here after a very long time....It's really an interesting issue.... Well....Programmers r just coder...in a well defined boundery... Software Developer is a big thing....u can think them as a Analyst/Designer...coz...they develop the whole system.... And the engineers define how the component will intarct...what technology to use.... they are the Architect... Thats my thought
Nazmul<br />SCJP,SCWCD,IBM OOAD with UML
Joined: Jul 11, 2001
Originally posted by HS Thomas: I think Stan likes to code also. SO by his post I'd assume he likes to be called a Software Developer rather than a Software Engineer.
Oh, OK. I think that the writing code actually *is* designing - the source code is the blue print for the software. The actual software is then build by the compiler, based on the "blueprints".
Joined: Jan 29, 2003
My real job title is Systems Consultant, which is completely meaning free. On this team I'm called "architect" which unfortunately has led to very little opportunity to code. I'll be changing that with the next technology change from Forte 4GL to J2EE!
I have one more thing, how about the programmer/analyst, business analyst and system analyst?
Joined: Jan 29, 2003
Hey, this was a year old! Sure enough, I turned the current project into more opportunity to code, but kept the architect title. What architect means for me is mostly leader & keeper of the design, liason with other projects to define interfaces between us.
For us, a pure business analyst is somebody outside the development team. Our BAs are in the same reporting structure up a ways, but live and work in the customer sites. Their job is to understand customer needs well enough to work with us to design systems. They're close enough to the customer to almost always answer requirements questions off the tops of their heads. They collaborate very closely with us on initial story planning, use cases, QA and user acceptance, a little less on UI design.
Elsewhere in the company, IT teams build up their BA skills and do a bit of both.