You need to be BOTH!
Science : A lot of mathematics is requested.
Engineering: More practical stuff, programming, administration etc.
But meanwhile I see that the whole thing is a "black box"!
You put something in this box and get a result which you like and
it seems to be true.
You do the next attempt , same data, same box, the result is another.
What can you do: Quite nothing.
Even you wrote that program by yourself you are using many libraries and other things you are embedded in.
It's really a black box:
Try and Error.... Plug and Pray.
If only one of your routines you use from a library has altered a little bit,
it may take you years to find out were the error is.
Not open source often.
Normally the writer of a program starts to seek in their self written code.
That's OK, but never forget there are so many other sources creating this error.
There is no program in the world which is free of errors.
"program verification" is an attempt to improve this.
In my old days we were often programming in Assembler.
There you could do a really deep look inside.
Step by step : Source-code -> (compiler) Assembler-code (Assmbler) : Hex-code and/or Bin-code.
But who is able to read and interpret hex-dump in our days.
Do you know that "old programmers" who can handle FORTRAN and COBOL are high respected?
They understand such antique programs still used by banks.