Anthony T.

Cambridge, MA, USA





What's the difference between a computer programmer and a software engineer?

Some people say I should be a programmer, but I can't figure out the difference from a software engineer. Please help.

0 comments Click to expand

chat-bubble-icon11 answers

This question can definitely be answered multiple ways depending on who you ask. Like the previous answers said, most often these terms all mean the same thing. Software Engineer, Software Developer, Computer Programmer, Software Architect are all interchangeable depending on the company or the person. What I would add is that companies almost never distinguish this way. If a company calls their developers Software Engineers, they'll use terms like 'Software Engineer 2,' 'Lead Software Engineer,' 'Principal Software Engineer' to distinguish employees by rank instead of having another 'Computer Programmer' role. At the core though, whether you are a computer programmer or software engineer you will apply to and get the same jobs, so there is no real difference!

One common association some people make is that a computer programmer is someone who has been trained through college and a software engineer is someone who has gone through an engineering program at university. Again this is neither right or wrong, it really depends on who you talk to. If you choose to make this decision then there is a difference between these two careers. Someone trained in programming at college will have much more hands on, applied experience and will understand different programming languages and how to use them. At university, you learn more about difficult programming problems and how to solve them (not with any specific language) as well as how programming languages actually work. So a Computer Programmer in this sense will be better suited for a job where they are writing code to perform a task, and a Software Engineer will be better suited for a job where they are given a problem and need to come up with a practical solution. In general though, the two jobs are interchangeable. A good Computer Programmer should be able to come up with their own solutions to difficult problems, and a good Software Engineer should be able to write code effectively. So in the end they are the same again!

Last updated Nov 10 '16 at 18:58


Often the terms are used interchangeably, but the US Department of Labor Occupational Outlook Handbook has specific descriptions for both. In the OOH Software Engineer is referred to as a "Software Developer". Often when people say "Computer programmer" they really mean "Software Developer".

The difference comes down to, Computer Programmers write code to a Software Developers specification. Software Developer / Engineer also write code, but they also responsible for software requirements + design, release and deployment processes. As you gain experience as a software developer more senior positions will often have less coding and system design.

Here are "official" descriptions for reference.

"Computer programmers write code to create software programs. They turn the program designs created by software developers and engineers into instructions that a computer can follow."

"Software developers are the creative minds behind computer programs. Some develop the applications that allow people to do specific tasks on a computer or other device. Others develop the underlying systems that run the devices or control networks."

Last updated May 24 '16 at 03:54


Software developer, software engineer and programmer basically mean all the same thing.

"Programmer" is an old term and typically refers to somebody who's simply told what to do and programs it (ie. somebody not very experienced), while software developer/engineer might be somebody who's doing higher-level work, but that's not a universally true distinction.

One exception: in some contexts, "software engineer" might refer to somebody who's a licensed professional engineer (ie. like a civil or mechanical engineer, but in software) and had to pass exams and certifications and do more school. You might see these types of people working alongside non-software engineers (eg. working with aeronautical engineers). Professional engineering certifications in software is only a few years old and they're rarely required for "software engineering" jobs (I've never seen it and I don't think I've ever met a professional engineer in software).

As a young person who's interested in software, I suspect you've realized that the best software people are really passionate about what they do and often have been doing it since a young age. Exceptional programmers tend not to have extensive degrees and credentials and I wouldn't recommend the professional engineer route.

Last updated May 24 '16 at 03:43


Great question -- and it depends on who you talk to. For some people, the two terms are interchangeable. For some other people, it's similar with a clear distinction.

I'll answer the latter.

Simply put, software engineer or a computer scientist is a person who can address a algorithm, project, problem, or feature making it efficient, scalable, and understandable.

To become a software engineer or a computer scientist, you are the person who can see problem or feature at hand, try to figure out how to fix it, pick the preferred choice in regards to multiple factors such as scalability, efficiency, time, costs, etc., understand the complexity (Big O notation) of your choice that can affect your stakeholders, users, etc., and then implement it properly taking in mind of other systems or modules that it can affect.

This is different from another person who is able to keep the codebase maintained, add a "band-aid", or even just implement instructions from a piece a paper.

See the difference? :)

Last updated May 24 '16 at 03:42


In terms of an educational sense, computer programmer/science programs and software engineer programs tend to differ in terms of the courses that they offer and the type of knowledge they will focus on and prepare you for.

Computer science courses throw you into a lot of programming languages and hands-on projects at the start, as well as give you much more practical knowledge on how to program efficiently. It covers a lot more of the facts and mathematical logics of programming. They tend to fall under the Mathematics faculty.

Software engineer courses tend to provide less programming courses and more theory courses regarding programming structure at a higher level. You also cover other engineering related skills so the courses are more broad and touch on different types of subjects including a bit of management and science aspects. These fall under the Engineering faculty.

Overall, graduating from either types of programs will generally provide you with the basic skills to tackle programming jobs from the same pool of job positions. The difference in the workplace tends to be minor, so it comes down to whether you want to focus more on hands-on programming and delve deep into a program's logistics, or rather get a broader sense of the programming field and develop a wider range of different skills.

Last updated May 24 '16 at 03:43


You're probably going to get a different answer to this from every person that you ask. As John pointed out, some people use the terms computer/software programmer, software developer, and software engineer interchangeably. Different companies also use different titles. In the two companies I've been at since graduating, I've had the titles "Software Developer" and "Software Engineer" even though the roles were essentially the same.

The term "programmer" is not used as much anymore, and I think it's due to the fact that "developer" and "engineer" encompass a broader set of skills than simply writing code (which is what people typically think of as programming). As the software industry matures and our tasks become more complex, we see more and more titles being borrowed from other engineering disciplines, such as Engineer and Architect.

At the end of the day, I would try to focus on what you are passionate about and not worry so much about the titles.

Last updated May 24 '16 at 03:44

1 comment

In the early days of Software development, computer programmer and Software Engineer basically meant the same thing. As the industry has evolved they have come to mean different things.

Software Engineer: would be responsible for 'End-to-End' development of a software application. They could/would be responsible for:

  • Architecture/Design
  • Documentation (Specifications etc...)
  • Implementation

Computer Programmer: would typically be responsible for the Implementation (only) of a fully scoped and spec'd application.

Last updated May 24 '16 at 03:45

1 comment

They basically mean the same thing.

Last updated May 24 '16 at 03:45

1 comment

Software Engineers Software engineers, often called software developers, plan and create programs. They analyze user needs, design software and then test it to ensure quality. They give instructions to programmers who write the software codes. Engineers who specialize in the operating systems needed by computers are called systems software developers. Those who focus on applications, such as games, video editors, word processors and databases, are called applications software developers.

Computer Programmers Computer programmers receive specifications by software engineers to write the instructions or code the computer follows. They must be expert in computer languages such as C++ and Java. They can update or expand existing code and debug programs to find and fix errors. They also use code libraries and computer-assisted software engineering to simplify their writing. They typically specialize in only a few computer languages.

Last updated May 24 '16 at 03:44

1 comment

The two are somewhat interchangeable, but it could be argued that software engineers are like more like architects and computer programmers are more like carpenters. Engineers and architects design solutions, and programmers and carpenters execute them.

A good engineer should be a good programmer, and a good programmer should be a good engineer.

Last updated May 24 '16 at 03:44

1 comment

A lot of times these 2 terms are used interchangeably. It really boils down to the job requirements. Programmer could just mean that you are good at certain languages, and can code. You can just focus on being a php programmer or python developer and just know how to do it really well.

Software engineer usually means that language is not so much of a key. All the other skills that you bring along with you are equally valuable. You understand good design principles, architect software, are able to evaluate tradeoffs, come up with solutions to complex problems.

Last updated Apr 18 at 06:42

1 comment

More from

icon-country-tags Ashburn, VA, USA

Schools Add a school

No schools added.

Groups Join a group

No groups joined.

Follow Us

Ask a Question

Close form
By posting, you are accepting the terms of service and privacy agreement.