Jump to content
  • Advertisement
Sign in to follow this  
Bovine13

Software Engineering versus Computer Programming

This topic is 4727 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Advertisement
My understanding is that software engineering applies the principles of engineering (stability, reusability, modularity) to software development.

Computer programming is programming a computer. Are you selecting an educational program of study or something?

Share this post


Link to post
Share on other sites
Quote:
from Wikipedia
The term software engineering is commonly used with a variety of distinct meanings:
As the usual contemporary term for the broad range of activities that was formerly called programming and systems analysis;
As the broad term for all aspects of the practice of computer programming, as opposed to the theory of computer programming, which is called computer science;
As the term embodying the advocacy of a specific approach to computer programming, one that urges that it be treated as an engineering profession rather than an art or a craft, and advocates the codification of recommended practices in the form of software engineering methodologies.
Software engineering is "(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software," and "(2) the study of approaches as in (1)." – IEEE Standard 610.12

Software engineering is practiced by software engineers.

Quote:
from Wikipedia
Computer programming (often simply programming) is the craft of implementing one or more interrelated abstract algorithms using a particular programming language to produce a concrete computer program. Programming has elements of art, science, mathematics, and engineering.


I believe Ravuya's explanation is a pretty good one - a software engineer will usually be more concerned with a good design of the code than someone who's simply considered a computer programmer.

Share this post


Link to post
Share on other sites
There's also the difference between Computer Science and Software Engineering, where the first is more concerned with the "science" side of things (Computationability, algorithm design, information theory) while the second is more concerned with Real Life (tm) software development (development methodologies, team structure, ...)

Share this post


Link to post
Share on other sites
I would agree that with all of the above posts, however I'd like to say that the line separating the two is very blurry.

Share this post


Link to post
Share on other sites
I'm curious towards this as well, as I have to pick a major to study.

To my understanding, Software Engineering teaches you what computer science teaches you but also adds a practical use to what you are taught, meaning you are tuaght how to use it properly.

While computer science teaches you the structures and basics needed, in multiple fields, making you a jack-of-all-trades.

Share this post


Link to post
Share on other sites
I can only give my experiences of studying Software Engineering modules as well as comp sci. My final degree will be Comp Sci as opposed to SE, because i dont consider SE at all useful.

Comp Sci will teach you programming, data structures, as well as techniques for how to apply your knowledge. You get to learn the details of what your doing at a lower level, which makes you a much stronger programmer.

I can only speak for where i studied SE (Univ Durham UK) but i think the course is a bit of a joke, and im taking great joy in dropping every module of it this year. Of course, im sure its more useful elsewhere.

SE students tend to be the ones that arent natural coders, and arent particularly good at what they do. Hence they move into this abstract area of writing tons of UML diagrams that most the time arent really required, and writing useless documents just to waste some paper. The questions i had to answer in the exam were like "Pretend you have been hired by the government to implement the new ID Card system, write a letter to explaining what the possible problems could be"

Wheras im sure those kind of skills are useful, i dont see why anyone would want to actually spend 3 years learning it. Anyone that takes a Comp Sci course quickly learns the values of modularity and well structured code, and they begin to make sure that when in groups they know what theyre doing. SE students like designing massive structures that are bloated, often take longer to code, run slower once built, and sometimes dont even work at all.

There is definitely a place in this world for good Software Engineering techniques. However in my opinion anyone with any programming talent whatsoever should stay away from it, there are better things you can be learning in those 3/4 years of your life. If you really feel you will be so much better off reading about the difference between Functional and Non-Functional requirements, drawing useless flowcharts that only add confusion, talking about how Risky something is, or just years "Visualising" software.

IMO, anyone that spends their time actually writing code and developing software will come to understand why certain SE techniques exist. The students that do SE are always those that have to ask at the first lecture of every module "There isnt gonna be any programming in this module is there?"

Anyway, thats all just my experience and im sure it doesnt apply everyone. Sorry if iv ticked anyone off with what iv written, im sure that there are people here who have studied SE and become better for it. I doubt anyone thats reading a forum like GameDev is really going to want to spend 3 years of their lives having to fill out inaccurate forms that apparently say how risky a project is. Or filling out Cocomo sheets that say how long it will take to write some piece of software (yeah im sure that works great guys...)

Sorry for the long post....i guess its obvious that i just hated SE for 2 years and dont think it does its students any benefit at all.

Share this post


Link to post
Share on other sites
I look at computer programming as learning about algorithms, etc... and in general the micro side of creating software. SE on the other hand is looking at the macro side. Things like how will this technology fit with this other technology to create what I need or how various pieces of a huge system will fit together.

Both are needed disciplines. In the comp sci program I finished a few years ago everyone was required to take some level of SE. Risk analysis, system design, requirements gathering, scheduling, etc... are important to everyone involved in the process of creating software.

I will say that the importance of SE doesn't become realized until you're out of school and have a job though.

Share this post


Link to post
Share on other sites
The difference is critical, revolving mostly around efficiency, processes, and problem solving. It's like comparing Henry Ford, inventor of the assembly line and interchangeable parts, to one of his factory workers who just pieced elements of Ford's ingenuity together.

Programming is a trade, a skill, and an art. Regardless of industry or language, a programmer uses basic rules, syntax, and commands to make a computer perform actions to achieve specific goals.

Engineering is a process that parallels the scientific method. Engineers solve problems by evaluating scenarios and creating discrete, reproducible solutions.

Computer scientists, programmers, become software engineers when they can apply engineering methodologies to their trade to solve problems, create systems, and do more than regurgitate what they've read elsewhere.

That doesn't mean an engineer can't use someone else's work as part of their own. Sometimes, the best engineering solution is to use work that already exists. That's a valid solution if it resolves the problem, which is why middle ware is so important.

A) When you microwave a pizza, you're a hacker.

B) When you read a cook book to bake a pizza from basic ingredients, you're a programmer.

C) When you're asked for a pizza, analyze what should taste good, create the recipe from scratch, write it down, then post the recipe for others to use, you're an engineer. Baking the pizza is optional.

Share this post


Link to post
Share on other sites
In practice you'll probably end up playing both roles. You'll be assigned a project, then you'll be the one who has to figure out what the client needs, how best to implement it, then actually do the implementation.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!