Skip to main content

Programming or Software Engineering?

Posted by johnreynolds on January 27, 2009 at 2:18 AM PST

There's an interesting thread going on over at InfoQ regarding the relationship between BPM and Software Engineering.

One subtext of this discussion raises a wider question - When is it "Programming" and when is it "Software Engineering"?

I'm not sure that the distinction really matters... it's kind of like trying to nail down a definition for "Scripting Languages" rather than "Real" programming languages... but I'd like to share my thoughts.

I think that it's Software Engineering when your primary focus is on the relationships and interactions between software components. Programming is when your primary focus is on implementing specific requirements.

I know that's a pretty mushy distinction, but it's the best I can come up with for now...

To build on this distinction a bit more: It is my very strong belief that everyone should be taught how to Program. Reading, Writing, and Arithmetic just aren't enough for the 21st Century - Everybody should be able to write simple programs.

In contrast, Software Engineering is a very specialized field and way beyond the needs of most people. Like Electrical, Mechanical, Civil and the other Engineering disciplines, it takes years of preparation to master. In my experience all Engineering boils down to math and metrics (How else can you measure the effectiveness of an algorithm?).

Bringing ths back to the BPM/Software Engineering discussion going on at InfoQ... I agree that BPM is not Software Engineering (it's more akin to Process Engineering). There's a huge amount of Software Engineering that goes into building a BPM suite, but that doesn't generally concern those who are actually using those suites.

When implementing a Managed Business Process you must employ good Programming skills - but in most cases you are building within the dictates of your BPM suite's Software Architecture. To me that's not really Software Engineering, it's Programming.

What do you think?

Related Topics >>


I think that it is not so much about which aspects. If someone writes code is a coder, if analyzes the program, is analyzer, if tests the program is tester & etc. I think a programmer is someone who has a little knowledge of these, and coding is more important, simply because a programmer is someone who can write a program. And I think software Engineering's difference from programming a software starts from this point that because most parts of programming is "known", just there is a need for someone who can do this, and this is the reason that in recent programming environments most of them are done by those environments and work of programmers are easier, because they don't need to do like before. But sometimes programmers are engineers, too. Because maybe their "purpose" is unknown, or maybe "procedure of their work" is unknown. As an example, some people have an idea and are thinking about it how they can convert their idea to a program, and because it is new they should find their way, not just some repetitive work. Like when some people are simulating something. And the unknown purpose or goal is like when people are trying to get to a better performance of some program, or even make something possible that was impossible before. It is relative, and some engineerings are easier than others, some has more engineering than some. It is not always that hard, but engineer needs to be a good programmer, that also should have experience and creativity, to some extent. Thanks!

jwenting... Thanks. That's a clearer distinction.

IMO "programming" is the practice of crafting code (and debugging/testing it, let's see that as a part of the creation of code) from specifications or designs. "Software engineering" OTOH covers the entire spectrum on the technical side of the software business, from creating a design (technical analysis and design) to implementing it in code and everything related to it all.