Software engineering vs Coding
Kamal Mustafa May 4
One of the main difference is that the former has a formal process while the later maybe not. Let's take a simple example. Let say you discover a bug, (or our customer did) where a date was displayed in wrong format. If you just do mere coding, what would you do probably just get into the production server and edit the code live in production ! You get the job done and it's all that matter.
But in software engineering process, it's more than that. First you write a test, or figure out some way to reproduce the bug. Then you file a bug report in relevant place, detailing together all your investigation and your conclusion about the bug, with the test you wrote as supporting document to prove that this indeed a bug. Together in the bug report, you also lay out your plan on how to fix the bug.
Discussion will ensue in the bug report, with others also chime in giving out their idea on how to fix the date format bug. You create a new branch and commit your changes. You run all the tests to make sure the changes doesn't break any other parts. After that, you open a PR for the changes to be merged to master. Someone else will review your PR, and might point out that your code not following PEP8. So you rework the changes and ask for another round of review. This time your changes get approved and merged to master. Are we done ?
No ! When the changes get merged to master, another round of tests need to be run against the master to make sure no unexpected breakage. Once that done, you have to update the changelog and create new release. You then deploy the new release to production. Are we done ? Still no. You have to update the ticket to mentioned that the changes has been deployed to production. If we get no more issue after that, the ticket will be closed and only after that we're done.
And that's for fixing a wrong date format. Of course in practical, for some small changes (especially an urgent one), we have what being called hotfix, that would sidestep most of the process mentioned above. But the bottomline is, in software engineering, we have a formal process in bringing out the code, and it's not just code that involve. And this is just one changes. What if you have 2 or more related and non-related bugs ?