Software engineering is a approach to development, maintenance and testing of software. The engineer must be knowledgeable about software requirements, design, development, maintenance and testing.A computer programmer is required to develop, test and maintain code that is to be run on the computer. He is converting the specifications provided in the software requirements definition phase into working code for the computer.
Hmph...I gotta add my 2¢:
A software engineer does just that: engineers the software - designs/constructs the program with specific methodologies implementing the requirements while adhering to standards. Usually works for a large company/project. I have designed and implemented many projects.
A computer programmer generally writes a program that others have designed. Usually works for a small company/project. I have created and written quite a few programs. Although they function quite well, do not look at the code...
Today's high-level languages make it easier to code (some say), but are not necessarily engineered any better. It's an individual's discipline that matters, too.
I have been in IT for almost 30 years - by way of hacking (NOT cracking). I have an MS in Software Engineering, BS in Computer Science, AA in Business, MCSE, MCP, CCNA, CQA, and a strong electronics background.
(I read the article and thought it was pretty good. Job titles do not necessarily reflect expertise...)
Don't do it if you don't enjoy it!
I'm currently in my senior year studying Comp Sci. I came to school intending to study Mechanical Engineering, but after taking a required C++ class, fell in love I suppose with Comp Sci. Now my school doesn't have Software Engineering, Software Development, etc. - just Comp Sci. Further, it is actually a Mathematics degree with a Computer Science specialty.
For the first years I never could wrap my head around what a Computer Scientist was and how they differed from just a programmer - after all, for the first two years or so, every course I took was just a programming course. It's not until the later years that the department's description comes to the table. The way my school puts it, Computer Science is the study of computing at a theoretical level. We study every aspect of computing, going as far back as telegraphs, to transistors, to nand gates, RAM arrays, CPUs, machine code, assemblers/assembly, compilers, Operating Systems, and end-user programs. But before we could learn how a CPU executes a seemingly random looking sequence of 1's and 0's we had to know how to write "Hello, World!".
Another example of this is a course I recently took called "The Design and Analysis of Algorithms". For the Design/Analysis part of the course, the focus is entirely mathematical. Many "standard" Math majors take this course for this reason alone. But once an algorithm is designed, how is it implemented? Well we could do it on paper, but it's meant to be programmed. We study the theory behind computing, but to implement it, we program.
Comparing this to other fields, a Chemist uses specific tools (mixtures, solutions, raw elements, bunsen burners, titrations, etc.) to apply the theory of Chemistry. A mechanical engineer uses another set of tools (CAD software, study of physics, dynamics, materials, etc.) to apply theory. Similarly, a computer scientist applies tools (matching computer components for a task, operating systems, programming languages, and finally programming itself) to apply the theory of computing.
I definitely agree that there is a fundamental difference between CompSci/Software Engineers and Programmers. Anyone can run to/browse Barnes and Noble, pick up a book on C++, Java, Python, etc. and become an excellent programmer. In fact I've worked with a number of people who have done just that, and they are far better programmers than I currently am.
But having said all of that, it seems that in the "real world" (outside of academia), there isn't really a consensus at all on what the different titles mean. In most cases it appears that Software Engineer, Computer Scientist, Computer Programmer, etc are all interchangeable. Should it be that way? I don't think so. But that's just what my experience (as a near college grad with numerous internships) shows.
I hate to dig up an old post, but the two terms are not exactly the same as some imply. The differences are subtle and may vary by country or company. I hold a degree in Computer Engineering with an emphasis on Software engineering and my function is primarily that of the computer programmer, however; at my company there are many other Software Engineers that do not actually right code. Here is the difference, a computer programmer is someone who writes code. If you don't write code, you are not a computer programmer. A Software Engineer may never actually write a single source line of code. A Software Engineer is someone who might write code. I've heard of other organizations where the Software Engineers only design the software components, define the algorithms and layout the architecture - but never actually implement the design, that is left to the programmers.
So the summary is that a Computer Programmer is person (usually a Software Engineer) that is actively writing code, whereas a Software Engineer may not always be a Computer Programmer. Instead of thinking of these as two distinct professions, look at them as related fields. A similar analogy would be that a an Automotive Engineer may be a Mechanical Engineer, but not all Mechanical Engineers are Automotive Engineers.
And just for clarification, when I use the term "Software Engineer" - I mean the loose definition, i.e. someone who is capable of designing Software. There are places that draw a distinction based on educational background that say without a formal degree in a Software Engineering discipline, one cannot be considered a Software Engineer.
I dont know; why people pose some senseless ideas, someone says its same some disagrees!!
Aw! Then, Momerath you better'd hve said to him,"Sir, if you give this silly statement ; e better reject this job myself".