What is the difference between software engineering and programming

arjun dhar
4 min readMar 28, 2020

--

A software is a well packaged unit that can be installed or run easily in its intended environment. This includes compiled code, documentation, instruction manual, tests, environment configuration etc. A program is raw code and useless in practice unless it exists as a software. Most developers focus and love programming but forget that software is everything and their code is only a tiny part. Imagine, if Microsoft gave you their code and gave you no instructions on how to build it into an installable version of Windows. That’s the difference between code and software. Software is usable, code is not .. in a nutshell.

Software Engineer vs Developer Vs Programmer

A Software Engineer is concerned with the end product (Software) and not just the code. The distinction between a programmer and a developer though is more a amateur Vs professional one. Developers are part of a professional work force aimed at producing software in one way or another. However a programmer maybe just passionate about coding or hacking and things like that; it does not imply any professional intent. I believe anyone with rationale thinking can be a programmer; but being a developer needs more.

Importance of debugging

Most of a developers career will go not in writing code but in looking at his/her own or someone else code. For this reason it is very important to follow good design practices and document everything in a structured and professional manner. Even a brilliantly written code may not stand well, if it does not make sense to the reader two or more months later. Debugging can get complex, one must learn tools and master your IDE and discipline yourself to debug well. In fact if you think being a developer is about writing cool code all the time, think again. You need to learn how to debug complex code. That is why one should use good logging practices, error handling strategies etc.

Software Quality

Software quality can be measured by the longevity and cost to use and maintain a piece of software. This implies code that is well supported, documented, tested and is easy to debug. Brilliant code is useless unless one is writing some new algorithm never thought of before (very unlikely). Note: A lot of developers in the industry are confused or frustrated due to, what they believe is a lack of opportunity. What they basically want is someone to tell them …

Go ahead write code, learn at our expense and not care about what you deliver and how we can maintain it after you are dead!

If that is your idea of software development, I suggest you look for another career. However if you are committed to creating a usable software for an end user and want to take pride in the overall quality of what is being delivered, then only software development is for you.

Can programming be considered an art ?

This is highly debatable but here is my perspective after all these years of being a professional. By all definitions software engineering and development does not qualify in this conversation so we shall limit ourselves to programmers.

Any innovation also includes creativity. That’s more a basic intelligence pre-requisite. However, in any science, engineering or even coding one realizes true genius is an iterative process over the piece of work and not just the person skill set. (huh!)

Ok, Lets assume you are a master programmer or a hacker. In terms of skill you are pretty much accomplished. However, even so; when you work on your masterpiece your vision of what should be, may change with every iteration, that you did not foresee when you started. Even high level designs undergo some changes (admit it bitch!). In other words the process is more evolutionary. Evolution is a sequence of trial and tribulations that go beyond imagination and hit real and hard constraints and feedback. An artist in my mind differs in the sense that the artist is more free in terms of their expression and Art is an expression of their undiluted imagination or abstractness that need not conform to any constraint. While programming, is iterative no matter how creative you maybe. In programming (as in development and software) you can achieve perfection only via iteration and testing. The end product maybe akin to a piece of Art (yes), but thats where the similarity ends.

However, what about musicians. Musicians I have learned also make music in an iterative process, their music is constrained by the instruments they choose to use etc. So lines blur; .. however since there is more science, evolution, more logic Vs gut involved in programming (the most artistic aspect of software); I’ll still stand by saying ….. programming or coding is not art. The Code itself in its final state maybe considered an “art form” though. Over time the skill of a programmer improves and seems into the subconscious mind to make the right logical choices quicker but thats just …well …. deep learning not art!

Measure of a software engineer in times ahead

Over time any system (not just a person) can learn to code. Programmers can become redundant, in the not so distant future. Humans could state the starting points and the goals and the rest maybe a heuristic process (AI). The ability to understand and vision end points, their pros and cons is where the value of an experienced professional comes in. The ability to reduce the number of iterations required to reach the end point, is what will save money; and something that AI will take time to catch up on*. There is where the measure and value of a Professional comes in.

*Why AI cant do that: AI Systems depend on starting parameters and goals well defined. They are also subject to local maxima/minima traps. Coding decisions and regressions to retract a negative choice are still very complex and expensive even with AI + automation in the perceivable future. There is also the case of liability where a failed AI system has no liability, and an AI that writes code only amplifies that liability. Hence I do not see AI systems completely able to replace the job of a good Software engineer!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

arjun dhar
arjun dhar

Written by arjun dhar

Software development enthusiast since I was 8 yrs old. Love communicating on anything regarding innovation, community development … ∞

No responses yet

Write a response